@charset "UTF-8";

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

  /* color */
  --black: #000;
  --primary: #0e90a2;
  --secondary: #7fb3d6;
  --sub: #ee704e;
  --bg: #ecf2e4;

  /* 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: 'BIZ UDPGothic', sans-serif;

  /* icon */
  --icon-tel: 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="M8.33328 16.4333C11.5336 23.401 17.2189 28.9235 24.2766 31.92L25.4099 32.425C26.665 32.9839 28.077 33.0818 29.3972 32.7016C30.7174 32.3214 31.8611 31.4875 32.6266 30.3467L34.1083 28.14C34.3401 27.7939 34.434 27.3736 34.3714 26.9618C34.3088 26.5499 34.0942 26.1765 33.7699 25.915L28.7499 21.865C28.5751 21.7241 28.3736 21.6199 28.1575 21.5588C27.9414 21.4976 27.7152 21.4808 27.4925 21.5093C27.2697 21.5378 27.055 21.611 26.8612 21.7245C26.6675 21.8381 26.4987 21.9896 26.3649 22.17L24.8116 24.265C20.8243 22.2957 17.5968 19.0677 15.6283 15.08L17.7216 13.5267C17.902 13.3929 18.0535 13.2241 18.1671 13.0304C18.2806 12.8366 18.3538 12.6219 18.3823 12.3992C18.4108 12.1764 18.394 11.9502 18.3329 11.7341C18.2717 11.518 18.1676 11.3165 18.0266 11.1417L13.9766 6.12167C13.7151 5.79742 13.3417 5.58286 12.9298 5.52024C12.518 5.45761 12.0977 5.55148 11.7516 5.78333L9.52994 7.27333C8.38228 8.04296 7.54509 9.19502 7.16753 10.5243C6.78997 11.8535 6.89655 13.2737 7.46828 14.5317L8.33328 16.4333Z" fill="currentColor"/> </svg>');
  --icon-pin: 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="M20 23.3333C23.6766 23.3333 26.6666 20.3433 26.6666 16.6667C26.6666 12.99 23.6766 10 20 10C16.3233 10 13.3333 12.99 13.3333 16.6667C13.3333 20.3433 16.3233 23.3333 20 23.3333ZM20 13.3333C21.8383 13.3333 23.3333 14.8283 23.3333 16.6667C23.3333 18.505 21.8383 20 20 20C18.1616 20 16.6666 18.505 16.6666 16.6667C16.6666 14.8283 18.1616 13.3333 20 13.3333Z" fill="currentColor"/> <path d="M19.0333 36.3567C19.3156 36.5576 19.6535 36.6656 20 36.6656C20.3465 36.6656 20.6844 36.5576 20.9667 36.3567C21.4733 35.9983 33.3817 27.4 33.3333 16.6667C33.3333 9.315 27.3517 3.33333 20 3.33333C12.6483 3.33333 6.66665 9.315 6.66665 16.6583C6.61832 27.4 18.5267 35.9983 19.0333 36.3567ZM20 6.66667C25.515 6.66667 30 11.1517 30 16.675C30.035 24.0717 22.6867 30.7133 20 32.8917C17.315 30.7117 9.96498 24.0683 9.99998 16.6667C9.99998 11.1517 14.485 6.66667 20 6.66667Z" fill="currentColor"/> </svg>');
  --icon-mail: 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="M34 9H6C5.46957 9 4.96086 9.21071 4.58579 9.58579C4.21071 9.96086 4 10.4696 4 11V29C4 29.5304 4.21071 30.0391 4.58579 30.4142C4.96086 30.7893 5.46957 31 6 31H34C34.5304 31 35.0391 30.7893 35.4142 30.4142C35.7893 30.0391 36 29.5304 36 29V11C36 10.4696 35.7893 9.96086 35.4142 9.58579C35.0391 9.21071 34.5304 9 34 9ZM31.4 11.5L20.84 21.12C20.6111 21.3308 20.3112 21.4479 20 21.4479C19.6888 21.4479 19.3889 21.3308 19.16 21.12L8.6 11.5H31.4ZM6.5 28.5V12.96L17.48 22.96C18.1668 23.5925 19.0663 23.9436 20 23.9436C20.9337 23.9436 21.8332 23.5925 22.52 22.96L33.5 12.96V28.5H6.5Z" fill="currentColor"/></svg>');
  --icon-arrow: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="17" height="32" viewBox="0 0 17 32" fill="none"><path d="M9.35828 21.5867L12.9849 17.96C13.0765 17.8617 13.1869 17.7829 13.3096 17.7283C13.4322 17.6736 13.5646 17.6442 13.6989 17.6419C13.8332 17.6395 13.9666 17.6642 14.0911 17.7145C14.2156 17.7648 14.3287 17.8397 14.4237 17.9346C14.5186 18.0296 14.5935 18.1427 14.6438 18.2672C14.6941 18.3917 14.7188 18.5251 14.7164 18.6594C14.714 18.7936 14.6846 18.926 14.63 19.0487C14.5753 19.1714 14.4965 19.2818 14.3983 19.3733L9.06494 24.7067C8.87744 24.8939 8.62328 24.9991 8.35828 24.9991C8.09328 24.9991 7.83911 24.8939 7.65161 24.7067L2.31828 19.3733C2.22003 19.2818 2.14123 19.1714 2.08657 19.0487C2.03191 18.926 2.00252 18.7936 2.00016 18.6594C1.99779 18.5251 2.02249 18.3917 2.07278 18.2672C2.12308 18.1427 2.19793 18.0296 2.29289 17.9346C2.38785 17.8397 2.50096 17.7648 2.62548 17.7145C2.75 17.6642 2.88337 17.6395 3.01764 17.6419C3.15191 17.6442 3.28433 17.6736 3.407 17.7283C3.52966 17.7829 3.64006 17.8617 3.73161 17.96L7.35828 21.5867V8.66666C7.35828 8.40145 7.46363 8.14709 7.65117 7.95956C7.83871 7.77202 8.09306 7.66666 8.35828 7.66666C8.62349 7.66666 8.87785 7.77202 9.06538 7.95956C9.25292 8.14709 9.35828 8.40145 9.35828 8.66666V21.5867Z" fill="currentColor"/> </svg>');
  --icon-cross: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="38" height="38" viewBox="0 0 38 38" fill="none"><path d="M18.8574 16.7363L35.3555 0.238281L37.4766 2.35938L20.9785 18.8574L37.4766 35.3555L35.3555 37.4766L18.8574 20.9785L2.12109 37.7148L0 35.5938L16.7363 18.8574L0 2.12109L2.12109 0L18.8574 16.7363Z" fill="currentColor"/></svg>');
  --icon-triangle: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="41" viewBox="0 0 20 41" fill="none"> <path fill-rule="evenodd" clip-rule="evenodd" d="M16.9283 21.8651L7.49998 31.2934L5.14331 28.9367L13.3933 20.6867L5.14331 12.4367L7.49998 10.0801L16.9283 19.5084C17.2408 19.821 17.4163 20.2448 17.4163 20.6867C17.4163 21.1287 17.2408 21.5525 16.9283 21.8651Z" fill="currentColor"/> </svg>');
  --icon-next: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="41" viewBox="0 0 40 41" fill="none"> <path d="M18.3517 34.3211C18.5352 34.5876 18.7807 34.8055 19.0671 34.956C19.3535 35.1065 19.6722 35.1852 19.9957 35.1852C20.3193 35.1852 20.638 35.1065 20.9243 34.956C21.2107 34.8055 21.4562 34.5876 21.6397 34.3211L39.6397 8.32111C39.8481 8.02122 39.9703 7.66997 39.993 7.30552C40.0157 6.94107 39.9382 6.57735 39.7687 6.25389C39.5992 5.93043 39.3444 5.6596 39.0318 5.47082C38.7192 5.28204 38.3609 5.18253 37.9957 5.18311H1.99572C1.63141 5.18461 1.2744 5.2854 0.963084 5.47463C0.651769 5.66387 0.397929 5.93438 0.22886 6.25709C0.0597924 6.5798 -0.0181063 6.9425 0.00354159 7.30617C0.0251895 7.66984 0.145565 8.02073 0.351723 8.32111L18.3517 34.3211Z" fill="currentColor"/> </svg>');
  --img-hr: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 62.8"><path d="M720,62.6C414.4,62.6,147,37.5,0,0v62.8h1440V0c-147,37.5-414.4,62.6-720,62.6Z" 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);
}

@media (width <= 768px) {
  :root {
    --img-hr: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 390 16.9"> <path class="st0" d="M195,16.9C112.2,16.9,39.8,10.2,0,0v16.9h390V0c-39.8,10.2-112.2,16.9-195,16.9Z" fill="currentColor"/> </svg>');
  }
}

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

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

@layer style {
  /* =====================
    common
  ===================== */
  html,
  body {
    font-family: var(--sanserif);
    font-size: 18px;
    font-weight: 400;
    line-height: 1.8;
    color: var(--black);

    @media (width <= 768px) {
      font-size: calc((100 / 390) * 18 * 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 auto;
    z-index: 20;
    display: block grid;
    grid-template-columns: 331px 1fr;
    grid-auto-flow: column;
    align-items: flex-start;
    justify-content: flex-start;
    inline-size: 100%;
    background: white;

    @media (width <= 768px) {
      display: block flex;
      flex-direction: column;
    }

    /* ==== logo ==== */
    .logo {
      display: block flex;
      gap: 10px;
      align-items: center;
      padding-block: 32px;
      padding-inline: 40px 28px;
      color: white;
      background: var(--primary);
      transition: opacity 250ms ease 0s;
      will-change: opacity;

      @media (width <= 768px) {
        gap: 2.6vw;
        justify-content: center;
        inline-size: 100%;
        padding-block: 2vw;
        padding-inline: 0;

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

      @media (any-hover: hover) {
        &:hover {
          opacity: 0.8;
        }
      }

      /* ==== hgroup ==== */
      .hgroup {
        display: block grid;
        gap: 10px;

        @media (width <= 768px) {
          gap: 2.6vw;
        }
      }

      & :where(h1, p) {
        margin-block: calc((1em - 1lh) / 2);
        line-height: 1;
      }

      /* ==== p ==== */
      & p {
        font-size: 14px;
        font-weight: 700;
        letter-spacing: 1.12px;

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

      /* ==== h1 ==== */
      & h1 {
        font-size: 32px;
        font-weight: 700;

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

    /* ==== nav ==== */
    .nav {
      display: block grid;

      @media (width <= 768px) {
        inline-size: 100%;
      }
    }

    /* ==== unit ==== */
    .unit {
      display: block grid;
      grid-template-columns: 1fr 205px 250px;

      @media (width > 768px) {
        @container (width <= 610px) {
          grid-template-columns: 1fr auto auto;
        }
      }

      @media (width <= 768px) {
        grid-template-columns: repeat(3, 1fr);
        border-top: 1px solid white;
      }

      /* ==== .tel ==== */
      .tel {
        display: block flex;
        gap: 8px;
        align-items: center;
        justify-content: flex-end;
        padding-inline: 33px;

        /* icon */
        &::before {
          flex-shrink: 0;
          inline-size: 40px;
          aspect-ratio: 1 / 1;
          content: '';
          background-color: var(--primary);
          mask-image: var(--icon-tel);
          mask-repeat: no-repeat;
          mask-position: center;
          mask-size: contain;
        }

        @media (width <= 768px) {
          gap: 0;
          justify-content: center;
          padding-inline: 0;

          &::before {
            inline-size: calc((100 / 390) * 40 * 1vw);
          }

          & > * {
            display: none !important;
          }
        }

        /* ==== a ==== */
        & .number {
          display: block flow;

          /* flex-shrink: 0; */
          margin-block: calc((1em - 1lh) / 2);
          font-size: 24px;
          font-weight: 700;
          color: var(--primary);
        }

        /* ==== p ==== */
        & p {
          margin-block: calc((1em - 1lh) / 2);
          font-size: 16px;
        }
      }

      /* ==== access ==== */
      .access {
        display: block flex;
        gap: 11px;
        align-items: center;
        justify-content: center;
        padding-block: 16px;
        padding-inline: 40px;
        font-size: 20px;
        font-weight: 700;
        color: white;
        background: var(--sub);
        transition: background 250ms ease 0s;
        will-change: background;

        @media (any-hover: hover) {
          &:hover {
            background: color-mix(in srgb, var(--sub) 80%, white 20%);
          }
        }

        @media (width <= 768px) {
          gap: 0;
          padding-block: calc((100 / 390) * 3.9 * 1vw);
          padding-inline: calc((100 / 390) * 10 * 1vw);

          & span {
            display: none;
          }
        }

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

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

      /* ==== contact ==== */
      .contact {
        display: block grid;
        grid-auto-flow: column;
        gap: 11px;
        align-items: center;
        justify-content: center;
        padding-inline: 37px;
        font-size: 20px;
        font-weight: 700;
        color: white;
        background: var(--primary);
        transition: background 250ms ease 0s;
        will-change: background;

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

        @media (any-hover: hover) {
          &:hover {
            background: color-mix(in srgb, var(--primary) 80%, white 20%);
          }
        }

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

          &::before {
            inline-size: calc((100 / 390) * 40 * 1vw);
          }
        }
      }
    }

    /* ==== list ==== */
    .list {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: var(--_border-width);
      block-size: fit-content;
      padding: var(--_border-width);
      font-size: 20px;
      font-weight: 700;
      background: white;

      --_border-width: 1px;

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

      & li {
        box-shadow: 0 0 0 var(--_border-width) #b4b4b4;

        & button {
          display: block flex;
          gap: 10px;
          align-items: center;
          justify-content: center;
          inline-size: 100%;
          padding-block: 21px;
          transition: all 300ms ease-out 0s;

          @media (width <= 768px) {
            flex-direction: column;
            gap: 0;
            padding-block: calc((100 / 390) * 2 * 1vw) calc((100 / 390) * 0 * 1vw);
            line-height: 1.6;
            text-align: center;
          }

          &::after {
            inline-size: 16px;
            aspect-ratio: 1 / 2;
            content: '';
            background-color: var(--primary);
            mask-image: var(--icon-arrow);
            mask-repeat: no-repeat;
            mask-position: center;
            mask-size: contain;
            transition: inherit;
          }

          .sp-hide {
            display: contents;
          }

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

            &::after {
              inline-size: calc((100 / 390) * 60 * 1vw);
              block-size: calc((100 / 390) * 22 * 1vw);
              aspect-ratio: unset;
              translate: 0 calc((100 / 390) * 3 * -1 * 1vw);
            }
          }

          @media (any-hover: hover) {
            &:hover {
              color: white;
              background: #8db8be;
            }

            &:hover::after {
              background: white;
            }
          }
        }
      }
    }
  }

  /* =====================
    footer
  ===================== */
  .footer {
    display: block grid;
    gap: 36px;
    align-items: center;
    justify-content: center;
    padding-block: 40px;
    background: white;

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

    /* ==== logo ==== */
    .logo {
      display: block flex;
      gap: 26px;
      align-items: center;
      justify-content: center;

      @media (width <= 768px) {
        gap: calc((100 / 390) * 19.2 * 1vw);
        padding-inline: 0;

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

      @media (any-hover: hover) {
        &:hover {
          opacity: 0.8;
        }
      }

      /* ==== hgroup ==== */
      .hgroup {
        display: block grid;
        gap: 10px;

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

      & :where(h1, p) {
        margin-block: calc((1em - 1lh) / 2);
        line-height: 1;
      }

      /* ==== hgroup ==== */
      .hgroup {
        display: block grid;
        gap: 10px;

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

      & :where(h1, p) {
        margin-block: calc((1em - 1lh) / 2);
        line-height: 1;
      }

      /* ==== p ==== */
      & p {
        font-size: 16px;
        font-weight: 700;
        letter-spacing: 1.12px;

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

      /* ==== h1 ==== */
      & h1 {
        font-size: 40px;
        font-weight: 700;

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

    /* ==== address ==== */
    .address {
      margin-block: calc((1em - 1lh) / 2);
      font-size: 20px;
      text-align: center;
      letter-spacing: 2.4px;

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

    /* ==== small ==== */
    .small {
      margin-block: calc((1em - 1lh) / 2);
      text-align: center;

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

  /* =====================
    main
  ===================== */
  .main {
    margin-block-start: 0;

    @media (width <= 768px) {
      margin-block-start: 0;
    }
  }
}
