@charset "UTF-8";

/* =====================
  Custom Property
===================== */
:root {
  /* debug */
  --debug: false;

  /* color */
  --black: #333;
  --color-text-primary: #2c2c2c;
  --primary: #1f3091;
  --bg: #f6f6f6;
  --gray-l: #d7d7d7;
  --gray: #8c8c8c;

  /* font */
  --yumin: 'Yu Mincho Demibold', 'YuMincho Demibold', '游明朝', 'Yu Mincho Regular', 'Yu Mincho', 'YuMincho Medium', serif;
  --yugo: '游ゴシック', 'Yu Gothic', yugothic, 'Hiragino Kaku Gothic ProN', 'Hiragino Kaku Gothic Pro', 'メイリオ', meiryo, 'ＭＳ ゴシック', sans-serif;
  --sanserif: 'Noto Sans JP', sans-serif;
  --poppins: 'Poppins', sans-serif;
  --outfit: 'Outfit', sans-serif;

  /* icon */
  --icon-mail: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="22" height="17" viewBox="0 0 22 17" fill="none"> <path d="M3.875 0.25C2.97989 0.25 2.12145 0.605579 1.48851 1.23851C0.855579 1.87145 0.5 2.72989 0.5 3.625V13.375C0.5 14.2701 0.855579 15.1285 1.48851 15.7615C2.12145 16.3944 2.97989 16.75 3.875 16.75H18.125C19.0201 16.75 19.8785 16.3944 20.5115 15.7615C21.1444 15.1285 21.5 14.2701 21.5 13.375V3.625C21.5 2.72989 21.1444 1.87145 20.5115 1.23851C19.8785 0.605579 19.0201 0.25 18.125 0.25H3.875ZM20 4.30225L11 9.148L2 4.30225V3.625C2 3.12772 2.19754 2.65081 2.54917 2.29917C2.90081 1.94754 3.37772 1.75 3.875 1.75H18.125C18.6223 1.75 19.0992 1.94754 19.4508 2.29917C19.8025 2.65081 20 3.12772 20 3.625V4.30225ZM2 6.0055L10.6445 10.6608C10.7538 10.7196 10.8759 10.7504 11 10.7504C11.1241 10.7504 11.2462 10.7196 11.3555 10.6608L20 6.0055V13.375C20 13.8723 19.8025 14.3492 19.4508 14.7008C19.0992 15.0525 18.6223 15.25 18.125 15.25H3.875C3.37772 15.25 2.90081 15.0525 2.54917 14.7008C2.19754 14.3492 2 13.8723 2 13.375V6.0055Z" fill="currentColor"/> </svg>');
  --icon-arrow: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="30" height="6" viewBox="0 0 30 6" fill="none"> <path d="M0 5.5H28" stroke="currentColor"/> <path d="M23 6V0L30 6H23Z" fill="currentColor"/> </svg>');
  --icon-download: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> <path d="M3.95834 14.375C4.1241 14.375 4.28308 14.4408 4.40029 14.5581C4.5175 14.6753 4.58334 14.8342 4.58334 15V16.875C4.58334 16.99 4.67668 17.0833 4.79168 17.0833H15.2083C15.2636 17.0833 15.3166 17.0614 15.3557 17.0223C15.3947 16.9832 15.4167 16.9303 15.4167 16.875V15C15.4167 14.8342 15.4825 14.6753 15.5997 14.5581C15.7169 14.4408 15.8759 14.375 16.0417 14.375C16.2074 14.375 16.3664 14.4408 16.4836 14.5581C16.6008 14.6753 16.6667 14.8342 16.6667 15V16.875C16.6667 17.2618 16.513 17.6327 16.2395 17.9062C15.966 18.1797 15.5951 18.3333 15.2083 18.3333H4.79168C4.4049 18.3333 4.03397 18.1797 3.76048 17.9062C3.48699 17.6327 3.33334 17.2618 3.33334 16.875V15C3.33334 14.8342 3.39919 14.6753 3.5164 14.5581C3.63361 14.4408 3.79258 14.375 3.95834 14.375Z" fill="currentColor"/> <path d="M4.34999 8.30817C4.46718 8.19113 4.62603 8.12539 4.79166 8.12539C4.95728 8.12539 5.11613 8.19113 5.23332 8.30817L9.37499 12.449V2.2915C9.37499 2.12574 9.44084 1.96677 9.55805 1.84956C9.67526 1.73235 9.83423 1.6665 9.99999 1.6665C10.1657 1.6665 10.3247 1.73235 10.4419 1.84956C10.5591 1.96677 10.625 2.12574 10.625 2.2915V12.449L14.7667 8.30817C14.8838 8.19103 15.0427 8.12523 15.2083 8.12523C15.374 8.12523 15.5329 8.19103 15.65 8.30817C15.7671 8.42531 15.8329 8.58418 15.8329 8.74984C15.8329 8.91549 15.7671 9.07437 15.65 9.1915L10.4417 14.3998C10.3245 14.5169 10.1656 14.5826 9.99999 14.5826C9.83436 14.5826 9.67551 14.5169 9.55832 14.3998L4.34999 9.1915C4.23295 9.07432 4.16721 8.91546 4.16721 8.74984C4.16721 8.58421 4.23295 8.42536 4.34999 8.30817Z" fill="currentColor"/> </svg>');
  --icon-arrow-link: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="21" height="20" viewBox="0 0 21 20" fill="none"><path d="M11.2896 0.351074L20.9385 10L11.2896 19.6489L10.3667 18.7261L18.4365 10.6562L0 10.6562L0 9.34375L18.4365 9.34375L10.3667 1.27393L11.2896 0.351074Z" fill="currentColor"/> </svg>');
  --icon-breadcrumb: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="6" height="16" viewBox="0 0 6 16" fill="none"> <path d="M0 15.832L4.448 0.167969H5.712L1.296 15.832H0Z" fill="currentColor"/> </svg>');
  --icon-close: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="52" height="30" viewBox="0 0 52 30" fill="none"> <path d="M50.249 2L28 14.8447L51.249 28.2676L50.249 30L26 16L1.75098 30L0.750977 28.2676L23.999 14.8447L1.75098 2L2.75098 0.267578L26 13.6895L49.249 0.267578L50.249 2Z" fill="currentColor"/> </svg>');
  --icon-angle: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="15" viewBox="0 0 10 15" fill="none"> <path fill-rule="evenodd" clip-rule="evenodd" d="M1.69206 0L10 7.5L1.69206 15L0 13.1142L6.21898 7.5L0 1.88581L1.69206 0Z" fill="currentColor"/> </svg>');
  --icon-blank: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> <path d="M15.616 20C15.7953 20 15.9427 19.9423 16.058 19.827C16.1733 19.7117 16.231 19.5643 16.231 19.385V11.23C16.231 11.05 16.1733 10.9027 16.058 10.788C15.9427 10.6727 15.7953 10.615 15.616 10.615H4.616C4.436 10.615 4.28833 10.6727 4.173 10.788C4.05767 10.9033 4 11.0507 4 11.23V19.384C4 19.5633 4.05767 19.7107 4.173 19.826C4.28833 19.9413 4.436 19.999 4.616 19.999L15.616 20ZM17.231 14.384V13.384H19.384C19.564 13.384 19.7117 13.3263 19.827 13.211C19.9423 13.0957 20 12.9487 20 12.77V4.616C20 4.436 19.9423 4.28833 19.827 4.173C19.7117 4.05767 19.5643 4 19.385 4H8.385C8.205 4 8.05733 4.05767 7.942 4.173C7.82667 4.28833 7.769 4.436 7.769 4.616V9.616H6.769V4.616C6.769 4.15533 6.92333 3.771 7.232 3.463C7.54067 3.155 7.925 3.00067 8.385 3H19.385C19.845 3 20.2293 3.15433 20.538 3.463C20.8467 3.77167 21.0007 4.156 21 4.616V12.769C21 13.229 20.846 13.6133 20.538 13.922C20.23 14.2307 19.8457 14.385 19.385 14.385L17.231 14.384ZM4.616 21C4.15533 21 3.771 20.846 3.463 20.538C3.155 20.23 3.00067 19.8457 3 19.385V11.23C3 10.77 3.15433 10.3857 3.463 10.077C3.77167 9.76833 4.15567 9.61433 4.615 9.615H15.77C16.1793 9.615 16.5253 9.756 16.808 10.038C17.0907 10.3207 17.232 10.6603 17.232 11.057V19.384C17.232 19.844 17.0777 20.2283 16.769 20.537C16.4603 20.8457 16.076 21 15.616 21H4.616Z" fill="currentColor"/> </svg>');
  --icon-arrow-triangle: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="12" viewBox="0 0 20 12" fill="none"> <path d="M14.0575 0.741211L13.1737 1.62508L16.9236 5.37496H0.625V6.625H16.9234L13.1737 10.3748L14.0575 11.2586L19.3163 5.99992L14.0575 0.741211Z" fill="currentColor"/> </svg>');
  --icon-modal-close: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="39" height="35" viewBox="0 0 39 35" fill="none"><path d="M19.2812 16.1592L36.6279 0.5L38.1123 1.83984L20.7656 17.499L38.1133 33.1602L36.6289 34.5L19.2812 18.8389L1.55859 34.8398L0.0742188 33.5L17.7969 17.499L0.0751953 1.5L1.55957 0.160156L19.2812 16.1592Z" fill="currentColor"/></svg>');
  --icon-modal-feature-close-sp: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="30" height="32" viewBox="0 0 30 32" fill="none"> <path d="M14.9238 14.3828L27.9541 0.555664L29.3252 2.01172L16.2959 15.8389L29.3252 29.666L27.9541 31.1211L14.9248 17.2939L1.37207 31.6777L0 30.2217L13.5527 15.8379L0.000976562 1.45605L1.37207 0L14.9238 14.3828Z" fill="currentColor"/> </svg>');
  --icon-modal-arrow: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="34" height="57" viewBox="0 0 34 57" fill="none"> <path d="M31.46 0.5L33.3096 2.14941L3.77734 28.5L33.3096 54.8496L31.46 56.5L0.078125 28.5L31.46 0.5Z" fill="currentColor"/> </svg>');

  /* ease */
  --slideInBezier: cubic-bezier(0.16, 0.5, 0.43, 1);
  --easeOutQuart: cubic-bezier(0.25, 1, 0.5, 1);
  --easeOutExpo: cubic-bezier(0.87, 0, 0.13, 1);
  --easeOutBack: cubic-bezier(0.34, 1.56, 0.64, 1);
  --easeOutQuint: cubic-bezier(0.22, 1, 0.36, 1);
  --easeInCirc: cubic-bezier(0.55, 0, 1, 0.45);
  --easeInOutBack: cubic-bezier(0.68, -0.6, 0.32, 1.6);
  --easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
  --easeOutBounce: cubic-bezier(0.68, -0.55, 0.27, 1.55);
}

/* =====================
  container context
===================== */
@container style(--debug:true) {
  * {
    outline: 1px solid tomato;

    &::before,
    &::after {
      outline: 1px solid tomato;
    }

    &:focus {
      outline: 2px solid var(--blue);
      outline-offset: 2px;
    }
  }
}

/* =====================
  animation
===================== */
@keyframes marquee {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-100%);
  }
}

@keyframes scrollable {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-25%);
  }
}

@layer style {
  /* =====================
    common
  ===================== */
  html,
  body {
    font-family: var(--sanserif);
    font-size: 16px;
    line-height: 1.8;
    color: var(--color-text-primary);
    background: var(--bg);

    @media (width <= 768px) {
      font-size: calc((100 / 390) * 16 * 1vw);
    }
  }

  body {
    @media (width > 768px) {
      min-inline-size: 1440px;
    }
  }

  @media (width > 768px) {
    .sp {
      display: none;
    }
  }

  @media (width <= 768px) {
    .pc {
      display: none;
    }
  }

  /* p */
  :where(p, li, dt, dd, th, td) {
    line-height: 1.8;
  }

  /* =====================
    header
  ===================== */
  .header {
    position: sticky;
    inset: 0 auto;
    z-index: 20;
    display: block grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
    padding-inline: 42px;
    margin-inline: auto;
    color: white;
    transition: all 250ms ease 0s;

    @media only screen and (width <= 768px) {
      position: fixed;
      grid-template-rows: repeat(auto-fit, minmax(0, min-content));
      block-size: fit-content;
      padding-block: 0;
      padding-inline: calc((100 / 390) * 16 * 1vw) 0;
    }

    /* ==== logo ==== */
    .logo {
      inline-size: fit-content;
      padding-block: 24px;
      transition: opacity 250ms ease 0s, filter 250ms ease 0s;
      will-change: filter, opacity;

      @media only screen and (width <= 768px) {
        block-size: auto;
        padding-block: calc((100 / 390) * 15 * 1vw);
      }

      & img {
        filter: brightness(0) invert(1);

        @media only screen and (width <= 768px) {
          inline-size: calc((100 / 390) * 120 * 1vw);
        }
      }
    }

    /* ==== nav ==== */
    & nav {
      display: block flex;
      align-items: center;
      block-size: 100%;

      @media only screen and (width <= 768px) {
        display: none;
      }

      & ul {
        display: inherit;
        gap: 32px;
        block-size: inherit;
        margin-right: 32px;

        & li {
          display: block flex;
          align-items: center;
          block-size: inherit;

          & a {
            display: block flex;
            align-items: center;
            block-size: inherit;
          }
        }
      }
    }

    /* ==== sdgs ==== */
    .sdgs {
      display: block grid;
      place-content: center;
      padding-block: 15.5px;
      padding-inline: 17px;
      margin-inline-end: 16px;
      background: white;
      border: 1px solid var(--gray-l);
      border-radius: 4px;
    }

    /* ==== contact ==== */
    .contact {
      display: block grid;
      grid-auto-flow: column;
      gap: 10px;
      align-items: center;
      justify-content: flex-start;
      padding-block: 6px;
      padding-inline: 28.7px;
      margin-inline-end: 18px;
      font-family: var(--outfit);
      font-size: 20px;
      font-weight: 500;
      background: var(--primary);
      border-radius: 4px;

      &::before {
        inline-size: 21px;
        aspect-ratio: 21 / 16.5;
        content: '';
        background-color: currentcolor;
        mask-image: var(--icon-mail);
        mask-repeat: no-repeat;
        mask-position: center;
        mask-size: contain;
      }
    }

    /* ==== language ==== */
    .language {
      position: relative;
      display: block flex;
      gap: 6px;
      align-items: center;
      font-family: var(--outfit);
      font-size: 21px;
      font-weight: 500;

      & a.active {
        color: var(--primary);
        pointer-events: none;
      }

      @media only screen and (width <= 768px) {
        position: fixed;
        inset: unset;
        inset-block-start: calc((100 / 390) * 80.47 * 1vw);
        inset-inline-end: 0;
        gap: calc((100 / 390) * 4 * 1vw);
        padding-inline: calc((100 / 390) * 8 * 1vw);
        font-size: calc((100 / 390) * 18 * 1vw);
        color: var(--gray);
        background: var(--primary);
        border-radius: calc((100 / 390) * 4 * 1vw) 0 0 calc((100 / 390) * 4 * 1vw);

        & a.active {
          color: white;
          pointer-events: none;
        }
      }
    }
  }

  .header-color .header {
    inline-size: 100%;
    background: var(--bg);

    /* ==== logo ==== */
    & .logo img {
      filter: none;
    }

    /* ==== nav ==== */
    & nav {
      & ul {
        color: var(--color-text-primary);
      }
    }

    /* ==== language ==== */
    .language {
      color: var(--gray);
    }
  }

  .menu-on .header {
    pointer-events: auto;
  }

  /* ==== .u-second ==== */
  .u-second .header {
    inline-size: 100%;
    background: var(--bg);

    /* ==== logo ==== */
    & .logo img {
      filter: none;
    }

    /* ==== nav ==== */
    & nav {
      & ul {
        color: var(--color-text-primary);
      }
    }

    /* ==== language ==== */
    .language {
      color: var(--gray);
    }
  }

  /* =====================
    aside
  ===================== */
  .aside {
    padding-block: 90px 88px;
    color: white;
    background-color: var(--primary);
    background-image: url('../img/_common/footer.webp');
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;

    @media only screen and (width <= 768px) {
      padding-block: calc((100 / 390) * 90 * 1vw) 20.4vw;
      background-image: url('../img/_common/footer_sp.webp');
    }

    .inner {
      display: block grid;
      grid-template-columns: auto auto 1fr;
      gap: 49px;
      align-items: center;
      justify-content: flex-start;
      max-inline-size: 1200px;
      margin-inline: auto;

      @media only screen and (width <= 768px) {
        display: block flex;
        flex-direction: column;
        gap: calc((100 / 390) * 0 * 1vw);
        justify-content: center;
      }
    }

    /* ==== hgroup ==== */
    & hgroup {
      display: block grid;
      gap: 18px;

      @media only screen and (width <= 768px) {
        gap: calc((100 / 390) * 7 * 1vw);
      }

      & h2 {
        margin-block: calc((1em - 1lh) / 2);
        font-family: var(--yumin);
        font-size: 20px;
        font-weight: 600;
        line-height: 1;

        @media only screen and (width <= 768px) {
          font-size: calc((100 / 390) * 18 * 1vw);
        }
      }

      & [lang='en'] {
        font-size: 64px;
        font-weight: 400;
        line-height: 1;

        @media only screen and (width <= 768px) {
          font-size: calc((100 / 390) * 56 * 1vw);
        }
      }
    }

    /* ==== body ==== */
    .body {
      letter-spacing: 0.48px;

      @media only screen and (width <= 768px) {
        margin-block-start: calc((100 / 390) * 59 * 1vw);
        font-size: calc((100 / 390) * 16 * 1vw);
        text-align: center;
        letter-spacing: calc((100 / 390) * 0.48 * 1vw);
      }
    }

    /* ==== u-anchor ==== */
    .u-anchor {
      margin-inline: auto 0;

      @media only screen and (width <= 768px) {
        margin-block-start: calc((100 / 390) * 48 * 1vw);
        margin-inline: auto;
      }
    }
  }

  /* =====================
    footer
  ===================== */
  .footer {
    padding-block: 55px 57px;
    background: #f6f6f6;

    @media only screen and (width <= 768px) {
      padding-block: calc((100 / 390) * 64 * 1vw);
    }

    /* ==== inner ==== */
    .inner {
      display: block grid;
      grid-template-columns: 1fr auto;
      gap: 24px 0;
      max-inline-size: 1200px;
      margin-inline: auto;

      @media only screen and (width <= 768px) {
        display: block flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
      }
    }

    /* ==== logo ==== */
    .logo {
      display: block flex;
      grid-area: 1 / 1 / 2 / 2;
      gap: 8px;
      align-items: flex-start;
      inline-size: fit-content;
      margin-block-start: 9px;

      @media only screen and (width <= 768px) {
        gap: 8px;
        margin-block-start: 0;
        margin-inline: auto;

        & img + img {
          inline-size: calc((100 / 390) * 210 * 1vw);
        }
      }
    }

    /* ==== address ==== */
    & address {
      display: grid;
      grid-area: 2 / 1 / 3 / 2;
      inline-size: fit-content;
      font-size: 14px;
      font-weight: 350;

      & span {
        line-height: 1.85;
      }

      @media only screen and (width <= 768px) {
        padding-inline: calc((100 / 390) * 16 * 1vw);
        margin-inline: auto;
        font-size: calc((100 / 390) * 16 * 1vw);
        text-align: center;

        & span {
          line-height: 1.8;
        }

        & span:first-child {
          translate: -2vw 0;
        }

        & a[href^='tel:'] {
          color: var(--primary);
          text-decoration: underline;
        }

        .pc-only {
          display: none;
        }
      }
    }

    /* ==== u-anchor ==== */
    .u-anchor {
      grid-area: 3 / 1 / 4 / 2;
      gap: 17px;
      padding-block: 16px;
      padding-inline: 38px 30px;
      font-size: 15px;

      @media only screen and (width <= 768px) {
        gap: 0;
        padding-block: 3.8vw;
        padding-inline: 13.6vw;
        margin-inline: auto;
        font-size: calc((100 / 390) * 15 * 1vw);
        text-indent: -2.8vw;
      }
    }

    /* ==== nav ==== */
    & nav {
      display: block grid;
      grid-area: 1 / 2 / 5 / 3;
      gap: 34px;
      align-self: flex-start;

      @media only screen and (width <= 768px) {
        gap: 4.7vw 0;
        justify-content: center;
        margin-block-start: calc((100 / 390) * 22 * 1vw);
        margin-inline: auto;
      }

      & ul {
        display: block flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: flex-end;

        @media only screen and (width <= 768px) {
          text-align: center;
        }
      }

      .main-nav {
        display: block flex;
        gap: 40.1px;
        font-size: 15px;
        font-weight: 500;
        color: var(--black);

        @media only screen and (width <= 768px) {
          display: grid;
          grid-template-columns: repeat(2, 1fr);
          gap: calc((100 / 390) * 15 * 1vw) calc((100 / 390) * 35 * 1vw);
          padding-inline: calc((100 / 390) * 16 * 1vw);
          margin-inline: auto;
          font-size: calc((100 / 390) * 17 * 1vw);
          font-weight: 400;
        }

        & [data-size='small'] {
          @media (width > 768px) {
            font-size: 13px;
          }
        }
      }

      .sub-nav {
        gap: 30px;
        font-size: 13px;
        color: #666;

        @media only screen and (width <= 768px) {
          display: block grid;
          grid-template-columns: repeat(2, 1fr);
          justify-content: center;
          font-size: calc((100 / 390) * 14 * 1vw);
          font-weight: 400;

          & li {
            text-indent: 3.4vw;

            & + li {
              text-indent: -3.2vw;
            }
          }
        }
      }
    }

    /* ==== small ==== */
    & small {
      grid-area: 4 / 1 / 5 / 3;
      inline-size: fit-content;
      margin-block-start: 51px;
      margin-inline: auto;
      font-size: 12px;
      color: #999;
      letter-spacing: 1.2px;

      @media only screen and (width <= 768px) {
        margin-block-start: calc((100 / 390) * 69 * 1vw);
        font-size: calc((100 / 390) * 12 * 1vw);
        letter-spacing: calc((100 / 390) * 1.2 * 1vw);
      }
    }
  }

  /* =====================
    to-top
  ===================== */
  .to-top {
    position: absolute;
    inset-block-end: 20px;
    inset-inline-end: 0;
    display: block grid;
    gap: 8px;
    place-content: center;
    inline-size: 60px;
    block-size: 60px;
    aspect-ratio: 1 / 1;
    font-family: var(--title);
    font-weight: 400;
    line-height: 1;
    color: white;
    cursor: pointer;
    background-image: linear-gradient(99deg, #274827 15.79%, #aad59a 90.99%);
    background-size: 100% 100%;
    border-radius: 6px;
    transition: background-size 300ms ease 0s;
    will-change: background-size;

    @media (any-hover: hover) {
      &:hover {
        background-size: 200% 100%;
      }
    }

    @media (width <= 768px) {
      inset-block-end: calc((100 / 390) * 55 * 1vw);
      inset-inline-end: calc((100 / 390) * 16 * 1vw);
      gap: calc((100 / 390) * 14 * 1vw);
      inline-size: calc((100 / 390) * 60 * 1vw);
      block-size: calc((100 / 390) * 60 * 1vw);
      border-radius: calc((100 / 390) * 6 * 1vw);
    }

    &::before {
      display: block flow;
      inline-size: 14px;
      aspect-ratio: 14 / 10;
      margin-inline: auto;
      content: '';
      background-color: currentcolor;
      mask-image: var(--icon-arrow);
      mask-repeat: no-repeat;
      mask-position: center;
      mask-size: contain;
      rotate: 0 0 1 -90deg;
    }

    @media (width <= 768px) {
      &::before {
        inline-size: calc((100 / 390) * 18 * 1vw);
        translate: 0 6px;
      }
    }
  }

  /* =====================
    sp-menu
  ===================== */
  .sp-menu {
    position: fixed;
    inset-block-start: 0;
    inset-inline-end: 0;
    z-index: 41;
    display: block grid;
    gap: calc((100 / 390) * 8 * 1vw);
    place-content: center;
    inline-size: calc((100 / 390) * 64 * 1vw);
    aspect-ratio: 1 / 1;
    cursor: pointer;
    background: var(--primary);

    &::before {
      inline-size: calc((100 / 390) * 32 * 1vw);
      block-size: calc((100 / 390) * 20 * 1vw);
      content: '';
      border-block-start: calc((100 / 390) * 2 * 1vw) solid white;
      border-block-end: calc((100 / 390) * 2 * 1vw) solid white;
      transition: all 250ms ease 0s;
    }

    &::after {
      position: absolute;
      inset-block-start: 50%;
      inset-inline-start: 50%;
      display: block flow;
      inline-size: calc((100 / 390) * 32 * 1vw);
      block-size: calc((100 / 390) * 2 * 1vw);
      content: '';
      background-color: white;
      translate: -50% -50%;
      transition: all 250ms ease 0s;
    }

    @media (width > 768px) {
      display: none;
    }
  }

  /* =====================
    sp-nav
  ===================== */
  .sp-nav {
    position: fixed;
    inset: 0 auto;
    z-index: 41;
    display: block grid;
    gap: 0;
    inline-size: 100%;
    block-size: 100%;
    color: white;
    pointer-events: none;
    background: rgb(0 0 0 / 80%);
    opacity: 0;
    translate: 100% 0;
    transition: translate 250ms ease 0s;

    @media (width > 768px) {
      display: none;
    }

    .inner {
      inline-size: calc((100 / 390) * 340 * 1vw);
      block-size: 100lvh;
      padding-block: calc((100 / 390) * 48 * 1vw) calc((100 / 390) * 90 * 1vw);
      padding-inline: calc((100 / 390) * 40 * 1vw);
      margin-inline: auto 0;
      overflow-y: scroll;
      color: white;
      background: var(--primary);
    }

    /* ==== close-menu ==== */
    .close-menu {
      display: block flow;
      margin-inline: auto 0;
      translate: -0.5vw 0;

      &::before {
        display: block flow;
        inline-size: calc((100 / 390) * 52 * 1vw);
        block-size: calc((100 / 390) * 30 * 1vw);
        aspect-ratio: 1 / 1;
        content: '';
        background-color: currentcolor;
        mask-image: var(--icon-close);
        mask-repeat: no-repeat;
        mask-position: center;
        mask-size: contain;
      }
    }

    /* ==== main-nav ==== */
    .main-nav {
      display: block grid;
      margin-block-start: 12.5vw;

      /* ==== h3 ==== */
      & h3 {
        display: block grid;
        grid-template-columns: 1fr auto;
        grid-auto-flow: column;
        align-items: center;
        justify-content: flex-start;
        padding-inline-end: 1.1vw;
        font-weight: 500;

        &:has(button) {
          grid-template-columns: 1fr calc((100 / 390) * 45 * 1vw);
        }

        & button {
          position: relative;
          display: block flow;
          inline-size: 100%;
          aspect-ratio: 1 / 1;
          translate: 0 0.2vw;

          &::before {
            position: absolute;
            inset-block-start: 3.5vw;
            inset-inline-end: 0;
            display: block flow;
            inline-size: calc((100 / 390) * 19 * 1vw);
            aspect-ratio: 1 / 1;
            margin-inline: auto 0;
            content: '';
            background: white;
            clip-path: polygon(45% 0%, 55% 0%, 55% 45%, 100% 45%, 100% 55%, 55% 55%, 55% 100%, 45% 100%, 45% 55%, 0% 55%, 0% 45%, 45% 45%);
            mask-repeat: no-repeat;
            mask-position: center;
            mask-size: contain;
            transition: clip-path 150ms ease 0s;
            will-change: clip-path;
          }

          &.on {
            &::before {
              inset-block-start: 5.2vw;
              clip-path: polygon(45% 45%, 55% 45%, 55% 45%, 100% 45%, 100% 55%, 55% 55%, 55% 55%, 55% 100%, 55% 55%, 0% 55%, 0% 45%, 45% 45%);
            }
          }
        }
      }

      /* ==== section ==== */
      & section {
        border-block-end: 1px solid white;

        &:has(.on) .anchor {
          padding-block-end: 0;
        }
      }

      /* ==== anchor ==== */
      .anchor {
        position: relative;
        display: block flow;
        inline-size: 100%;
        padding-block: 4.4vw 3.7vw;
        letter-spacing: calc((100 / 390) * 1.12 * 1vw);
      }

      /* ==== ul ==== */
      & ul {
        position: relative;
        z-index: 2;
        display: none;
        grid-template-rows: 0fr;
        grid-template-columns: 1fr;
        margin-block-start: 0.2vw;
        font-size: calc((100 / 390) * 14 * 1vw);

        & li a {
          display: block flow;
          padding-inline-start: calc((100 / 390) * 8 * 1vw);
          letter-spacing: calc((100 / 390) * 0.98 * 1vw);
        }

        &.on {
          display: block grid;
          grid-template-rows: 1fr;
          padding-block-end: 3.3vw;
        }
      }
    }

    /* ==== contact ==== */
    .contact {
      display: block grid;
      place-content: center;
      padding-block: calc((100 / 390) * 12.5 * 1vw);
      margin-block-start: calc((100 / 390) * 48 * 1vw);
      font-weight: 700;
      color: var(--primary);
      letter-spacing: calc((100 / 390) * 1.12 * 1vw);
      background: white;
      border-radius: calc((100 / 390) * 8 * 1vw);
    }

    /* ==== sub-nav ==== */
    .sub-nav {
      margin-block-start: calc((100 / 390) * 47.6 * 1vw);

      & ul {
        display: block grid;
        gap: calc((100 / 390) * 16 * 1vw);
        font-size: calc((100 / 390) * 14 * 1vw);
        font-weight: 400;

        & li {
          & a {
            display: block grid;
            grid-template-columns: auto 1fr;
            gap: calc((100 / 390) * 8 * 1vw);
            align-items: center;
            letter-spacing: calc((100 / 390) * 0.98 * 1vw);

            &::before {
              inline-size: calc((100 / 390) * 10 * 1vw);
              aspect-ratio: 10 / 15;
              content: '';
              background-color: currentcolor;
              mask-image: var(--icon-angle);
              mask-repeat: no-repeat;
              mask-position: center;
              mask-size: contain;
            }
          }
        }
      }
    }
  }

  /* Menu on */
  .menu-on .sp-nav {
    pointer-events: auto;
    opacity: 1;
    translate: 0 0;
  }

  .header ul li {
    position: relative;
    font-weight: 500;
  }

  .header ul li::after {
    position: absolute;
    inset-block-end: 2px;
    inset-inline: auto;
    inline-size: 0;
    block-size: 2px;
    margin-inline: auto;
    content: '';
    background: var(--gradation-green);
    transition: inline-size 250ms ease 0s;
  }

  @media (any-hover: hover) {
    .header ul li {
      &:hover {
        &::after {
          inline-size: 100%;
        }
      }
    }
  }

  body:not([data-page='top'], [data-page='contact'], [data-page='entry'])::after {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 900;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100dvh;
    pointer-events: none;
    content: '';
    background: #fff;
    opacity: 1;
    transition: all 600ms ease-in-out 100ms;
  }

  .pageshow body::before {
    opacity: 0;
  }

  .pageshow body::after {
    opacity: 0;
  }

  @media (width <= 768px) {
    .header {
      transition: inset 250ms ease 0s;
    }

    body:not(.scrolled) .header {
      inset: 0 auto auto 0;
    }

    .menu-on .header {
      inset: 0 auto auto 0;
    }
  }

  @media (width > 768px) {
    main {
      margin-block-start: -101px;
    }
  }

  /* =====================
    lang="en"
  ===================== */
  html[lang='en'] {
    .header nav ul {
      font-family: var(--outfit);
      font-size: 20px;
    }

    .aside {
      padding-block: 104px 102px;

      @media only screen and (width <= 768px) {
        padding-block: calc((100 / 390) * 93 * 1vw) calc((100 / 390) * 80 * 1vw);
      }
    }

    .footer {
      @media only screen and (width <= 768px) {
        & address {
          display: block flow;
        }

        & [data-size='small'] {
          font-size: calc((100 / 390) * 13 * 1vw);
          translate: 0 calc((100 / 390) * 6 * 1vw);
        }

        & address span {
          font-size: calc((100 / 390) * 16 * 1vw);
          word-break: normal;
        }

        & .u-anchor {
          padding-block: 4.8vw;
          padding-inline: 14.7vw;
        }

        & nav {
          margin-block-start: calc((100 / 390) * 18 * 1vw);
        }

        & .main-nav {
          gap: calc((100 / 390) * 19 * 1vw) calc((100 / 390) * 35 * 1vw);
          margin-block-end: calc((100 / 390) * 6 * 1vw);
          font-size: calc((100 / 390) * 15 * 1vw);
          font-weight: 500;
        }

        & .sub-nav {
          font-size: calc((100 / 390) * 14 * 1vw);
          font-weight: 500;

          & li:last-child {
            font-size: calc((100 / 390) * 13 * 1vw);
          }
        }
      }
    }

    .sp-nav {
      .main-nav {
        & li {
          & a {
            padding-inline-end: calc((100 / 390) * 60 * 1vw);
            font-size: calc((100 / 390) * 14 * 1vw);
            letter-spacing: calc((100 / 390) * 1.08 * 1vw);
            word-break: normal;
          }
        }
      }
    }

    .u-mv {
      & hgroup {
        padding-block: 29px 27px;

        @media only screen and (width <= 768px) {
          padding-block: 13.6vw 0;
        }
      }
    }
  }
}
