@charset "UTF-8";

/* header */
.header02 {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 10;
  padding: 3.47vw 0 0 4.51vw;

  .header_logo {
    margin: 0;
  }

  .header_logo a {
    display: block;
    text-decoration: none;
    color: inherit;

    &:hover {
      opacity: 1;
    }
  }

  .logo_top {
    display: flex;
    align-items: center;
    column-gap: 1.11vw;
    margin-bottom: 1.11vw;
  }

  .logo_img {
    flex-shrink: 0;

    img {
      width: 4.17vw;
      height: auto;
      min-width: initial;
      vertical-align: bottom;
    }
  }

  .logo_name {
    position: relative;
    display: inline-block;
    font-family: var(--font-heading);
    font-size: 3.13vw;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.15em;
    color: #555555;
  }

  .logo_sub {
    display: block;
    width: fit-content;
    font-size: 1.74vw;
    font-weight: bold;
    line-height: 1;
    letter-spacing: 0.1em;
    color: #555555;
    background: rgba(255, 255, 255, 0.9);
    border: 2px solid #ED7600;
    padding: 0.97vw 2.78vw;
    font-family: var(--font-body);

    em {
      font-style: normal;
      font-weight: bold;
      color: #ED7600;
    }
  }

  /* 1280px未満は横スクロールなので固定値に戻す */
  @media screen and (max-width: 1280px) {
    padding: 44px 0 0 58px;

    .logo_top {
      column-gap: 14px;
      margin-bottom: 14px;
    }

    .logo_img img {
      width: 53px;
    }

    .logo_name {
      font-size: 40px;
    }

    .logo_sub {
      font-size: 22px;
      padding: 12px 36px;
    }
  }
}

/* MV上のナビ */
.nav {
  position: absolute;
  left: 0;
  bottom: 14.5%;
  z-index: 5;
  width: 100%;

  .nav_inner {
    width: 88%;
    max-width: none;
    margin: 0 auto;
    padding: 0 0.7vw;
    box-sizing: border-box;
    background: #FEF8F2;
    border-radius: 1vw;
  }

  .nav_list {
    display: flex;
    align-items: stretch;
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .nav_item {
    position: relative;
    display: flex;
    flex: 1;
    min-width: 0;

    & + .nav_item::before {
      content: "";
      position: absolute;
      left: 0;
      top: 0.8vw;
      bottom: 0.8vw;
      width: 1px;
      background: #ED7600;
    }

    a {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      font-family: var(--font-heading);
      font-size: 1.25vw;
      font-weight: bold;
      line-height: 1.5;
      letter-spacing: 0.05em;
      text-align: center;
      text-decoration: none;
      color: #555555;
      padding: 1.4vw 0.6vw;
      box-sizing: border-box;

      &:hover {
        opacity: 1;
      }

      &::after {
        content: "";
        position: absolute;
        left: 50%;
        bottom: 0.8vw;
        transform: translateX(-50%) scale(0);
        width: 0.7vw;
        height: 0.7vw;
        border-radius: 50%;
        background: #ED7600;
        transition: transform 0.25s ease;
      }

      &:hover::after {
        transform: translateX(-50%) scale(1);
      }
    }
  }

  @media screen and (max-width: 1280px) {
    .nav_inner {
      padding: 0 9px;
      border-radius: 13px;
    }

    .nav_item + .nav_item::before {
      top: 10px;
      bottom: 10px;
    }

    .nav_item a {
      font-size: 16px;
      padding: 18px 8px;

      &::after {
        bottom: 10px;
        width: 9px;
        height: 9px;
      }
    }
  }
}

/* 追従ヘッダー */
.fixed_nav {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  width: 100%;
  min-width: 1280px;
  transform: translateY(-110%);
  transition: transform 0.35s ease;

  &.is-show {
    transform: translateY(0);
  }

  .fixed_nav_inner {
    display: flex;
    align-items: center;
    width: 100%;
    min-width: 1280px;
    padding: 14px 40px;
    margin: 0 auto;
    box-sizing: border-box;
  }

  .fixed_nav_list {
    display: flex;
    align-items: stretch;
    flex: 1;
    min-width: 0;
    list-style: none;
    margin: 0;
    padding: 0 10px;
    background: #FEF8F2;
    border-radius: 12px;
    box-sizing: border-box;

    li {
      position: relative;
      display: flex;
      flex: 1;
      min-width: 0;

      & + li::before {
        content: "";
        position: absolute;
        left: 0;
        top: 10px;
        bottom: 10px;
        width: 1px;
        background: #ED7600;
      }
    }

    a {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      font-family: var(--font-heading);
      font-size: clamp(15px, calc(1.25vw - 1px), 17px);
      font-weight: bold;
      line-height: 1.4;
      letter-spacing: 0.02em;
      text-align: center;
      text-decoration: none;
      color: #555555;
      padding: 20px 6px;
      box-sizing: border-box;

      &:hover {
        opacity: 1;
      }

      &::after {
        content: "";
        position: absolute;
        left: 50%;
        bottom: 10px;
        transform: translateX(-50%) scale(0);
        width: 10px;
        height: 10px;
        border-radius: 50%;
        background: #ED7600;
        transition: transform 0.25s ease;
      }

      &:hover::after {
        transform: translateX(-50%) scale(1);
      }
    }
  }

  .fixed_nav_form {
    flex-shrink: 0;
    display: block;
    width: 168px;
    margin: 0 14px 0 18px;

    &:hover {
      opacity: 0.85;
    }

    img {
      width: 100%;
      height: auto;
      min-width: initial;
      vertical-align: bottom;
    }
  }

  .fixed_nav_tel {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    row-gap: 2px;
    padding: 8px 22px;
    text-decoration: none;
    color: inherit;
    background: #F2EAE3;
    border-radius: 10px;

    &:hover {
      opacity: 1;
    }

    &::before {
      content: "";
      display: block;
      width: 18px;
      height: 18px;
      margin-bottom: 2px;
      background: url(/images/index/tel_orange.webp) center / contain no-repeat;
    }
  }

  .fixed_nav_tel_lead {
    font-size: 15px;
    font-weight: bold;
    letter-spacing: 0.1em;
    margin-bottom: 2px;
    font-family: var(--font-heading);
  }

  .fixed_nav_tel_num {
    font-family: "Marcellus", serif;
    font-size: 25px;
    line-height: 1.2;
    letter-spacing: 0.05em;
  }
}

/* ===== SP ヘッダー・メニュー・追従フッター ===== */
.sp_header02,
.sp_ham,
.sp_menu,
.sp_fixed {
  display: none;
}

@media screen and (max-width: 768px) {

  /* ---------- SPヘッダー（h1） ---------- */
  .sp_header02 {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 900;
    width: 100%;
    padding: 4vw 0 0 5vw;
    box-sizing: border-box;
  }

  .sp_logo {
    margin: 0;

    a {
      display: block;
      text-decoration: none;
      color: inherit;

      &:hover {
        opacity: 1;
      }
    }
  }

  .sp_logo_top {
    display: flex;
    align-items: center;
    column-gap: 2.5vw;
    margin-bottom: 2vw;
  }

  .sp_logo_img {
    flex-shrink: 0;
    width: 9.6vw;

    img {
      width: 100%;
      height: auto;
      min-width: initial;
      vertical-align: bottom;
    }
  }

  .sp_logo_name {
    font-family: var(--font-heading);
    font-size: 6.4vw;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.12em;
    color: #555555;
  }

  .sp_logo_sub {
    display: block;
    width: fit-content;
    font-family: var(--font-body);
    font-size: 4vw;
    font-weight: bold;
    line-height: 1;
    letter-spacing: 0.1em;
    color: #555555;
    border: 2px solid #ED7600;
    padding: 2.2vw 4vw;

    em {
      font-style: normal;
      font-weight: bold;
      color: #ED7600;
    }
  }

  /* ---------- ハンバーガーボタン ---------- */
  .sp_ham {
    display: block;
    position: fixed;
    top: 3vw;
    right: 3vw;
    z-index: 1100;
    width: 15vw;
    height: 15vw;
    background: #ED7600;
    border: none;
    padding: 0;
    cursor: pointer;
  }

  .sp_ham_border {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: 8vw;
    height: 1px;
    background: #fff;
    transition: 0.35s;

    &:nth-of-type(1) { top: 3.6vw; }
    &:nth-of-type(2) { top: 5.8vw; }
    &:nth-of-type(3) { top: 8vw; }
  }

  .sp_ham_text {
    position: absolute;
    left: 0;
    bottom: 1.5vw;
    width: 100%;
    font-size: 3.2vw;
    letter-spacing: 0.08em;
    color: #fff;
    text-align: center;
  }

  .sp_ham.is-active {
    .sp_ham_border {
      &:nth-of-type(1) {
        top: 5.8vw;
        transform: translateX(-50%) rotate(45deg);
      }

      &:nth-of-type(2) {
        opacity: 0;
      }

      &:nth-of-type(3) {
        top: 5.8vw;
        transform: translateX(-50%) rotate(-45deg);
      }
    }
  }

  /* ---------- メニュー本体 ---------- */
  .sp_menu {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1000;
    width: 100%;
    height: 100%;
    background: #F2EAE3;
    overflow-y: auto;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.35s ease, visibility 0.35s ease;

    &.is-open {
      opacity: 1;
      visibility: visible;
    }
  }

  .sp_menu_inner {
    padding: 4vw 5vw 12vw;
    box-sizing: border-box;
  }

  .sp_menu_head {
    margin-bottom: 6vw;
    padding-right: 18vw;
  }

  .sp_menu_logo {
    margin: 0;
  }

    .sp_menu_list {
    list-style: none;
    margin: 0 0 8vw;
    padding: 0;

    li {
      border-bottom: 1px solid #ED7600;
    }

    a {
      position: relative;
      display: block;
      font-family: var(--font-heading);
      font-size: 4.5vw;
      font-weight: 500;
      letter-spacing: 0.08em;
      color: #555555;
      padding: 5vw 10vw 5vw 0;

      &:hover {
        opacity: 1;
      }

      &::after {
        content: "";
        position: absolute;
        right: 2vw;
        top: 50%;
        width: 2.4vw;
        height: 2.4vw;
        border-top: 2px solid #ED7600;
        border-right: 2px solid #ED7600;
        transform: translateY(-50%) rotate(45deg);
      }
    }
  }

  .sp_menu_tel {
    display: flex;
    align-items: center;
    justify-content: center;
    column-gap: 3vw;
    width: 90%;
    margin: 0 auto;
    padding: 4vw 3vw;
    box-sizing: border-box;
    background: none;
    border: 2px solid #ED7600;
    background-color: #fff;
    border-radius: 4vw;
    text-decoration: none;

  }

  .sp_menu_tel_lead {
    font-family: var(--font-heading);
    font-size: 3.5vw;
    font-weight: 600;
    line-height: 1.4;
    letter-spacing: 0.08em;
    text-align: center;
  }

  .sp_menu_tel_num {
    display: inline-flex;
    align-items: center;
    column-gap: 1vw;
    font-family: var(--font-heading);
    font-size: 6.4vw;
    line-height: 1.2;
    letter-spacing: 0.02em;
    white-space: nowrap;

    &::before {
      content: "";
      flex-shrink: 0;
      width: 3.3vw;
      height: 3.3vw;
      background: url(/images/index/ham_tel.webp) center / contain no-repeat;
    }
  }

  /* ---------- SP追従フッター（画像） ---------- */
  .sp_fixed {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 100;
    width: 100%;
    box-sizing: border-box;

    .fix_tel,
    .fix_form {
      position: relative;
      width: 50%;
      /* iPhoneのホームバー領域ぶんの余白（各ボタンの色で塗る） */
      padding-bottom: env(safe-area-inset-bottom);

      /* Safariのツールバー伸縮時にできる隙間を、下方向に色を延長して隠す */
      &::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        top: 100%;
        height: 60px;
        background: inherit;
      }
    }

    .fix_tel {
      background: #ED7600;
    }

    .fix_form {
      background: #F9E07A;
    }

    a {
      display: block;

      &:hover {
        opacity: 1;
      }
    }

    .btn_inner img {
      width: 100%;
      height: auto;
      min-width: initial;
      vertical-align: bottom;
    }
  }

  /* 追従フッターぶんの余白（ホームバー分も加算） */
  body {
    padding-bottom: calc(16vw + env(safe-area-inset-bottom));
  }
}

@media screen and (max-width: 768px) {
  .header02,
  .nav,
  .fixed_nav {
    display: none;
  }
}

  /* iOS Safariで追従フッターがずれる原因になるため、.sp_fixed には transform を付けない */
  .sp_ham {
    will-change: transform;
    transform: translateZ(0);
    backface-visibility: hidden;
  }

.main_wrapper {
  padding: 0;
  position: relative;
  z-index: 0;
  min-width: 1280px;
  margin-bottom: 110px;

  @media screen and (max-width: 768px) {
    min-width: initial;
    max-width: initial;
    padding: 0;
    margin-bottom: 10vw;
  }
}

.main_image {
  position: relative;
  width: 100%;
  max-width: 1440px;
  aspect-ratio: 1440/962;
  margin: 0 auto;
  box-sizing: border-box;
  background: url(/images/index/mainvisual.webp) center top/cover no-repeat;
  overflow: hidden;

  .inner {
    padding: 0;
    margin: 0 auto;
    box-sizing: border-box;
  }
  .text {
    position: absolute;
    top: 17.75%;
    left: 44.88%;
    width: 46.53%;
    z-index: 1;

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

  @media screen and (min-width: 1441px) {
    max-width: none;
  }

  @media screen and (max-width: 768px) {
    height: 170.4vw;
    aspect-ratio: initial;
    background: url(/images/index/mainvisual_sp.webp) center top/cover no-repeat;
    overflow: visible;

    .text {
      width: 79.7vw;
      top: auto;
      bottom: 40vw;
      left: 50%;
      transform: translateX(-44%);
    }
  }
}


/* sec01 */
.sec01 {
  position: relative;
  z-index: 0;
  padding-top: 60px;
  margin-bottom: 150px;

  &::before {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    width: 774px;
    height: 516px;
    background: url(/images/index/sec01_1.webp) center center/cover no-repeat;
    z-index: -2;
  }


  &::after {
    content: "";
    position: absolute;
    top: 130px;
    left: 50%;
    transform: translateX(-50%);
    width: 100vw;
    height: 540px;
    background: linear-gradient(
      to bottom,
      rgba(240, 240, 240, 0.3) 0%,
      rgba(240, 240, 240, 0) 100%
    );
    z-index: -1;
  }

  @media screen and (max-width: 1440px) and (min-width: 769px) {
    &::after {
      left: 0;
      transform: none;
      width: 100%;
    }
  }

  .inner {
    position: relative;
    z-index: 1;
    padding: 0 clamp(50px, 43.75vw - 510px, 120px);
  }

  .box_title {
    font-family: var(--font-heading);
    text-align: center;
    font-size: 40px;
    font-weight: bold;
    line-height: 1.6;
    margin-bottom: 55px;

    span {
      font-weight: bold;
      font-size: 48px;
    }
  }

  .fukidashi {
    position: relative;
    width: fit-content;
    margin: 0 auto 45px;

    &::after {
      content: "";
      position: absolute;
      top: 97%;
      left: 50%;
      transform: translateX(-50%);
      width: 0;
      height: 0;
      border-style: solid;
      border-width: 30px 15px 0 15px;
      border-color: #ED7600 transparent transparent transparent;
    }

    .fukidashi__inner {
      display: block;
      font-family: var(--font-heading);
      font-size: 40px;
      font-weight: bold;
      line-height: 1.5;
      letter-spacing: 0.1em;
      color: #fff;
      text-align: center;
      background: #ED7600;
      padding: 18px 60px;
      clip-path: polygon(40px 0, 100% 0, calc(100% - 40px) 100%, 0 100%);

      span {
        color: #FFE254;
        font-weight: bold;
      }
    }
  }

  .cont01 {
    margin-bottom: 130px;

    .gridbox {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: clamp(55px, 11.364vw - 83.64px, 80px);
      row-gap: 55px;
    }

    .box {
      max-width: 550px;
      font-family: var(--font-body);
      font-size: clamp(23px, 1.3636vw + 6.36px, 26px);
      font-weight: bold;
      line-height: 1.7;
      background: #fff;
      border-radius: 6px;
      box-shadow: 0 0px 24px rgba(0, 0, 0, 0.15);
      padding: 24px 30px;
      box-sizing: border-box;
      display: flex;
      align-items: center;

      p {
        margin: 0;
      }

      span {
        color: #ED7600;
        font-weight: bold;
      }
    }
  }

  .cont02 {
    position: relative;

    &::before {
      position: absolute;
      content: "";
      width: 512px;
      height: 453px;
      left: -120px;
      top: -50px;
      background: url(/images/index/sec01_2.webp) center / contain no-repeat;
    }

    &::after {
      content: "";
      position: absolute;
      top: -185px;
      left: 50%;
      transform: translateX(-50%);
      width: 100vw;
      height: 100%;
      background: linear-gradient(
        to bottom,
        rgba(240, 240, 240, 0.3) 0%,
        rgba(240, 240, 240, 0) 100%
      );
      clip-path: polygon(0 54%, 100% 0, 100% 100%, 0 100%);
      z-index: -1;
    }

    @media screen and (max-width: 1440px) and (min-width: 769px) {
      &::after {
        left: calc(clamp(50px, 43.75vw - 510px, 120px) * -1);
        transform: none;
        width: calc(100% + clamp(50px, 43.75vw - 510px, 120px) * 2);
      }
    }

    .textbox {
      font-family: var(--font-heading);
      font-size: 28px;
      font-weight: bold;
      line-height: 2.5;
      text-align: center;

      span {
        font-weight: bold;
        border-bottom: 2px solid #ED7600;
      }
    }
  }

    @media screen and (max-width: 768px) {
    padding-top: 6vw;
    margin-bottom: 34vw;
    &::before {
      width: 74.4vw;
      height: 49.6vw;
      background-position: center top;
      background: url(/images/index/sec01_1_sp.webp) center center / cover no-repeat;
      top: 22vw;
    }

    &::after {
      display: none;
    }

    .inner {
      padding: 0 3vw;
    }

    .box_title {
      font-size: 5.6vw;
      line-height: 1.7;
      margin-bottom: 8vw;
      text-align: left;

      span {
        font-size: 7.5vw;
      }
    }

    .fukidashi {
      width: fit-content;
      max-width: 100%;
      margin: 0 auto 7vw;

      &::after {
        border-width: 5vw 2.4vw 0 2.4vw;
      }

      .fukidashi__inner {
        font-size: 6.4vw;
        padding: 5vw 9vw;
        clip-path: polygon(3vw 0, 100% 0, calc(100% - 3vw) 100%, 0 100%);
      }
    }

    .cont01 {
      margin-bottom: 10vw;

      .gridbox {
        grid-template-columns: 1fr;
        column-gap: 0;
        row-gap: 3vw;
      }

      .box {
        max-width: none;
        font-size: 3.73vw;
        padding: 3.5vw 4vw;
        justify-content: center;
        text-align: center;
        box-shadow: 0 0 4vw rgba(0, 0, 0, 0.12);
        text-align: center;
        height: 18.13vw;
        p{
          font-size: 4.5vw;
          font-weight: bold;
          font-feature-settings: "palt";
          text-align: center;
          line-height: 1.3;
        }
      }
    }

    .cont02 {
      padding-bottom: 0; 
      &::before {
        width: 100%;
        height: 52vw;
        left: -3vw;
        top: auto;
        bottom: -35vw;
        background: url(/images/index/sec01_2_sp.webp) center / contain no-repeat;
      }

      &::after {
        display: none;
      }

      .textbox {
        font-size: 5.4vw;
        line-height: 2;
        text-align: left;

        > br:nth-of-type(5) {
          display: none;
        }

        span br {
          display: none;
        }
      }
    }
  }
}

/* sec02 */
.sec02{
  .inner{
    padding: 0;
  }

  .sec_title{
    text-align: right;
    margin-bottom: 60px;
  }

  .cont01{
    margin-bottom: 100px;

    .flexbox{
      column-gap: 50px;
      align-items: flex-start;
      margin-bottom: 70px;
      padding-right: clamp(60px, 27.273vw - 272.73px, 120px);
    }

    .imagebox{
      max-width: 666px;
    }

    .box_header{
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-top: -50px;
    }

    .eng{
      font-size: clamp(60px, 5.4545vw - 6.545px, 72px);
      line-height: 1;
      font-family: "Marcellus", serif;
      background: linear-gradient(
        to bottom,
        #F6C29E 47%,
        #FFFFFF 100%
      );
      -webkit-background-clip: text;
      background-clip: text;
      color: transparent;
    }

    .number{
      flex-shrink: 0;

      img{
        display: block;
        width: 163px;
        height: auto;
      }
    }

    .box_title{
      font-size: 36px;
      font-weight: bold;
      margin-bottom: 30px;

      span{
        color: #ED7600;
        font-weight: bold;
      }
    }

    .box_text{
      font-size: 16px;
      font-weight: 500;
      line-height: 2;
      margin: 0;
    }

    .gridbox{
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 60px;
      justify-self: center;
    }

    .box{
      position: relative;
      max-width: 555px;

      &::before{
        content: "";
        position: absolute;
        top: -140px;
        right: 40px;
        width: 194px;
        height: 194px;
        background-position: center;
        background-size: contain;
        background-repeat: no-repeat;
        z-index: 0;
      }

      &:nth-child(1)::before{
        background-image: url(/images/index/01_1.webp);
      }

      &:nth-child(2)::before{
        background-image: url(/images/index/01_2.webp);
      }
    }

    .g_title{
      position: relative;
      z-index: 1;
      display: flex;
      align-items: center;
      font-family: var(--font-body);
      font-size: 24px;
      font-weight: bold;
      line-height: 1.6;
      letter-spacing: 0.1em;
      min-height: calc(24px * 1.6 * 2);
      margin: 0 0 40px;
    }

    .g_text{
      position: relative;
      z-index: 1;
      font-size: 16px;
      font-weight: bold;
      line-height: 2;
      margin: 0;
    }
  }

  .cont02{
    margin-bottom: 150px;
    .cont02_1{
      margin-bottom: 100px;

      .flexbox{
        position: relative;
        column-gap: 50px;
        align-items: flex-start;
        margin-bottom: 70px;
        padding-left: clamp(60px, 27.273vw - 272.73px, 120px);

        &::before{
          content: "";
          position: absolute;
          width: 869px;
          height: 496px;
          right: 0;
          bottom: 50%;
          transform: translateY(50%);
          background: url(/images/index/sec02_2_bg.webp) center / contain no-repeat;
        }
      }

      .imagebox{
        max-width: 666px;
      }

      .box_header{
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-top: -10px;
        margin-bottom: 10px;
      }

      .eng{
        font-size: clamp(60px, 5.4545vw - 6.545px, 72px);
        line-height: 1;
        font-family: "Marcellus", serif;
        background: linear-gradient(
          to bottom,
          #A9C9D1 47%,
          #FFFFFF 100%
        );
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
      }

      .number{
        flex-shrink: 0;

        img{
          display: block;
          width: 163px;
          height: auto;
        }
      }

      .box_title{
        font-size: 36px;
        font-weight: bold;
        margin-bottom: 30px;

        span{
          color: #4E9DB1;
          font-weight: bold;
        }
      }

      .box_text{
        font-size: 16px;
        font-weight: 500;
        line-height: 2;
        margin: 0;
      }
    }

    .cont02_2,
    .cont02_3{
      position: relative;
      z-index: 0;
      padding-top: 60px;
      padding-bottom: 60px;
      margin-bottom: 30px;

      &::before{
        content: "";
        position: absolute;
        top: -40px;
        left: 50%;
        transform: translateX(-50%);
        width: max(100vw, 100%);
        height: 100%;
        background: url(/images/index/yellow_bg.webp) center top / 100% 100% no-repeat;
        z-index: -1;
      }

      .kira_header{
        text-align: center;
        margin-bottom: 80px;
      }

      .kira{
        margin-bottom: 20px;
      }

      .kira_title{
        font-size: 28px;
        font-weight: bold;
        letter-spacing: 0.1em;
      }

      .gridbox{
        grid-template-columns: repeat(3, minmax(0, 1fr));
        column-gap: 50px;
        justify-self: center;
      }

      .box{
        max-width: 357px;
      }

      .box_title{
        font-family: var(--font-body);
        font-size: 24px;
        font-weight: bold;
        color: #837635;
        text-align: center;
        margin-bottom: 15px;
      }

      .imagebox{
        position: relative;
        margin-bottom: 15px;
      }

      .image_text{
        position: absolute;
        bottom: 30px;
        left: 0;
        background-color: #fff;
        font-size: 18px;
        font-weight: bold;
        line-height: 1.5;
        padding: 10px 40px 10px 20px;
        clip-path: polygon(0 0, 100% 0, calc(100% - 40px) 100%, 0 100%);
      }
    }

    .cont02_3{
      margin-bottom: 120px;

      &::before{
        background: url(/images/index/blue_bg.webp) center top / 100% 100% no-repeat;
      }

      .box_title{
        color: #519FB4;
      }
    }

    .cont02_4{
      margin-bottom: 100px;

      .point_box{
        position: relative;
        max-width: 1100px;
        margin: 0 auto;
        border: 2px solid #519FB4;
        border-radius: 30px;
      }

      .point{
        position: absolute;
        top: -45px;
        left: 80px;
        font-size: 44px;
        color: #4E9DB1;
        background-color: #fff;
        padding: 0 10px;
        font-family: "Marcellus", serif;
      }

      .flexbox{
        column-gap: 35px;
        padding: 0 45px;
        margin-bottom: 0;

        &::before{
          display: none;
        }
      }

      .imagebox{
        max-width: 428px;
        bottom: 50px;
      }

      .image_text{
        position: absolute;
        left: -30px;
        bottom: 50px;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 152px;
        height: 152px;
        background-color: #E7F8FD;
        border-radius: 50vh;
        font-size: 20px;
        font-weight: 500;
        line-height: 1.5;
        text-align: center;
        box-shadow: 0 0px 24px rgba(0, 0, 0, 0.15);

        &::before{
          content: "";
          position: absolute;
          left: 0;
          top: 20px;
          width: 31px;
          height: 31px;
          background: url(/images/index/kazari01.webp) center / contain no-repeat;
        }

        &::after{
          content: "";
          position: absolute;
          right: 0;
          bottom: 20px;
          width: 31px;
          height: 31px;
          background: url(/images/index/kazari01.webp) center / contain no-repeat;
        }
      }

      .box_title{
        font-size: 28px;
        font-weight: 600;
        margin: 45px 0 20px;
      }

      .box_text{
        font-weight: 500;
      }
    }

    .cont02_5{
      max-width: 1280px;
      margin: 0 auto;
      padding: 0 10px;

      .color_box{
        background: linear-gradient(
          to bottom right,
          rgba(235, 237, 200, 0.5) 0%,
          rgba(121, 207, 230, 0.5) 100%
        );
        padding: 75px 50px 0px;
        box-sizing: border-box;
      }

      .cont_title{
        font-size: 28px;
        font-weight: bold;
        line-height: 1.6;
        letter-spacing: 0.1em;
        text-align: center;
        padding-bottom: 30px;
        margin: 0 auto 30px;
        border-bottom: 1px solid #4E9DB1;

        span{
          font-size: 36px;
          font-weight: bold;
        }
      }

      .top_text{
        max-width: 830px;
        font-size: 16px;
        font-weight: 500;
        line-height: 2;
        margin: 0 auto 60px;
      }

      .gridbox{
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        column-gap: 65px;
        margin-bottom: 70px;
        justify-self: center;
      }

      .box{
        max-width: 350px;
      }

      .g_title{
        display: flex;
        align-items: center;
        justify-content: center;
        font-family: var(--font-body);
        font-size: 24px;
        font-weight: bold;
        line-height: 1.6;
        letter-spacing: 0.1em;
        text-align: center;
        min-height: calc(24px * 1.6 * 2);
        margin-bottom: 15px;
      }

      .imagebox{
        position: relative;
        max-width: 300px;
        margin: 0 auto 15px;

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

      .image_text{
        position: absolute;
        top: 50%;
        right: -35px;
        transform: translateY(-50%);
        display: flex;
        align-items: center;
        justify-content: center;
        width: 150px;
        height: 150px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.85);
        font-weight: bold;
        line-height: 1.5;
        letter-spacing: 0.1em;
        text-align: center;
        color: #4E9DB1;
        margin: 0;
      }

      .g_text{
        font-size: 15px;
        font-weight: 500;
        line-height: 1.9;
        margin: 0;
      }

      .flexbox{
        display: flex;
        align-items: flex-start;
        column-gap: 20px;
        padding: 0 165px;

        &::before{
          display: none;
        }

        .imagebox{
          flex-shrink: 0;
          width: 223px;
          margin-bottom: 0;
        }
      }

      .textbox{
        flex: 1;
        min-width: 0;
        padding-bottom: 10px;
      }

      .fukidashi{
        position: relative;
        width: fit-content;
        background: #fff;
        border-radius: 10px;
        font-size: 24px;
        font-weight: bold;
        line-height: 1.5;
        letter-spacing: 0.1em;
        padding: 16px 40px;
        margin: 0 0 25px;

        &::before{
          content: "";
          position: absolute;
          left: 3px;
          bottom: 10px;
          width: 30px;
          height: 15px;
          background: #fff;
          clip-path: polygon(100% 0, 100% 100%, 0 100%);
          transform: translateX(-100%);
        }

        &::after{
          content: "";
          position: absolute;
          right: 10px;
          bottom: 15px;
          width: 22px;
          height: 59px;
          background: url(/images/index/kazari02.webp) center / contain no-repeat;
        }
      }

      .box_text{
        font-size: 15px;
        font-weight: 500;
        line-height: 2;
        margin: 0;
      }
    }
  }

  .cont03{
    margin-bottom: 100px;

    .cont03_1{
      margin-bottom: 160px;
        .flexbox{
        column-gap: 50px;
        align-items: flex-start;
        margin-bottom: 70px;
        padding-right: clamp(60px, 27.273vw - 272.73px, 120px);;
      }

      .imagebox{
        max-width: 666px;
      }

      .box_header{
        display: flex;
        align-items: center;
        justify-content: space-between;
        column-gap: 90px;
        margin-top: -50px;
      }

      .eng{
        font-size: clamp(60px, 5.4545vw - 6.545px, 72px);
        line-height: 1;
        font-family: "Marcellus", serif;
        background: linear-gradient(
          to bottom,
          #98B994 47%,
          #FFFFFF 100%
        );
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
      }

      .number{
        flex-shrink: 0;

        img{
          display: block;
          width: 163px;
          height: auto;
        }
      }

      .box_title{
        font-size: 36px;
        font-weight: bold;
        margin-bottom: 30px;

        span{
          color: #658B60;
          font-weight: bold;
        }
      }

      .box_text{
        font-size: 16px;
        font-weight: 500;
        line-height: 2;
        margin: 0;
      }
    }

    .cont03_2{
      margin-bottom: 110px;
      position: relative;
      &::before{
        content: "";
        position: absolute;
        width: 871px;
        height: 535px;
        right: 0;
        bottom: 50%;
        transform: translateY(40%);
        z-index: -1;
        background: url(/images/index/03_1.webp) center / contain no-repeat;
      }
      .textbox{
        max-width: 1050px;
        padding-left: 160px;
      }
      .box_title{
        font-size: 30px;
        font-weight: bold;
        line-height: 1.6;
        margin-bottom: 30px;
      }
      .box_text{
        font-weight: 500;
      }
    }
    
  .cont03_3{
      .gridbox{
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 110px;
        justify-self: center;
      }

      .box{
        max-width: 480px;
      }

      .imagebox{
        position: relative;
        margin-bottom: 30px;

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

      .image_text{
        position: absolute;
        left: 50%;
        bottom: -20px;
        transform: translateX(-50%);
        width: 100%;
        background-color: #8BA888;
        color: #fff;
        font-size: 22px;
        font-weight: bold;
        line-height: 1.5;
        letter-spacing: 0.1em;
        text-align: center;
        padding: 20px 0;
        margin: 0;
        box-sizing: border-box;
        clip-path: polygon(20px 0, 100% 0, calc(100% - 20px) 100%, 0 100%);
        max-width: 460px;
      }

      .g_text{
        font-size: 16px;
        font-weight: 500;
        line-height: 2;
        margin: 0;
      }
    }

  }

  .cont04{
    margin-bottom: 100px;

    .cont04_1{
      .flexbox{
        column-gap: 50px;
        align-items: flex-start;
        padding-left: clamp(60px, 27.273vw - 272.73px, 120px);;
      }

      .imagebox{
        max-width: 666px;
      }

      .box_header{
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-top: -50px;
        margin-bottom: 30px;
      }

      .eng{
        font-size: clamp(60px, 5.4545vw - 6.545px, 72px);
        line-height: 1;
        font-family: "Marcellus", serif;
        background: linear-gradient(
          to bottom,
          #E9AAA3 47%,
          #FFFFFF 100%
        );
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
      }

      .number{
        flex-shrink: 0;

        img{
          display: block;
          width: 163px;
          height: auto;
        }
      }

      .box_title{
        font-size: 36px;
        font-weight: bold;
        margin-bottom: 30px;

        span{
          color: #E5786C;
          font-weight: bold;
        }
      }

      .box_text{
        font-size: 16px;
        font-weight: 500;
        line-height: 2;
        margin: 0;
      }
    }

    .cont04_2{
      .circle{
        display: flex;
        justify-content: center;
        column-gap: 15px;
        position: relative;
        bottom: clamp(40px, 18.182vw - 181.82px, 80px);
      }

      .box{
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        flex-shrink: 0;
        width: 195px;
        height: 195px;
        border-radius: 50%;
        font-size: 20px;
        font-weight: bold;
        line-height: 1.4;
        letter-spacing: 0.05em;
        text-align: center;
        box-sizing: border-box;
        row-gap: 10px;

        span{
          font-size: 30px;
          font-weight: bold;
          line-height: 1.2;
        }
      }

      .box:nth-child(odd){
        background-color: #FF9A91;
        color: #fff;

        span{
          color: #FFDB91;
        }
      }

      .box:nth-child(even){
        background-color: #FFDB91;
        color: #777777;

        span{
          color: #E27B26;
        }
      }
    }

        .cont04_3{
      .color_box{
        position: relative;
        max-width: 1190px;
        margin: 0 auto;
        background-color: #E9AAA3;
        border-radius: 30px;
        padding: 60px 60px 60px 340px;
        box-sizing: border-box;
      }

      .image_left{
        position: absolute;
        left: -50px;
        bottom: 0;
        width: 334px;
        z-index: 2;

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

      .image_right{
        position: absolute;
        right: 0;
        top: 0;
        width: 637px;
        height: 100%;
        overflow: hidden;
        border-radius: 0 30px 30px 0;
        z-index: 0;

        img{
          width: 100%;
          height: 100%;
          object-fit: cover;
        }
      }

      .textbox{
        position: relative;
        z-index: 1;
      }

      .box_title{
        font-size: 32px;
        font-weight: bold;
        line-height: 1.6;
        letter-spacing: 0.1em;
        color: #fff;
        text-shadow: 0 0 24px rgba(0, 0, 0, 0.25);
        margin: 0 0 25px;
      }

      .box_text{
        font-size: 16px;
        font-weight: 500;
        line-height: 2;
        color: #fff;
        text-shadow: 0 0 24px rgba(0, 0, 0, 0.25);
        margin: 0;
        max-width: 540px;
      }
    }

  }

  @media screen and (max-width: 768px) {
    /* はみ出し防止の共通ガード */
    overflow-x: hidden;

    .sec_title{
      text-align: center;
      margin-bottom: 0;

      img{
        width: 90%;
        height: auto;
        margin: 0 0 0 auto;
        min-width: initial;
      }
    }

    .cont01{
      margin-top: -7vw;
      margin-bottom: 14vw;

      .flexbox{
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        flex-direction: unset;
        column-gap: 0;
        row-gap: 0;
        margin-bottom: 12vw;
        padding-right: 0;
      }

      .textbox{
        display: contents;
      }

      .box_header{
        order: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        column-gap: 2vw;
        margin-top: 0;
        margin-bottom: 1vw;
      }

      .eng{
        font-size: 8vw;
        letter-spacing: 0.1em;
        white-space: nowrap;
      }

      .number{
        img{
          width: 21vw;
        }
      }

      .box_title{
        order: 2;
        font-size: 7vw;
        line-height: 1.5;
        text-align: center;
        margin-bottom: 6vw;
        font-weight: 500;
        span{
          font-weight: 500;
        }
      }

      .imagebox{
        order: 3;
        max-width: 100%;
        margin-bottom: 7vw;

        img{
          width: 100%;
          height: auto;
        }
      }

      .box_text{
        order: 4;
        font-size: 4vw;
        line-height: 2;
        text-align: justify;
        padding: 0 3vw;
      }

      .gridbox{
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        column-gap: 0;
        row-gap: 9vw;
      }

      .box{
        max-width: 95%;
        margin: 0 auto;

        &::before{
          top: 0;
          left: 0;
          right: auto;
          width: 26vw;
          height: 26vw;
        }
      }

      .g_title{
        font-size: 5.3vw;
        line-height: 1.5;
        letter-spacing: 0.1em;
        min-height: 26vw;
        padding-left: 23vw;
        margin: 0 0 4vw;
      }

      .g_text{
        font-size: 4vw;
        line-height: 2;
        text-align: justify;
      }
    }

    .cont02{
      margin-bottom: 16vw;

      .cont02_1{
        margin-bottom: 12vw;

        .flexbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          flex-direction: unset;
          column-gap: 0;
          row-gap: 0;
          margin-bottom: 10vw;
          padding-left: 0;
          padding-right: 0;

          &::before{
            left: 50%;
            right: auto;
            bottom: 59%;
            transform: translate(-50%, 50%);
            width: 100%;
            height: 107.3vw;
            background: url(/images/index/sec02_2_bg_sp.webp) center / contain no-repeat;
          }
        }

        .textbox{
          display: contents;
        }

        .box_header{
          order: 1;
          display: flex;
          align-items: center;
          justify-content: center;
          column-gap: 3vw;
          margin-top: 0;
          margin-bottom: 1vw;
        }

        .eng{
          font-size: 8vw;
          letter-spacing: 0.1em;
          white-space: nowrap;
        }

        .number img{
          width: 21vw;
        }

        .box_title{
          order: 2;
          font-size: 7vw;
          line-height: 1.5;
          text-align: center;
          margin-bottom: 5vw;
          font-weight: 500;
          span{
            font-weight: 500;
          }
        }

        .imagebox{
          order: 3;
          max-width: 100%;
          margin-bottom: 6vw;

          img{
            width: 98%;
            height: auto;
            margin: 0 auto;
            min-width: initial;
          }
        }

        .box_text{
          order: 4;
          font-size: 4vw;
          line-height: 2;
          text-align: justify;
          margin-top: 10vw;
          padding: 0 3vw;
        }
      }

      .cont02_2,
      .cont02_3{
        padding-top: 10vw;
        padding-bottom: 10vw;
        margin-bottom: 0;

        /* 親基準の全幅に変更 */
        &::before{
          top: -6vw;
          left: 50%;
          transform: translateX(-50%);
          width: 100%;
          height: calc(100% + 6vw);
          background-size: 100% 100%;
        }

        .kira_header{
          margin-bottom: 7vw;
        }

        .kira{
          margin-bottom: 2vw;

          img{
            width: 4vw;
            height: auto;
            min-width: initial;
          }
        }

        .kira_title{
          font-size: 6vw;
          line-height: 1.6;
          letter-spacing: 0.1em;
        }

        .gridbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          column-gap: 0;
          row-gap: 9vw;
        }

        .box{
          max-width: 100%;
        }

        .box_title{
          font-size: 5.8vw;
          margin-bottom: 3vw;
        }

        .box_text{
          font-size: 4vw;
          padding: 0 3vw;
        }

        .imagebox{
          width: 80%;
          margin: 0 auto 3vw;

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

        .image_text{
          bottom: 3vw;
          font-size: 5vw;
          line-height: 1.4;
          padding: 2.5vw 7vw 2.5vw 4vw;
          clip-path: polygon(0 0, 100% 0, calc(100% - 8vw) 100%, 0 100%);
          font-feature-settings: "palt";
        }
      }

      .cont02_3{
        margin-bottom: 14vw;
      }

      .cont02_4{
        margin-bottom: 14vw;
        padding: 0 3vw;

        .point_box{
          max-width: 100%;
          border-radius: 4vw;
        }

        .point{
          top: -5vw;
          left: 8vw;
          font-size: 6.4vw;
          padding: 0 3vw;
        }

        /* タイトル → 画像 → 本文 の順に並べ替え */
        .flexbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          flex-direction: unset;
          column-gap: 0;
          padding: 0 5vw 8vw;
        }

        .textbox{
          display: contents;
        }

        .box_title{
          order: 1;
          font-size: 6.5vw;
          line-height: 1.3;
          text-align: center;
          margin: 8vw 0 5vw;
        }

        .imagebox{
          order: 2;
          position: relative;
          max-width: 100%;
          bottom: 0;
          margin-bottom: 5vw;

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

        .image_text{
          left: -7vw;
          bottom: 7vw;
          width: 32vw;
          height: 32vw;
          font-size: 5vw;
          line-height: 1.4;

          &::before,
          &::after{
            width: 8.2vw;
            height: 8.2vw;
          }

          &::before{
            top: 0;
          }

          &::after{
            bottom: 0;
          }
        }

        .box_text{
          order: 3;
          font-size: 4vw;
          line-height: 1.9;
          text-align: justify;
        }
      }

      .cont02_5{
        max-width: 100%;
        padding: 0;

        .color_box{
          padding: 10vw 3vw 12vw;
          background: linear-gradient(to bottom, rgba(235, 237, 200, 0.5) 0%, rgba(121, 207, 230, 0.5) 100%);
        }

        .cont_title{
          font-size: 4.5vw;
          line-height: 1.7;
          letter-spacing: 0.05em;
          padding-bottom: 5vw;
          margin-bottom: 6vw;

          span{
            font-size: 6vw;
          }
        }

        .top_text{
          max-width: 100%;
          font-size: 4vw;
          line-height: 1.9;
          text-align: justify;
          margin-bottom: 9vw;
          padding: 0 2vw;
        }

        .gridbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          column-gap: 0;
          row-gap: 10vw;
          margin-bottom: 10vw;
          padding: 0 2vw;

          .imagebox{
            max-width: 89%;
            margin: 0 auto 4vw;
          }

          /* right: -8vw → -2vw に（画面右端を超えないように） */
          .image_text{
            top: auto;
            right: -2vw;
            bottom: 4vw;
            transform: none;
            width: 37.3vw;
            height: 37.3vw;
            font-size: 4vw;
            letter-spacing: 0.1em;
          }
        }

        .box{
          max-width: 100%;
        }

        .g_title{
          font-size: 5.6vw;
          line-height: 1.5;
          letter-spacing: 0.05em;
          min-height: 0;
          margin-bottom: 4vw;
        }

        .g_text{
          font-size: 4vw;
          line-height: 1.9;
          text-align: justify;
        }

        .flexbox{
          display: grid;
          grid-template-columns: 23.5vw minmax(0, 1fr);
          align-items: end;
          column-gap: 2vw;
          padding: 0 2vw;

          .imagebox{
            grid-column: 1;
            grid-row: 1;
            width: 23.5vw;
            max-width: none;
            align-self: end;
            margin: 0;
          }
        }

        .textbox{
          display: contents;
        }

        .fukidashi{
          grid-column: 2;
          grid-row: 1;
          width: auto;
          font-size: 4.8vw;
          line-height: 1.5;
          letter-spacing: 0.05em;
          text-align: center;
          border-radius: 3vw;
          padding: 4vw 9vw 4vw 4vw;
          margin: 0 0 4vw;

          &::before{
            left: 2vw;
            bottom: 7vw;
            width: 8vw;
            height: 6vw;
            transform: translateX(-90%);
            clip-path: polygon(80% 0, 140% 70%, 0 100%);
          }

          &::after{
            right: 16vw;
            bottom: 2vw;
            width: 5.5vw;
            height: 9vw;
            background: url(/images/index/kazari02_sp.webp) center / contain no-repeat;
          }
        }

        .box_text{
          grid-column: 1 / -1;
          grid-row: 2;
          font-size: 4vw;
          line-height: 1.9;
          text-align: justify;
          margin: 0;
        }
      }
    }

    .cont03{
      margin-bottom: 16vw;

      .cont03_1{
        margin-bottom: -10vw;

        .flexbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          flex-direction: unset;
          column-gap: 0;
          row-gap: 0;
          margin-bottom: 0;
          padding-right: 0;
        }

        .textbox{
          display: contents;
        }

        .box_header{
          order: 1;
          display: flex;
          align-items: center;
          justify-content: center;
          column-gap: 3vw;
          margin-top: 0;
          margin-bottom: 1vw;
        }

        .eng{
          font-size: 8vw;
          letter-spacing: 0.1em;
          white-space: nowrap;
        }

        .number img{
          width: 21vw;
        }

        .box_title{
          order: 2;
          font-size: 7vw;
          line-height: 1.5;
          text-align: center;
          margin-bottom: 6vw;
          font-weight: 500;
          span{
            font-weight: 500;
          }
        }

        .imagebox{
          order: 3;
          max-width: 100%;
          margin-bottom: 7vw;

          img{
            width: 100%;
            height: auto;
          }
        }

        .box_text{
          order: 4;
          font-size: 4vw;
          line-height: 2;
          text-align: justify;
          padding: 0 3vw;
        }
      }

      .cont03_2{
        margin-bottom: 12vw;

        /* 100vw + 負マージン → 親基準の全幅に変更 */
        &::before{
          position: relative;
          display: block;
          width: 100%;
          height: 63vw;
          right: auto;
          bottom: auto;
          transform: none;
          margin: 0 0 -18vw;
          background-position: center center;
          background-size: cover;
          background: url(/images/index/03_1_sp.webp) center / contain no-repeat;
        }

        .textbox{
          max-width: 100%;
          padding-left: 0;
          padding-right: 0;
        }

        .box_title{
          padding-left: 3vw;
          font-size: 5.4vw;
          line-height: 1.5;
          text-align: left;
          margin-bottom: 3vw;
        }

        .box_text{
          font-size: 4vw;
          line-height: 2;
          text-align: justify;
          padding: 0 3vw;
        }
      }

      .cont03_3{
        .gridbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          column-gap: 0;
          row-gap: 12vw;
        }

        .box{
          max-width: 100%;
        }

        .imagebox{
          margin: 0 auto 6vw;
          width: 93%;
        }

        .image_text{
          left: 50%;
          bottom: -5vw;
          max-width: 90%;
          font-size: 4.3vw;
          letter-spacing: 0.1em;
          padding: 3vw 0;
          clip-path: polygon(5vw 0, 100% 0, calc(100% - 5vw) 100%, 0 100%);
          font-feature-settings: "palt";
        }

        .g_text{
          font-size: 4vw;
          line-height: 2;
          text-align: justify;
          padding: 0 3vw;
        }
      }
    }

    .cont04{
      margin-bottom: 16vw;

      .cont04_1{
        .flexbox{
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          flex-direction: unset;
          column-gap: 0;
          row-gap: 0;
          padding-left: 0;
          padding-right: 0;
        }

        .textbox{
          display: contents;
        }

        .box_header{
          order: 1;
          display: flex;
          align-items: center;
          justify-content: center;
          column-gap: 3vw;
          margin-top: 0;
          margin-bottom: 1vw;
        }

        .eng{
          font-size: 8vw;
          letter-spacing: 0.1em;
          white-space: nowrap;
        }

        .number img{
          width: 21vw;
        }

        .box_title{
          order: 2;
          font-size: 7vw;
          line-height: 1.5;
          text-align: center;
          margin-bottom: 6vw;
          font-weight: 500;
          span{
            font-weight: 500;
          }
        }

        .imagebox{
          order: 3;
          max-width: 100%;
          margin-bottom: 7vw;

          img{
            width: 100%;
            height: auto;
          }
        }

        .box_text{
          order: 4;
          font-size: 4vw;
          line-height: 2;
          text-align: justify;
          padding: 0 3vw;
        }
      }

      .cont04_2{
        margin-bottom: 12vw;

        /* 4つ横並び → 2×2 に */
        .circle{
          display: grid;
          grid-template-columns: repeat(2, 42vw);
          justify-content: center;
          column-gap: 4vw;
          row-gap: 4vw;
          bottom: 0;
          margin-top: 5vw;
        }

        .box{
          width: 42vw;
          height: 42vw;
          font-size: 4.8vw;
          line-height: 1.4;
          letter-spacing: 0.02em;
          row-gap: 1.5vw;
          font-feature-settings: "palt";

          span{
            font-size: 6.4vw;
            line-height: 1.2;
          }
        }
      }

      .cont04_3{
        .color_box{
          max-width: 93%;
          padding: 0 0 8vw;
          height: 100vw;
        }

        .image_left{
          left: -2vw;
          bottom: auto;
          top: 0;
          width: 33vw;
        }

        .image_right{
          right: 0;
          top: auto;
          bottom: 0;
          width: 100%;
          height: 58vw;
          border-radius: 0;

          img{
            object-position: center bottom;
          }
        }

        .textbox{
          padding: 0 5vw;
        }

        .box_title{
          font-size: 5.6vw;
          line-height: 1.5;
          letter-spacing: 0.05em;
          text-align: right;
          min-height: 30vw;
          display: flex;
          align-items: center;
          justify-content: flex-end;
          margin: 0 0 5vw;
        }

        .box_text{
          font-size: 4vw;
          line-height: 2;
          text-align: justify;
          max-width: 100%;
          margin: 0 0 42vw;
        }
      }
    }

  }
}


/* sec03 */
.sec03{
  position: relative;
  z-index: 0;
  padding-top: 60px;
  padding-bottom: 100px;
  margin-bottom: 100px;

  &::before{
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: max(100vw, 100%);
    height: 100%;
    background: url(/images/index/orange_bg.webp) center top / 100% 100% no-repeat;
    z-index: -1;
  }

  .inner{
    padding: 0;
  }

  .sec_header{
    position: relative;
    margin-bottom: 60px;

    .imagebox{
      max-width: 1013px;
      margin: 0 auto;

      img{
        width: 100%;
        height: auto;
      }
    }

    .sec_title{
      position: absolute;
      left: 110px;
      top: -70px;
      display: flex;
      align-items: flex-start;
      column-gap: 20px;
      z-index: 1;

      img{
        display: block;
        width: 73px;
        height: auto;
      }

      span{
        writing-mode: vertical-rl;
        font-size: 30px;
        font-weight: bold;
        line-height: 1.5;
        letter-spacing: 0.2em;
        color: #ED7600;
      }
    }
  }


  .cont01{
    margin-bottom: 60px;
    padding-left: 210px;
    position: relative;
    &::before{
      content: "";
      position: absolute;
      width: 377px;
      height: 442px;
      right: 30px;
      bottom: 0;
      background: url(/images/index/sec03_2.webp) center / contain no-repeat;
    }

    .box_title{
      font-size: 36px;
      font-weight: bold;
      line-height: 1.7;
      letter-spacing: 0.1em;
      margin: 0 0 20px;
    }

    .doctor{
      font-size: 24px;
      font-weight: bold;
      letter-spacing: 0.1em;
      margin: 0;
      font-family: var(--font-heading);
    }
  }


  .cont02{
    margin-bottom: 80px;
    padding: 0 210px;

    .box_title{
      font-size: 24px;
      font-weight: bold;
      line-height: 1.6;
      letter-spacing: 0.1em;
      color: #ED7600;
      margin: 0 0 25px;
      font-family: var(--font-body);
    }

    .box_text{
      font-size: 16px;
      font-weight: 500;
      line-height: 2.2;
      margin: 0;
    }
  }


  .cont03{
    margin-bottom: 90px;

    .flexbox{
      display: flex;
      align-items: flex-start;
      column-gap: 70px;
      padding-right: 80px;
    }

    .imagebox{
      flex-shrink: 0;
      max-width: 531px;

      img{
        width: 100%;
        height: auto;
      }
    }

    .textbox{
      flex: 1;
      min-width: 0;
    }

    .box_title{
      font-size: 24px;
      font-weight: bold;
      line-height: 1.6;
      letter-spacing: 0.1em;
      color: #ED7600;
      margin: 0 0 25px;
      font-family: var(--font-body);
    }

    .box_text{
      font-size: 16px;
      font-weight: 500;
      line-height: 2.2;
      margin: 0;
    }
  }


  .cont04 {
    max-width: 1190px;
    margin: 0 auto;
    .gridbox {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 80px;
    }

    .box_title {
      position: relative;
      font-family: var(--font-heading);
      font-size: 22px;
      font-weight: bold;
      line-height: 1.5;
      padding-left: 30px;
      padding-bottom: 10px;
      margin-bottom: 20px;
      border-bottom: 1px solid #ED7600;
      min-height: calc(22px * 1.5 * 2);

      &::before {
        content: "";
        position: absolute;
        left: 0;
        top: 0.5em;
        width: 12px;
        height: 16px;
        background: url(/images/index/kira_orange.webp) center / contain no-repeat;
      }
      

      .sub {
        display: block;
        font-size: 22px;
        font-weight: bold;
      }
    }

    .career_list {
      margin: 0;
      padding-left: 40px;
      font-size: 18px;
      font-weight: 500;
      line-height: 1.8;
      letter-spacing: 0.1em;

      .career_item {
        display: flex;
        gap: 35px;

        & + .career_item {
          margin-top: 12px;
        }
      }

      dt {
        flex-shrink: 0;
      }

      dd {
        margin: 0;
        
      }
    }

    .group_list {
      list-style: none;
      margin: 0;
      padding-left: 24px;
      font-size: 18px;
      font-weight: 500;
      line-height: 1.8;
      letter-spacing: 0.1em;

      li + li {
        margin-top: 4px;
      }
    }
  }


    @media screen and (max-width: 768px) {
    padding-top: 0;
    padding-bottom: 12vw;
    margin-bottom: 12vw;
    &::before{
      top: 150vw;                 /* 写真の高さぶん下げる */
      width: 100%;
      height: calc(100% - 150vw);
      background: #FDF7F2 url(/images/index/orange_bg_sp.webp) center top / 100% auto no-repeat;
    }

    .sec_header{
      margin-bottom: 8vw;

      .imagebox{
        max-width: 100%;
        margin: 0 0 0 auto;
      }

      .sec_title{
        left: 5vw;
        top: -12vw;
        column-gap: 2vw;

        img{
          width: 8vw;
          min-width: initial;
        }

        span{
          font-size: 4.8vw;
          letter-spacing: 0.15em;
        }
      }
    }

    .cont01{
      margin-bottom: 12vw;
      padding-left: 5vw;
      padding-right: 5vw;

      &::before{
        width: 100vw;
        height: 80vw;
        right: -0;
        bottom: -37vw;
        z-index: -1;
        background: url(/images/index/sec03_2_sp.webp) center / contain no-repeat;
      }

      .box_title{
        position: relative;
        z-index: 1;
        font-size: 7.5vw;
        line-height: 1.7;
        letter-spacing: 0.1em;
        margin-bottom: 3vw;
      }

      .doctor{
        position: relative;
        z-index: 1;
        font-size: 4.5vw;
      }
    }

    .cont02{
      margin-bottom: 10vw;
      padding: 0 5vw;

      .box_title{
        font-size: 4.8vw;
        line-height: 1.6;
        margin-bottom: 4vw;
      }

      .box_text{
        font-size: 4vw;
        line-height: 2;
        text-align: justify;
      }
    }

    .cont03{
      margin-bottom: 10vw;

      .flexbox{
        flex-direction: column;
        column-gap: 0;
        row-gap: 6vw;
        padding-right: 0;
      }

      .imagebox{
        max-width: 72%;
        margin: 0 auto;
      }

      .textbox{
        padding: 0 5vw;
      }

      .box_title{
        font-size: 4.8vw;
        line-height: 1.6;
        margin-bottom: 4vw;
      }

      .box_text{
        font-size: 4vw;
        line-height: 2;
        text-align: justify;
      }
    }

    .cont04 {
      max-width: 100%;
      padding: 0 5vw;

      .gridbox {
        grid-template-columns: minmax(0, 1fr);
        column-gap: 0;
        row-gap: 8vw;
      }

      .box_title {
        font-size: 4.8vw;
        padding-left: 6vw;
        padding-bottom: 3vw;
        margin-bottom: 5vw;
        min-height: initial;

        &::before {
          width: 3.2vw;
          height: 4.3vw;
          top: 50%;
          transform: translateY(-75%);
        }

        .sub {
          font-size: 4.8vw;
        }
      }

      .career_list {
        padding-left: 0;
        font-size: 4vw;
        line-height: 1.7;

        .career_item {
          gap: 3vw;

          & + .career_item {
            margin-top: 2.5vw;
          }
        }

        dd{
          font-feature-settings: "palt";
          font-size: 3.8vw;
        }
        dt{
          font-feature-settings: "palt";
          font-size: 3.8vw;
        }
      }

      

      .group_list {
        padding-left: 0;
        font-size: 3.8vw;
        line-height: 1.7;
      }
    }
  }
}

/* sec04 */
.sec04{
  margin-bottom: 150px;
  .sec_body{
    max-width: initial;
  }

  .sec_title{
    position: relative;
    text-align: center;
    font-size: 40px;
    font-weight: bold;
    margin-bottom: 90px;
    letter-spacing: 0.1em;

    &::before{
      content: "";
      position: absolute;
      width: 439px;
      height: 236px;
      top: 50%;
      left: 50%;
      transform: translate(-35%, -50%);
      background: url(/images/index/kazari03.webp) center / contain no-repeat;
      z-index: -1;
    }

    .career{
      font-family: "Marcellus", serif;
      font-size: 70px;
      letter-spacing: 0.2em;
      color: #CFC6C6;
    }

    .small{
      font-family: var(--font-body);
      font-size: 21px;
      font-weight: bold;
      letter-spacing: 0.1em;
    }
  }

  .cont01{
    margin-bottom: 110px;

    .top_text{
      max-width: 700px;
      margin: 0 auto;
    }
  }

  .cont02,
  .cont03,
  .cont04{
    margin-bottom: 80px;

    .flexbox{
      position: relative;
      display: flex;
      align-items: flex-start;
      column-gap: 40px;
    }

    .flexbox.reverse{
      flex-direction: row-reverse;
    }

    .textbox{
      flex: 1;
      min-width: 0;
      padding-top: 60px;
    }

    .imagebox{
      flex-shrink: 0;
      width: 654px;

      img{
        width: 100%;
        height: auto;
      }
    }

    .box_title{
      position: relative;
      z-index: 1;
      width: max-content;
      max-width: none;
      white-space: nowrap;
      font-size: 30px;
      font-weight: bold;
      line-height: 1.6;
      letter-spacing: 0.15em;
      color: #fff;
      padding: 18px 55px;
      margin: 0 0 30px;
      box-sizing: border-box;

      &::before{
        content: "";
        position: absolute;
        left: -30px;
        bottom: 40%;
        width: 192px;
        height: 112px;
        background-position: center;
        background-size: contain;
        background-repeat: no-repeat;
        z-index: -1;
      }
    }

    .box_text{
      font-size: 16px;
      font-weight: 500;
      line-height: 2;
      margin: 0;
    }
  }

  .cont02{
    .box_title{
      min-width: calc(100% + 120px);
      background-color: rgba(237, 118, 0, 0.8);

      &::before{
        background-image: url(/images/index/kazari04.webp);
      }
    }
  }

  .cont03{
    .textbox{
      padding-top: 60px;
    }

    .box_title{
      min-width: calc(100% + 120px);
      background-color: rgba(225, 173, 0, 0.8);
      margin-left: -120px;

      &::before{
        background-image: url(/images/index/kazari05.webp);
      }
    }
  }

  .cont04{
    .box_title{
      min-width: calc(100% + 120px);
      background-color: rgba(48, 161, 209, 0.8);

      &::before{
        background-image: url(/images/index/kazari06.webp);
      }
    }
  }

  @media screen and (max-width: 1440px) and (min-width: 769px) {
    .cont02,
    .cont03,
    .cont04{
      .box_title{
        font-size: 26px;
        padding: 16px 40px;
      }
    }
  }

    @media screen and (max-width: 768px) {
    margin-bottom: 16vw;

    .sec_title{
      font-size: 5.6vw;
      line-height: 1.4;
      margin-bottom: 8vw;
      letter-spacing: 0.1em;

      &::before{
        width: 75vw;
        height: 40vw;
        transform: translate(-45%, -40%);
      }

      .career{
        display: block;
        font-size: 9vw;
        line-height: 1.2;
        margin-bottom: 2vw;
      }

      .small{
        display: inline-block;
        font-size: 4vw;
        line-height: 1.6;
        margin-bottom: 3vw;
      }
    }

    .cont01{
      margin-bottom: 10vw;
      padding: 0;

      .top_text{
        max-width: 100%;
        font-size: 4vw;
        line-height: 2;
        text-align: justify;

        br{
          display: none;
        }
      }
    }

    .cont02,
    .cont03,
    .cont04{
      margin-bottom: 12vw;

      .flexbox,
      .flexbox.reverse{
        display: grid;
        grid-template-columns: minmax(0, 1fr);
        flex-direction: unset;
        column-gap: 0;
        row-gap: 0;
      }

      .textbox{
        display: contents;
      }

      .imagebox{
        order: 1;
        width: 89%;
        margin: 0 auto;
      }

      .box_title{
        order: 2;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        white-space: normal;
        font-size: 5.07vw;
        line-height: 1.3;
        letter-spacing: 0.1em;
        text-align: center;
        padding: 3.5vw 4vw;
        margin: -18vw auto 8vw;
        font-feature-settings: "palt";

        &::before{
          left: -4vw;
          bottom: 0%;
          width: 30vw;
          height: 26vw;
        }
      }

      .box_text{
        order: 3;
        font-size: 4vw;
        line-height: 2;
        text-align: justify;
        padding: 0;
      }
    }

    .cont03{
      .textbox{
        padding-top: 0;
      }
      .box_title{
        margin: -24vw auto 8vw;
        &::before{
          bottom: 30%;
        }
      }
    }
    .cont04{
      .box_title{
        margin: -24vw auto 8vw;
        &::before{
          bottom: 30%;
        }
      }
    }

  }
}


/* sec05 */
.sec05 {
  .inner{
    padding: 0;
  }

  .sec_body{
    padding: 0;
    max-width: initial;
  }

  .sec_title{
    position: relative;
    z-index: 0;
    font-size: 32px;
    font-weight: bold;
    line-height: 2.5;
    letter-spacing: 0.1em;
    margin-bottom: 180px;
    padding-left: 120px;

    &::before{
      content: "";
      position: absolute;
      left: 90px;
      top: 20px;
      width: 58px;
      height: 58px;
      border-radius: 50%;
      background-color: rgba(104, 194, 95, 0.6);
      filter: blur(37px);
      z-index: 0;
    }

    &::after{
      content: "";
      position: absolute;
      right: 35%;
      top: -40px;
      width: 88px;
      height: 88px;
      border-radius: 50%;
      background-color: rgba(237, 118, 0, 0.3);
      filter: blur(37px);
      z-index: 0;
    }

    .line01,
    .line02{
      position: relative;
      z-index: 1;
      display: inline-block;
      line-height: 1.5;
    }

    .line01{
      margin-bottom: 20px;

      &::before{
        content: "";
        position: absolute;
        left: 50%;
        top: 130%;
        transform: translateX(20%);
        width: 148px;
        height: 148px;
        border-radius: 50%;
        background-color: rgba(255, 219, 145, 0.3);
        filter: blur(37px);
        z-index: -1;
      }
    }

    .green{
      font-size: 42px;
      font-weight: bold;
      color: #498A42;
    }

    .orange{
      font-size: 42px;
      font-weight: bold;
      color: #ED7600;
    }

    .middle{
      font-size: 40px;
      font-weight: bold;
    }

    .eng_img{
      position: absolute;
      right: 80px;
      bottom: -60px;
      width: 733px;
      height: auto;
      z-index: -1;
    }
  }


  .roadmap{
    position: relative;
    z-index: 0;
    width: calc(100% - 40px);
    max-width: 1134px;
    margin: 0 auto;
    padding-bottom: 120px;
  }

  .roadmap_arrow{
    position: absolute;
    left: 50px;
    top: -34px;
    width: 73%;
    max-width: 830px;
    height: auto;
    z-index: 0;
    pointer-events: none;
  }

  .roadmap_head{
    position: relative;
    z-index: 1;
  }

  .roadmap_title{
    margin: 0;
    padding: 4px 0 4px 26px;
    border-left: 4px solid #ED7600;

    .main{
      display: block;
      font-size: 35px;
      font-weight: 600;
      line-height: 1.5;
      letter-spacing: 0.15em;
    }

    .sub{
      display: block;
      margin-top: 16px;
      font-size: 24px;
      font-weight: bold;
      line-height: 1.4;
      letter-spacing: 0.15em;
      color: #ED7600;
      font-family: var(--font-body);
    }
  }

  .roadmap_note{
    margin: 34px 0 0;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.8;
    letter-spacing: 0.1em;
  }

  .phase_list{
    position: relative;
    z-index: 1;
    display: flex;
    align-items: flex-end;
    width: calc(100% - 50px);
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .phase_item{
    position: relative;
    flex: 1;
    min-width: 0;
    margin: 0;
  }

  .phase_text{
    padding: 0 16px 24px;
  }

  .phase_name{
    margin: 0;
    text-align: center;
    line-height: 1.4;

    &::before{
      content: "";
      display: block;
      width: 10px;
      height: 10px;
      margin: 0 auto 16px;
      border-radius: 50%;
      filter: blur(1px);
    }

    .num{
      display: block;
      font-size: 21px;
      font-weight: bold;
      letter-spacing: 0.1em;
      font-family: var(--font-heading);
    }

    .term{
      display: block;
      margin-top: 2px;
      font-size: 18px;
      font-weight: bold;
      letter-spacing: 0.1em;
      font-family: var(--font-heading);
    }
  }

  .phase_desc{
    min-height: calc(1.7em * 2);
    margin: 14px 0 0;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.7;
    letter-spacing: 0.05em;
  }

  .phase_img{
    display: block;
    width: 100%;
    overflow: hidden;

    img{
      display: block;
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  }

  .phase01{
    .phase_name{
      color: #498A42;

      &::before{
        background-color: #498A42;
        box-shadow: 0 0 8px 6px #498A42;
      }
    }

    .phase_img{
      aspect-ratio: 271 / 68;
    }
  }

  .phase02{
    .phase_name{
      color: #937E18;

      &::before{
        background-color: #EECE30;
        box-shadow: 0 0 8px 6px #EECE30;
      }
    }

    .phase_img{
      aspect-ratio: 271 / 136;
    }
  }

  .phase03{
    .phase_name{
      color: #E18578;

      &::before{
        background-color: #F5736A;
        box-shadow: 0 0 8px 6px #F5736A;
      }
    }

    .phase_img{
      aspect-ratio: 271 / 204;
    }
  }

  .phase04{
    .phase_name{
      color: #ED7600;

      &::before{
        background-color: #ED7600;
        box-shadow: 0 0 8px 6px #ED7600;
      }
    }

    .phase_img{
      aspect-ratio: 1 / 1;
    }
  }

  .goal{
    width: calc(100% - 40px);
    max-width: 1284px;
    margin: 0 auto;
    padding: 90px 0 140px;
  }

  .goal_head{
    margin-bottom: 100px;
    text-align: center;
  }

  .goal_title{
    position: relative;
    display: inline-block;
    margin: 0;
    padding: 0 20px 20px;
    font-size: 35px;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: 0.15em;

    &::after{
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      bottom: 0;
      height: 14px;
      background: linear-gradient(to bottom, rgba(235, 234, 232, 1), rgba(235, 234, 232, 0));
    }
  }

  .goal_lead{
    margin: 22px 0 0;
    text-align: center;

    span{
      position: relative;
      z-index: 0;
      display: inline-block;
      padding: 10px 70px;
      font-size: 24px;
      font-weight: 500;
      line-height: 1.5;
      letter-spacing: 0.1em;
      color: #fff;

      &::before{
        content: "";
        position: absolute;
        inset: 0;
        z-index: -1;
        background-color: #ED7600;
        transform: skewX(-20deg);
        width: 95%;
        margin: 0 auto;
      }
    }
  }

  .goal_list{
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(4, auto);
    grid-auto-flow: column;  
    column-gap: 40px;
    row-gap: 22px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .goal_item{
    margin: 0;

    &:nth-child(even) .goal_item_title::before{
      background-color: #E2F4E1;
    }
  }

  .goal_item_title{
    position: relative;
    z-index: 0;
    display: flex;
    align-items: center;
    column-gap: 20px;
    width: 400px;
    max-width: 100%;
    min-height: 40px;
    margin: 0;
    padding: 4px 20px 4px 40px;
    box-sizing: border-box;
    line-height: 1.5;

    &::before{
      content: "";
      position: absolute;
      inset: 0;
      z-index: -1;
      background-color: #FAE4D7;
      transform: skewX(-20deg);
    }

    .num{
      flex-shrink: 0;
      font-size: 20px;
      font-weight: 500;
      letter-spacing: 0.05em;
    }

    .txt{
      font-size: 21px;
      font-weight: 500;
      letter-spacing: 0.1em;
    }
  }

  .goal_item_desc{
    min-height: calc(1.7em * 2);
    margin: 16px 0 0;
    padding-left: 46px;
    font-size: 16px;
    line-height: 1.7;
    letter-spacing: 0.1em;
  }


  .slider {
    position: relative;
    width: 100%;
    overflow: hidden;

    .slider_track {
      display: flex;
      align-items: flex-start;
      width: max-content;
      will-change: transform;
    }

    .slider_item {
      flex-shrink: 0;
      width: 340px;

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

      &:nth-child(even) {
        margin-top: 125px;
      }
    }
  }

  /* ========================================
     SP
  ======================================== */
  @media screen and (max-width: 768px) {
    .sec_title{
      font-size: 5.6vw;
      line-height: 1.8;
      margin-bottom: 14vw;
      padding-left: 5vw;

      &::before{
        left: 5vw;
        top: 3vw;
        width: 14vw;
        height: 14vw;
        filter: blur(9vw);
      }

      &::after{
        right: 35%;
        top: 11vw;
        width: 20vw;
        height: 20vw;
        filter: blur(9vw);
      }

      .line01,
      .line02{
        line-height: 1.6;
      }

      .line01{
        margin-bottom: 0;

        &::before{
          width: 34vw;
          height: 34vw;
          filter: blur(9vw);
          left: 0%;
        }
      }

      .green,
      .orange{
        font-size: 6.4vw;
      }

      .middle{
        font-size: 5.6vw;
      }

      .eng_img{
        position: relative;
        display: block;
        right: auto;
        bottom: auto;
        width: 59vw;
        margin: 4vw 0 0 auto;
        min-width: initial;
        padding-right: 3vw;
      }
    }

    .roadmap{
      width: auto;
      max-width: none;
      padding-bottom: 0;
    }

    .roadmap_arrow{
      left: auto;
      right: 8vw;
      top: -1vw;
      width: 85.33vw; 
      height: 34.6vw; 
      max-width: none;
      opacity: 50%;
      min-width: initial;
    }

    .roadmap_head{
      padding: 0 6vw;
    }

    .roadmap_title{
      padding: 0.5vw 0 0.5vw 3vw;
      border-left-width: 1vw;

      .main{
        font-size: 5.6vw;
        letter-spacing: 0.05em;
        line-height: 1.5;
      }

      .sub{
        margin-top: 1.5vw;
        font-size: 4vw;
        letter-spacing: 0.1em;
      }
    }

    .roadmap_note{
      margin-top: 5vw;
      font-size: 4vw;
      line-height: 1.8;
      letter-spacing: 0;
    }

    .phase_list{
      display: block;
      width: auto;
      margin: 6vw 3vw 0;
    }

    .phase_item{
      padding: 3vw 8vw;
      overflow: hidden;
    }

    .phase_text{
      position: relative;
      z-index: 1;
      padding: 2.5vw 4vw 3vw;
      background-color: rgba(255, 255, 255, 0.8);
      width: 69%;
    }

    .phase_name{
      text-align: left;

      &::before{
        display: inline-block;
        width: 2vw;
        height: 2vw;
        margin: 0 2vw 0 0.5vw;
        vertical-align: middle;
      }

      .num{
        display: inline;
        font-size: 4.27vw;
        letter-spacing: 0.05em;
      }

      .term{
        display: inline;
        margin-top: 0;
        font-size: 3.73vw;
        letter-spacing: 0;
      }
    }

    .phase_desc{
      min-height: 0;
      margin-top: 1vw;
      font-size: 3.8vw;
      font-weight: 500;
      line-height: 1.6;
      letter-spacing: 0.1em;
    }

    .phase_item .phase_img{
      position: absolute;
      inset: 0;
      z-index: 0;
      width: 100%;
      height: 100%;
      aspect-ratio: auto;
    }

    /* PHASEごとの丸のぼかし（SPサイズ） */
    .phase01 .phase_name::before{
      box-shadow: 0 0 1.5vw 1vw #498A42;
    }

    .phase02 .phase_name::before{
      box-shadow: 0 0 1.5vw 1vw #EECE30;
      
    }

    .phase03 .phase_name::before{
      box-shadow: 0 0 1.5vw 1vw #F5736A;
    }

    .phase04 .phase_name::before{
      box-shadow: 0 0 1.5vw 1vw #ED7600;
    }

    .goal{
      width: auto;
      max-width: none;
      padding: 14vw 7.5vw 6vw;
    }

    .goal_head{
      margin-bottom: 10vw;
    }

    .goal_title{
      padding: 0 0 5vw;
      font-size: 5.6vw;
      letter-spacing: 0.1em;

      &::after{
        height: 4.5vw;
      }
    }

    .goal_lead{
      margin: 4vw -5vw 0;

      span{
        display: block;
        padding: 2vw;
        font-size: 4.27vw;
        letter-spacing: 0.08em;
      }
    }

    .goal_list{
      grid-template-columns: 1fr;
      grid-template-rows: none;
      grid-auto-flow: row;
      row-gap: 8vw;
    }

    .goal_item_title{
      width: 100%;
      min-height: 10vw;
      column-gap: 2.5vw;
      padding: 1.5vw 3vw 1.5vw 5vw;

      .num{
        font-size: 5.5vw;
      }

      .txt{
        font-size: 4.8vw;
        letter-spacing: 0.05em;
      }
    }

    .goal_item_desc{
      min-height: 0;
      margin-top: 3vw;
      padding-left: 0;
      font-size: 4vw;
      line-height: 1.6;
      letter-spacing: 0.08em;
    }

    .slider {
      margin-top: 8vw;
      contain: paint;

      .slider_track {
        transform: translate3d(0,0,0);
        backface-visibility: hidden;
      }
      .slider_item {
        width: 64vw;

        &:nth-child(even) {
          margin-top: 16vw;
        }
      }
    }
  }
}

/* sec06 */
.sec06{
  position: relative;
  z-index: 0;

  .sec_body{
    position: relative;
    z-index: 0;
    max-width: initial;
  }

  .top_text{
    margin-bottom: 50px;
  }

  .cont0{
    font-family: var(--font-heading);
    font-size: 25px;
    font-weight: bold;
    margin-bottom: 55px;
  }

  .cont01,
  .cont03{
    position: relative;
    z-index: 0;
    margin-bottom: 100px;

    &::before{
      content: "";
      position: absolute;
      top: 120px;
      left: 50%;
      transform: translateX(-50%);
      width: 100vw;
      min-width: 1280px;
      height: 1637px;
      background: linear-gradient(
        to bottom,
        rgba(169, 201, 209, 0.2) 0%,
        rgba(169, 201, 209, 0) 100%
      );
      z-index: -1;
    }

    .flexbox{
      display: flex;
      align-items: center;
      justify-content: space-between;
      column-gap: 60px;
    }

    .textbox{
      flex: 1;
      min-width: 0;
    }

    .box_title{
      font-family: "Marcellus", serif;
      font-size: 60px;
      font-weight: normal;
      line-height: 1.2;
      letter-spacing: 0.1em;
      margin: 0 0 50px;
      padding-left: 40px;
      background: linear-gradient(
        to right,
        #A9C9D1 0%,
        #98B994 100%
      );
      -webkit-background-clip: text;
      background-clip: text;
      color: transparent;
      width: fit-content;
    }

    .box_text{
      font-size: 36px;
      font-weight: bold;
      line-height: 1.7;
      letter-spacing: 0.1em;
      margin: 0;
      padding-left: clamp(80px, calc(190px - (1440px - 100vw)), 190px);
    }

    .imagebox{
      position: relative;
      flex-shrink: 0;
      width: 400px;
      background-color: #fff;
      box-shadow: 20px 24px 24px rgba(0, 0, 0, 0.18);

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

    .whitebox{
      position: absolute;
      bottom: 0;
      left: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      width: 400px;
      height: 95px;
      background-color: #fff;
      font-family: var(--font-heading);

      p{
        font-size: 24px;
        font-weight: bold;
        line-height: 1.5;
        letter-spacing: 0.1em;
        margin: 0;
      }
    }
  }

  .cont01{
    &::before{
      clip-path: polygon(0 22%, 100% 0, 100% 100%, 0 100%);
    }
  }

  .cont03{
    &::before{
      top: 190px;
      clip-path: polygon(0 0, 100% 13%, 100% 100%, 0 100%);
    }
  }

  .cont02,
  .cont04 {
    margin-bottom: 100px;

    .gridbox {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 60px;
      row-gap: 70px;
    }

    .box_title {
      position: relative;
      font-family: var(--font-heading);
      font-size: clamp(19px, calc(19px + (100vw - 1280px) * 0.0125), 21px);
      font-weight: bold;
      line-height: 1.6;
      padding-top: 64px;
      padding-bottom: 16px;
      margin-bottom: 20px;
      border-bottom: 1px solid #A9C9D1;

      .num {
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
        font-family: "Marcellus", serif;
        font-size: 50px;
        font-weight: normal;
        line-height: 1;
        letter-spacing: 0.05em;
        color: #A9C9D1;

        .q {
          font-size: 70px;
          background: linear-gradient(
            to bottom,
            rgba(169, 201, 209, 1) 0%,
            rgba(169, 201, 209, 0.4) 100%
          );
          -webkit-background-clip: text;
          background-clip: text;
          color: transparent;
        }
      }
    }

    .box_text {
      font-size: 16px;
      line-height: 2;
      margin: 0;
    }

    .box--last {
      grid-column: 1 / -1;
      display: grid;
      grid-template-columns: 1fr 1fr;
      column-gap: 60px;
      align-items: start;

      .imagebox img {
        display: block;
        width: 100%;
        height: auto;
      }
    }
  }

  @media screen and (max-width: 768px) {
    .sec_body{
      padding: 0;
    }
    .inner{
      padding: 0;
    }
    .top_text{
      margin-bottom: 5vw;
      width: 88%;
      padding-left: 3vw;

      img{
        width: 100%;
        height: auto;
        min-width: initial;
      }
    }

    .cont0{
      line-height: 1.8;
      margin-bottom: 8vw;
      padding: 0 3vw;

      .box_text{
        font-weight: bold;
        font-size: 5.4vw;
        letter-spacing: 0.05em;
        br{
          display: none;
        }
      }
    }

    .cont01,
    .cont03{
      margin-bottom: 10vw;

      &::before{
        top: -4vw;
        min-width: 0;
        width: 100%;
        height: 180vw;
      }

      .flexbox{
        flex-direction: column;
        align-items: stretch;
        column-gap: 0;
        row-gap: 5vw;
      }

      .textbox{
        text-align: right;
        padding: 0 3vw;
      }

      .box_title{
        font-size: 8vw;
        line-height: 1.2;
        padding-left: 0;
        margin: 0 0 2vw auto;
      }

      .box_text{
        font-size: 5.9vw;
        line-height: 1.6;
        padding-left: 0;
      }

      .imagebox{
        width: 80%;
        margin: 0 auto;
        padding-bottom: 0;
        border-radius: 2vw;
        box-shadow: 2vw 3vw 4vw rgba(0, 0, 0, 0.12);
        box-sizing: border-box;
      }

      .whitebox{
        width: 100%;
        height: 18vw;

        p{
          font-size: 4vw;
        }
      }
    }

    .cont01{
      &::before{
        clip-path: polygon(0 20%, 100% 0, 100% 100%, 0 100%);
      }
    }

    .cont03{
      &::before{
        top: 0;
        clip-path: polygon(0 0, 100% 20%, 100% 100%, 0 100%);
      }
    }

    .cont02,
    .cont04 {
      margin-bottom: 10vw;
      padding: 0 3vw;

      .gridbox {
        grid-template-columns: minmax(0, 1fr);
        column-gap: 0;
        row-gap: 10vw;
      }

      .box_title {
        font-size: 5vw;
        line-height: 1.6;
        padding-top: 11vw;
        padding-bottom: 3vw;
        margin-bottom: 4vw;

        .num {
          font-size: 9vw;
          top: 1vw;

          .q {
            font-size: 12vw;
          }
        }
      }

      .box:nth-child(even) {
        .box_title {
          text-align: left;

          .num {
            left: auto;
            right: 0;
          }
        }
      }

      .box_text {
        font-size: 4vw;
        line-height: 1.9;
        text-align: justify;
      }

      .box--last {
        grid-template-columns: minmax(0, 1fr);
        column-gap: 0;
        row-gap: 5vw;

        .imagebox{
          width: 82%;
          margin: 0 auto;
        }

        .box_title{
          text-align: left;

          .num{
            left: 0;
            right: auto;
          }

          br{
            display: none;
          }
        }
      }
    }
  }
}

/* sec07 */
.sec07{
  position: relative;
  z-index: 0;
  padding-bottom: 100px;
  overflow-x: clip;

  .bg_box{
    position: absolute;
    top: 120px;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    width: clamp(1200px, calc(1200px + (100vw - 1280px) * 0.5), 1280px);
    z-index: -2;

    &::before{
      content: "";
      position: absolute;
      inset: 0;
      background: linear-gradient(
        to bottom,
        rgba(255, 247, 240, 1) 0%,
        rgba(241, 247, 244, 0) 100%
      );
      z-index: 2;
    }
  }

  .bg_img{
    position: absolute;
    display: block;
    z-index: 1;
  }

  .bg_img--01{
    top: -120px;
    right: -80px;
    width: 635px;
    height: 531px;
    background: url(/images/index/sec07_1.webp) center / contain no-repeat;
  }

  .bg_img--02{
    bottom: -30px;
    left: -80px;
    width: 633px;
    height: 529px;
    background: url(/images/index/sec07_2.webp) center / contain no-repeat;
  }

  .inner{
    position: relative;
    z-index: 1;
  }

  .sec_body{
    position: relative;
    z-index: 1;
    max-width: initial;
  }

  .flexbox{
    display: flex;
    align-items: flex-end;
    justify-content: center;
    column-gap: 30px;
    margin-bottom: 30px;
  }

  .circle{
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 180px;
    height: 180px;
    border-radius: 50%;
    background-color: #F9F9F9;
    border: 2px solid #EECE30;
    font-size: 18px;
    font-weight: 500;
    line-height: 1.5;
    text-align: center;
    box-sizing: border-box;

    span{
      font-size: 22px;
      font-weight: bold;
      color: #ED7600;
    }
  }

  .circle:nth-child(2){
    margin-bottom: 60px;
  }

  .sec_title{
    position: relative;
    width: fit-content;
    font-size: 35px;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: 0.1em;
    text-align: center;
    margin: 0 auto 45px;

    span{
      position: relative;
      font-size: 54px;
      font-weight: bold;
      color: #ED7600;

      &::before{
        content: "";
        position: absolute;
        left: -20px;
        bottom: 100%;
        width: 46px;
        height: 29px;
        background: url(/images/index/kazari07.webp) center / contain no-repeat;
      }
    }

    &::after{
      content: "";
      position: absolute;
      left: 97%;
      bottom: 0;
      width: 81px;
      height: 50px;
      background: url(/images/index/kazari08.webp) center / contain no-repeat;
    }
  }

  .top_text{
    max-width: 900px;
    font-size: 16px;
    font-weight: 500;
    line-height: 2;
    margin: 0 auto 80px;
  }

  .cont_title{
    font-size: 34px;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: 0.1em;
    text-align: center;
    margin: 0 0 45px;
  }

  .gridbox{
    position: relative;
    display: grid;
    grid-template-columns: repeat(2, 526px);
    justify-content: center;
    column-gap: 90px;

    &::before{
      content: "";
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width: 38px;
      height: 19px;
      background: url(/images/index/step_yajirushi.webp) center / contain no-repeat;
    }
  }

  .box{
    position: relative;
    width: 526px;
    background-color: #FDF8F3;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15);
    padding: 30px;
    box-sizing: border-box;
  }

  .step{
    position: absolute;
    top: -25px;
    left: 20px;
    font-family: "Marcellus", serif;
    font-size: 40px;
    font-weight: normal;
    line-height: 1;
    letter-spacing: 0.05em;
    color: #EECE30;
    margin: 0;
  }

  .box_title{
    font-size: 24px;
    font-weight: bold;
    line-height: 1.5;
    letter-spacing: 0.1em;
    text-align: center;
    padding-bottom: 16px;
    margin: 0 0 20px;
    border-bottom: 2px solid #EECE30;
  }

  .box_text{
    font-size: 16px;
    font-weight: 500;
    line-height: 1.9;
    margin: 0;
  }

    @media screen and (max-width: 768px) {
    padding-bottom: 12vw;
    margin-bottom: 0;
    
    .bg_box{
      top: 18vw;
      bottom: 0;
      width: 93.3%;
    }

    .bg_img--01{
      top: -18vw;
      right: -10vw;
      width: 100%;
      height: 47vw;
      background: url(/images/index/sec07_1_sp.webp) center / contain no-repeat;
    }

    .bg_img--02{
      bottom: -8vw;
      left: -10vw;
      width: 100%;
      height: 67vw;
    }

        .flexbox{
      align-items: flex-start;
      justify-content: center;
      column-gap: 0;
      row-gap: 0;
      margin-bottom: 4vw;
      padding-top: 10vw;
    }

    .circle{
      width: 36vw;
      height: 36vw;
      font-size: 4vw;
      line-height: 1.5;
      border-width: 2px;
      margin: 0 -3.5vw;

      span{
        font-size: 4.5vw;
      }
    }

    .circle:nth-child(1),
    .circle:nth-child(3){
      margin-top: 16vw;
    }

    .circle:nth-child(2){
      margin-bottom: 0;
      position: relative;
      z-index: -1;
    }

    .sec_title{
      font-size: 6.4vw;
      line-height: 1.4;
      margin-bottom: 6vw;

      span{
        font-size: 10vw;

        &::before{
          left: 100%;
          transform: translateX(-50%) scaleX(-1);
          bottom: 85%;
          width: 10vw;
          height: 6vw;
        }
      }

      &::after{
        content: "";
        position: absolute;
        left: 77%;
        bottom: -4vw;
        width: 9vw;
        height: 11vw;
        background: url(/images/index/kazari08_sp.webp) center / contain no-repeat;
        font-size: 0;
      }
    }

    .top_text{
      max-width: 100%;
      font-size: 4vw;
      line-height: 1.9;
      text-align: justify;
      padding: 0 5vw;
      margin-bottom: 10vw;
    }

    .cont_title{
      font-size: 6.4vw;
      margin-bottom: 6vw;
    }

    .gridbox{
      grid-template-columns: minmax(0, 1fr);
      column-gap: 0;
      row-gap: 16vw;
      padding: 0 5vw;

      &::before{
        display: block;
        top: 39%;
        left: 50%;
        transform: translate(-50%, -50%) rotate(90deg);
        width: 8vw;
        height: 4vw;
      }
    }

    .box{
      width: 100%;
      padding: 8vw 4vw 5vw;
      border-radius: 2vw;
      box-shadow: 0 1vw 3vw rgba(0, 0, 0, 0.1);
    }

    .step{
      top: -3vw;
      left: 0;
      font-size: 6.4vw;
    }

    .box_title{
      font-size: 5.07vw;
      line-height: 1.5;
      padding-bottom: 3vw;
      margin-bottom: 4vw;
    }

    .box_text{
      font-size: 4vw;
      line-height: 1.9;
      text-align: justify;
    }
  }
}

/* sec08 */
.sec08 {
  position: relative;
  z-index: 0;
  padding: 80px 0 100px;
  margin-bottom: 0;

    &::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100vw;
    min-width: 1280px;
    height: 100%;
    background: #E1EEDF;
    z-index: -1;
  }

  .sec_title {
    width: fit-content;
    font-family: var(--font-heading);
    font-size: 36px;
    font-weight: bold;
    line-height: 1.4;
    text-align: center;
    padding-bottom: 14px;
    margin: 0 auto 55px;
    border-bottom: 2px solid #98B994;
  }

  .joblist {
    background: #fff;
    padding: 20px 50px;
    margin: 0;
    box-sizing: border-box;
  }

  .joblist_item {
    position: relative;
    display: grid;
    grid-template-columns: 200px 1fr;
    column-gap: 40px;
    align-items: center;
    padding: 30px 0;

    & + .joblist_item::before {
      content: "";
      position: absolute;
      top: 0;
      left: -50px;
      right: -50px;
      height: 1px;
      background: #98B994;
    }
  }

  .joblist_title {
    font-size: 21px;
    font-weight: bold;
    line-height: 1.6;
    text-align: center;
  }

  .joblist_body {
    font-size: 18px;
    font-weight: 500;
    line-height: 1.8;
    margin: 0;

    .cell {
      display: inline-block;
      min-width: 200px;
    }

    .text {
      margin: 0;

      & + .text { margin-top: 16px; }
    }

    .subhead {
      margin: 16px 0 0;

      &:first-child { margin-top: 0; }
    }

    .dotlist {
      list-style: none;
      margin: 0;
      padding: 0;

      li {
        position: relative;
        padding-left: 20px;

        &::before {
          content: "・";
          position: absolute;
          left: 0;
          color: #98B994;
        }
      }
    }

    .dotlist + .subhead { margin-top: 16px; }
  }

  @media screen and (max-width: 768px) {
    padding: 10vw 0 1vw;

    .sec_body{
      padding: 0;
    }
    &::before {
      width: 100%;
      min-width: 0;
    }

    .sec_title {
      font-size: 6.4vw;
      padding-bottom: 2.5vw;
      margin-bottom: 6vw;
    }

    .joblist {
      padding: 0 3vw;
      margin: 0;
    }

    .joblist_item {
      grid-template-columns: minmax(0, 1fr);
      column-gap: 0;
      row-gap: 0;
      align-items: start;
      padding: 0 0 6vw;

      & + .joblist_item::before {
        left: -3vw;
        right: -3vw;
      }
    }

        .joblist_title {
      position: relative;
      font-size: 4.8vw;
      line-height: 1.5;
      text-align: center;
      padding: 3vw 0 3vw;
      margin-bottom: 5vw;
      border-bottom: none;

      &::after {
        content: "";
        position: absolute;
        bottom: 0;
        left: -3vw;
        right: -3vw;
        height: 1px;
        background: #98B994;
      }
    }

    .joblist_body {
      font-size: 4vw;
      line-height: 1.9;
      padding: 0 2vw;

      .cell {
        display: block;
        min-width: 0;
      }

      .text + .text { margin-top: 4vw; }

      .subhead {
        margin-top: 4vw;

        &:first-child { margin-top: 0; }
      }

      .dotlist {
        li {
          padding-left: 5vw;
          margin-bottom: 2vw;

          &::before {
            content: "•";
            color: #98B994;
          }
        }

        li:last-child { margin-bottom: 0; }
      }

      .dotlist + .subhead { margin-top: 4vw; }
    }
  }
}

/* sec09 */
.sec09 {
  position: relative;
  z-index: 0;
  padding: 60px 0 80px;

  &::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100vw;
    min-width: 1280px;
    height: 100%;
    background: #FDF1E5;
    z-index: -1;
  }

  .sec_header {
    position: relative;
    z-index: 1;
    padding-left: 75px;
    padding-top: 140px;
    padding-bottom: 50px;
  }

  .sec_title {
    font-family: var(--font-heading);
    font-size: 82px;
    font-weight: normal;
    line-height: 1.1;
    letter-spacing: 0.1em;
    color: #ED7600;
    opacity: 0.5;
    margin: 0 0 6px;
  }

  .sec_subtitle {
    font-family: var(--font-heading);
    font-size: 34px;
    font-weight: bold;
    line-height: 1.4;
    letter-spacing: 0.1em;
    margin: 0;
  }

  .entrybox {
    position: relative;
    background: #fff;
    padding: 140px 75px 80px;
    margin-top: -140px;
    box-sizing: border-box;
  }

  .form_item {
    display: grid;
    grid-template-columns: 300px 1fr;
    column-gap: 40px;
    align-items: center;
    padding: 24px 60px;
    border-radius: 10px;
    box-sizing: border-box;

    &:nth-child(odd) {
      background: #F1F7F7;
    }

    & + .form_item {
      margin-top: 20px;
    }
  }

  .form_title {
    font-size: 24px;
    font-weight: 500;
    line-height: 1.6;

    .required {
      font-size: 15px;
      font-weight: 500;
      color: #FF0000;
      margin-left: 8px;
    }
  }

  .form_body {
    font-size: 24px;
    font-weight: 500;

    input[type="text"],
    input[type="tel"],
    input[type="email"],
    textarea {
      width: 100%;
      font-family: inherit;
      font-size: 18px;
      font-weight: 500;
      line-height: 1.6;
      background: #fff;
      border: 1px solid #C9C9C9;
      border-radius: 2px;
      padding: 10px 14px;
      box-sizing: border-box;
      outline: none;

      &::placeholder {
        color: #B5B5B5;
      }

      &:focus {
        border-color: #ED7600;
      }
    }

    textarea {
      height: 180px;
      resize: vertical;
    }
  }

  .radiobox {
    display: flex;
    flex-wrap: wrap;
    gap: 16px 40px;
  }

  .radio {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;

    input {
      position: absolute;
      width: 1px;
      height: 1px;
      opacity: 0;
      pointer-events: none;
    }

    .radio_mark {
      flex-shrink: 0;
      position: relative;
      width: 20px;
      height: 20px;
      border: 1px solid #C9C9C9;
      border-radius: 50%;
      background: #fff;
      box-sizing: border-box;
    }

    input:checked + .radio_mark {
      border-color: #ED7600;

      &::before {
        content: "";
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background: #ED7600;
      }
    }

    .radio_text {
      font-size: 24px;
      font-weight: 500;
      line-height: 1.4;
    }
  }

  .privacybox {
    background: #fff;
    border: 1px solid #ED7600;
    margin: 60px auto;
    border-radius: 4px;
    box-sizing: border-box;
    max-width: 970px;
    overflow: hidden;
  }

  .privacy_head {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    width: 100%;
    padding: 24px 30px;
    box-sizing: border-box;

    .privacy_title {
      font-family: var(--font-heading);
      font-size: 22px;
      font-weight: 500;
      line-height: 1.5;
    }
  }

  .privacy_icon {
    flex-shrink: 0;
    position: relative;
    display: block;
    width: 42px;
    height: 42px;
    background: #FDF1E5;
    border: none;
    border-radius: 50%;
    padding: 0;
    cursor: pointer;
    appearance: none;

    &::before,
    &::after {
      content: "";
      position: absolute;
      top: 50%;
      left: 50%;
      background: #333;
      transform: translate(-50%, -50%);
      transition: transform 0.3s ease, opacity 0.3s ease;
    }

    /* 横棒：常に表示 */
    &::before {
      width: 14px;
      height: 1px;
    }

    /* 縦棒：閉じているときだけ表示 */
    &::after {
      width: 1px;
      height: 14px;
    }

    /* 開いているときは縦棒を消して「−」にする */
    &.is-open::after {
      transform: translate(-50%, -50%) rotate(90deg);
      opacity: 0;
    }
  }

  .privacy_body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease;
  }

  .privacy_body.is-open {
    border-top: 1px solid #ED7600;
  }

  .privacy_inner {
    position: relative;
    font-size: 16px;
    font-weight: 500;
    line-height: 1.9;
    padding: 40px 60px;
    box-sizing: border-box;

    .text {
      margin: 0 0 20px;

      &:last-child { margin-bottom: 0; }
    }

    .dotlist {
      list-style: none;
      margin: 0;
      padding: 0;

      li {
        position: relative;
        padding-left: 16px;

        &::before {
          content: "・";
          position: absolute;
          left: 0;
        }
      }
    }
  }

  .submitbox {
    text-align: center;
    margin-top: 50px;
  }

  .submit_text {
    font-size: 18px;
    font-weight: bold;
    line-height: 2;
    margin: 0 auto 35px;
    max-width: 720px;
  }

  .submit_btn {
    font-family: inherit;
    font-size: 21px;
    font-weight: bold;
    line-height: 1.4;
    letter-spacing: 0.1em;
    color: #fff;
    background: #ED7600;
    border: none;
    border-radius: 20px;
    padding: 27px 137px;
    cursor: pointer;
  }

  .contactbox {
    position: relative;
    margin-top: 100px;
  }

  .contact_title {
    position: relative;
    z-index: 2;
    font-family: var(--font-heading);
    font-size: 50px;
    font-weight: normal;
    line-height: 1.2;
    letter-spacing: 0.1em;
    color: #FF9D09;
    opacity: 0.5;
    padding-left: 245px;
    margin: 0 0 -30px;
  }

  .contact_body {
    position: relative;
    display: grid;
    grid-template-columns: 355px 1fr;
    column-gap: 40px;
    align-items: center;
    background: #fff;
    border-radius: 10px;
    padding: 70px 60px 40px 0;
    box-sizing: border-box;
    max-width: 970px;
    margin: 0 auto;
  }

  .contact_images {
    position: relative;
    height: 300px;
  }

  .contact_image {
    position: absolute;

    img {
      display: block;
      width: 100%;
      height: auto;
      border-radius: 4px;
    }
  }

  .contact_image--01 {
    top: 0px;
    left: -70px;
    width: 355px;
    z-index: 1;
  }

  .contact_image--02 {
    top: 120px;
    left: 30px;
    width: 260px;
    z-index: 2;
  }

  .contact_lead {
    font-size: 21px;
    font-weight: bold;
    line-height: 1.5;
    margin: 0 0 6px;
  }

  .contact_tel {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-family: var(--font-heading);
    font-size: 50px;
    line-height: 1.2;
    letter-spacing: 0.1em;
    text-decoration: none;
    margin-bottom: 16px;

    &::before {
      content: "";
      flex-shrink: 0;
      width: 26px;
      height: 26px;
      background: url(/images/index/tel_orange.webp) center / contain no-repeat;
    }
  }

  .contact_time {
    font-size: 18px;
    font-weight: bold;
    line-height: 1.7;
    margin: 0;
  }

  @media screen and (max-width: 768px) {
    padding: 10vw 0 12vw;

    .sec_body{
      padding: 0;
    }

    &::before {
      width: 100%;
      min-width: 0;
    }

    .sec_header {
      padding-left: 5vw;
      padding-top: 5vw;
      padding-bottom: 0;
    }

    .sec_title {
      font-size: 9vw;
      margin-bottom: 1vw;
    }

    .sec_subtitle {
      font-size: 6.4vw;
    }

    .entrybox {
      padding: 22vw 5vw 8vw;
      margin: 0 4vw;
      margin-top: -14vw;
      border-radius: 2vw;
    }

    .form_item {
      display: block;
      grid-template-columns: none;
      column-gap: 0;
      padding: 0;
      border-radius: 0;
      background: none;

      &:nth-child(odd) {
        background: none;
      }

      & + .form_item {
        margin-top: 6vw;
      }
    }

    .form_title {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 4.8vw;
      font-weight: bold;
      text-align: center;
      background: #F1F7F7;
      border-radius: 2vw;
      padding: 3.5vw 4vw;
      margin-bottom: 5vw;

      &:has(.required) {
        margin-bottom: 9vw;
      }

      .required {
        position: absolute;
        top: 100%;
        left: 0;
        font-size: 3.47vw;
        font-weight: bold;
        line-height: 1;
        margin: 2.5vw 0 0;
        background: none;
        padding: 0;
        order: 0;
      }
    }

    .form_body {
      font-size: 4vw;
      padding: 0 1vw;

      input[type="text"],
      input[type="tel"],
      input[type="email"],
      textarea {
        font-size: 4vw;
        border-color: #8A9BA8;
        border-radius: 0;
        padding: 3vw;
      }

      textarea {
        height: 60vw;
      }
    }

    .radiobox {
      flex-direction: column;
      gap: 3vw;
      padding: 0 2vw;
    }

    .radio {
      gap: 3vw;

      .radio_mark {
        width: 6.5vw;
        height: 6.5vw;
        border-color: #8A9BA8;
      }

      input:checked + .radio_mark::before {
        width: 4vw;
        height: 4vw;
      }

      .radio_text {
        font-size: 4.27vw;
      }
    }

    .privacybox {
      max-width: none;
      margin: 8vw 4vw;
      border-radius: 1vw;
    }

    .privacy_head {
      gap: 3vw;
      padding: 4vw;

      .privacy_title {
        font-size: 4.27vw;
      }
    }

    .privacy_icon {
      width: 9vw;
      height: 9vw;

      &::before {
        width: 3vw;
      }

      &::after {
        height: 3vw;
      }
    }

    .privacy_inner {
      font-size: 4vw;
      line-height: 1.9;
      padding: 6vw 5vw;

      .text {
        margin-bottom: 5vw;
      }

      .dotlist {
        li {
          padding-left: 5vw;

          &::before {
            content: "•";
          }
        }
      }
    }

    .submitbox {
      margin-top: 10vw;
      padding: 0 4vw;
    }

    .submit_text {
      max-width: 100%;
      font-size: 4vw;
      line-height: 1.9;
      text-align: left;
      margin-bottom: 8vw;
    }

    .submit_btn {
      width: 80%;
      font-size: 5vw;
      border-radius: 3vw;
      padding: 4.5vw 0;
    }

    .contactbox {
      margin-top: 12vw;
    }

    .contact_title {
      font-size: 9vw;
      padding-left: 10vw;
      margin-bottom: -3vw;
    }

    .contact_body {
      grid-template-columns: minmax(0, 1fr);
      column-gap: 0;
      row-gap: 5vw;
      max-width: none;
      padding: 0 0 8vw;
      margin: 0 4vw;
      border-radius: 2vw;
    }

    .contact_images {
      height: 42vw;
    }

    .contact_image--01 {
      top: 4vw;
      left: 36vw;
      right: auto;
      width: 58vw;
      z-index: 1;
    }

    .contact_image--02 {
      top: 10vw;
      left: -5vw;
      width: 34vw;
      z-index: 0;
      border-radius: 0;
    }

    .contact_text {
      text-align: center;
      padding: 0 5vw;
    }

    .contact_lead {
      font-size: 4.27vw;
      margin-bottom: 1vw;
    }

    .contact_tel {
      gap: 2vw;
      font-size: 8vw;
      margin-bottom: 4vw;

      &::before {
        width: 5vw;
        height: 5vw;
      }
    }

    .contact_time {
      font-size: 4vw;
      line-height: 1.8;
      text-align: left;
    }
  }
}

.footer {
  background: #fff;
  padding-top: 60px;

  .footer_inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 60px;
    align-items: start;
    width: 1280px;
    min-width: 1280px;
    padding: 0 80px 60px;
    margin: 0 auto;
    box-sizing: border-box;
  }

  .footer_left {
    text-align: center;
  }

  .footer_logo {
    font-family: var(--font-heading);
    font-size: 54px;
    font-weight: 600;
    letter-spacing: 0.15em;
    margin: 0 auto 12px;
    text-align: center;
    line-height: 1;
  }

  .footer_address {
    font-size: 20px;
    font-weight: 500;
    letter-spacing: 0.1em;
    margin: 0 0 20px;
    text-align: center;
  }

  .footer_telbox {
    display: block;
    width: fit-content;
    border: 1px solid #ED7600;
    border-radius: 20px;
    padding: 5px 50px;
    margin: 0 auto 60px;
    text-align: center;
    text-decoration: none;
    color: inherit;
  }

  .footer_tel_lead {
    display: block;
    font-size: 18px;
    font-weight: bold;
    letter-spacing: 0.1em;
    margin: 0 0 4px;
  }

  .footer_tel {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-heading);
    font-size: 38px;
    line-height: 1.2;
    letter-spacing: 0.1em;
    white-space: nowrap;

    &::before {
      content: "";
      flex-shrink: 0;
      width: 20px;
      height: 20px;
      background: url(/images/index/tel_orange.webp) center / contain no-repeat;
    }
  }

  .footer_timetable {
    max-width: 580px;
    margin: 0 auto;

    img {
      width: 100%;
      height: auto;
    }
  }

  .footer_map {
    max-width: 620px;
    margin: 0 auto 40px;

    iframe {
      width: 100%;
      height: 380px;
      border: 0;
      vertical-align: bottom;
    }
  }

  .footer_official {
    display: block;
    max-width: 541px;
    margin: 0 auto;

    img {
      width: 100%;
      height: auto;
      vertical-align: bottom;
    }
  }

    .footer_copy {
    min-width: 1280px;
    background: #ED7600;
    color: #fff;
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-align: center;
    padding: 12px 0;
    margin: 0;
  }

  .white_banner{
    margin: 0 auto 40px;
    text-align: center;
    width: 1280px;
  }

  @media screen and (max-width: 768px) {
    padding-top: 8vw;

    .footer_inner {
      grid-template-columns: minmax(0, 1fr);
      column-gap: 0;
      row-gap: 0;
      width: 100%;
      min-width: 0;
      max-width: 100%;
      padding: 0 0 0;
    }

    .footer_left {
      padding: 0 5vw;
    }

    .footer_logo {
      font-size: 9vw;
      margin-bottom: 3vw;
    }

    .footer_address {
      font-size: 4.8vw;
      margin-bottom: 5vw;
    }

    .footer_telbox {
      width: 88%;
      border-radius: 3vw;
      padding: 4vw;
      margin-bottom: 6vw;
      box-sizing: border-box;
    }

    .footer_tel_lead {
      font-size: 4vw;
      margin-bottom: 1vw;
    }

    .footer_tel {
      gap: 2vw;
      font-size: 7.5vw;

      &::before {
        width: 5vw;
        height: 5vw;
      }
    }

    .footer_timetable {
      max-width: 100%;
      margin-bottom: 8vw;
    }

    .footer_map {
      max-width: 100%;
      margin-bottom: 6vw;

      iframe {
        height: 69vw;
      }
    }

    .footer_official {
      max-width: 100%;
      padding: 0 5vw;
      box-sizing: border-box;
      margin-bottom: 10vw;
    }

    .footer_copy {
      min-width: 0;
      font-size: 4vw;
      padding: 3vw 0;
    }

    .white_banner{
      margin: 0 auto 10vw;
      width: 90%;
    }
  }
}


.g-center{
  text-align: center;
  margin: 0 auto 50px;
  .g-recaptcha{
    margin: 0 auto;
    display: table;
    @media screen and (max-width: 768px){
      margin: 0 auto 5vw;
    }
  }
}


/* 送信完了ページ */

.thanks_sec{
  padding: 300px 0 100px;
  .sec_title{
    font-size: 35px;
    text-align: center;
    margin-bottom: 100px;
  }
  .sec_text{
    font-size: 20px;
    line-height: 3;
    text-align: center;
    margin-bottom: 100px;
  }
  .to_top{
    font-size: 21px;
    text-align: center;
  }
  @media screen and (max-width: 768px) {
    padding: 30vw 0 10vw;
    .sec_title{
      font-size: 8vw;
      margin-bottom: 10vw;
    }
    .sec_text{
      font-size: 4vw;
      margin-bottom: 10vw;
    }
    .to_top{
      font-size: 4vw;
    }
  }
}