@layer settings, base, generic, layout, typography, components, utility;

@layer settings {
  :root {
    /* font */
    --lp-font-family-base: "Noto Sans JP", sans-serif;
    --lp-font-family-en: "Inter", sans-serif;

    --lp-font-size-base: 1rem;

    --lp-scale-xs: 0.8125;
    --lp-scale-sm: 0.875;
    --lp-scale-md: 1.125;
    --lp-scale-lg: 1.25;
    --lp-scale-xl: 1.4375;
    --lp-scale-2xl: 1.625;
    --lp-scale-3xl: 1.8125;
    --lp-scale-4xl: 2;
    --lp-scale-5xl: 2.25;
    --lp-scale-6xl: 2.5625;
    --lp-scale-7xl: 2.8725;
    --lp-scale-8xl: 3.25;
    --lp-scale-9xl: 3.625;
    --lp-scale-10xl: 4.125;

    --lp-font-size-13: calc(var(--lp-scale-xs) * var(--lp-font-size-base)); /* 0.8125rem 13px */
    --lp-font-size-14: calc(var(--lp-scale-sm) * var(--lp-font-size-base)); /* 0.875rem 14px */
    --lp-font-size-16: var(--lp-font-size-base);
    --lp-font-size-18: calc(var(--lp-scale-md) * var(--lp-font-size-base)); /* 1.125rem, 18px */
    --lp-font-size-20: calc(var(--lp-scale-lg) * var(--lp-font-size-base)); /* 1.25rem, 20px */
    --lp-font-size-23: calc(var(--lp-scale-xl) * var(--lp-font-size-base)); /* 1.4375rem, 23px */
    --lp-font-size-26: calc(var(--lp-scale-2xl) * var(--lp-font-size-base)); /* 1.625rem, 26px */
    --lp-font-size-29: calc(var(--lp-scale-3xl) * var(--lp-font-size-base)); /* 1.8125rem, 29px */
    --lp-font-size-32: calc(var(--lp-scale-4xl) * var(--lp-font-size-base)); /* 2rem, 32px */
    --lp-font-size-36: calc(var(--lp-scale-5xl) * var(--lp-font-size-base)); /* 2.25rem, 36px */
    --lp-font-size-41: calc(var(--lp-scale-6xl) * var(--lp-font-size-base)); /* 2.5625rem, 41px */
    --lp-font-size-46: calc(var(--lp-scale-7xl) * var(--lp-font-size-base)); /* 2.875rem, 46px */
    --lp-font-size-52: calc(var(--lp-scale-8xl) * var(--lp-font-size-base)); /* 3.25rem, 52px */
    --lp-font-size-58: calc(var(--lp-scale-9xl) * var(--lp-font-size-base)); /* 3.625rem, 58px */
    --lp-font-size-66: calc(var(--lp-scale-10xl) * var(--lp-font-size-base)); /* 4.125rem, 66px */


    /* =========================
    * Font Weight
    * ========================= */
    --lp-fw-regular: 400;
    --lp-fw-bold: 700;

    /* =========================
    * Line Height
    * ========================= */
    --lp-lh-tight: 1;
    --lp-lh-heading: 1.2;
    --lp-lh-compact: 1.5;
    --lp-lh-body: 1.75;
    --lp-lh-relaxed: 2;
    --lp-lh-poem: 2.2;

    /* color */
    --lp-color-black: #000;
    --lp-color-white: #fff;

    --lp-border-neutral-strong: #B1B1B1;
    --lp-color-neutral-400: #D5D5D5;
    --lp-color-neutral-800: #464646;
    --lp-color-highlight: #F03;
    --lp-bg-emphasis: #FFECF0;

    --lp-color-gray-100: #F5F5F5;
    --lp-color-gray-200: #E8E8E8;
    --lp-color-gray-300: #D1D1D1;
    --lp-color-gray-600: #8B8B8B;
    --lp-color-gray-800: #5D5D5D;

    /*
    * brad color
    * 各ブランドカラーをLPごとに設定
    */
    --lp-colors-base: #464646;
    --lp-brand-color: #579E64;
    --lp-colors-primary-050: #f4f9f4;
    --lp-colors-primary-100: #e5f3e7;
    --lp-colors-primary-200: #cde5d1;
    --lp-colors-primary-300: #a5d0ad;
    --lp-colors-primary-400: #76b281;
    --lp-colors-primary-700: #074C4A;


    /* radius */
    --lp-radius-sm: 0.25rem;
    --lp-radius: 0.5rem;
  }

  @font-face {
    font-family: 'Noto Sans JP';
    font-display: swap;
    font-style: normal;
    src: url('../fonts/NotoSansJP-VariableFont_wght.woff2')  format('woff2');
    font-weight: 100 900;
  }

}

@layer base {
  body {
    font-family: var(--lp-font-family-base);
    font-size: var(--lp-font-size-md);
    font-weight: var(--lp-fw-regular);
    color: var(--lp-colors-base);
    line-height: var(--lp-lh-body);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: antialiased;
    text-size-adjust: 100%;

    @media (width < 768px) {
      &:has(.lp-page-nav:not([hidden])) {
        overflow: hidden;
      }
    }
  }
}

@layer generic {
  a:focus-visible,
  button:focus-visible {
    outline: revert;
  }
  :where(h1, h2, h3, h4, h5, h6) {
    font-weight: var(--lp-fw-bold);
  }
  :where(strong, b) {
    font-weight: var(--lp-fw-bold);
  }

  .lp-main {
    a,
    a:link,
    a:visited {
      color: var(--lp-brand-color);
      text-decoration: underline;
      @media (768px <= width) {
        &:hover {
          text-decoration: none;
        }
      }
    }
  }
}

@layer layout {
  .lp-inner {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    max-width: 75rem;
    margin: 0 auto;

    &.-sm {
      max-width: 62.25rem;
    }

    @media (width < 1248px) {
      margin: 0 1.5rem;
      &.-sm {
        margin: 0 auto;
      }
    }

    @media (width < 1044px) {
      &.-sm {
        margin: 0 1.5rem;
      }
    }

    @media (width < 768px) {
      margin: 0 1rem;
      &.-sm {
        margin: 0 1rem;
      }
    }
  }

  .lp-contents {
    display: flex;
    flex-direction: column;
    gap: 7.5rem;
    padding: 0 0 7.5rem;
    @media (width < 768px) {
      gap: 4rem;
      padding: 0 0 4rem;
    }
  }

  .lp-head {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    max-width: 62.5rem;
    margin: 0 auto;
    padding: 0 0 1.5rem;
    text-align: center;
    @media (width < 768px) {
      gap: 1rem;
      padding: 0;
      text-align: left;
    }
  }

  .lp-card-list {
    display: flex;
    gap: 1.5rem;

    > * {
      flex: 1;
    }

    @media (width < 768px) {
      flex-wrap: wrap;
      gap: 0.5rem;

      & > * {
        flex: 1 0 calc((100% - 0.5rem) / 2);
      }

      &.-sp-col3 {
        flex-wrap: nowrap;
        & > * {
          flex: 1;
        }
      }
    }
  }

  .lp-flow-card {
    display: flex;
    gap: 1.5rem;

    > * {
      flex: 1;
    }
    @media (width < 768px) {
      flex-direction: column;
    }
  }

}

@layer typography {
  .lp-headline {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    font-size: var(--lp-font-size-41);
    font-weight: var(--lp-fw-bold);
    line-height: var(--lp-lh-compact);

    & .label {
      font-size: var(--lp-font-size-18);
      font-weight: var(--lp-fw-bold);
      line-height: var(--lp-lh-tight);

      &.-deco {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 0.5rem;
        &::before,
        &::after {
          content: "";
          display: block;
          width: 0.8125rem;
          height: 1.625rem;
          background: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" width="13" height="26" viewBox="0 0 13 26" fill="none"><path d="M1.00024 1.00024L12.0002 25.0002" stroke="black" stroke-width="2" stroke-linecap="round"/></svg>') no-repeat center center / 100%;
        }
        &::after {
          transform: scale(-1,1);
        }
      }
    }

    @media (width < 768px) {
      font-size: var(--lp-font-size-26);

      & .label {
        font-size: var(--lp-font-size-13);

        &.-deco {
          &::before,
          &::after {
            width: 0.6875rem;
            height: 1.3125rem;
          }
        }
      }
    }
  }

  /* タイトル */
  .lp-title-lg {
    font-size: var(--lp-font-size-26);
    line-height: var(--lp-lh-compact);
    font-weight: var(--lp-fw-bold);

    @media (width < 768px) {
      font-size: var(--lp-font-size-base);
    }
  }

  /* サブタイトル */
  .lp-title {
    font-size: var(--lp-font-size-20);
    line-height: var(--lp-lh-compact);
    font-weight: var(--lp-fw-bold);

    @media (width < 768px) {
      font-size: var(--lp-font-size-14);
    }
  }

  /* リード文 */
  .lp-lead {
    font-size: var(--lp-font-size-16);
    font-weight: var(--lp-fw-regular);
    line-height: var(--lp-lh-body);
  }

  /* */
  .lp-highlight {
    color: var(--lp-color-highlight);
    font-size: var(--lp-font-size-32);
    font-weight: var(--lp-fw-bold);
    line-height: var(--lp-lh-compact);
    padding: 1rem;
    background: var(--lp-bg-emphasis);
    text-align: center;
    border-radius: var(--lp-radius);
    @media (width < 768px) {
      font-size: var(--lp-font-size-20);
    }
  }

  /* ラベル*/
  .lp-label {
    display: inline-flex;
    border-radius: var(--lp-radius-sm);
    padding: 0.3125rem 0.5rem 0.375rem 0.5rem;
    background: var(--lp-brand-color);
    color: var(--lp-color-white);
    font-size: var(--lp-font-size-14);
    line-height: var(--lp-lh-tight);
  }

  /* 注釈 */
  .lp-note-list {
    & li {
      color: var(--lp-color-gray-600);
      font-size: var(--lp-font-size-14);
      &::before {
        content: "※";
      }
      @media (width < 768px) {
        font-size: var(--lp-font-size-13);
      }
    }
  }

  /* リスト */
  .lp-dot-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    & li {
      display: flex;
      &::before {
        content: "・";
      }
    }
  }

  /* 英語 */
  .lp-ff-en {
    font-family: var(--lp-font-family-en);
  }
}

@layer components {
  /* ボタン */
  .lp-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    border-radius: var(--lp-radius);
    font-weight: var(--lp-fw-bold);
    transition: 0.3s;
    text-decoration: none;
    position: relative;
    &::after {
      content: "";
      display: block;
      width: 0.5rem;
      height: 0.8125rem;
    }

    &.-md {
      min-width: 24rem;
      min-height: 4.5rem;
      max-width: 36.75rem;
      padding: 0 1.5rem;
      font-size: var(--lp-font-size-18);
    }

    &.-sm {
      display: inline-flex;
      min-height: 3rem;
      padding: 0 1.5rem 0 1.875rem;
      font-size: var(--lp-font-size-14);
      box-shadow: 0 4px 0 0 rgba(0, 0, 0, 0.08);
    }

    &.-primary {
      background: var(--lp-color-black);
      color: var(--lp-color-white);

      &::after {
        background: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="13" viewBox="0 0 8 13" fill="none"><path d="M1 1.00001L6.49996 6.49998L1 11.9999" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>') no-repeat center center/ 100%;
      }

      @media (768px <= width ) {
        overflow: hidden;
        &::before {
          content: "";
          display: block;
          width: 100%;
          height: 100%;
          position: absolute;
          top: 0;
          left: 0;
          background: #fff;
          opacity: 0;
          transition: 0.3s;
        }
        &:hover {
          &::before {
            opacity: 0.2;
          }
        }
      }
    }

    &.-secondary {
      background: var(--lp-color-white);
      color: var(--lp-color-black);
      &::after {
        background: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="13" viewBox="0 0 8 13" fill="none"><path d="M1 1.00001L6.49996 6.49998L1 11.9999" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>') no-repeat center center/ 100%;
      }
    }


    &.-anchor {
      &::after {
        transform: rotate(90deg);
      }
    }

    @media (width < 768px) {
      display: flex;
      justify-content: space-between;

      & span {
        flex: 1;
        text-align: center;
      }

      &.-md {
        min-width: inherit;
        max-width: 100%;
        font-size: var(--lp-font-size-base);
        min-height: 3.5rem;
      }
    }

  }

  /* アンカーリンク */
  .lp-page-nav {
    padding: 1.5rem 0 5rem;
    max-width: 75rem;
    margin: 0 auto;
    & .list {
      display: flex;
      justify-content: center;
      & li {
        flex: 1;
        border-left: 1px solid var(--lp-color-neutral-400);
        & a {
          display: flex;
          align-items: center;
          justify-content: center;
          gap: 0.5rem;
          height: 2.5rem;
          padding: 0 1rem;
          font-size: var(--lp-font-size-14);
          line-height: var(--lp-lh-heading);
          color: var(--lp-colors-base);
          text-align: center;
          text-decoration: none;

          &::after {
            content: "";
            display: block;
            width: 1rem;
            height: 1rem;
            background: url('data:image/svg+xml;charset=utf-8,<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="16" height="16"/><path d="M3.2002 6.10031L7.99957 10.8997L12.7989 6.10031" stroke="%23464646" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>') no-repeat center center / 100% auto;
          }
          @media (768px <= width) {
            &:hover {
              text-decoration: underline;
            }
          }
        }

        &:last-child {
          border-right: 1px solid var(--lp-color-neutral-400);
        }
      }
    }

    @media (width < 768px) {
      padding: 0;
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background: #11192399;
      z-index: 998;

      & .wrap {
        padding: 3rem 0 2.5rem;
        background: var(--lp-colors-primary-050);
      }

      & .list {
        flex-direction: column;
        position: relative;
        z-index: 1;

        & li {
          border-top: solid 1px var(--lp-color-gray-300);
          border-left: none;
          &:last-child {
            border-right: none;
            border-bottom: solid 1px var(--lp-color-gray-300);
          }

          & a {
            height: auto;
            padding: 1rem;
            justify-content: space-between;
          }
        }
      }

      & .lp-button {
        display: flex;
        margin: 1rem 1rem 0;
      }
    }
  }

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

  @media (width < 768px) {
    .lp-menu {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 0.3125rem;
      width: 3rem;
      height: 3rem;
      background: rgba(0,0,0,0.2);
      transform: translateY(-100%);
      transition: 0.3s;
      position: fixed;
      top: 0;
      right: 0;
      z-index: 999;

      & span {
        width: 1.375rem;
        height: 0.0625rem;
        background: var(--lp-color-white);
      }

      &.is-show {
        transform: none;
      }
    }
  }

  /* 吹き出し */
  .lp-balloon {
    padding: 1.5rem 2rem;
    border-radius: var(--lp-radius);
    background: var(--lp-colors-primary-100);
    position: relative;
    margin: 0 0 1rem;
    &::after {
      content: "";
      display: block;
      width: 2.25rem;
      height: 1rem;
      background: var(--lp-colors-primary-100);
      clip-path: polygon(0 0, 100% 0, 50% 100%);
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
      margin: auto;
    }

    @media (width < 768px) {
      padding: 1rem 0.5rem;
      margin: 0 0 0.5rem;
      font-size: var(--lp-font-size-14);
    }
  }

  /* box */
  .lp-box {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.5rem 2rem;
    background: var(--lp-color-white);
    border: 1px solid var(--lp-color-neutral-400);
    border-radius: var(--lp-radius);

    &.-grid {
      display: grid;
      grid-template-columns: auto 1fr;
      gap: 0.5rem 1rem;

      & .image {
        grid-row: 1 / span 2;
      }
    }

    &.-icon {
      text-align: center;
    }

    & .head {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 0.25rem;
    }

    & .image {
      line-height: 0;
      text-align: center;
    }

    & .text {
      line-height: var(--lp-lh-compact);
    }

    @media (width < 768px) {
      flex: 1 0 100%;
      gap: 0.5rem 1rem;
      padding: 1rem;

      &.-icon {
        display: grid;
        grid-template-columns: 4rem 1fr;
        text-align: left;
        & .image {
          grid-row: 1 / span 2;
        }
      }

      & .text {
        font-size: var(--lp-font-size-14);
      }
    }
  }

  /* lp-box-flow */

  .lp-box-flow {
    counter-increment: number;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 2rem 1.5rem 1.5rem 1.5rem;
    border-radius: 0.5rem;
    background: var(--lp-color-white);
    border: 1px solid var(--lp-color-gray-300);
    position: relative;
    line-height: var(--lp-lh-compact);

    & .image {
      line-height: 0;
      margin: 0 0 0.5rem;
      border: 1px solid var(--lp-color-gray-300);
      & img {
        width: 100%;
        height: 100%;
        object-fit: cover;
      }
    }

    &::before {
      display: flex;
      align-items: center;
      justify-content: center;
      content: counter(number);
      width: 2.5rem;
      height: 2.5rem;
      font-size: var(--lp-font-size-20);
      font-weight: var(--lp-fw-bold);
      line-height: var(--lp-lh-compact);
      border-radius: 50%;
      background: var(--lp-color-black);
      color: var(--lp-color-white);
      position: absolute;
      inset: -1.25rem 0 auto;
      margin: 0 auto;
    }

    &::after {
      content: "";
      display: block;
      width: 1.5rem;
      height: 5rem;
      background: var(--lp-brand-color);
      clip-path: polygon(0 0, 100% 50%, 0 100%);
      position: absolute;
      inset: 0 auto 0 100%;
      margin: auto;
    }

    &:last-child {
      &::after {
        display: none;
      }
    }

    @media (width < 768px) {
      display: grid;
      grid-template-columns: 6rem 1fr;
      grid-template-rows: auto 1fr;
      align-items: flex-start;
      padding: 1rem;
      font-size: var(--lp-font-size-14);

      & .image {
        grid-row: 1 / span 2;
        height: 6rem;
        padding: 0;
        overflow: hidden;
      }

      &::before {
        width: 1.5rem;
        height: 1.5rem;
        font-size: var(--lp-font-size-13);
        position: absolute;
        inset: -0.625rem 0 0 -0.5rem;
        margin: 0;
      }

      &::after {
        width: 5rem;
        height: 1.5rem;
        clip-path: polygon(0 0, 100% 0, 50% 100%);
        inset: 100% 0;
        margin: 0 auto;
      }
    }
  }

  /* lp-box-faq */

  .lp-box-faq {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 1.5rem 2.5rem;
    border-radius: 0.5rem;
    border: 1px solid var(--lp-color-gray-300);
    & > * {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      &::before {
        flex-shrink: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 2rem;
        height: 2rem;
        border-radius: 50%;
        font-weight: 600;
        padding: 0 0 0.25rem;
      }
    }
    & .title {
      color: var(--lp-colors-primary-700);
      &::before {
        content: "Q";
        background: var(--lp-color-gray-200);
        color: var(--lp-color-black);
      }
    }

    & .text {
      &::before {
        content: "A";
        background: var(--lp-color-black);
        color: var(--lp-color-white);
      }
    }

    @media (width < 768px) {
      gap: 1rem;
      padding: 1.5rem 1rem;

      & > * {
        font-size: var(--lp-font-size-14);
        line-height: var(--lp-lh-compact);
        align-items: flex-start;
      }
    }
  }

  /* テーブル */
  .lp-table {
    width: 100%;
    & th,td {
      border: 1px solid var(--lp-color-gray-300);
    }
    & thead {
      & th {
        padding: 0.75rem 1.5rem;
        background: var(--lp-color-neutral-800);
        color: var(--lp-color-white);
        line-height: var(--lp-lh-compact);
        text-align: center;

        &:first-child {
          width: 10rem;
        }

        &.-sticky {
          position: sticky;
          left: 0;
        }
      }
    }
    & tbody {
      & th,
      & td {
        padding: 0.75rem 1rem;
        line-height: var(--lp-lh-compact);
      }

      & th {
        background: var(--lp-color-gray-200);
        font-weight: var(--lp-fw-bold);
        vertical-align: middle;
        font-feature-settings: 'halt' on;
        & span {
          font-size: var(--lp-font-size-14);
          font-weight: var(--lp-fw-regular);
        }
        &.-sticky {
          position: sticky;
          left: 0;
        }
      }
      & td {
        & .price {
          font-weight: var(--lp-fw-bold);
          line-height: var(--lp-lh-heading);
          & strong {
            font-size: var(--lp-font-size-23);
          }
        }
      }

      & tr {
        &:nth-child(even) {
          & td {
            background: var(--lp-color-gray-100);
          }
        }
      }
    }

    @media (width < 768px) {
      width: auto;
      table-layout: fixed;
      margin: 0 1rem;
      & tbody {
        & th,
        & td {
          font-size: var(--lp-font-size-14);
          padding: 0.75rem 0.5rem;

          & span {
            font-size: var(--lp-font-size-13);
          }
        }
      }
    }
  }

  .lp-scroll-wrap {
    @media (width < 768px) {
      overflow: auto;
      margin: 0 -1rem;
    }
  }

  /* タイトル + テキスト */
  .lp-info-item {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 2.5rem 0;
    border-top: solid 1px var(--lp-color-gray-300);
    &:last-child {
      border-bottom: solid 1px var(--lp-color-gray-300);
    }

    @media (width < 768px) {
      padding: 1rem 0;
      font-size: var(--lp-font-size-14);
    }
  }

  /* CTA */
  .lp-cta {
    padding: 5rem 0 6rem;
    @media (width < 768px) {
      padding: 4rem 0;
    }
  }
}

@layer utility {
  @media (width >= 768px) {
    .for-sp {
      display: none;
    }
  }
  @media (width < 768px) {
    .for-pc {
      display: none;
    }
  }

  .u-text-center {
    text-align: center;
  }

  .u-text-left {
    text-align: left;
  }
}
