@charset "UTF-8";

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

  /* color */
  --black: #111;
  --color-text-primary: #111;
  --primary: #0e41a4;
  --navy: #010336;
  --green: #274827;
  --gray100: #f8f8f8;
  --gray200: #f3f3f3;
  --gray300: #929292;
  --gray400: #3f3f3f;
  --lightblue: #e6f0fa;
  --lightgreen: #ecf4f2;
  --gradation-green: linear-gradient(99deg, #274827 15.76%, #aad59a 97.34%);
  --bg-grid: linear-gradient(0deg, transparent calc(100% - 1px), #f1f1f1 calc(100% - 1px)), linear-gradient(90deg, transparent calc(100% - 1px), #f1f1f1 calc(100% - 1px));

  /* 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;
  --title: 'League Spartan', sans-serif;
  --jp: 'Zen Kaku Gothic New', sans-serif; /* 500,700 */

  /* icon */
  --icon-arrow: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="23" height="12" viewBox="0 0 23 12" fill="none"> <path d="M20.1685 5.4C19.3571 4.78333 18.5457 4.06667 17.7343 3.25C16.923 2.41667 16.2109 1.58333 15.5983 0.749999L16.5173 0C17.3618 1.16667 18.3719 2.275 19.5475 3.325C20.7232 4.375 21.874 5.26667 23 6C21.874 6.71667 20.7232 7.60833 19.5475 8.675C18.3719 9.725 17.3618 10.8333 16.5173 12L15.5983 11.25C16.2441 10.3833 16.9644 9.54167 17.7592 8.725C18.554 7.90833 19.3571 7.2 20.1685 6.6H0V5.4H20.1685Z" fill="currentColor"/> </svg>');
  --icon-download: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="17" viewBox="0 0 16 17" fill="none"> <path d="M15.8125 10.25V15.25C15.8125 15.4986 15.7137 15.7371 15.5379 15.9129C15.3621 16.0887 15.1236 16.1875 14.875 16.1875H1.125C0.87636 16.1875 0.637903 16.0887 0.462087 15.9129C0.286272 15.7371 0.1875 15.4986 0.1875 15.25V10.25C0.1875 10.0014 0.286272 9.7629 0.462087 9.58709C0.637903 9.41127 0.87636 9.3125 1.125 9.3125C1.37364 9.3125 1.6121 9.41127 1.78791 9.58709C1.96373 9.7629 2.0625 10.0014 2.0625 10.25V14.3125H13.9375V10.25C13.9375 10.0014 14.0363 9.7629 14.2121 9.58709C14.3879 9.41127 14.6264 9.3125 14.875 9.3125C15.1236 9.3125 15.3621 9.41127 15.5379 9.58709C15.7137 9.7629 15.8125 10.0014 15.8125 10.25ZM7.33672 10.9133C7.42382 11.0007 7.52731 11.07 7.64126 11.1173C7.75522 11.1647 7.87739 11.189 8.00078 11.189C8.12417 11.189 8.24634 11.1647 8.3603 11.1173C8.47425 11.07 8.57775 11.0007 8.66484 10.9133L11.7898 7.78828C11.966 7.61216 12.0649 7.37329 12.0649 7.12422C12.0649 6.87515 11.966 6.63628 11.7898 6.46016C11.6137 6.28404 11.3749 6.18509 11.1258 6.18509C10.8767 6.18509 10.6378 6.28404 10.4617 6.46016L8.9375 7.98438V1.5C8.9375 1.25136 8.83873 1.0129 8.66291 0.837087C8.4871 0.661272 8.24864 0.5625 8 0.5625C7.75136 0.5625 7.5129 0.661272 7.33709 0.837087C7.16127 1.0129 7.0625 1.25136 7.0625 1.5V7.98438L5.53828 6.46172C5.45108 6.37451 5.34755 6.30534 5.23361 6.25814C5.11967 6.21095 4.99755 6.18666 4.87422 6.18666C4.62515 6.18666 4.38628 6.2856 4.21016 6.46172C4.12295 6.54892 4.05377 6.65245 4.00658 6.76639C3.95938 6.88033 3.93509 7.00245 3.93509 7.12578C3.93509 7.37485 4.03404 7.61372 4.21016 7.78984L7.33672 10.9133Z" fill="currentColor"/> </svg>');
  --icon-arrow-circle: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" fill="none"> <path d="M39 20C39 9.50659 30.4934 1 20 1C9.50659 1 1 9.50659 1 20C1 30.4934 9.50659 39 20 39V40C8.9543 40 0 31.0457 0 20C0 8.9543 8.9543 0 20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40V39C30.4934 39 39 30.4934 39 20Z" fill="currentColor"/> <path d="M26.784 19.05C26.149 18.5875 25.514 18.05 24.8791 17.4375C24.2441 16.8125 23.6868 16.1875 23.2073 15.5625L23.9266 15C24.5875 15.875 25.378 16.7062 26.2981 17.4937C27.2181 18.2812 28.1188 18.95 29 19.5C28.1188 20.0375 27.2181 20.7063 26.2981 21.5063C25.378 22.2938 24.5875 23.125 23.9266 24L23.2073 23.4375C23.7127 22.7875 24.2765 22.1562 24.8985 21.5437C25.5205 20.9312 26.149 20.4 26.784 19.95H11V19.05H26.784Z" 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-home: url('data:image/svg+xml,<svg width="18" height="19" viewBox="0 0 18 19" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M18 9.25004V18.25C18 18.449 17.921 18.6397 17.7803 18.7804C17.6397 18.921 17.4489 19 17.25 19H12C11.8011 19 11.6103 18.921 11.4697 18.7804C11.329 18.6397 11.25 18.449 11.25 18.25V13.375C11.25 13.2756 11.2105 13.1802 11.1402 13.1099C11.0698 13.0395 10.9745 13 10.875 13H7.125C7.02554 13 6.93016 13.0395 6.85983 13.1099C6.78951 13.1802 6.75 13.2756 6.75 13.375V18.25C6.75 18.449 6.67098 18.6397 6.53033 18.7804C6.38968 18.921 6.19891 19 6 19H0.75C0.551088 19 0.360322 18.921 0.21967 18.7804C0.0790178 18.6397 0 18.449 0 18.25V9.25004C0.000184396 8.85228 0.15834 8.47089 0.439687 8.18973L7.93969 0.689725C8.22096 0.408633 8.60235 0.250732 9 0.250732C9.39765 0.250732 9.77904 0.408633 10.0603 0.689725L17.5603 8.18973C17.8417 8.47089 17.9998 8.85228 18 9.25004Z" fill="currentColor"/> </svg>');
  --icon-earth: url('data:image/svg+xml,<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M38.8492 9.16324C36.9026 7.19746 34.5869 5.63565 32.0349 4.56754C29.483 3.49943 26.7451 2.94608 23.9787 2.93927C21.2122 2.93246 18.4717 3.47233 15.9145 4.52786C13.3574 5.5834 11.0339 7.13379 9.07776 9.08997C7.12158 11.0461 5.57119 13.3696 4.51566 15.9267C3.46013 18.4839 2.92026 21.2244 2.92707 23.9909C2.93387 26.7573 3.48723 29.4952 4.55533 32.0471C5.62344 34.5991 7.18525 36.9148 9.15103 38.8614C11.0976 40.8272 13.4133 42.389 15.9653 43.4571C18.5172 44.5252 21.2551 45.0785 24.0215 45.0853C26.788 45.0921 29.5285 44.5523 32.0857 43.4967C34.6428 42.4412 36.9663 40.8908 38.9224 38.9346C40.8786 36.9785 42.429 34.655 43.4845 32.0979C44.5401 29.5407 45.0799 26.8002 45.0731 24.0337C45.0663 21.2673 44.513 18.5294 43.4449 15.9775C42.3768 13.4255 40.8149 11.1098 38.8492 9.16324ZM6.0001 24.0123C5.99939 22.4192 6.21062 20.8331 6.62822 19.2957C7.31635 20.777 8.31572 22.0567 8.99541 23.5764C9.87385 25.5301 12.2326 24.9882 13.2742 26.7001C14.1985 28.2198 13.2113 30.1417 13.9032 31.7317C14.4057 32.8857 15.5907 33.1379 16.4082 33.9817C17.2435 34.8329 17.2257 35.9992 17.3532 37.1092C17.497 38.4134 17.7304 39.7061 18.0517 40.9782C18.0517 40.9876 18.0517 40.9979 18.0592 41.0073C11.0438 38.5436 6.0001 31.8564 6.0001 24.0123ZM24.0001 42.0123C22.9949 42.012 21.9914 41.928 21.0001 41.7611C21.0104 41.507 21.0151 41.2698 21.0404 41.1048C21.2682 39.6142 22.0145 38.1564 23.0213 37.0407C24.016 35.9401 25.3792 35.1957 26.2192 33.947C27.0423 32.7282 27.2888 31.0876 26.9495 29.6636C26.4498 27.5598 23.5913 26.8576 22.0501 25.7167C21.1642 25.0604 20.3757 24.0461 19.2123 23.9636C18.676 23.9261 18.227 24.0414 17.6954 23.9045C17.2079 23.7779 16.8254 23.5154 16.306 23.5839C15.3357 23.7114 14.7235 24.7482 13.681 24.6076C12.692 24.4754 11.6729 23.3176 11.4479 22.3754C11.1592 21.1642 12.1173 20.7714 13.1438 20.6636C13.5723 20.6186 14.0532 20.5698 14.4648 20.7273C15.0067 20.9279 15.2626 21.4586 15.7492 21.7267C16.6613 22.2273 16.846 21.4276 16.7063 20.6176C16.4973 19.4045 16.2535 18.9104 17.3354 18.0751C18.0854 17.4995 18.7267 17.0832 18.6067 16.0492C18.5354 15.4417 18.2026 15.167 18.5129 14.5623C18.7482 14.102 19.3942 13.6867 19.8151 13.412C20.9017 12.7032 24.4698 12.7557 23.012 10.772C22.5835 10.1898 21.7932 9.14918 21.0432 9.00668C20.1057 8.82949 19.6895 9.87574 19.036 10.337C18.361 10.8142 17.0467 11.3561 16.3707 10.6182C15.4613 9.62543 16.9735 9.30012 17.3082 8.60637C17.4629 8.28293 17.3082 7.83387 17.0476 7.41105C17.3857 7.26855 17.7295 7.13637 18.0788 7.01449C18.2978 7.17621 18.5575 7.27361 18.8288 7.29574C19.456 7.33699 20.0476 6.99762 20.5951 7.42512C21.2026 7.89387 21.6404 8.48637 22.4467 8.63262C23.2267 8.77418 24.0526 8.31949 24.2457 7.52074C24.3629 7.03512 24.2457 6.5223 24.1332 6.02074C27.6395 6.04092 31.0625 7.09098 33.977 9.04043C33.7895 8.96918 33.5654 8.97762 33.2888 9.10605C32.7198 9.37043 31.9135 10.0436 31.847 10.7111C31.771 11.4686 32.8885 11.5754 33.4192 11.5754C34.216 11.5754 35.0232 11.2192 34.7663 10.2986C34.6548 9.89918 34.5029 9.48387 34.2582 9.23262C34.8465 9.64072 35.4099 10.0834 35.9457 10.5582C35.9373 10.5667 35.9288 10.5742 35.9204 10.5836C35.3804 11.1461 34.7532 11.5914 34.3838 12.2757C34.1232 12.7576 33.8298 12.9864 33.302 13.1111C33.0113 13.1795 32.6795 13.2048 32.4357 13.3998C31.757 13.9342 32.1432 15.2186 32.7863 15.6039C33.5992 16.0904 34.8048 15.8617 35.4179 15.167C35.897 14.6232 36.1792 13.6792 37.0407 13.6801C37.42 13.6793 37.7844 13.8278 38.0551 14.0936C38.4113 14.4629 38.341 14.8079 38.417 15.2692C38.551 16.0886 39.2738 15.6442 39.7135 15.2307C40.0341 15.8011 40.3232 16.3886 40.5798 16.9904C40.096 17.687 39.7117 18.4464 38.5482 17.6345C37.8517 17.1479 37.4232 16.442 36.5485 16.2226C35.7845 16.0351 35.0017 16.2301 34.247 16.3604C33.3892 16.5095 32.372 16.5751 31.7213 17.2248C31.0923 17.8511 30.7595 18.6892 30.0901 19.3182C28.7954 20.537 28.2488 21.8673 29.087 23.5904C29.8932 25.247 31.5798 26.1461 33.3995 26.0279C35.1873 25.9089 37.0445 24.872 36.9929 27.4698C36.9742 28.3895 37.1663 29.0261 37.4485 29.8801C37.7101 30.6676 37.6923 31.4307 37.7523 32.2436C37.8093 33.1954 37.9581 34.1394 38.1967 35.0626C36.5163 37.2262 34.3636 38.977 31.9032 40.1815C29.4427 41.386 26.7395 42.0122 24.0001 42.0123Z" fill="currentColor"/> </svg>');
  --icon-blank: url('data:image/svg+xml,<svg height="200" width="200" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <g fill="currentColor"> <path d="M14.5 14.5v-3.25a.5.5 0 0 1 1 0V15a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5h3.75a.5.5 0 0 1 0 1H5.5v9h9Z"/> <path d="M10.354 10.354a.5.5 0 0 1-.708-.708l5-5a.5.5 0 0 1 .708.708l-5 5Z"/> <path d="M15.5 8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 1 0v3.5Z"/> <path d="M11.5 5.5a.5.5 0 0 1 0-1H15a.5.5 0 0 1 0 1h-3.5Z"/> </g> </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);

    @media (width <= 768px) {
      font-size: calc((100 / 390) * 14 * 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 {
    --_padding-block: 24px;

    position: fixed;
    inset-block-start: 0;
    inset-inline: auto;
    z-index: 40;
    display: block grid;
    grid-template-columns: minmax(303px, 1fr) auto;
    align-items: center;
    justify-content: center;
    inline-size: 100%;
    padding-inline: 40px;
    margin-inline: auto;
    pointer-events: none;
    transition: background 250ms ease 0s;
    will-change: background;

    @media (width <= 768px) {
      --_padding-block: calc((100 / 390) * 20.41 * 1vw);

      grid-template-columns: minmax(calc((100 / 390) * 240 * 1vw), 1fr) auto;
      padding-inline: calc((100 / 390) * 16 * 1vw);
    }

    /* ==== logo ==== */
    .logo {
      display: block;
      inline-size: fit-content;
    }

    & hgroup {
      display: block grid;
      gap: 8px;
      justify-content: center;
      padding-block: var(--_padding-block);
      pointer-events: auto;

      @media (width <= 768px) {
        gap: calc((100 / 390) * 4 * 1vw);

        & img {
          max-inline-size: calc((100 / 390) * 215 * 1vw);
          vertical-align: top;
        }
      }

      & h1 {
        margin-block: calc((1em - 1lh) / 2);
        font-family: var(--jp);
        font-size: 12px;
        font-weight: 500;
        text-align: center;
        letter-spacing: 1.68px;

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

    /* ==== nav ==== */
    .nav {
      block-size: 100%;
      padding-inline-end: 40px;
      pointer-events: auto;

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

      & ul {
        display: block grid;
        grid-auto-flow: column;
        gap: 40px;
        align-items: center;
        justify-content: flex-start;
        block-size: inherit;

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

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

      /* ==== contact ==== */
      .contact {
        display: block flex;
        gap: 8px;

        &::before {
          display: inline-block;
          flex-shrink: 0;
          inline-size: 18px;
          block-size: 14px;
          content: '';
          background-image: url('../img/_common/mail.svg');
          background-repeat: no-repeat;
          background-position: center;
          background-size: contain;
        }
      }
    }
  }

  .header-color .header {
    background-color: white;
  }

  .menu-on .header {
    background-color: white;
  }

  /* =====================
    aside
  ===================== */
  .aside {
    padding-block: 80px 71px;
    color: white;
    background: var(--gradation-green);

    @media (width <= 768px) {
      padding-block: calc((100 / 390) * 55 * 1vw) calc((100 / 390) * 56 * 1vw);
    }

    /* ==== inner ==== */
    .inner {
      display: block grid;
      gap: 31px 55px;
      max-inline-size: 1200px;
      margin-inline: auto;

      @media (width <= 768px) {
        display: block flex;
        flex-direction: column;
        gap: calc((100 / 390) * 24 * 1vw);
        padding-inline: calc((100 / 390) * 32 * 1vw);
      }

      /* ==== head ==== */
      .u-head {
        grid-area: 1 / 1 / 2 / 2;

        & span[lang='en'] {
          color: white;
        }

        .title {
          color: white;
        }
      }

      /* ==== body ==== */
      .body {
        grid-area: 2 / 1 / 3 / 2;
        line-height: 2;

        & span {
          display: block flow;
        }
      }

      /* ==== tel ==== */
      .tel {
        position: relative;
        display: block grid;
        grid-area: 1 / 2 / 3 / 3;
        grid-template-columns: 1fr auto;
        gap: 20px;
        align-items: center;
        justify-content: left;

        @media (width <= 768px) {
          display: block flex;
          flex-direction: column;
          gap: 17.6vw;
          margin-block-start: calc((100 / 390) * 23 * 1vw);
        }

        &::before {
          position: absolute;
          inset-block: auto;
          inset-inline-start: 50%;
          inline-size: 1px;
          block-size: 46%;
          content: '';
          background-color: white;
          translate: 0 -5px;
        }

        @media (width <= 768px) {
          &::before {
            inset-block-start: 39%;
            inset-inline-start: auto;
            inline-size: 80%;
            block-size: calc((100 / 390) * 1 * 1vw);
            translate: 0 0;
          }
        }

        /* ==== link ==== */
        & a[href^='tel:'] {
          display: block flex;
          gap: 9px;
          align-items: center;
          font-family: var(--title);
          font-size: 38px;
          font-weight: 500;
          line-height: 1;
          letter-spacing: 1.52px;

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

          &::before {
            font-size: 26px;
            content: 'Tel';
          }

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

        /* ==== anchor ==== */
        .u-anchor {
          border-color: var(--gray100);
          translate: 0 -5px;

          @media (width <= 768px) {
            translate: 0 0;
          }
        }
      }
    }
  }

  /* =====================
    footer
  ===================== */
  .footer {
    display: block flow;

    /* ==== inner ==== */
    .inner {
      position: relative;
      display: block grid;
      gap: 39px 0;
      max-inline-size: 1280px;
      padding-block: 80px 71px;
      margin-inline: auto;

      @media (width <= 768px) {
        display: block flex;
        flex-direction: column;
        gap: calc((100 / 390) * 0 * 1vw);
        padding-block: calc((100 / 390) * 31 * 1vw) 71px;
        padding-inline: calc((100 / 390) * 32 * 1vw);
      }

      /* ==== nav ==== */
      .nav {
        grid-area: 1 / 2 / 5 / 3;

        & ul {
          display: grid;
          grid-template-rows: repeat(4, 1fr);
          grid-auto-flow: column;
          gap: 0 89px;
          align-items: flex-start;
          justify-content: flex-start;
          max-inline-size: fit-content;
          margin-inline: auto 184px;
          translate: 0 -20px;

          @media (width <= 768px) {
            display: block flex;
            flex-direction: column;
            gap: 0;
            justify-content: flex-start;
            max-inline-size: 100%;
            margin-inline: 0;
            translate: 0 0;
          }

          & li {
            inline-size: 100%;

            & a {
              display: block grid;
              inline-size: 100%;
              padding-block: 10px;

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

      /* ==== logo ==== */
      .logo {
        grid-area: 1 / 1 / 2 / 2;
        inline-size: fit-content;

        @media (width <= 768px) {
          display: block flow;
          margin-block-start: calc((100 / 390) * 40 * 1vw);
        }

        & img {
          inline-size: 292px;
          block-size: auto;

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

      /* ==== address ==== */
      .address {
        display: block grid;
        grid-area: 2 / 1 / 3 / 2;
        gap: 20px;
        font-size: 14px;

        @media (width <= 768px) {
          gap: calc((100 / 390) * 13 * 1vw);
          margin-block-start: calc((100 / 390) * 21 * 1vw);
          font-size: calc((100 / 390) * 13 * 1vw);
        }

        & section {
          display: block grid;
          gap: 4px;

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

        & h2 {
          font-weight: 500;
          color: var(--green);

          &::before {
            content: '[';
          }

          &::after {
            content: ']';
          }
        }

        & address {
          display: grid;
          gap: 0;
          margin-block-start: 0.1vw;

          .unit {
            display: block flex;
            flex-wrap: wrap;
            gap: 14px;

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

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

            &:nth-child(2) {
              gap: 4px;

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

            &:nth-child(2) span:last-child::before {
              content: '/';
            }

            & span:last-child {
              display: block flex;
              gap: 2px;

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

      /* ==== sub-nav ==== */
      .sub-nav {
        grid-area: 3 / 1 / 4 / 2;
        font-size: 14px;
        color: var(--gray400);

        @media (width <= 768px) {
          margin-block-start: calc((100 / 390) * 36 * 1vw);
          font-size: calc((100 / 390) * 13 * 1vw);
        }

        & ul {
          display: block flex;
          gap: 24px;
          margin-block: calc((1em - 1lh) / 2);
          translate: 0 5px;

          @media (width <= 768px) {
            gap: calc((100 / 390) * 24 * 1vw);
            translate: 0 0;
          }

          & li {
            margin-block: calc((1em - 1lh) / 2);

            & a {
              line-height: 1;
            }
          }
        }
      }

      /* ==== copyright ==== */
      .copyright {
        grid-area: 4 / 1 / 5 / 2;
        margin-block: calc((1em - 1lh) / 2);
        font-family: var(--title);
        font-size: 14px;
        color: var(--gray400);

        @media (width <= 768px) {
          margin-block-start: calc((100 / 390) * 30 * 1vw);
          font-size: calc((100 / 390) * 14 * 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: calc((100 / 390) * 16 * 1vw);
    inset-inline-end: calc((100 / 390) * 16 * 1vw);
    z-index: 41;
    display: block grid;
    gap: calc((100 / 390) * 8 * 1vw);
    place-content: center;
    inline-size: calc((100 / 390) * 48 * 1vw);
    block-size: calc((100 / 390) * 48 * 1vw);
    aspect-ratio: 1 / 1;
    cursor: pointer;
    background: var(--gradation-green);
    border-radius: calc((100 / 390) * 6 * 1vw);

    &::before,
    &::after {
      inline-size: calc((100 / 390) * 20 * 1vw);
      block-size: 1px;
      content: '';
      background: white;
      transform-origin: 0 0;
      transition: all 250ms ease 0s;
    }

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

  .menu-on .sp-menu {
    &::before {
      rotate: 0 0 1 27deg;
    }

    &::after {
      rotate: 0 0 1 -27deg;
    }
  }

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

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

    .inner {
      block-size: calc(100svh - (100 / 390) * 80 * 1vw);
      padding-block: calc((100 / 390) * 38 * 1vw) calc((100 / 390) * 90 * 1vw);
      padding-inline: calc((100 / 390) * 32 * 1vw);
      overflow-y: scroll;
    }

    /* ==== nav ==== */
    .nav {
      font-size: calc((100 / 390) * 16 * 1vw);
      font-weight: 500;

      & li {
        border-block-end: 1px solid white;

        & a {
          display: block grid;
          grid-template-columns: 1fr auto;
          align-items: center;
          padding-block: calc((100 / 390) * 25 * 1vw);

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

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

      & ul {
        display: block flex;
        flex-wrap: wrap;
        gap: calc((100 / 390) * 24 * 1vw);
        font-size: calc((100 / 390) * 13 * 1vw);

        & li {
          margin-block: calc((1em - 1lh) / 2);
        }
      }
    }
  }

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

  .header ul li {
    position: relative;
  }

  .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[data-page='company'] .header ul li:has([href='/company/']),
  body[data-page='products'] .header ul li:has([href='/products/']),
  body[data-page='manufacturers'] .header ul li:has([href='/manufacturers/']),
  body[data-page='research'] .header ul li:has([href='/research/']),
  body[data-page='recruit'] .header ul li:has([href='/recruit/']),
  body[data-page='sdgs'] .header ul li:has([href='/sdgs/']),
  body[data-page='detail'] .header ul li:has([href='/products/']),
  body[data-page='contact'] .header ul li:has([href='/contact/']) {
    color: var(--green);
    pointer-events: none;

    &::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;
    }

    .scrollDown .header {
      inset: calc((100 / 390) * 80 * -1 * 1vw) auto auto 0;
    }

    .scrollUp .header {
      inset: 0 auto auto 0;
    }

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

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

  @media (768px < width < 1250px) {
    .header {
      position: sticky;
    }

    main {
      translate: 0 -97px;
    }
  }
}

/* =====================
  google custom search
===================== */
.g-search {
  position: fixed;
  top: 80px;
  right: 80px;
  inline-size: 320px;
  pointer-events: auto;

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

  @media only screen and (width <= 768px) {
    top: 20vw;
    right: 4vw;
    inline-size: 50vw;
  }

  .gsc-control-cse {
    @media (width <= 768px) {
      border: none;
    }

    background: transparent !important;
  }

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

  .gsc-search-button-v2 {
    @media (width <= 768px) {
      border-radius: 0 !important;
    }
  }

  .gsc-input-box {
    @media (width <= 768px) {
      padding-block: 0 !important;
      border-radius: 0 !important;
    }
  }

  & svg {
    display: block;
    inline-size: 23px;
    max-inline-size: 20px;
    block-size: 24px;

    @media only screen and (width <= 768px) {
      display: block;
      inline-size: 13vw;
      max-inline-size: 3.8vw;
      block-size: 3.4vw;
    }
  }
}

/* =====================
  google custom search
===================== */
.g-search-sp {
  margin-block-start: 14vw;
  background: transparent !important;
  border: none;

  .gsc-search-box {
    width: fit-content;
  }

  .gsc-search-box-tools .gsc-search-box .gsc-input {
    padding-block: 0 !important;
    padding-right: 0 !important;
    font-size: calc((100 / 390) * 16 * 1vw);
  }

  .gsc-search-button-v2 {
    border-radius: 0 !important;
  }

  .gsib_a {
    padding-block: calc((100 / 390) * 12 * 1vw);
  }

  .gsc-input-box {
    inline-size: 40vw;
    padding-block: 0 !important;
    border-radius: 0 !important;
  }

  .gsc-search-button {
    block-size: 9vw !important;
    margin-left: calc((100 / 390) * 16 * 1vw) !important;

    & svg {
      display: block;
      inline-size: 13vw;
      max-inline-size: 3.8vw;
      block-size: 3.4vw;
    }
  }
}

.gsc-control-cse {
  padding: 0;
}

.gsc-selected-option-container {
  max-width: 100% !important;
}

.gsc-control-cse {
  padding: 0 !important;
}
