@charset "utf-8";


/* =================
切り替え
==================== */

.top-sp-only {
    display: none;
}

@media screen and (max-width: 768px) {
    .top-sp-only {
        display: block;
    }
    .top-pc-only {
        display: none;
    }
}

/* ==========================
   top-hero
========================== */

.hero-top,
.hero-middle,
.hero-bottom,
.global-nav.top-pc-only {
  opacity: 0; 
}

.top-hero {
    min-height: 100vh;
}

.hero-content {
    margin-top: 84px;
    padding-left: clamp(20px, 3.4vw, 49px);
    padding-right: clamp(20px, 3.4vw, 49px);
    position: relative;
    min-height: 100vh;
}

.hero-title {
    color: var(--primary-white);
    font-family: "DM Sans";
    font-size: clamp(55px,calc(55px + (141.412 - 55) * ((100vw - 375px) / (1440 - 375))),141.412px);
    font-weight: 400;
    line-height: 90%;
}

.hero-sub {
    color: var(--primary-white);
    font-family: "DM Sans";
    font-size: clamp(55px, calc(55px + (30 * ((100vw - 375px) / 1065))), 85px);
    font-weight: 400;
    line-height: 85%;
    position: absolute;
    right: 0;
    bottom: 0;
}

.hero-description {
    color: var(--primary-white);
    font-family: "DM Sans";
    font-size: 25px;
    font-weight: 400;
    line-height: 120%;
    margin-top: 46px;
}

.hero-icon {
    width: 105px;
    height: 95px;
    transform: rotate(90deg);
    flex-shrink: 0;
}

.hero-top {
    display: flex;
    justify-content: space-between;
    position: relative;
}

.hero-middle {
    display: flex;
    justify-content: flex-end;
    margin-top: 30px;
}

.hero-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  position: absolute;
  bottom: 130px;
  left: clamp(20px, 3.4vw, 49px);
  right: clamp(20px, 3.4vw, 49px);
}

.hero-image-pc {
  width: 528px;
  height: 212px;
  flex-shrink: 0;
}

.hero-image-wrap {
  position: relative;
  overflow: hidden;
}

.hero-image-mask {
  height: 0;  
  overflow: hidden; 
}


@media screen and (min-width: 426px) {
  .hero-image-pc {
    display: block; 
  }

  .hero-image-sp {
    display: none; 
  }
}

@media screen and (max-width: 426px) {
  .hero-image-sp {
    width: 278px;
    height: 290px;
    flex-shrink: 0;
  }
}


@media screen and (max-width: 768px) {

  .hero-top {
    display: flex;
    flex-direction: column;
  }

  .hero-content {
    margin-top: 15.3vh;
  }

  .hero-description {
    /* margin-top: clamp(20px, calc(32px * 100vh / 900), 32px); */
    margin-top: 32px;
    font-size: 1.9rem;
    font-weight: 400;
    line-height: 120%;
    letter-spacing: -0.57px;
  }

  .hero-icon {
      width: 42px;
      height: 38px;
  }

  .hero-middle {
    justify-content: flex-start;
    margin-top: 30px;
  }

  .hero-sub {
      font-size: 55px;
  }

  .hero-sub.top-sp-only {
    position: static;
    margin-bottom: 39px;
  }

  .hero-bottom {
    position: static;
    margin-top: 30px;
  }

}


/* ==========================
   top-work
========================== */

.top-work {
    padding-left: clamp(20px, 3.4vw, 49px);
    padding-right: clamp(20px, 3.4vw, 49px);
}

.top-work-header {
    margin-top: 123px;
    padding-top: 127px;
    margin-bottom: 73px;
}

.view-more-button.work-button {
    justify-content: flex-end;
    margin-left: auto;
    margin-top: 70px; 
}

@media screen and (max-width: 768px) {
    .top-work-header {
      margin-top: 50px;
      padding-top: 150px;
      margin-bottom: 48px;
    }

}



/* ==========================
   top-about
========================== */

.top-about {
  margin-bottom: 200px;
}

.top-about-header {
  padding-left: clamp(20px, 3.4vw, 49px);
  padding-right: clamp(20px, 3.4vw, 49px);
  margin-top: 400px;
  margin-bottom: 46px;
}

.about-container {
  padding-left: clamp(20px, 3.4vw, 49px);
  padding-right: clamp(20px, 3.4vw, 49px);
}

.about-inner {
  display: flex;
  gap: clamp(20px, calc(20px + (183 - 20) * ((100vw - 769px) / (1440 - 769))), 183px);
}

.about-image {
  width: 100%;
  max-width: 488px;
  object-fit: cover;
  display: block;
}

.about-name {
  color: var(--primary-white);
  font-feature-settings: 'palt' on;
  font-family: "Noto Sans JP";
  font-size: 30.462px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.609px;
}

.about-roman {
  margin-top: 18px;
  color: var(--primary-gray);
  font-family: "DM Sans";
  font-size: 1.4rem;
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.28px;
}

.about-description {
  color: var(--primary-white);
  font-family: "Noto Sans JP";
  font-feature-settings: 'palt' on;
  font-size: 1.5rem;
  font-weight: 350;
  line-height: 180%;
  margin-top: 24px;
  letter-spacing: 0.3px;
}

.about-description p {
  margin-bottom: 27px;
}

.about-description p:last-child {
  margin-bottom: 0;
}

.view-more-button.about-button {
  justify-content: flex-end;
  margin-left: auto;
}

.about-block {
display: flex;    
  flex-direction: column;
  justify-content: space-between;
  height: 488px;   
}


@media screen and (max-width: 768px) {

  .top-about-header {
    margin-top: 200px;
  }

  .about-inner {
    flex-direction: column;
    gap: 0;
  }
  .about-block {
    height: 100%;
  }

  .about-text {
    margin-top: 89px;
  }

  .about-description {
    margin-top: 34px;
  }

  .about-roman {
    margin-top: 14px;
  }

  .about-description p {
    margin-bottom: 25px;
  }

  .view-more-button.about-button {
    margin-top: 84px
  }

  .top-about-header {
    margin-bottom: 48px;
  }

}

/* ==========================
   top-pixel-grid
========================== */

 /* 共通（位置固定しない） */
.pixel-grid{
  display:flex;
  pointer-events:none;
  z-index:1;
  mix-blend-mode:difference;
}

/* ヒーロー内のグリッドはセクション全面に重ねる */
.top-hero > .pixel-grid{
  position:absolute;
  inset:0;
}

/* ナビ内のグリッドは nav を基準に絶対配置。高さを明示 */
.global-nav.top-pc-only{
  position:relative;
  /* nav 自身の高さを決めてもOK（例） */
  /* height: 64px; */
}

/* nav 内の grid：高さを 変数 or JS で設定（どちらでもOK） */
.global-nav.top-pc-only > .pixel-grid{
  position:absolute;
  inset:0;
  height: var(--nav-grid-height, 64px); /* JSでも上書き可 */
}

