/* Reset and Base Styles */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Typography Utilities */
:root {
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.25rem;
  --text-xl: 1.5rem;
  --text-2xl: 2.75rem;
  --text-3xl: 3.375rem;
  --text-4xl: 3.75rem;
  --pc-bold-weight: 500;
  --sp-bold-weight: 500;
}

html {
  font-size: 16px;
}

body {
  font-family: "Yu Mincho", "YuMincho", serif;
  color: #fff;
  background-color: #000;
  font-size: var(--text-base);
}

.sans-serif {
  font-family: "Noto Sans JP", sans-serif;
  transform: scaleX(0.96);
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

button {
  cursor: pointer;
  border: none;
  font-family: inherit;
}

p {
  margin: 0;
}

.button {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 320px;
  height: 60px;
  background: #fff;
  font-size: 1.5rem;
  font-weight: var(--pc-bold-weight);
  color: #000;
  border-radius: 0;
  transition: box-shadow 0.3s ease;
  letter-spacing: 0.1em;
  box-shadow: 0px 0px 40px 0px #62ddff;
  text-decoration: none;
}

.button:hover {
  color: #333;
  box-shadow: 0px 0px 60px 0px #62ddff;
}

.button:disabled {
  background: rgba(255, 255, 255, 0.6);
  color: #000;
  box-shadow: none;
  cursor: not-allowed;
  font-size: 20px;
  font-weight: 800;
  line-height: 1.2;
}

.sp-only {
  display: none;
  @media screen and (max-width: 768px) {
    display: initial;
  }
}
.sp-u-margin {
  margin-bottom: initial;
  @media screen and (max-width: 768px) {
    margin-bottom: 16px;
  }
}

.button:disabled:hover {
  background: rgba(255, 255, 255, 0.6);
  color: #000;
  box-shadow: none;
}

@media screen and (max-width: 768px) {
  .button {
    width: 240px;
    height: 48px;
    font-size: 1rem;
  }
}

/* Header */
.header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  display: flex;
  justify-content: space-between;
  padding: 30px;
  z-index: 100;
}

.header__logo-saizensen,
.header__logo-x {
  display: block;
  height: 30px;
}

.header__logo-image {
  height: 100%;
  width: auto;
  object-fit: contain;
}

@media (max-width: 768px) {
  .header {
    padding: 24px;
  }

  .header__logo-saizensen,
  .header__logo-x {
    height: 24px;
  }
}

/* Container */
.main {
  width: 100%;
}

/**
* Hero Section
**/
@keyframes heroBlurFade {
  0% {
    filter: blur(30px);
    opacity: 0;
  }
  60% {
    opacity: 1;
    filter: blur(10px);
  }
  100% {
    filter: blur(0);
    opacity: 1;
  }
}

@keyframes heroFadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.hero {
  position: relative;
  height: 100svh;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #000;
  overflow: hidden;

  .hero__container {
    padding: 40px 0 120px 0;
    max-height: 100svh;
    aspect-ratio: 420 / 952;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    z-index: 2;
    .hero__logo {
      width: 420px;
      aspect-ratio: 840/660;
      opacity: 0;
      animation: 2.5s ease-out 0.5s forwards heroFadeIn;
    }
    .hero__title {
      width: 420px;
      margin-top: 10px;
      aspect-ratio: 840/184;
      opacity: 0;
      animation: 2.5s ease-out 0.5s forwards heroFadeIn;
    }
    .hero__text {
      width: 420px;
      margin-top: 30px;
      aspect-ratio: 840/740;
      opacity: 0;
      animation: 2.5s ease-out 3.5s forwards heroFadeIn;
    }
  }
  .hero__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    filter: opacity(0);
    background-repeat: no-repeat;
    background-image: url("images/hero/pht-mv.jpg");
    background-size: cover;
    background-position: 50% 50%;
    animation: 3s ease-out 0.5s forwards heroBlurFade;
  }

  @media screen and (max-width: 768px) {
    padding: 6rem 1rem 3rem;
    height: 100svh;
    .hero__bg {
      background-image: url("images/hero/pht-mv-sp.jpg");
      background-size: cover;
      background-position: 50% 0;
    }
  }
  @media screen and (max-width: 480px) {
    .hero__container {
      .hero__logo {
        width: 220px;
      }
      .hero__title {
        margin-top: 15px;
        width: 220px;
      }
      .hero__text {
        margin-top: 15px;
        width: 220px;
        margin-top: 20px;
      }
    }
  }
}

/**
* Promotion Section
**/
.promotion {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  justify-content: center;
  height: 100svh;
  width: 100%;
  padding: 60px 30px;
  overflow: hidden;

  .promotion__header {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    max-width: 1200px;
    margin: 0 auto;

    .promotion__header__h {
      font-size: 2.75rem;
      line-height: 1.4;
      font-weight: var(--pc-bold-weight);
      text-align: center;
    }
    z-index: 2;
  }
  .promotion__main {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 30px;
    margin-top: 20px;
    max-width: 1200px;
    z-index: 2;

    .promotion__main-content {
      font-size: 1.5rem;
      text-align: center;
    }

    .promotion__sub-content {
      font-size: 1rem;
      max-width: 800px;
    }
  }
  .promotion__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100000px;
    z-index: 0;
    background: url(images/promotion/pht-prologue.jpg) 50% 0 no-repeat;
    background-size: contain;
  }

  @media (max-width: 768px) {
    justify-content: start;
    height: auto;
    .promotion__header {
      .promotion__header__h {
        font-size: 1.5rem;
        font-weight: var(--sp-bold-weight);
      }
    }

    .promotion__bg {
      background-image: url(images/promotion/pht-prologue-sp.jpg);
    }

    .promotion__main {
      .promotion__main-content {
        font-size: 1rem;
      }

      .promotion__sub-content {
        font-size: 0.875rem;
      }
    }
  }
}

/* Product Section */
.product {
  position: relative;
  padding-bottom: 14.5vw;
  overflow: hidden;

  .product__title-bg {
    position: relative;
    z-index: 2;
    img {
      width: 100%;
      height: auto;
    }
  }
  .product__image {
    position: relative;
    width: 100%;
    max-width: 1140px;
    margin-bottom: 160px;
    margin: -5px auto 0;
    padding: 0 30px;
    z-index: 2;
    img {
      width: 100%;
      object-fit: contain;
    }
  }
  .product__main {
    position: relative;
    padding: 0 40px;
    z-index: 2;
    small {
      font-size: 0.8rem;
    }
  }

  .product__header {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 8px;
    text-align: center;
    margin-top: 200px;
    z-index: 2;
    padding: 0 30px;

    .product__header__h {
      font-size: 2.75rem;
      line-height: 1.4;
      font-weight: var(--pc-bold-weight);
    }

    .product__header__sub {
      font-size: 1.5rem;
      line-height: 2;
      font-weight: 700;
    }
  }

  .product__main {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
    position: relative;
    margin-top: 40px;
    z-index: 2;

    .product__description {
      display: flex;
      flex-direction: column;
      gap: 20px;
      text-align: center;
      max-width: 800px;
      margin: 0 auto;
      p {
        font-size: 1.125rem;
        line-height: 1.6;
      }
      .product__payment {
        font-size: 1rem;
      }
    }
  }

  .product__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    background-repeat: no-repeat;
    background: url(images/product/background-product.jpg) 50% bottom no-repeat;
    background-size: contain;
  }

  @media screen and (max-width: 768px) {
    .product__image {
      padding: 0 30px;
    }

    .product__main {
      padding: 0 30px;
    }

    .product__header {
      margin-top: 80px;
      gap: 20px;
      .product__header__h {
        font-size: 1.5rem;
        line-height: 1.3;
        font-weight: var(--sp-bold-weight);
      }

      .product__header__sub {
        font-size: 1.25rem;
        line-height: 1.5;
        font-weight: var(--sp-bold-weight);
      }
    }

    .product__bg {
      background-image: url(images/product/background-product-sp.jpg);
      background-size: cover;
    }
  }
}

/* Features Section */
.features {
  position: relative;
  background-color: #000;
  padding: 160px 30px 258px;
  overflow: hidden;

  .features__header {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 8px;
    z-index: 2;
    .features__header__shoulder {
      font-size: 1.25rem;
      color: #fff;
      font-weight: var(--pc-bold-weight);
      line-height: 1.4;
      margin: 0;
    }

    .features__header__h {
      font-size: 3.75rem;
      color: #fff;
      font-weight: var(--pc-bold-weight);
      text-transform: uppercase;
      line-height: 1.2;
      margin: 0;
    }
  }

  .features__intro {
    position: relative;
    max-width: 1200px;
    margin: 40px auto 0;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 40px;
    z-index: 2;

    .features__intro-main {
      font-size: 2.5rem;
      color: #fff;
      font-weight: var(--pc-bold-weight);
      line-height: 1.2;
      margin: 0;
    }

    .features__intro-sub {
      font-size: 1.25rem;
      color: #fff;
      font-weight: normal;
      line-height: 2;
      margin: 0;
    }
  }

  .features__main {
    position: relative;
    max-width: 1200px;
    margin: 120px auto 0;
    display: flex;
    flex-direction: column;
    gap: 80px;
    z-index: 2;
  }

  .features__item {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    align-items: start;
    .features__item-image {
      width: 100%;
      aspect-ratio: 580 / 360;
      object-fit: cover;
      display: block;
      flex-shrink: 0;
    }

    .features__item-content {
      display: flex;
      flex-direction: column;
      gap: 20px;
      padding-top: 40px;
      flex-shrink: 0;

      .features__item-h {
        font-size: 2rem;
        color: #fff;
        font-weight: var(--pc-bold-weight);
        transform-origin: top left;
        line-height: 1.2;
        margin: 0;
      }

      .features__item-text {
        font-size: 1.125rem;
        color: #fff;
        line-height: 1.6;
        margin: 0;

        a {
          color: #fff;
          text-decoration: underline;
        }
      }
      .features__item-text.--small {
        font-size: 0.875rem;
      }
    }

    &:nth-child(even) {
      .features__item-content {
        grid-row: 1;
        grid-column: 1;
      }
      .features__item-image {
        grid-row: 1;
        grid-column: 2;
      }
    }
  }

  .features__movieBg {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    width: 100%;
    video {
      width: 100%;
      height: auto;
      opacity: 0.5;
    }
  }
  .features__movieBg::after {
    position: absolute;
    bottom: 0;
    content: "";
    display: block;
    width: 100%;
    height: 300px;
    background: linear-gradient(to top, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0));
    z-index: 1;
  }

  .features__bg {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    max-height: 1000px;
    background: url(images/features/background-features.jpg) 50% bottom
      no-repeat;
    background-size: cover;
    z-index: 0;
  }

  .features__bg::before {
    position: absolute;
    top: 0;
    content: "";
    display: block;
    width: 100%;
    height: 300px;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0));
  }

  @media (max-width: 768px) {
    padding: 120px 30px;

    .features__header {
      gap: 8px;
      margin-bottom: 60px;

      .features__header__shoulder {
        font-size: 1rem;
      }

      .features__header__h {
        font-size: 1.75rem;
        font-weight: var(--sp-bold-weight);
      }
    }

    .features__intro {
      gap: 24px;
      .features__intro-main {
        font-size: 1.5rem;
        font-weight: var(--sp-bold-weight);
      }

      .features__intro-sub {
        font-size: 0.875rem;
        line-height: 1.7;
      }
    }

    .features__main {
      margin-top: 60px 0 120px;
      gap: 40px;
    }

    .features__item {
      grid-template-columns: 1fr;
      gap: 24px;
      .features__item-content {
        padding: 0;
        .features__item-h {
          font-size: 1.125rem;
          font-weight: var(--sp-bold-weight);
        }
        .features__item-text {
          font-size: 0.9375rem;
          line-height: 1.6;
        }
        .features__item-text.--small {
          font-size: 0.8125rem;
        }
      }
      &:nth-child(even) {
        .features__item-content {
          grid-row: unset;
          grid-column: unset;
        }
        .features__item-image {
          grid-row: unset;
          grid-column: unset;
        }
      }
    }
  }
}

/* Gallery Section */
.gallery {
  position: relative;
  width: 100%;
  background-color: #000;
  z-index: 2;

  .gallery__container {
    width: 100%;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 6px;
  }

  .gallery__credit {
    font-size: 0.9375rem;
    color: #999;
    text-align: right;
    padding: 30px 30px 30px 0;
    margin: 0;
  }

  .gallery__image {
    object-fit: cover;
    display: block;
    width: 100%;
  }

  .gallery__item-01 {
    aspect-ratio: 1 / 1;
    grid-column: span 4;
    grid-row: 1;
  }

  .gallery__item-02 {
    aspect-ratio: 1 / 1;
    grid-column: span 4;
    grid-row: 1;
  }

  .gallery__item-03 {
    aspect-ratio: 1 / 1;
    grid-column: span 4;
    grid-row: 1;
  }

  .gallery__item-04 {
    aspect-ratio: 1 / 1;
    grid-column: span 4;
    grid-row: 2;
  }

  .gallery__item-05 {
    aspect-ratio: 1 / 1;
    grid-column: span 4;
    grid-row: 2;
  }

  .gallery__item-06 {
    aspect-ratio: 1 / 1;
    grid-column: span 4;
    grid-row: 2;
  }

  .gallery__item-07 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 3;
  }

  .gallery__item-08 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 3;
  }

  .gallery__item-09 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 4;
  }

  .gallery__item-10 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 4;
  }

  .gallery__item-11 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 3;
  }

  .gallery__item-12 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 3;
  }

  .gallery__item-13 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 4;
  }

  .gallery__item-14 {
    aspect-ratio: 1 / 1;
    grid-column: span 3;
    grid-row: 4;
  }

  .gallery__item-15 {
    aspect-ratio: 1594 / 720;
    grid-column: span 6;
    grid-row: 5;
  }

  .gallery__item-16 {
    aspect-ratio: 1594 / 720;
    grid-column: span 6;
    grid-row: 5;
  }

  .gallery__item-17 {
    aspect-ratio: 1594 / 1060;
    grid-column: span 6;
    grid-row: 6;
  }

  .gallery__item-18 {
    aspect-ratio: 1594 / 1060;
    grid-column: span 6;
    grid-row: 6;
  }

  @media (max-width: 768px) {
    .gallery__container {
      grid-template-columns: repeat(2, 1fr);
      gap: 2px;
    }

    .gallery__item-01,
    .gallery__item-02,
    .gallery__item-03,
    .gallery__item-04,
    .gallery__item-05,
    .gallery__item-06,
    .gallery__item-07,
    .gallery__item-08,
    .gallery__item-09,
    .gallery__item-10,
    .gallery__item-11,
    .gallery__item-12,
    .gallery__item-13,
    .gallery__item-14 {
      grid-column: span 1;
      grid-row: auto;
    }

    .gallery__item-15,
    .gallery__item-16,
    .gallery__item-17,
    .gallery__item-18 {
      grid-column: span 2;
      grid-row: auto;
    }
  }
}

/* Message Section */
.message {
  position: relative;
  background-color: #000;
  padding: 260px 30px;
  overflow: hidden;

  .message__header {
    position: relative;
    max-width: 800px;
    margin: 0 auto 80px;
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: 8px;
    z-index: 2;

    .message__header__shoulder {
      font-size: 1.25rem;
      color: #fff;
      font-weight: var(--pc-bold-weight);
      line-height: 1.4;
      margin: 0;
    }

    .message__header__h {
      font-size: 3.75rem;
      color: #fff;
      font-weight: var(--pc-bold-weight);
      text-transform: uppercase;
      line-height: 1.2;
      margin: 0;
    }
  }

  .message__list {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 60px;
    z-index: 2;

    .message__item {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 16px 40px;

      .message__profile {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 4px;

        .message__name {
          font-size: 24px;
          color: #fff;
          font-weight: 600;
          line-height: 1;
          margin: 0;
        }

        .message__title-text {
          font-size: 14px;
          color: #fff;
          font-weight: 400;
          line-height: 2;
          margin: 0;
        }
      }

      .message__text {
        font-size: 1rem;
        color: #fff;
        font-weight: 400;
        line-height: 1.5;
        grid-column: 2;
      }
    }
  }

  .message__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    background-repeat: no-repeat;
    background-image: url("images/messages/background-message.jpg");
    background-position: 50% 0;
    background-size: cover;
  }

  @media (max-width: 768px) {
    padding: 60px 30px;

    .message__header {
      margin: 0 auto 40px;
      padding: 0 30px;
      gap: 4px;

      .message__header__shoulder {
        font-size: 1rem;
        line-height: 1.4;
      }

      .message__header__h {
        font-size: 1.75rem;
        line-height: 1.3;
        font-weight: var(--sp-bold-weight);
      }
    }

    .message__list {
      gap: 40px;

      .message__item {
        .message__profile {
          .message__name {
            font-size: 24px;
          }

          .message__title-text {
            font-size: 14px;
          }
        }

        .message__text {
          font-size: 0.9375rem;
          grid-column: span 2;
        }
      }
    }
  }
}
/* Book Info Section */
.book-info {
  position: relative;
  background: url("images/book-info/background-bookinfo.jpg") center/cover
    no-repeat;
  padding: 80px 0;

  .book-info__container {
    max-width: 1000px;
    margin: 0 auto;
    padding: 0 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
  }
  .book-info__card {
    width: 100%;
    display: flex;
    gap: 40px;
    align-items: flex-start;
  }

  .book-info__image {
    flex-shrink: 0;
    width: 160px;
    height: 200px;
    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
    }
  }

  .book-info__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 8px;
    .book-info__title {
      font-size: 1.75rem;
      color: #fff;
      font-weight: var(--pc-bold-weight);
      line-height: 1.5;
      margin: 0;
    }

    .book-info__description {
      font-size: 1rem;
      color: #fff;
      line-height: 1.8;
      p {
        margin: 0;
      }
    }
  }

  .button--amazon {
    background: #b10017;
    color: #fff;
    width: 320px;
    height: 60px;
    font-size: 24px;
    box-shadow: none;
    padding: 16px 20px;
    &:hover {
      background: #d1001b;
      color: #fff;
      box-shadow: none;
    }
  }

  @media (max-width: 768px) {
    padding: 60px 0;

    .book-info__container {
      padding: 0 30px;
    }

    .book-info__card {
      flex-direction: column;
      align-items: center;
      gap: 40px;
    }

    .book-info__content {
      width: 100%;

      .book-info__title {
        font-size: 24px;
        text-align: center;
      }

      .book-info__description {
        font-size: 14px;
      }
    }

    .button--amazon {
      width: 240px;
      height: 50px;
      font-size: 18px;
    }
  }
}

/* SNS Section */
.sns {
  background: url("images/sns/background-x.jpg") center/cover no-repeat;
  padding: 0;
  height: 302px;
  display: flex;
  align-items: center;
  justify-content: center;

  .sns__container {
    max-width: 761px;
    margin: 0 auto;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;

    .sns__text {
      font-size: 28px;
      color: #fff;
      font-weight: 600;
      line-height: 1.5;
      margin: 0;
    }
  }

  @media (max-width: 768px) {
    height: 302px;

    .sns__container {
      max-width: 315px;
      gap: 40px;

      .sns__text {
        font-size: 20px;
        line-height: 1.35;
      }
    }
  }
}

/* Anniversary Banner Section */
.anniversary {
  width: 100%;
  height: 302px;
  background-color: #000;
  position: relative;
  box-shadow: 0px 4px 30px 0px #00000066;

  &:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: url("images/banner/background-15thanniversary.jpg");
    background-size: cover;
    background-position: center;
    opacity: 0.8;
    transition: opacity 0.3s ease;
  }
  &:hover::before {
    opacity: 1;
  }

  .anniversary__link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    position: relative;
    z-index: 1;
    padding: 0 30px;
  }

  .anniversary__title {
    width: 100%;
    max-width: 800px;
    height: auto;
    box-shadow: 0px 4px 30px 0px #00000066;
  }

  @media (max-width: 768px) {
    .anniversary::before {
      opacity: 1;
    }
  }
}

/* Footer */
.footer {
  background-color: #000;
  padding: 60px 0;
  font-family: "Noto Sans", sans-serif;

  .footer__container {
    max-width: 1000px;
    margin: 0 auto;
    padding: 0 30px;
  }

  .footer__links {
    display: flex;
    gap: 40px;
    margin-bottom: 32px;

    .footer__link {
      display: block;
      color: #fff;
      text-decoration: underline;
      font-size: 1rem;
      line-height: 2;
      transition: color 0.3s ease;
      &:hover {
        color: #ccc;
      }
    }
  }

  .footer__copyright {
    color: #fff;
    font-size: 14px;
    line-height: 2;
    margin: 0;
  }

  @media (max-width: 768px) {
    padding: 60px 0;

    .footer__container {
      padding: 0 30px;
    }

    .footer__links {
      flex-direction: column;
      align-items: center;
      gap: 4px;
      margin-bottom: 40px;

      .footer__link {
        font-size: 1rem;
        line-height: 1.6;
      }
    }

    .footer__copyright {
      text-align: center;
      font-size: 10px;
      line-height: 1.4;
    }
  }
}
