/* ##############################################################################

    DEFAULT

############################################################################## */
  html {
    font-size: max(9px, min(0.8333333333vw, 1rem));
    height: 100%;
    overflow-y: scroll;
    overflow-x: hidden;
  }
  @media screen and (min-width: 768px) and (max-width: 1080px) {
    html {
      overflow-y: auto;
      overflow-x: auto;
    }
  }
  @media screen and (max-width: 767px) {
    html {
      font-size: min(3.3816425121vw, .875rem);
    }
  }
  body {
    position: relative;
    font-family: "Poppins","Aoto Gothic Medium", YuGothic, 'Yu Gothic', 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic ProN', sans-serif;
    color: var(--txt-primary);
    background-color: var(--bg-03);
    font-weight: 500;
    font-feature-settings: "palt";
    line-height: 1.7;
    word-break: break-word;
    padding-top: 7rem;
  }
  *,
  *:after,
  *::before {
    letter-spacing: .05em;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
  }
  ul,
  ol { list-style: none; }
  small,.txt-sm { font-size: 86%; line-height: 1.5; }
  .txt-lg, .txt-lg-pc { font-size: 115%; }
  a {
    color: var(--txt-primary);
    text-decoration: none;
    transition: all .4s ease-out;
    outline : none;
  }
  a:hover {
    opacity: 1;
    text-decoration: none;
    color: var(--primary-default);
  }
  img,
  svg {
    max-width: 100%;
    height: auto;
    vertical-align: middle;
    transition: all .4s ease-out;
  }
  iframe {
    width: 100%;
    height: auto;
    aspect-ratio: 16/9;
    vertical-align: bottom;
  }
  address { font-style: normal; }

  @media screen and (min-width: 768px) {
    a { 
      -webkit-tap-highlight-color:rgba(0, 0, 0, 0); 
    }

    @-moz-document url-prefix() {
      * { font-feature-settings: "palt"; }
    }
    @media screen and (-webkit-min-device-pixel-ratio:0) {
      * { font-feature-settings: "palt"; }
    }
  }
  @media print, screen and (min-width: 768px) {
    body {
      font-size: max(14.1666666667px, min(0.8333333333vw, 1rem));
    }
  }
  @media screen and (max-width: 1080px) {
    body {
      padding-top: 4.5rem;
      -webkit-text-size-adjust: none;
      word-break: break-all;
    }
    .txt-lg-pc { font-size: 1rem; }
  }


/* ##############################################################################

    COMMON

############################################################################## */

/* layout
**************************************** */

  /* --- inner --- */
  .inner {
    width: 90%;
    max-width: 100rem; /* 1600px */
    margin: 0 auto;
  }
  .inner-sm {
    max-width: 50rem;
  }
  .inner-md {
    max-width: 80rem;
  }
  .inner-lg {
    max-width: 105rem; /* 1680px */
  }

  /* --- section_pdg --- */
  .section_pdg,
  .section_pdg-top,
  .section_pdg-btm {
    font-size: 1rem;
  }
  .section_pdg {
    padding-top: 5.5rem;
    padding-bottom: 5.5rem;
  }
  .section_pdg-top {
    padding-top: 6.5rem;
  }
  .section_pdg-top-sm {
    padding-top: 3rem;
  }
  .section_pdg-btm {
    padding-bottom: 6.5rem;
  }

  /* --- float --- */
  .flt-rgt { float: right; }
  .flt-lft { float: left; }

  /* --- position --- */
  .pos_rel {
    position: relative;
    z-index: 1;
  }
  .pos_ab {
    position: absolute;
    z-index: 0;
  }

  /* --- margin --- */
  .mgn-btm0 { margin-bottom: 0; }
  .mgn-btm4 { margin-bottom: .25rem; }
  .mgn-btm8 { margin-bottom: .5rem; }
  .mgn-btm12 { margin-bottom: .75rem; }
  .mgn-btm16 { margin-bottom: 1rem; }
  .mgn-btm24 { margin-bottom: 1.5rem; }
  .mgn-btm32 { margin-bottom: 2rem; }
  .mgn-btm40 { margin-bottom: 2.5rem; }
  .mgn-btm48 { margin-bottom: 3rem; }
  .mgn-btm56 { margin-bottom: 3.5rem; }
  .mgn-btm64 { margin-bottom: 4rem; }
  .mgn-btm72 { margin-bottom: 4.5rem; }
  .mgn-btm80 { margin-bottom: 5rem; }
  .mgn-btm120 { margin-bottom: 7.5rem; }
  .mgn-btm160 { margin-bottom: 10rem; }
  .mgn-auto { width: fit-content; margin-left: auto; margin-right: auto; }

  /* --- pc or sp --- */
  .pc-none,
  .pc-none-inline,
  .pc-none-table,
  .pc-none-flex { display: none; }
  .sp-none { display: block; }
  .sp-none-inline { display: inline; }
  .sp-none-table { display: table; }
  .sp-none-flex {
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }

  @media screen and (max-width: 1650px) and (min-width: 768px) {
    .section_pdg,
    .section_pdg-top,
    .section_pdg-btm {
      font-size: 1.125rem; /* 18px */
    }
  }
  @media screen and  (max-width: 767px) {
    .inner-sm { width: 86%; }

    /* --- section_pdg --- */
    .section_pdg {
      padding-top: 3rem;
      padding-bottom: 3rem;
    }
    .section_pdg-top {
      padding-top: 3.5rem;
    }
    .section_pdg-btm {
      padding-bottom: 3.5rem;
    }
    .section_pdg-top-sm {
      padding-top: 1.5rem;
    }
    .section_deco::before {
      top: -3rem;
    }
    .section_deco2::before {
      top: -2rem;
    }

    /* --- margin --- */
    .mgn-btm12 { margin-bottom: .75rem; }
    .mgn-btm16 { margin-bottom: .75rem; }
    .mgn-btm24 { margin-bottom: 1rem; }
    .mgn-btm32 { margin-bottom: 1.5rem; }
    .mgn-btm40 { margin-bottom: 1.75rem; }
    .mgn-btm48 { margin-bottom: 2rem; }
    .mgn-btm56 { margin-bottom: 2rem; }
    .mgn-btm64 { margin-bottom: 2rem; }
    .mgn-btm72 { margin-bottom: 2.5rem; }
    .mgn-btm80 { margin-bottom: 2.5rem; }
    .mgn-btm120 { margin-bottom: 4rem; }
    .mgn-btm160 { margin-bottom: 5rem; }
    .sp-none,
    .sp-none-inline,
    .sp-none-table,
    .sp-none-flex { display: none !important; }
    .pc-none { display: block; }
    .pc-none-inline { display: inline; }
    .pc-none-table { display: table; }
    .pc-none-flex {
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
    }
  }

/* flex
**************************************** */
  
  /* --- ブロック要素 --- */
  .flex {
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
  }
  .flex-pc-none {
    display: none;
  }

  /* --- インライン要素 --- */
  .flex-inline {
    display: -webkit-inline-flex;
    display: -ms-inline-flexbox;
    display: inline-flex;
  }

  /* --- 逆向き --- */
  .flex-reverse {
    -webkit-flex-direction: row-reverse;
    -ms-flex-direction: row-reverse;
    flex-direction: row-reverse;
  }
  
  /* --- 縦並び --- */
  .flex-column {
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
  }

  /* --- 水平方向揃え --- */
  .flex-j-start {
    -webkit-justify-content: flex-start;
    -ms-flex-pack: start;
    justify-content: flex-start;
  }
  .flex-j-end {
    -webkit-justify-content: flex-end;
    -ms-flex-pack: end;
    justify-content: flex-end;
  }
  .flex-j-ctr {
    -webkit-justify-content: center;
    -ms-flex-pack: center;
    justify-content: center;
  }
  .flex-j-between {
    -webkit-justify-content: space-between;
    -ms-flex-pack: justify;
    justify-content: space-between;
  }
  .flex-j-around {
    -webkit-justify-content: space-around;
    -ms-flex-pack: distribute;
    justify-content: space-around;
  }

  /* --- 垂直方向揃え --- */
  .flex-a-start {
    -webkit-align-items: flex-start;
    -ms-flex-align: start;
    align-items: flex-start;
  }
  .flex-a-end {
    -webkit-align-items: flex-end;
    -ms-flex-align: end;
    align-items: flex-end;
  }
  .flex-a-ctr {
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
  }
  .flex-a-baseline {
    -webkit-align-items: baseline;
    -ms-flex-align: baseline;
    align-items: baseline;
  }
  .flex-a-stretch {
    -webkit-align-items: stretch;
    -ms-flex-align: stretch;
    align-items: stretch;
  }

  /* --- 子要素の折り返し設定 --- */
  .flex-c-nowrap {
    -webkit-flex-wrap: nowrap;
    -ms-flex-wrap: nowrap;
    flex-wrap: nowrap;
  }
  .flex-c-wrap {
    -webkit-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
  }

  /* --- 子要素の複数行設定 --- */
  .flex-c-reverse {
    -webkit-flex-wrap: wrap-reverse;
    -ms-flex-wrap: wrap-reverse;
    flex-wrap: wrap-reverse;
  }
  .flex-c-start {
    -webkit-align-content: flex-start;
    -ms-flex-line-pack: start;
    align-content: flex-start;
  }
  .flex-c-start {
    -webkit-align-items: flex-start;
    -ms-flex-line-pack: start;
    align-content: flex-start;
  }
  .flex-c-end {
    -webkit-align-content: flex-end;
    -ms-flex-line-pack: end;
    align-content: flex-end;
  }
  .flex-c-ctr {
    -webkit-align-content: center;
    -ms-flex-line-pack: center;
    align-content: center;
  }
  .flex-c-baseline {
    -webkit-align-content: baseline;
    -ms-flex-line-pack: baseline;
    align-content: baseline;
  }
  .flex-c-stretch {
    -webkit-align-content: stretch;
    -ms-flex-line-pack: stretch;
    align-content: stretch;
  }
  
  /* --- gridレイアウト --- */
  .grid-col2,
  .grid-col3,
  .grid-col4 {
    display: grid;
    gap: 4rem 2rem;
    grid-auto-flow: row;
  }
  .grid-col2 {
    grid-template-columns: repeat(2, 1fr);
  }
  .grid-col3 {
    grid-template-columns: repeat(3, 1fr);
  }
  .grid-col4 {
    grid-template-columns: repeat(4, 1fr);
  }
  
  /* --- gap --- */
  .gap16 { gap: 1rem; }
  .gap24 { gap: 1.5rem; }
  .gap32 { gap: 2rem; }

  @media screen and (max-width: 768px) {

    .flex-pc-none {
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
    }

    /* --- 縦並び - sp --- */
    .flex-sp-block {
      -webkit-flex-direction: column;
      -ms-flex-direction: column;
      flex-direction: column;
    }
    .flex-sp-block.flex-col2 > *,
    .flex-sp-block.flex-col2-lg > *,
    .flex-sp-block.flex-col3 > *,
    .flex-sp-block.flex-col3-lg > * {
      width: 100%;
      margin-right: 0;
      margin-bottom: 10%;
    }
    .flex-sp-block.flex-col2 > *:last-child,
    .flex-sp-block.flex-col2-lg > *:last-child,
    .flex-sp-block.flex-col3 > *:last-child,
    .flex-sp-block.flex-col3-lg > *:last-child {
      margin-bottom: 0;
    }

    /* --- 並び順変更 - sp --- */
    .flex-sp-reverse {
      -webkit-flex-direction: column-reverse;
      -ms-flex-direction: column-reverse;
      flex-direction: column-reverse;
    }

    /* --- ざっくりflexレイアウト - sp --- */
    .flex-sp-col2 > *,
    .flex-sp-col2.flex-col3 > *:nth-child(3n+3),
    .flex-sp-col2.flex-col3-lg > *:nth-child(3n+3) {
      width: 48.5%;
      margin-right: 3%;
      margin-bottom: 3%;
    }
    .flex-sp-col2 > *:nth-child(even) { margin-right: 0; }
    .flex-sp-col3 > *,
    .flex-sp-col3.flex-col4 > *:nth-child(4n+4) {
      width: 31.33%;
      margin-right: 3%;
      margin-bottom: 3%;
    }
    .flex-sp-col3 > *:nth-child(3n+3) { margin-right: 0; }

    /* --- gridレイアウト --- */
    .grid-sp-block.grid-col2 {
      grid-template-columns: repeat(1, 1fr);
    }
    .grid-sp-block.grid-col3,
    .grid-sp-block.grid-col4 {
      gap: 1rem;
      grid-template-columns: repeat(1, 1fr);
    }
  }

/* ttl
**************************************** */
  /* --- page_ttl --- */
  .page_ttl {
    position: relative;
    margin-bottom: 1rem;
    font-size: 3.5rem; /* 56px */
    letter-spacing: .08em;
    line-height: 1.5;
    .en {
      display: block;
      font-size: 1.25rem; /* 20px */
      color: var(--primary-default);
      text-transform: uppercase;
    }
  }

  /* --- breadcrumbs --- */
  .breadcrumbs {
    margin-bottom: 1rem;
    font-size: 1em;
    color: var(--txt-secondary);
    a {
      color: var(--txt-secondary);
      text-decoration: underline;
      &::after {
        content: "";
        display: inline-block;
        width: .45em;
        aspect-ratio: 1 / 1;
        margin: 0 .75em;
        border-top: solid 1px;
        border-right: solid 1px;
        transform: translateY(-.1em) rotate(45deg);
        transition: all .4s ease-out;
      }
      &:hover {
        opacity: .7;
      }
    }
  }

  /* --- ttl-01 --- */
  .ttl-01 {
    font-size: 3.5rem;
    text-align: center;
    letter-spacing: .08em;
    &:not([class*=mgn-btm]) {
      margin-bottom: 2.5rem;
    }
    &::after {
      content: "";
      display: block;
      width: 2.5rem;
      aspect-ratio: 40 / 3;
      margin-top: 1.5rem;
      margin-left: auto;
      margin-right: auto;
      background-color: var(--primary-default);
    }
  }
  .home .ttl-01 {
    font-size: 4rem; /* 64px */
  }
  .ttl-01.txt-lft {
    text-align: left;
    &::after {
      margin-left: 0;
    }
  }
  .ttl-01 .bg,
  .hero .cacth {
    position: relative;
    display: block;
    width: fit-content;
    padding: .6em .9em;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 1.5rem;
    font-size: 1.125rem; /* 18px */
    line-height: 1;
    background-color: #fff;
    color: var(--primary-default);
    border-radius: .25rem;
    &::before {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      bottom: 0;
      margin: auto;
      width: .875rem; /* 14px */
      height:fit-content;
      aspect-ratio: 1 / 1;
      background-color: #fff;
      transform: translateY(50%) rotate(45deg);
    }
  }
  .bg-05 .ttl-01 .bg,
  .bg-05 .ttl-01 .bg::before {
    background-color: var(--bg-01);
  }

  /* --- ttl-02 / ttl-03 --- */
  .ttl-02,
  .ttl-03 {
    align-items: center;
    justify-content: center;
    font-size: 2.5rem; /* 40px */
    line-height: 1.6;
    letter-spacing: .08em;
    text-align: center;
    &:not([class*=mgn-btm]) {
      margin-bottom: 2.5rem;
    }
    .txt-sm {
      font-size: 80%;
    }
    .line {
      display: flex;
      align-items: flex-end;
      justify-content: center;
      margin: 0 1rem;
      &:last-child {
        transform: scale(-1, 1);
      }
      &::before,
      &::after {
        content: "";
        display: inline-block;
        width: .1875rem;
        margin: 0 .25rem;
        background-color: var(--primary-default);
      }
      &::before {
        aspect-ratio: 3 / 32;
        transform: rotate(-15deg);
      }
      &::after {
        aspect-ratio: 3 / 40;
        transform: rotate(-10deg);
      }
    }
  }
  .ttl-03 {
    font-size: 2rem; /* 32px */
    letter-spacing: .04em;
    .line {
      margin: 0 .75rem;
      &::before,
      &::after {
        background-color: var(--sub-04);
      }
    }
  }

  /* --- ttl-04 --- */
  .ttl-04 {
    font-size: 2rem; /* 32px */
    line-height: 1.5;
    &:not([class*=mgn-btm]) {
      margin-bottom: 1rem;
    }
    .txt-sm {
      padding: 0 .125em;
      font-size: 75%;
    }
    .icn {
      display: inline-block;
      padding: 0 .75rem;
      margin-right: .5rem;
      border-radius: .5rem;
      color: #fff;
      font-size: 75%;
      transform: translateY(-.25rem);
    }
  }

  @media screen and (max-width: 767px) {
    /* --- page_ttl --- */
    .page_ttl {
      font-size: 2rem;
      .en {
        font-size: .857rem; /* 12px */
      }
    }
  
    /* --- breadcrumbs --- */
    .breadcrumbs {
      margin-bottom: .75rem;
      font-size: .786rem; /* 11px */
      a {
        &::after {
          margin: 0 .5em;
        }
      }
    }

    /* --- ttl-01 --- */
    .ttl-01 {
      font-size: 2.2857rem; /* 32px */
      line-height: 1.5;
      &::after {
        width: 2.2857rem;
        aspect-ratio: 32 / 3;
        margin-top: 1rem;
      }
    }
    .home .ttl-01 {
      font-size: 2.2857rem; /* 32px */
    }
    .ttl-01 .bg,
    .hero .cacth {
      margin-bottom: 1rem;
      font-size: .929rem; /* 13px */
    }
  
  /* --- ttl-02 / ttl-03 --- */
    .ttl-02,
    .ttl-03 {
      font-size: 1.5rem;
      line-height: 1.5;
      align-items: flex-end;
      white-space: nowrap;
      .line {
        margin: 0 .75rem;
        &::before,
        &::after {
          width: .15rem;
          margin: 0 .125rem;
        }
        &::before {
          aspect-ratio: 2 / 32;
        }
        &::after {
          aspect-ratio: 2 / 40;
          transform: rotate(-12deg);
        }
      }
    }
    .ttl-03 {
      font-size: 1.25rem;
      .line {
        &::before {
          aspect-ratio: 2 / 16;
        }
        &::after {
          aspect-ratio: 2 / 24;
        }
      }
    }
  
    /* --- ttl-04 --- */
    .ttl-04 {
      font-size: 1.5rem;
      &:not([class*=mgn-btm]) {
        margin-bottom: .75rem;
      }
    }
  }

/* .color
*************************************************** */
  :root {
    --primary-default: #007357;
    --primary-dark: #1D5548;
    --primary-light: #009E65;

    --secondary-default: #00B2C2;
    --secondary-dark: #006D85;
    --secondary-light: #67D5DD;

    --bg-01: #EDF7DD;
    --bg-02: #ABE2E9;
    --bg-03: #F3F2E9;
    --bg-04: #FBD600;
    --bg-05: #fff;

    --sub-01: #00958F;
    --sub-02: #A8D248;
    --sub-03: #FBD600;
    --sub-04: #C24D0D;
    --sub-05: #CB465C;
    --sub-06: #913C85;

    --area-01: #F3BEBD;
    --area-02: #FCD7A2;
    --area-03: #D8E6AF;
    --area-04: #9FD9C2;
    --area-05: #8AC8E6;
    --area-06: #F6DFE0;
    --area-07: #FDEBD2;
    --area-08: #DCF3C5;
    --area-09: #D4EADC;
    --area-10: #D4ECF2;

    --txt-primary: #181818;
    --txt-secondary: #404134;
    --txt-placeholder: #DDDACD;
    --txt-light: #fff;
  }

/* bg
**************************************** */
  .bg-01 { background-color: var(--bg-01) !important; }
  .bg-02 { background-color: var(--bg-02) !important; }
  .bg-03 { background-color: var(--bg-03) !important; }
  .bg-04 { background-color: var(--bg-04) !important; }
  .bg-05 { background-color: var(--bg-05) !important; }
  .bg-wh { background-color: #fff; }
  .bg-gr { background-color: var(--primary-default); }
  .bg-or { background-color: var(--sub-04); }
  .bg-rd { background-color: var(--sub-05); }

  .bg-gifu,
  .list-gifu li:before { background-color: var(--area-07) !important; }
  .bg-seino,
  .list-seino li:before  { background-color: var(--area-06) !important; }
  .bg-chuno,
  .list-chuno li:before  { background-color: var(--area-08) !important; }
  .bg-tono,
  .list-tono li:before  { background-color: var(--area-09) !important; }
  .bg-hida,
  .list-hida li:before  { background-color: var(--area-10) !important; }

  .bg-02-img,
  .bg-03-img,
  .bg-04-img,
  .bg-02-round,
  .bg-04-round,
  .bg-05-round,
  .bg-03-deco,
  .bg-04-deco,
  .bg-05-deco { position: relative; }
  .bg-05-deco { z-index: 10; }
  .bg-02-img { background: linear-gradient(to bottom, var(--bg-02) 45rem, #7BD5E1 45.1rem); }
  .bg-03-img { background: var(--bg-03); }
  .bg-04-img { background: linear-gradient(to bottom, var(--bg-04) 45rem, #FEC228 45.1rem); }
  .bg-02-img::before,
  .bg-03-img::before,
  .bg-04-img::before { 
    content: "";
    position: absolute;
    inset: 0;
    background-repeat: no-repeat;
    background-size: 100% auto;
  }
  .bg-02-img::before { 
    background-position: top 12.5rem center;
    background-image: url(../images/common/bg-02.png);
  }
  .bg-03-img::before { 
    background-position: top 13rem center;
    background-image: url(../images/common/bg-03.png);
  }
  .bg-04-img::before { 
    background-position: top 5rem center;
    background-image: url(../images/common/bg-04.png);
  }

  .bg-02-round::after,
  .bg-04-round::after,
  .bg-05-round::after,
  .bg-04-deco::after,
  .bg-05-deco::before,
  .bg-05-deco::after { 
    content: "";
    position: absolute;
    top: 1px;
    right: 0;
    left: 0;
    background-position: center;
    background-repeat: no-repeat;
    background-size: auto 100%;
    transform: translateY(-100%);
  }
  .bg-02-round,
  .bg-04-round,
  .bg-05-round { 
    margin-top: 10rem;
    &::after { 
      height: 10rem;
    }
  }
  .bg-02-round::after { 
    background-image: url(../images/common/bg-02-round.png);
  }
  .bg-04-round::after { 
    background-image: url(../images/common/bg-04-round.png);
  }
  .bg-05-round::after { 
    background-image: url(../images/common/bg-05-round.png);
  }
  .bg-04-deco::after { 
    height: 1.5rem;
    background-image: url(../images/common/bg-04-deco.png);
  }
  .bg-05-deco::before { 
    height: 1.5rem;
    background-image: url(../images/common/bg-05-deco.png);
  }
  .bg-05-deco::after { 
    top: auto;
    bottom: 1px;
    height: 1.5rem;
    transform: translateY(100%) rotate(180deg);
    background-image: url(../images/common/bg-05-deco.png);
  }
  
  @media screen and (min-width: 1920px) {
    .bg-02-round::after,
    .bg-04-round::after,
    .bg-05-round::after,
    .bg-04-deco::after,
    .bg-05-deco::before,
    .bg-05-deco::after { 
      background-size: cover;
    }
    .bg-02-round::after,
    .bg-04-round::after,
    .bg-05-round::after {
      background-position: top center;
    }
  }
  @media screen and (max-width: 767px) {
    .bg-02-img { background: linear-gradient(to bottom, var(--bg-02) 40rem, #7BD5E1 40.1rem); }
    .bg-03-img { background: var(--bg-03); }
    .bg-04-img { background: linear-gradient(to bottom, var(--bg-04) 40rem, #FEC228 40.1rem); }
    .bg-02-img::before,
    .bg-03-img::before,
    .bg-04-img::before { 
      background-size: 200% auto;
    }

    .bg-02-round,
    .bg-04-round,
    .bg-05-round { 
      margin-top: calc(10rem / 2);
      &::after { 
        height: calc(10rem / 2);
      }
    }
    .bg-04-deco::after,
    .bg-05-deco::before,
    .bg-05-deco::after { 
      height: calc(1.5rem / 2);
    }
  }

/* txt
**************************************** */
  .txt-wh { color: #fff; }
  .txt-gr { color: var(--primary-default); }
  .txt-or { color: var(--sub-04); }
  .txt-rd { color: var(--sub-05); }
  .txt-ctr,
  .txt-ctr-pc  { text-align: center; }
  .txt-rgt  { text-align: right; }
  .txt-lft  { text-align: left !important; }
  .txt-attention {
    display: block;
    margin-top: .5em;
    padding-left: 1em;
    text-indent: -1em;
    line-height: 1.8;
    font-size: .875rem; /* 14px */
    font-weight: 500;
  }

  @media screen and (max-width: 767px) {
    .txt-ctr-pc  { text-align: left; }
  }

/* font
**************************************** */
  .bold,
  strong,
  .page_ttl,
  .ttl-01,
  .ttl-02,
  .ttl-03,
  .txt-link,
  h1,h2,h3,h4,h5,h6 {
    font-family: "Poppins","Aoto Gothic Bold", YuGothic, 'Yu Gothic', 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic ProN', sans-serif;
    font-weight: 700;
  }
  .font-en {
    font-family: "Poppins", sans-serif;
    font-weight: 600;
    font-style: normal;
  }

/* btn
********************************************** */
  /* --- btn-01 --- */
  .btn-01 > * {
    position: relative;
    z-index: 1;
    display: flex;
    justify-content: center;
    align-items: center;
    width: fit-content;
    min-width: 27rem; /* 440px */
    margin-left: auto;
    margin-right: auto;
    padding: 1.4rem 5rem;
    background-color: var(--primary-default);
    color: #fff !important;
    box-shadow: 0 .375rem 0 0 rgba(0, 0, 0, 0.10);
    border-radius: 999px;
    border: none;
    transition: all .3s ease-out;
    font-size: 1.5rem; /* 24px */
    line-height: 1.5;
    text-align: center;
    cursor: pointer;

    &::before {
      content: "";
      position: absolute;
      right: 1.5rem;
      margin: auto;
      display: block;
      aspect-ratio: 1 / 1;
      width: 2.5rem;
      height:fit-content;
      background-image: url(../images/common/btn_arrow-wh.svg);
      background-size: contain;
      background-repeat: no-repeat;
      transition: all .3s ease-out;
    }
  }
  .btn-01 > a[href^="#"]::before {
    transform: rotate(90deg);
  }
  .btn-01 > *:not([disabled="disabled"]):hover,
  a:hover .btn-01 span {
    transform: translateY(.2rem);
    box-shadow: 0 .175rem 0 0 rgba(0, 0, 0, 0.10);
  }
  .btn-01 > *:hover::before,
  a:hover .btn-01 span::before {
    right: 1.25rem;
  }
  .btn-01 > button[disabled="disabled"] {
    background-color: #9599A3 !important;
    cursor: default;
    &::before {
      display: none;
    }
  }
  
  .btn-01-or > * {
    background-color: var(--sub-04);
    border-radius: .5rem;

    &::before {
      background-image: url(../images/common/btn_arrow-wh-or.svg);
    }
  }

  /* --- btn-02 --- */
  .btn-02 > * {
    position: relative;
    z-index: 1;
    display: flex;
    justify-content: center;
    align-items: center;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
    color: #9599A3 !important;
    border: none;
    transition: all .3s ease-out;
    font-size: 1.125rem; /* 18px */
    letter-spacing: .05em;
    cursor: pointer;
    background-color: transparent;

    &::after {
      content: "";
      display: block;
      aspect-ratio: 1 / 1;
      width: 2rem;
      margin-left: 1rem;
      background-image: url(../images/common/btn_arrow-gy.svg);
      background-size: contain;
      background-repeat: no-repeat;
      transition: all .3s ease-out;
    }
  }
  .btn-02 > button[disabled="disabled"]{
    cursor: default; 
    &::after {
      display: none;
    }
  }
  .btn-02 > a[href^="#"]::after {
    transform: rotate(135deg);
  }
  .btn-02 > *:hover::after,
  a:hover .btn-02 span::after {
    transform: translateX(.25rem);
  }

  /* --- btn-03 --- */
  .btn-03 {
    display: flex;
    align-items: flex-start;
  }
  .btn-03 > * {
    position: relative;
    z-index: 1;
    width: fit-content;
    padding: .35em .75em;
    border-radius: .15em;
    background-color: var(--primary-default);
    color: #fff !important;
    font-size: 12px;
    letter-spacing: .05em;
    line-height: 1;
    transition: all .3s ease-out;
    cursor: pointer;
    &:hover {
      background-color: var(--primary-dark);
    }
  }

  .btn-lft a {
    margin-left: 0;
    text-align: left;
  }
  .btn-more {
    color: #9599A3;
    text-decoration: underline;
    cursor: pointer;
  }
  .btn_list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
  }

  @media screen and (max-width: 767px) {
    /* --- btn --- */
    .btn-01 > * {
      width: 90%;
      min-width: 0;
      padding: 1.125rem 3rem;
      box-shadow: 0 .2rem 0 0 rgba(0, 0, 0, 0.10);
      font-size: 1.25rem;
    }
    .btn-01 > *::before {
      width: 2rem;
    }

    /* --- btn-02 --- */
    .btn-02 > * {
      font-size: 1rem;
    }
    .btn-02 > *::after {
      width: 1.75rem;
      margin-left: .75rem;
    }
  }

/* img
********************************************** */
  .img-cover {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  .img-contain {
    object-fit: contain;
  }

  .deco-01 {
    position: absolute;
    max-width: 10.9375rem;
  }
  .deco-02 {
    position: absolute;
    max-width: 3.9375rem;
  }
  @media screen and (max-width: 767px) {
    .deco-01 {
      max-width: calc(10.9375rem / 2);
    }
    .deco-02 {
      max-width: calc(3.9375rem / 2);
    }
  }


/* ##############################################################################

    HEADER

############################################################################## */
  .header,
  .fixed_cta {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    height: 7rem;
    padding: 0 2.5rem;
    background-color: #fff;
    z-index: 10000;
  }
  #page_product_detail .header {
    position: absolute;
  }
  @media screen and (max-width: 767px) {
    .header,
    .fixed_cta {
      height: 4.5rem;
      padding: 0 1rem;
    }
  }

/* header--logo
**************************************** */
  .header--logo {
    width: 16.8125rem;
  }
  @media screen and (max-width: 767px) {
    .header--logo {
      width: 13rem;
    }
  }

/* header--nav
**************************************** */
  /* --- gnav--menu --- */
  .gnav--menu {
    gap: 2.5rem;
  }
  .gnav--link {
    display: flex;
    align-items: center;
    font-size: 1.5rem; /* 24px */
    line-height: 1;
    color: var(--txt-secondary);

    .icn {
      width: auto;
      height: auto;
      max-width: 2.5rem;
      max-height: 2.5rem;
      margin-right: .75rem;
    }
  }
  .gnav--menu .has_child {
    position: relative;

    &:hover .child {
      opacity: 1;
      pointer-events: auto;
      transition: all .4s ease-out;
    }
  }
  .gnav--menu .child {
    li {
      position: relative;
      z-index: 10;
      font-size: 1.125rem; /* 18px */
      &:not(:last-child) {
        margin-bottom: 1rem;
      }
    }
    
    a:not(:hover) {
      color: var(--txt-secondary);
    }
  }

  /* --- gnav_cta --- */
  .gnav_cta .flex {
    gap: .5rem;
  }
  .gnav--login a,
  .gnav--entry a {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    width: fit-content;
    padding: .3rem 1.25rem;
    font-size: 1.125rem; /* 18px */
    border-radius: 999px;
    border: 2px solid var(--sub-04);

    &:hover {
      opacity: .8;
    }
    
    .icn {
      margin-right: .5rem;
    }
  }
  .gnav--login a {
    color: var(--sub-04);
    background-color: #FFF;
    .icn {
      max-width: 1.125rem;
    }
  }
  .gnav--entry a {
    color: #FFF;
    background-color: var(--sub-04);
    .icn {
      max-width: 1.375rem;
    }
  }

  @media screen and (min-width: 768px) {
    .gnav,
    .gnav--menu,
    .gnav--menu > li,
    .gnav--menu > li > a {
      height: 100%;
    }
    .gnav_btn {
      display: none;
    }
    .gnav--menu .child {
      position: absolute;
      left: -2rem;
      right: -2rem;
      bottom: 0;
      padding: 3.5rem 2.5rem 2.5rem;
      transform: translateY(100%);
      opacity: 0;
      pointer-events: none;
  
      &::before {
        content: "";
        position: absolute;
        inset: 0;
        top: 1rem;
        border-radius: 1rem;
        background-color: #fff;
      }
      &::after {
        content: "";
        position: absolute;
        top: .25rem;
        right: 0;
        left: 0;
        margin: auto;
        display: block;
        width: 1rem;
        height:fit-content;
        aspect-ratio: 1 / 1;
        background-color: #fff;
        clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
      }
    }
  }
  @media screen and (max-width: 767px) {
    /*  --- gnav --- */
    .gnav {
      position: fixed;
      top: 4.5rem;
      right: 0;
      z-index: 300;
      width: 18rem;
      height: calc(100% - 4.5rem);
      margin: 0;
      padding: 3rem 7%;
      opacity: 0;
      pointer-events: none;
      overflow: auto;
      background-color: var(--bg-03);
      transform: translateX(110%);
      -webkit-overflow-scrolling: touch;
      transition: all .4s ease-out;
      opacity: 1;
      box-shadow: -.25rem 0 0 0 rgba(0, 0, 0, .1);
      &.active {
        opacity: 1;
        pointer-events: auto;
        transform: translateX(0);
      }
    }
    .gnav--menu {
      align-items: start;
      gap: 2rem;
    }
    .gnav--link{
      font-size: 1.143rem; /* 16px */
      .icn {
          max-width: 1.75rem;
          max-height: 1.75rem;
          margin-right: .6rem;
      }
    }
    .gnav--menu .child {
      margin-top: 1.5rem;
      margin-left: 1.5rem;
      li {
        font-size: 1rem;
        &:not(:last-child) {
          margin-bottom: 1rem;
        }
      }
    }

    /* --- gnav_cta --- */
    .gnav_cta {
      margin-right: 3.3rem;
    }
    .gnav_cta .flex {
      gap: .25rem;
    }
    .gnav--login a,
    .gnav--entry a {
      flex-direction: column;
      width: 3.5rem;
      height: auto;
      aspect-ratio: 1 / 1;
      padding: .4rem;
      font-size: .714rem;
      line-height: 1;
      letter-spacing: normal;
      border-radius: .25rem;
      white-space: nowrap;
      
      .icn {
        margin-right: 0;
        margin-bottom: .4rem;
      }
    }
    .gnav--login a {
      color: var(--sub-04);
      background-color: #FFF;
      .icn {
        max-width: auto;
        height: 1.25rem;
      }
    }
    .gnav--entry a {
      color: #FFF;
      background-color: var(--sub-04);
      .icn {
        max-width: auto;
        height: 1.25rem;
        transform: translateX(.2rem);
      }
    }

    /*  --- gnav_btn --- */
    .gnav_btn {
      position: absolute;
      top: .5rem;
      right: .5rem;
      width: 3.5rem;
      height:fit-content;
      aspect-ratio: 1 / 1;
      z-index: 99999999;
      background-color: var(--primary-default);
      border-radius: .25rem;
    }
    .gnav_btn--lines {
      position: relative;
      width: 1.25rem;
      height: 1rem;
      margin-top: .2rem;
    }
    .gnav_btn--lines span {
      transition: all .4s;
      box-sizing: border-box;
    }
    .gnav_btn--lines span {
      position: absolute;
      left: 0;
      width: 100%;
      height: 2px;
      background-color: #fff;
    }
    .gnav_btn--lines span:nth-of-type(1) {
      top: 0;
    }
    .gnav_btn--lines span:nth-of-type(2) {
      top: 50%;
      transform: translateY(-50%);
    }
    .gnav_btn--lines span:nth-of-type(3) {
      bottom: 0;
    }
    .active .gnav_btn--lines span:nth-of-type(1) {
      -webkit-transform: translateY(.4rem) rotate(-40deg);
      transform: translateY(.4rem) rotate(-40deg);
    }
    .active .gnav_btn--lines span:nth-of-type(2) {
      opacity: 0;
    }
    .active .gnav_btn--lines span:nth-of-type(3) {
      -webkit-transform: translateY(-.45rem) rotate(40deg);
      transform: translateY(-.45rem) rotate(40deg);
    }
    .gnav_btn--txt {
      margin-top: .75em;
      font-size: .714rem; /* 10px */
      line-height: 1;
      letter-spacing: .05em;
      color: #fff;
    }
    .gnav_btn--txt span:nth-of-type(2) { display: block; }
    .gnav_btn--txt span:nth-of-type(2) { display: none; }
    .active .gnav_btn--txt span:nth-of-type(1) { display: none; }
    .active .gnav_btn--txt span:nth-of-type(2) { display: block; }
  }


/* ##############################################################################

    FOOTER

############################################################################## */

/* footer_copy
**************************************** */
  .footer_copy {
    text-align: center;
    img {
      width: 30rem;
    }
  }

  @media screen and (max-width: 767px) {
    .footer_copy {
      img {
        width: 15rem;
      }
    }
  }

/* footer_main
**************************************** */
  .footer_main {
    padding-top: 5rem;
    padding-bottom: 5rem;
    .deco-01 {
      top: 0;
      right: 0;
      transform: translateX(50%) translateY(-100%);
    }
  }
  .footer_main-btm {
    margin-top: 3.5rem; /* 56px */
    padding-top: 2rem;
    border-top: 1px solid var(--secondary-default);
  }

  @media screen and (max-width: 767px) {
    .footer_main {
      padding-top: 3rem;
      padding-bottom: 3rem;
      .deco-01 {
        transform: translateX(0%) translateY(-50%);
      }
    }
    .footer_main-btm {
      margin-top: 2.5rem;
      padding-top: 1.75rem;
    }
  }

/* footer_about
**************************************** */
  .footer--logo img {
    width: 23rem;
  }

  @media screen and (max-width: 767px) {
    .footer--logo img {
      width: calc(23rem / 1.5);
    }
  }

/* footer_nav
**************************************** */
  .fnav--menu {
    column-count: 2;
    font-size: 1.125rem; /* 18px */

    li {
      margin-bottom: 1rem;
    }
  }
  .fnav--menu a,
  .gnav--menu .child a,
  .txt-link {
    position: relative;
    display: inline-block;
    padding-left: 2rem;

    &::before {
      content: "";
      position: absolute;
      top: .125em;
      left: 0;
      display: block;
      width: 1.33em;
      height:fit-content;
      aspect-ratio: 1 / 1;
      background-image: url(../images/common/btn_arrow-gr.svg);
      background-size: contain;
      background-repeat: no-repeat;
    }
  }

  @media screen and (max-width: 767px) {
    .fnav--menu {
      font-size: 1rem;
  
      li {
        margin-bottom: .75rem;
      }
    }
    .fnav--menu a,
    .gnav--menu .child a,
    .txt-link {
      padding-left: 1.75rem;
    }
  }

/* footer_nav-sm
**************************************** */
  .fnav--submenu {
    gap: 2rem;

    a {
      line-height: 1;
      font-size: 1rem;
    }
  }

  @media screen and (max-width: 767px) {
    .fnav--submenu {
      flex-wrap: wrap;
      gap: .5rem 1.5rem;
  
      a {
        font-size: .929rem; /* 13px */
      }
    }
  }

/* footer_search
**************************************** */
  /* --- footer_search-box --- */
  .footer_search-box {
    width: 56.5rem;
    max-width: 100%;
    background-color: #fff;
    padding: 1.5rem 2.5rem 2rem;
    border-radius: 1rem;

    &:not(:last-child) {
      margin-bottom: 1rem;
    }
    
    .ttl {
      margin-bottom: 1rem;
      font-size: 1.125rem; /* 18px */

      .icn {
        width: auto;
        max-height: 1.5rem;
        margin-right: .25rem;
      }
    }

    .link a {
      display: flex;
      align-items: center;
      font-size: 1rem;
      
      &:not(:last-child)::after {
        content: "";
        display: inline-block;
        width: 1rem;
        aspect-ratio: 16 / 2;
        margin: 0 .125em;
        border-radius: 2px;
        background-color: #DDDACD;
        transform: rotate(120deg);
      }
    }
  }
  
  @media screen and (max-width: 767px) {
    /* --- footer_search-box --- */
    .footer_search-box {
      padding: 1.5rem 1.75rem 1.75rem;
      border-radius: .75rem;
  
      &:first-child {
        margin-top: 2rem;
      }
      &:not(:last-child) {
        margin-bottom: .75rem;
      }
    }
  }

/* footer_copyright
**************************************** */
  .footer_copyright small {
    font-size: 1rem;
    line-height: 1;
  }
  @media screen and (max-width: 767px) {
    .footer_copyright {
      margin-top: 2rem;
      small {
        font-size: .857rem; /* 12px */
      }
    }
  }


/* ##############################################################################

    INDEX

############################################################################## */

/* .layout
*************************************************** */
  .main_column {
    position: relative;
  }

/* hero
*************************************************** */
  .hero {
    position: relative;
    height: 30.5rem;
    padding-top: 10.5rem;
    text-align: center;

    .cacth {
      padding: .6em .7em;
      font-size: 1.5rem; /* 24px */
      color: var(--txt-primary);
    }

    .ttl {
      font-size: 3.5rem; /* 56px */
      letter-spacing: .08em;
      line-height: 1.4;
      color: var(--txt-secondary);
      .txt-sm {
        font-size: 3rem; /* 48px */
      }
      .round_bg-wh,
      .round_bg-yl {
        display: inline-block;
        padding: .5em;
        color: var(--primary-default);
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
      }
      .round_bg-wh {
        background-image: url(../images/home/round_bg-wh.svg);
      }
      .round_bg-yl {
        background-image: url(../images/home/round_bg-yl.svg);
      }
    }

    .bg-lft {
      top: 4rem;
      left: 3rem;
      width: 31.875rem;
    }
    .bg-rgt {
      top: 2.5rem;
      right: 3.25rem;
      width: 31.25rem;
    }
  }

  @media screen and (max-width: 767px) {
    .hero {
      height: 24rem;
      padding-top: 7rem;
  
      .cacth {
        position: relative;
        z-index: 10;
        font-size: .929rem; /* 13px */
      }
  
      .ttl {
        font-size: 2rem;
        line-height: .9;
        .txt-sm {
          display: inline-block;
          padding-bottom: .75rem;
          font-size: 1.5rem;
          line-height: 1.6;
        }
        .round_bg-wh,
        .round_bg-yl {
          padding: .5em;
        }
      }
  
      .bg-lft {
        top: 1rem;
        left: .5rem;
        width: calc(31.875rem / 2.5);
      }
      .bg-rgt {
        top: .5rem;
        right: .5rem;
        width: calc(31.25rem / 2.5);
      }
    }
  }

/* home_reason
*************************************************** */
  .home_reason {
    .deco-01 {
      top: 2.8625rem;
      left:  5.0625rem;
    }
    .deco-02 {
      bottom: 20.3125rem;
      right: 3.5rem;
    }
  }
  .reason_list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 4rem;
    padding: 0 3rem;
  }

  /* --- column_list --- */
  .column1 {
    grid-template-columns: repeat(1, 1fr);
    gap: 2rem;
  }
  .column2 {
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
    max-width: 66rem;
    margin-left: auto;
    margin-right: auto;
  }
  .column3 {
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
  }
  .column_list {
    display: grid;

    .content {
      position: relative;
      border-radius: 1rem;
      background-color: #fff;
      counter-increment: number;
    }

    .img {
      border-radius: 1rem 1rem 0 0;
    }

    .txtarea {
      padding: 1.75rem 2.5rem 2.5rem;
    }

    .icn {
      display: block;
      width: fit-content;
      max-height: 8rem;
      margin: 1rem auto 2.25rem;
    }

    .num {
      position: absolute;
      top: -.5rem;
      left: 2.5rem;
      display: flex;
      justify-content: center;
      align-items: center;
      width: 5.625rem;
      height:fit-content;
      aspect-ratio: 1 / 1;
      color: #fff;
      background-color: var(--primary-default);
      clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 90%, 0 100%);

      &::after {
        content: counter(number, decimal-leading-zero);
        font-size: 3rem;
        font-weight: 600;
        letter-spacing: 1px;
      }
    }

    .num-sm {
      display: flex;
      align-items: center;
      margin-bottom: .5rem;
      font-size: 1rem;
      line-height: 1.4;
      color: var(--primary-default);
      
      span {
        border-bottom: 2px solid;
      }

      &::after {
        content: counter(number, decimal-leading-zero);
        font-size: 200%;
        margin-left: .35rem;
      }
    }

    .ttl {
      margin-bottom: 1rem;
      font-size: 2rem; /* 32px */
      line-height: 1.3;
      letter-spacing: .04em;
      color: var(--txt-secondary);
    }

    .txt {
      font-size: 1.125rem; /* 18px */
      line-height: 1.7;
    }
  }
  .bg-05 .column_list {
    .content {
      border-radius: 0;
      background-color: transparent;
    }
    .txtarea {
      padding: 0;
    }
  }

  @media screen and (max-width: 767px) {
    .home_reason {
      .deco-01 {
        top: 1rem;
        left:  1rem;
      }
      .deco-02 {
        bottom: 2rem;
        right: 1.5rem;
      }
    }
    .reason_list {
      grid-template-columns: repeat(1, 1fr);
      gap: 1rem;
      padding: 0 2rem;
    }
  
    .column3 {
      grid-template-columns: repeat(1, 1fr);
    }
    .column_list {
      .content {
        border-radius: .75rem;
      }
  
      .img {
        border-radius: .75rem .75rem 0 0;
      }
  
      .txtarea {
        padding: 1.5rem 2rem 2rem;
      }
  
      .icn {
        max-height: 5rem;
        margin: .75rem auto 1.25rem;
      }
  
      .num {
        left: 1.5rem;
        transform: scale(.6,.6);
        transform-origin: top left;
      }
  
      .num-sm {
        font-size: .786rem; /* 11px */
      }
  
      .ttl {
        font-size: 1.5rem;
      }
  
      .txt {
        font-size: 1rem;
      }
    }
  }

/* home_project
*************************************************** */
  /* --- home_project --- */
  .home_project {
  }

  /* --- project--tab --- */
  .tab_area {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: .5rem;
    margin-bottom: 3rem;

    &::before {
      content: "";
      position: absolute;
      right: 0;
      left: 0;
      bottom: 0;
      border-bottom: .1875rem solid var(--primary-default);
    }

    .label {
      position: relative;
      z-index: 10;
      display: flex;
      justify-content: center;
      align-items: center;
      flex: 1;
      padding: 1rem 0;
      font-size: 1.5rem; /* 24px */
      color: #fff;
      border: .1875rem solid var(--primary-default);
      background-color: var(--primary-default);
      border-radius: .5rem .5rem 0 0;
      text-align: center;
      cursor: pointer;
      transition: all .2s ease-out;
      &::after {
        content: "";
        display: block;
        width: 2rem;
        aspect-ratio: 1 / 1;
        background-image: url(../images/common/btn_arrow-wh.svg);
        background-size: contain;
        background-repeat: no-repeat;
        margin-left: 1rem;
        transform: rotate(90deg);
      }

      &:hover,
      &.active {
        padding: 1.25rem 0;
        border-bottom: none;
        background-color: #fff;
        color: var(--primary-default);
        &::after {
          background-image: url(../images/common/btn_arrow-gr.svg);
        }
      }
    }
  }
  .content_area .content {
    display: none;
    &.active {
      display: block;
    }
  }

  /* --- item_list --- */
  .item_list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 3.5rem 2.5rem;
  }
  .item_list-column1 {
    grid-template-columns: repeat(1, 1fr);
    gap: 2.5rem;
  }
  .item_list,
  .cta_area {
    .item {
      position: relative;
      display: flex;
      flex-direction: column;
      border-radius: 1rem;
      background-color: #fff;
      box-shadow: .5rem .5rem 0 0 rgba(0, 0, 0, .10);
      &:hover .name {
        color: var(--primary-default);
      }
    }

    .link::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      z-index: 10;
      width: 100%;
      height: 100%;
      cursor: pointer;
    }

    .imgarea {
      position: relative;
      display: block;
      aspect-ratio: 508 / 336;
      border-radius: 1rem 1rem 0 0;
      overflow: hidden;
    }

    .txtarea {
      flex: 1;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      padding: 1rem 2rem 2rem;
      &:only-child {
        padding-top: 2rem;
      }
    }

    .name {
      margin-bottom: .5rem;
      font-size: 1.5rem; /* 24px */
      line-height: 1.5;
      transition: all .4s ease-out;
    }

    .txt {
      font-size: 1.063rem; /* 17px */
    }

    .sold_out {
      font-size: 1.5rem; /* 24px */
      text-align: center;
      color: var(--sub-05);
    }

    .price {
      display: flex;
      justify-content: space-between;
      align-items: flex-end;
      margin-bottom: 1.25rem;
      font-size: 1.125rem; /* 18px */
      line-height: 1;
      .num {
        font-size: 2.5rem; /* 40px */
        color: var(--sub-05);
        letter-spacing: normal;
      }
      .yen {
        padding-left: .5rem;
        font-size: 1.125rem; /* 18px */
        color: var(--sub-05);
      }
    }

    .bar {
      position: relative;
      display: flex;
      align-items: center;
      width: 100%;
      height: 2rem;
      padding-left: 1rem;
      margin-bottom: .25em;
      border-radius: 999px;
      font-size: 1.25rem; /* 20px */
      letter-spacing: normal;
      line-height: 1;
      color: #fff;
      background-color: #DFDFE0;
      overflow: hidden;
      .bg {
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        display: block;
        background-color: var(--secondary-default);
        &.complete {
          background-color: var(--sub-05);
        }
      }
    }

    .target {
      margin-bottom: .5rem;
      text-align: right;
      color: var(--txt-secondary);
    }

    .countdown {
      padding: 1rem;
      border-radius: .5rem;
      background-color: var(--bg-03);
      text-align: center;
      .days_left {
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 1.125rem; /* 18px */
        line-height: 1;
        .txt-gr,
        .txt-rd {
          display: flex;
          justify-content: center;
          align-items: center;
        }
        .txt-lg {
          padding: 0 .25em;
          font-size: 177%;
          letter-spacing: normal;
        }
        &::before {
          content: "";
          width: 1.342875rem;
          aspect-ratio: 21.486 / 24;
          margin-right: .75rem;
          background-image: url(../images/common/icn-timer.svg);
          background-size: contain;
          background-repeat: no-repeat;
          transform: translateY(-.125rem);
        }
      }
      .period {
        margin-top: .5rem;
        font-size: 1.125rem; /* 18px */
        line-height: 1;
        color: var(--primary-default);
        font-weight: 500;
      }
    }
    .supporter {
      .days_left {
        &::before {
          aspect-ratio: 1 / 1;
          background-image: url(../images/common/icn-member.svg);
          transform: translateY(0);
        }
      }
    }

    .btn-01 > * {
      width: 100%;
      min-width: 0;
    }
  }
  .item_list-column1 {
    .target {
      margin-bottom: 0;
      &::before {
        content: "";
        display: inline-block;
        width: 1.125em;
        aspect-ratio: 1 / 1;
        margin-right: .5em;
        background-image: url(../images/common/icn-member.svg);
        background-size: contain;
        background-repeat: no-repeat;
        transform: translateY(.125em);
      }
    }
  }

  @media screen and (max-width: 767px) {
    /* --- home_project --- */
    .home_project {
      .item_list .item:nth-child(9) {
        display: none;
      }
    }
  
    /* --- project--tab --- */
    .tab_area {
      overflow-x: scroll;
      -webkit-overflow-scrolling: touch;
      gap: .5rem;
      width: 100vw;
      margin-left: -5vw;
      padding-left: .5rem;
      padding-right: .5rem;
      margin-bottom: 1.5rem;
      white-space: nowrap;
  
      &::before {
        content: "";
        position: absolute;
        right: auto;
        width: 58.5rem;
        left: 0;
        bottom: 0;
        border-bottom: .1875rem solid var(--primary-default);
      }
  
      .label {
        margin-top: .5rem;
        padding: .5rem .75rem;
        font-size: 1rem;
        border-radius: .25rem .25rem 0 0;
        &::after {
          width: 1.25rem;
          margin-left: .75rem;
        }
  
        &:hover,
        &.active {
          margin-top: 0rem;
          padding: .75rem;
        }
      }
    }

    /* --- item_list --- */
    .item_list {
      grid-template-columns: repeat(2, 1fr);
      gap: 1.5rem 1rem;
  
      .item {
        border-radius: .5rem;
        box-shadow: .25rem .25rem 0 0 rgba(0, 0, 0, .10);
      }
  
      .imgarea {
        border-radius: .5rem .5rem 0 0;
      }
  
      .txtarea {
        padding: .75rem;
        &:only-child {
          padding-top: 1rem;
        }
      }
  
      .name {
        margin-bottom: .5rem;
        font-size: 1rem;
      }

      .txt {
        font-size: .857rem; /* 12px */
      }
  
      .sold_out {
        font-size: 1.25rem;
      }
  
      .price {
        margin-bottom: .5rem;
        font-size: .786rem; /* 11px */
        white-space: nowrap;
        .num {
          font-size: 1.7142rem;
        }
        .yen {
          padding-left: 0;
          font-size: .929rem; /* 13px */
        }
      }
  
      .bar {
        height: 1.4285rem;
        font-size: .857rem; /* 12px */
      }
  
      .target {
        margin-bottom: .3rem;
        font-size: .857rem; /* 12px */
      }
  
      .countdown {
        padding: .5rem;
        border-radius: .4rem;
        .days_left {
          font-size: .813rem; /* 13px */
          .txt-lg {
            font-size: 150%;
          }
          &::before {
            width: .9rem;
            margin-right: .5rem;
            transform: translateY(0);
          }
        }
        .period {
          margin-top: .25rem;
          font-size: .857rem; /* 12px */
          letter-spacing: normal;
        }
      }

      .btn-01 > * {
        width: 100%;
        padding: .75rem 0;
        font-size: .857rem; /* 12px */
        &::before {
          display: none;
        }
      }
    }
  }

/* home_local_government
*************************************************** */  
  .home_local_government {
    .imgarea {
      width: 37.5rem;
      margin-right: 4rem;
    }
  }

  /* --- local_government-areas --- */
  .local_government-areas {
    flex: 1;
    display: grid;
    grid-template-columns: repeat(1, 1fr);
    gap: 1rem;

    .area {
      display: grid;
      grid-template-columns: 9rem 1fr;
      border-radius: 1rem;
      background-color: #fff;
      overflow: hidden;
      box-shadow: .3125rem .3125rem 0 0 rgba(0, 0, 0, .1);
    }

    .ttl {
      display: flex;
      justify-content: center;
      align-items: center;
      font-size: 1.125rem; /* 18px */
      color: var(--txt-secondary);
      text-align: center;
    }
    .links {
      display: flex;
      flex-wrap: wrap;
      gap: .5rem;
      padding: 1.5rem 2rem;
      .ok ,
      .ng {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: .6rem .75rem;
        border: 2px solid;
        border-radius: 999px;
        font-size: 1.125rem; /* 18px */
        line-height: 1;
      }
      .ok {
        border-color: var(--primary-default);
        background-color: var(--bg-01);
        &::before {
          content: "";
          display: inline-block;
          width: .75em;
          aspect-ratio: 1 / 1;
          border-radius: 50%;
          border: solid 2px var(--primary-default);
          margin-right: .25rem;
          transition: all .4s ease-out;
        }
        &:hover {
          color: #fff;
          background-color: var(--primary-default);
          &::before {
            border-color: #fff;
          }
        }
      }
      .ng {
        color: #9599A3;
        pointer-events: none;
        &::before {
          content: "";
          width: .75em;
          aspect-ratio: 1 / 1;
          margin-right: .25rem;
          background-image: url(../images/common/close.svg);
          background-size: contain;
          background-repeat: no-repeat;
          background-position: center;
        }
      }
    }
  }

  @media screen and (max-width: 767px) { 
    .home_local_government {
      .imgarea {
        width: 95%;
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 2rem;
      }
    }
  
    /* --- local_government-areas --- */
    .local_government-areas {  
      .area {
        display: grid;
        grid-template-columns: 1fr;
        border-radius: .75rem;
        box-shadow: .15rem .15rem 0 0 rgba(0, 0, 0, .1);
        border-left: solid .15rem rgba(0, 0, 0, .1);
      }
  
      .ttl {
        display: block;
        width: 100%;
        padding: .5rem 1.25rem;
        font-size: 1rem;
        text-align: left;
      }
      .links {
        gap: .5rem;
        padding: 1rem 1.25rem;
        .ok,
        .ng {
          padding: .5rem .6rem;
          font-size: .929rem; /* 13px */
          border-width: 1.5px;
        }
      }
    }
  }

/* home_about
*************************************************** */  
  .home_about {
    background-image: url(../images/home/about-img01-bg.jpg);
    background-position: center bottom;
    background-repeat: no-repeat;
    overflow: hidden;
  }

  .home_about .txtarea {
    width: 50%;
    padding-top: 5rem;
    padding-left: 2.5rem;
    padding-bottom: 5rem;
    font-size: 1.5rem; /* 24px */
    letter-spacing: .05em;
    line-height: 2.4;
    .txt {
      margin-bottom: 2.5rem;
      &:last-child {
        margin-bottom: 5rem;
      }
    }
  }
  .fadein {
    transform: translateY(1.875rem);
    opacity: 0;
    transition: all 2s ease;
    &.fadein_active {
      transform: translateY(0);
      opacity: 1;
    }
  }
  .home_about .imgarea {
    .img01,
    .img02,
    .img03,
    .img04,
    .img05 {
      position: absolute;
      border-radius: 1rem;
    }
    .img01 {
      top: 2.5rem;
      left: 0;
      max-width: 15rem;
    }
    .img02 {
      top: 14.25rem;
      right: 0;
      max-width: 30rem;
    }
    .img03 {
      top: 31rem;
      right: 21rem;
      max-width: 18.75rem;
    }
    .img04 {
      top: 44.375rem;
      right: -5rem;
      max-width: 18.75rem;
    }
    .img05 {
      top: 68.125rem;
      right: 38rem;
      max-width: 10rem;
    }
    .deco-01 {
      top: 0;
      right: -2.5rem;
    }
    .deco-02 {
      top: 94rem;
      right: 0;
    }
  }

  @media screen and (min-width: 768px) {
    .home_about {
      .btn-01 a {
        margin-left: 0;
      }
    }

  }
  @media screen and (min-width: 1920px) {
    .home_about {
      background-size: 100% auto;
    }
  }
  @media screen and (max-width: 767px) {
    .home_about {
      background-size: 960px auto;
    }
  
    .home_about .ttl-01,
    .home_about .txtarea {
      position: relative;
      z-index: 10;
    }
    .home_about .txtarea {
      width: 100%;
      padding-top: 0;
      padding-left: 0;
      padding-bottom: 5rem;
      font-size: 1.071rem; /* 15px */
    }

    .home_about .imgarea {
      .img01,
      .img02,
      .img03,
      .img04,
      .img05 {
        opacity: .25;
        border-radius: .75rem;
      }
      .img01 {
        left: -.5rem;
        max-width: calc(15rem / 2);
      }
      .img02 {
        right: -.5rem;
        max-width: calc(30rem / 2);
      }
      .img03 {
        right: 20rem;
        max-width: calc(18.75rem / 2);
      }
      .img04 {
        right: -3rem;
        max-width: calc(18.75rem / 2);
      }
      .img05 {
        right: 10rem;
        max-width: calc(10rem / 2);
      }
      .deco-01 {
        top: 0;
        right: -2.5rem;
      }
      .deco-02 {
        top: 94rem;
        right: 0;
      }
    }
  }

/* home_business
*************************************************** */  
  @media screen and (max-width: 767px) {
    .home_business .ttl-02 .txt-sm {
      display: inline-block;
      line-height: 1.6;
    }
  }

/* home_news
*************************************************** */  
  .home_news {
    .toggle_list {
      width: 67.5%;
      .post--arrow {
        top: 2.5rem;
      }
    }
  }

  /* --- toggle_list --- */
  .toggle_list {
    margin-top: -2.5rem;
    .post {
      position: relative;
      border-bottom: 1px solid #BABDC4;
    }
    .post--arrow {
      position: absolute;
      top: 1.6rem;
      right: 0;
      width: 3.5rem;
      height:fit-content;
      aspect-ratio: 1 / 1;
      border-radius: 50%;
      background-color: #fff;
      filter: drop-shadow(0 .25rem 0 rgba(0, 0, 0, .1));
      cursor: pointer;
      pointer-events: none;
      &::before,
      &::after {
        content: "";
        position: absolute;
        inset: 0;
        margin: auto;
        display: block;
        width: 30%;
        height: 0;
        border-top: solid 2px var(--primary-default);
        transition: all .4s ease-out;
      }
      &::after {
        transform: rotate(90deg);
      }
    }
    .active .post--arrow {
      &::before,
      &::after {
        transform: rotate(180deg);
      }
    }
    .ttlarea {
      cursor: pointer;
      padding-top: 2.5rem;
      padding-bottom: 2.5rem;
      padding-right: 6rem;
      transition: all .4s ease-out;
    }
    .active .ttlarea {
      padding-bottom: 0;
    }
    .post--date {
      margin-bottom: .5rem;
      font-size: 1.25rem; /* 20px */
      line-height: 1.6;
      color: var(--primary-default);
      letter-spacing: normal;
    }
    .post--ttl {
      font-size: 1.5rem; /* 24px */
      line-height: 1.5;
      letter-spacing: .05em;
    }
    .faq--ttl {
      padding-left: 2.25rem;
      text-indent: -2.25rem;
    }
    .txtarea {
      display: none;
      padding-bottom: 2.5rem;
    }
    .post--content {
      padding-top: 1.5rem;
      font-size: 1.125rem; /* 18px */
      letter-spacing: .05em;
      line-height: 1.7;
    }
    .post--link {
      margin-top: 1rem;
    }
  }

  .toggle_list-sm {
    .ttlarea {
      padding-top: 1.5rem;
      padding-bottom: 1.5rem;
      padding-right: 4rem;
    }
    .post--ttl {
      font-size: 1.125rem; /* 18px */
    }
    .faq--ttl {
      padding-left: 1.75rem;
      text-indent: -1.75rem;
    }
    .post--content {
      padding-top: 1rem;
      font-size: 1rem;
    }
  }
  
  .bg-05 .toggle_list {
    .post--arrow {
      background-color: var(--bg-01);
    }
  }

  @media screen and (min-width: 768px) {
    .toggle_list-sm {
      .post--arrow {
        top: 1.5rem;
        width: 2.5rem;
      }
    }
  }
  @media screen and (max-width: 767px) {
    .home_news {
      .toggle_list {
        width: 100%;
        .post--arrow {
          top: 1.5rem;
        }
      }
    }
  
    /* --- toggle_list --- */
    .toggle_list {
      margin-top: -1.5rem;
      .post--arrow {
        top: 1rem;
        transform: scale(.75,.75);
        transform-origin: top right;
      }
      .ttlarea {
        padding-top: 1.5rem;
        padding-bottom: 1.5rem;
        padding-right: 4rem;
      }
      .post--date {
        font-size: 1rem; /* 14px */
      }
      .post--ttl {
        font-size: 1.143rem; /* 16px */
      }
      .faq--ttl {
        padding-left: 1.75rem;
        text-indent: -1.75rem;
      }
      .txtarea {
        padding-bottom: 1.5rem;
      }
      .post--content {
        padding-top: 1rem;
        font-size: 1rem; /* 14px */
      }
      .post--link {
        margin-top: 1rem;
        .txt-lg {
          font-size: 100%;
        }
      }
    }
  }


/* ##############################################################################

    project

############################################################################## */

/* list
**************************************** */
  /* --- project_list-cta --- */
  .project_list-cta {
    position: relative;
    padding: 2.25rem 0 1.5rem;
    border-radius: 1rem;
    background-color: #FFF;
    text-align: center;

    &::before {
      content: "";
      position: absolute;
      top: 0;
      left: -1rem;
      bottom: 0;
      margin: auto;
      display: block;
      width: 2rem;
      height:fit-content;
      aspect-ratio: 1 / 1;
      transform: rotate(45deg);
      background-color: #FFF;
    }

    .btn-01 {
      margin-right: 1.25rem;
      a {
        justify-content: space-between;
        padding-left: 3rem;
      }
    }
    .icn {
      max-width: 5.4375rem;
    }
    .icn-txt {
      position: absolute;
      right: -.75rem;
      bottom: .5rem;
      font-size: .813rem; /* 13px */
      line-height: 1.2;
      letter-spacing: .02em;
      white-space: nowrap;
      text-shadow:0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff,0 0 .15rem #fff;
    }
    .btn-02 {
      border-top: solid 1px #DFDFE0;
      margin: 1rem 2.5rem 0;
      padding-top: 1rem;
    }
  }

  .project_list-cta-lg {
    &::before {
      display: none;
    }
  }

  /* --- project_list-gallery --- */
  .project_list-gallery {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 1.5rem;
  }
  
  @media screen and (min-width: 768px) {
    /* --- project_list-ttl --- */
    .project_list-ttl {
      width: 55rem;
    }

    /* --- project_list-cta --- */
    .project_list-cta {
      width: 42rem;
    }
    .project_list-cta-lg {
      width: 64rem;
      margin-left: auto;
      margin-right: auto;
    }
  }
  @media screen and (max-width: 767px) {
    /* --- project_list-ttl --- */
    .project_list-ttl:not(:only-child) {
      margin-bottom: 1.75rem;
    }
    .project_list-ttl:only-child .page_ttl {
      margin-bottom: 0;
    }

    /* --- project_list-cta --- */
    .project_list-cta {
      width: 100%;
      padding: 1.5rem 0 1rem;
      border-radius: .75rem;
  
      &::before {
        top: -.5rem;
        left: 0;
        right: 0;
        bottom: auto;
        margin: auto;
        width: 1rem;
      }
  
      .icn {
        max-width: 4rem;
        margin-right: 1.25rem;
      }
      .icn-txt {
        right: 1.5rem;
        bottom: .125rem;
        font-size: .714rem; /* 10px */
      }

      .btn-01 {
        flex: 1;
        margin-left: 1.25rem;
        margin-right: .5rem;
        a {
          width: 100%;
          padding-left: 3rem;
        }
      }
      .btn-02 {
        margin: 1rem 1.5rem 0;
        a {
          font-size: .929rem; /* 13px */
          white-space: nowrap;
        }
      }
    }
  
    /* --- project_list-gallery --- */
    .project_list-gallery {
      width: 100vw;
      margin-left: -5vw;
      grid-template-columns: repeat(3, 1fr);
      gap: .5rem;
      li:nth-child(4),
      li:nth-child(5){
        display: none;
      }
    }
  }

/* side
**************************************** */
  .main_side {
    display: grid;
    grid-template-columns: 21.5rem minmax(0, 1fr);
    grid-gap: 3.5rem;
    gap: 3.5rem;
  }

  .side_section {
    padding: 1.5rem 2rem;
    background-color: #fff;
    border-radius: 1rem;
    &:not(:last-child) {
      margin-bottom: 2.5rem;
    }
  }
  .side--ttl {
    margin-bottom: 1rem;
    font-size: 1.5rem; /* 24px */
    line-height: 1.5;
    letter-spacing: .05em;
    color: var(--primary-default);
  }
  .side--ttl_sm {
    padding: .3rem;
    margin-bottom: .5rem;
    border-radius: .25rem;
    font-size: 1.125rem; /* 18px */
    text-align: center;
  }
  * + .side--ttl_sm {
    margin-top: 1rem;
  }
  .side--local .list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
  }
  
  @media screen and (min-width: 768px) {
    .side_column {
      grid-row: 1 / 2;
    }
  }
  @media screen and (max-width: 767px) {
    .main_side {
      grid-template-columns: repeat(1, 1fr);
      gap: 2.5rem;
    }
  
    .side_section {
      border-radius: .75rem;
      &:not(:last-child) {
        margin-bottom: 1rem;
      }
    }
    .side--ttl {
      margin-bottom: .75rem;
      font-size: 1.25rem;
    }
    .side--ttl_sm {
      border-radius: .125rem;
      font-size: 1rem;
    }
    * + .side--ttl_sm {
      margin-top: .75rem;
    }
  }

/* detail
**************************************** */
  @media screen and (max-width: 767px) {
    #page_product_detail {
      .section_pdg-top-sm {
        padding-top: 2vw;
      }
      .bg-03-img::before { 
        background-position: top 70rem center;
      }
    }
  }
  
  /* --- fixed_cta --- */
  .fixed_cta {
    opacity: 0;
    pointer-events: none;
    transition: all .4s ease-out;
    &.active {
      opacity: 1;
      pointer-events: auto;
    }

    .inner {
      height: 100%;
    }
    .name {
      margin-bottom: .4rem;
      font-size: 1.75rem;
      line-height: 1.5;
      overflow: hidden;
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 1;
    }
  }
  @media screen and (min-width: 768px) {
    .fixed_cta {
      .btn-01 {
        transform-origin: right center;
        transform: scale(.75,.75);
      }
    }
  }
  @media screen and (max-width: 767px) {
    .fixed_cta {
      top: auto;
      bottom: 0;
      height: 5.5rem;

      .inner {
        width: 96%;
      }
      .btn-01 {
        width: 100%;
        > * {
          padding: 1rem 3rem;
        }
      }
    }
  }

  /* --- project_detail-main --- */
  .project_detail-main {
    padding: 3rem 4rem 4rem !important;
  }
  .project_detail-main .grid,
  .project_detail-sub {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 30rem;
    gap: 3.5rem;
  }

  .project_detail-main .img_area {
    .slider {
      .slick-slider {
        margin-bottom: 1rem;
        overflow: hidden;
        //background-color: var(--bg-03);
      }
      .img {
        position: relative;
        display: flex !important;
        justify-content: center;
        align-items: center;
        aspect-ratio: 936 / 619;
        img {
          width: auto;
          height: auto;
          max-width: 100%;
          max-height: 100%;
        }
      }
      .slick-dots {
        position: static;
        display: grid;
        grid-template-columns: repeat(8, 1fr);
        gap: .75rem;
        li {
          width: auto;
          height: auto;
          margin: 0;
          border-radius: .25rem;
          overflow: hidden;
          border: solid 3px transparent;
          transition: all .2s ease-out;

          &.slick-active {
            border-color: var(--primary-default);
          }
        }
      }
      .dot {
        position: relative;
        display: block;
        aspect-ratio: 508 / 336;
        background-color: var(--bg-03);
      }
    }
  }

  .project_detail-main .cta_area {
    .name {
      padding-top: 1rem;
      margin-bottom: 1.75rem;
      font-size: 2rem;
      line-height: 1.5;
    }

    .price {
      font-size: 1.375rem; /* 22px */
      .num {
        font-size: 3rem;
      }
      .yen {
        font-size: 2.125rem;
      }
    }

    .bar {
      height: 2.5rem;
      padding-left: 1.5rem;
      font-size: 1.5rem;
    }

    .countdown {
      .days_left {
        font-size: 1.25rem; /* 18px */
      }
    }

    .share_area {
      margin-top: 3rem;
      justify-content: center;
    }
  }
  .share_area {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
  }
  .fb_iframe_widget span {
    vertical-align: top !important;
  }
  @media screen and (max-width: 767px) {
    .project_detail-main {
      width: 94vw;
      margin-left: -2vw;
      padding: 1.5rem 1.5rem 2rem !important;
    }
    .project_detail-main .grid,
    .project_detail-sub {
      display: flex;
      flex-direction: column;
      gap: 1rem;
    }
  
    .project_detail-main .img_area {
      .slider {
        margin-bottom: 0;
        .slick-slider {
          margin-bottom: .5rem;
        }
        .slick-dots {
          gap: .25rem;
          li {
            border-radius: .125rem;
            border-width: 2px;
          }
        }
      }
    }
  
    .project_detail-main .cta_area {
      .name {
        padding-top: 0;
        margin-bottom: .5rem;
        font-size: 1.5rem;
      }
  
      .price {
        margin-bottom: .75rem;
        font-size: 1.125rem;
        .num {
          font-size: 2.25rem;
        }
        .yen {
          font-size: 1.125rem;
        }
      }
  
      .bar {
        height: 2rem;
        padding-left: 1rem;
        font-size: 1.125rem;
      }
  
      .countdown {
        .days_left {
          font-size: 1rem;
        }
      }
  
      .share_area {
        width: 240px;
        margin-top: 1.5rem;
        margin-left: auto;
        margin-right: auto;
      }
    }
    .share_area {
      gap: 8px;
    }
  }

  /* --- project_detail-sub --- */
  .project_detail-sub {
    padding: 1rem 4rem 0;
  }
  .project_detail-sub .txt_area {
    h2, h3, h4, h5, h6 {
      margin-bottom: .5em;
      line-height: 1.5;
    }
    h2 {
      color: var(--primary-default);
    }
    * + h2, * + h3, * + h4, * + h5, * + h6 {
      margin-top: 1.5em;
    }
    p,
    ul,
    img {
      margin-bottom: 1.5rem;
    }
  }

  .project_detail-sub .about_area {
    .box {
      padding: 2.5rem;

      .logo {
        display: flex;
        justify-content: center;
        align-items: center;
        max-width: 14rem;
        margin-left: auto;
        margin-right: auto;
      }
      .txt {
        font-size: 1rem;
        line-height: 1.7;
      }
    }
  }
  .link_list {
    display: grid;
    grid-template-columns: 1rem 1fr;
    gap: .75rem;
    align-items: center;
    .url a {
      overflow: hidden;
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 1;
      font-size: .75rem; /* 12px */
      color: var(--secondary-dark);
    }
  }
  @media screen and (max-width: 767px) {
    .project_detail-sub {
      padding: .5rem 0 0;
    }
    
    .project_detail-sub .about_area {
      .box {
        margin-top: 1rem;
        padding: 2rem;
      }
      .logo {
        max-width: 10.5rem;
      }
    }
    .link_list {
      grid-template-columns: 1.25rem 1fr;
      .url a {
        font-size: .857rem; /* 12px */
      }
      + .link_list {
        margin-top: .5rem;
      }
    }
  }

  /* --- project_detail-pickup --- */
  @media screen and (max-width: 767px) {
    .project_detail-pickup .item_list .item:nth-child(3) {
      display: none;
    }
  }

  /* --- project_detail-cta --- */
  @media screen and (max-width: 767px) {
    #page_product_detail .project_list-cta {
      width: 90%;
      margin-left: auto;
      margin-right: auto;

      .txt {
        width: 85%;
        margin-left: auto;
        margin-right: auto;
      }
    }
  }


/* ##############################################################################

    SUBPAGE

############################################################################## */

/* .box
*************************************************** */
  .box {
    position: relative;
    z-index: 10;
    padding: 1.5rem;
    background-color: #fff;
    border-radius: 1rem;
    font-size: 1.125rem; /* 18px */
    line-height: 1.7;
    &:not([class*=mgn-btm]) {
      margin-bottom: 3em;
    }
  }
  .box_fukidashi::before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    margin: auto;
    width: 1.5rem;
    height:fit-content;
    aspect-ratio: 1 / 1;
    background-color: #fff;
    transform: translateY(50%) rotate(45deg);
  }

  @media screen and (max-width: 767px) {
    .box {
      padding: 1rem;
      margin-bottom: 2em;
      border-radius: .75rem;
      font-size: .857rem; /* 12px */
      line-height: 1.5;
    }
    .box_fukidashi::before {
      width: 1rem;
    }
  }

/* .list
*************************************************** */
  /* --- list --- */
  .list li,
  .project_detail-sub .txt_area li {
    position: relative;
    padding-left: 1.25em;
    font-size: 1.125rem; /* 18px */
    line-height: 1.5;
    &:not(:last-child) {
      margin-bottom: .4em;
    }
    &::before {
      content: "";
      position: absolute;
      top: .5em;
      left: 0;
      display: block;
      width: .625em;
      height:fit-content;
      aspect-ratio: 1 / 1;
      border-radius: 50%;
      background-color: var(--primary-default);
    }
  }

  /* --- list-check --- */
  .list-check li {
    position: relative;
    padding-left: 2.25rem;
    font-size: 1.125rem; /* 18px */
    &:not(:last-child) {
      margin-bottom: .5em;
    }
    &::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 1.75rem; /* 28px */
      height:fit-content;
      aspect-ratio: 1 / 1;
      background-image: url(../images/common/list-check.svg);
      background-size: contain;
      background-repeat: no-repeat;
    }
  }

  /* --- list-flow --- */
  .list-flow {
    display: flex;
    justify-content: center;
    gap: 3.5rem;
    padding-top: 2.5rem;
    
    li {
      position: relative;
      width: 22.5rem;
      padding: 2.5rem 2rem 2rem;
      border-radius: 1rem;
      background-color: #fff;
      counter-increment: number;
      text-align: center;
      &::before {   
        content: counter(number, decimal-leading-zero);
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        margin: auto;
        display: flex;
        align-items: center;
        justify-content: center;
        width: 5rem;
        height:fit-content;
        aspect-ratio: 1 / 1;
        color: var(--primary-default);
        font-size: 2rem; /* 32px */
        letter-spacing: 1px;
        background-color: #fff;
        border-radius: 50%;
        transform: translateY(-50%);
      }
      &:not(:last-child)::after {
        content: "";
        position: absolute;
        top: 50%;
        right: 0;
        margin: auto;
        display: block;
        width: 3.5rem;
        height:fit-content;
        aspect-ratio: 56 / 32;
        background-color: #fff;
        transform: translateX(100%) translateY(-50%);
      }

      .ttl {
        font-size: 1.5rem; /* 24px */
        margin-bottom: .5rem;
        color: var(--primary-default);
      }

      .txt {
        font-size: 1.125rem; /* 18px */
        line-height: 1.7;
      }
    }
  }
  @media screen and (max-width: 767px) {
    /* --- list --- */
    .list li {
      font-size: 1rem;
    }

    /* --- list-flow --- */
    .list-flow {
      gap: .5rem;
      padding-top: 2.5rem;
      
      li {
        padding: 1.75rem 0 1rem;
        border-radius: .5rem;
        &::before {   
          width: 3.5rem;
          font-size: 1.25em;
        }
        &:not(:last-child)::after {
          width: 2rem;
        }
  
        .ttl {
          font-size: 1rem;
          margin-bottom: 0;
        }
  
        .txt {
          display: none;
        }
      }
    }
  }

/* table
**************************************** */
  /* --- table-01 --- */
  .table-01 {
    width: 100%;
    border: 1px solid var(--clr-gy);
    background-color: #fff;
  }
  .table-01 th,
  .table-01 td {
    padding: 1em 1.5em;
    letter-spacing: normal;
    line-height: 1.6;
    border: 1px solid var(--clr-gy);
    vertical-align: middle;
  }
  .table-01 th {
    background-image: url(../images/common/ptn-bg.jpg);
    letter-spacing: .1em;
  }

  /* --- table-02 --- */
  .table-02 th,
  .table-02 td {
    position: relative;
    border: 0;
    padding: 1em 1.5em;
    vertical-align: middle;
  }
  .table-02 th::before,
  .table-02 td::before {
    content: '';
    position: absolute;
    bottom: 0;
    width: calc(100% - .1875rem);
  }
  .table-02 th {
    color: var(--clr-br);
    white-space: nowrap;
  }
  .table-02 th::before {
    left: 0;
    height: 1px;
    background-color: var(--clr-yl);
  }
  .table-02 td::before {
    right: 0;
    height: 1px;
    background-color: var(--clr-gy);
  }

  @media screen and (max-width: 767px) {
    .table-02 {
      font-size: .929rem; /* 13px */
    }
    .table-02 th,
    .table-02 td {
      padding: 1em 1em;
    }

    .sp-scroll {
      overflow-x: scroll;
      margin-bottom: 1em;
      -webkit-overflow-scrolling: touch;
    }
    .table-sp-scroll {
      width: 60rem;
    }
  }

/* img_txt
**************************************** */
  .img_txt {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 3rem;
    align-items: center;
    
    .img {
      border-radius: 1rem;
    }

    .ttl-02 {
      margin-bottom: 1.5rem;
      text-align: left;
      line-height: 1.3;
      letter-spacing: .04em;
    }

    .txt {
      font-size: 1.125rem; /* 18px */
      line-height: 1.7;
    }
  }
  .img_txt + .img_txt {
    margin-top: 3rem;
  }

  @media screen and (max-width: 767px) {
  }