@charset "UTF-8";
@import url("https://fonts.googleapis.com/css2?family=BIZ+UDGothic&family=M+PLUS+1p:wght@400;500&family=Montserrat:ital,wght@0,100..900;1,100..900&family=Noto+Sans+JP:wght@100..900&family=Shippori+Mincho&display=swap");

/*================================================================
# 変数
================================================================*/
/* フォント
=================================*/
:root {
  --font-ja-mincho-default: "Shippori Mincho", serif;
  --font-ja-gothic-default: "Noto Sans JP", sans-serif;
  --font-ja-gothic-priority: "BIZ UDGothic", sans-serif;
  --font-en-gothic-default: "ads-akari", sans-serif;
  --font-en-gothic-priority: "Montserrat", sans-serif;
}

/* フォントサイズ
=================================*/
:root {
  --fs-136: clamp(54px, 8vw, 136px);
  --fs-57: clamp(30px, 4.8vw, 57px);
  --fs-42: clamp(26px, 3.5vw, 42px);
  --fs-34: clamp(22px, 2.5vw, 34px);
  --fs-28: clamp(20px, 2vw, 28px);
  --fs-27: clamp(19px, 1.9vw, 27px);
  --fs-24: clamp(17px, 1.6vw, 24px);
  --fs-23: clamp(16px, 1.5vw, 23px);
  --fs-21: clamp(16px, 1.3vw, 21px);
  --fs-20: clamp(16px, 1.3vw, 20px);
  --fs-19: clamp(15px, 1.2vw, 19px);
  --fs-18: clamp(15px, 1.2vw, 18px);
  --fs-17: clamp(15px, 1.1vw, 17px);
  --fs-16: clamp(14px, 1vw, 16px);
  --fs-15: clamp(14px, 0.9vw, 15px);
  --fs-14: clamp(13px, 0.8vw, 14px);
  --fs-13: clamp(13px, 0.8vw, 13px);
}

/* カラー
=================================*/
:root {
  /* Brand Greens */
  --color-green-main: #7bc415;
  --color-green-deep: #2a6b4b;
  --color-green-leaf: #5ca756;
  --color-green-fresh: #8bc13f;
  --color-green-botanical: #478832;
  --color-green-accent: #00913a;
  --color-green-rich: #288b20;
  --color-green-spring: #c7e69c;

  /* Backgrounds / Base tones */
  --color-bg-cream: #fcfbfa;
  --color-bg-organic: #f6f3f0;
  --color-bg-leaf-mist: #d9e5d4;
  --color-bg-lightfog: #eff4ed;

  /* Text */
  --color-text-main: #606060;
  --color-text-sub: #b2b2b2;

  /* White / Black */
  --color-white: #fff;
  --color-black: #000;
}

/* レイアウト
=================================*/
:root {
  --container: min(100%, 1190px); /* contentSize */
  --container-wide: min(100%, 1400px); /* wideSize */
  --container-full: min(100%, 1750px); /* 最大幅 */
}

/* 余白
=================================*/
:root {
  --space-10: clamp(6px, 0.7vw, 10px);
  --space-12: clamp(7px, 0.9vw, 12px);
  --space-14: clamp(8px, 1vw, 14px);
  --space-16: clamp(9px, 1.2vw, 16px);
  --space-18: clamp(10px, 1.4vw, 18px);
  --space-20: clamp(12px, 1.5vw, 20px);
  --space-24: clamp(14px, 1.7vw, 24px);
  --space-30: clamp(18px, 2vw, 30px);
  --space-35: clamp(20px, 2.3vw, 35px);
  --space-40: clamp(24px, 2.6vw, 40px);
  --space-50: clamp(28px, 3.5vw, 50px);
  --space-60: clamp(32px, 4.4vw, 60px);
  --space-70: clamp(36px, 4.8vw, 70px);
  --space-80: clamp(42px, 5.4vw, 80px);
  --space-90: clamp(48px, 6vw, 90px);
  --space-100: clamp(52px, 6.2vw, 100px);
  --space-130: clamp(68px, 7vw, 130px);
  --space-150: clamp(78px, 8vw, 150px);
  --space-200: clamp(96px, 11vw, 200px);
  --space-250: clamp(116px, 14vw, 250px);
  --space-300: clamp(140px, 16vw, 300px);
  --space-400: clamp(180px, 22vw, 400px);
}

/*================================================================
# 表示・非表示
================================================================*/
@media (min-width: 1254px) {
  .is_tab {
    display: none;
  }

  .is_sp {
    display: none;
  }

  .is_tab-sp {
    display: none;
  }
}

@media (min-width: 768px) and (max-width: 1253px) {
  .is_pc {
    display: none;
  }

  .is_sp {
    display: none;
  }
}

@media (max-width: 767px) {
  .is_pc {
    display: none;
  }

  .is_tab {
    display: none;
  }

  .is_pc-tab {
    display: none;
  }
}

/* svg画像 検索エンジン用 */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/*================================================================
# 基本設定　~　共通クラス
================================================================*/
html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-ja-gothic-default);
  font-size: 100%;
  line-height: 1.8;
  color: var(--color-text-main);
  background-color: var(--color-bg-cream);
  position: relative;
}

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

a:hover,
a:active {
  opacity: 0.5;
}

/* 共通クラス */

/* BUTTON
==================================*/
.btn {
  width: 324px;
  min-width: 150px;
  font-size: var(--fs-21);
  letter-spacing: 0.14em;
  padding: calc(22px - 2px) calc(60px - 2px);
  display: inline-block;
  border-radius: 10px;
  border: 2px solid var(--color-pale-gray);
  background: var(--color-bg-lightfog);
  color: var(--color-green-deep);
  transition: background-color 0.3s, color 0.3s;
  position: relative;

  @media (max-width: 767px) {
    width: 250px;
    padding: calc(20px - 2px) calc(36px - 2px);
  }

  &::before {
    content: "";
    position: absolute;
    background: url(../img/arrow_green.webp) no-repeat center / contain;
    top: 50%;
    right: 30px;
    transform: translateY(-50%);
    width: 51px;
    height: 51px;
    border-radius: 50%;

    @media (max-width: 767px) {
      width: 30px;
      height: 30px;
      right: 20px;
    }
  }
}

.btn__text {
  font-size: var(--fs-21);
  font-weight: 500;
}

/* =========================================================
   Fade-in（ぼかし＋スライド）
========================================================= */
.js-fade {
  -webkit-filter: blur(4px);
  filter: blur(4px);
  opacity: 0;
  -webkit-transform: translateY(5px);
  transform: translateY(5px);
  -webkit-transition: opacity ease-in 0.5s, -webkit-filter ease-out 0.7s, -webkit-transform cubic-bezier(0.33, 1, 0.68, 1) 1.1s;
  transition: opacity ease-in 0.5s, filter ease-out 0.7s, transform cubic-bezier(0.33, 1, 0.68, 1) 1.1s;
}

.js-scroll-in {
  opacity: 1;
  -webkit-filter: blur(0);
  filter: blur(0);
  -webkit-transform: translateY(0);
  transform: translateY(0);
}

/* =========================================================
   Zoom Fade（縮小しながらフェード）
========================================================= */
.js-zoom-fade {
  opacity: 0;
  transform: scale(1.1);
  transition: opacity 1s ease, transform 2s cubic-bezier(0.22, 1, 0.36, 1);
  display: block;
  width: 100%;
}

.is-zoom-show {
  opacity: 1;
  transform: scale(1);
}

/* =========================================================
   横スクロール
========================================================= */
/* before の影を消す */
.scroll-hint-shadow-wrap::before {
  background: none !important;
}

/* after の影も消す（矢印は残す） */
.scroll-hint-shadow-wrap::after {
  background: none !important;
}

/* SECTION HEADLINE
==================================*/
.section__headline {
  font-family: var(--font-en-gothic-default);
  font-size: var(--fs-136);
  font-weight: 500;
  color: var(--color-black);
  line-height: 1;
  margin-top: -0.15em;
  margin-bottom: -0.1em;

  @media (max-width: 767px) {
    text-align: center;
  }
}

.section__subheadline {
  font-size: var(--fs-28);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 1.6;
  margin-top: 25px;

  @media (max-width: 767px) {
    margin-top: 15px;
  }
}

.section__subtitle {
  font-family: var(--font-ja-gothic-priority);
  font-size: var(--fs-34);
  font-weight: 500;
  letter-spacing: 0.14em;
  line-height: 1.7;
}

/* SECTION TEXT
==================================*/
.section__text {
  font-size: var(--fs-16);
  font-weight: 500;
  letter-spacing: 0.1em;
  line-height: 2;
}

/*================================================================
# HEADER
================================================================*/
.header {
  width: 100%;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 100;
}

.header__inner {
  width: min(100% - 2rem, 1600px);
  margin-inline: auto;
  margin-top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative; /* ハンバーガーの基準に */

  @media (max-width: 959px) {
    width: 100%;
    justify-content: space-between;
    align-items: flex-start;
  }
}

.header__logo {
  width: min(22.5%, 290px);
  background-color: var(--color-bg-cream);
  padding: var(--space-30) var(--space-40);
  margin-right: var(--space-30);
  border-radius: 0 0 40px 0;

  @media (max-width: 959px) {
    width: min(40%, 124px);
    padding: 18px;
    border-radius: 0 30px 30px 30px;
  }
}

.header__logo-primary {
  background-color: var(--color-green-leaf);
}

.header__logo.header__logo--scroll {
  width: 160px;
  max-width: 100%;
  top: 8px;
  left: -5px;
  -webkit-transition: all 0.3s ease 0s;
  transition: all 0.3s ease 0s;
  padding: 1.1%;
  border-radius: 30px;

  @media (max-width: 959px) {
    width: 95px;
    padding: 10px 12px;
    border-radius: 14px;
    border-radius: 0 30px 30px 30px;
  }
}

/*================================================================
# ナビメニュー
================================================================*/
.header__nav {
  order: 2;
  z-index: 45;
  display: flex;
  align-items: center;
  justify-content: center;
}

.header__nav-list {
  width: min(100%, 940px);
  display: flex;
  justify-content: center;
  gap: var(--space-40);
  list-style: none;
  padding: var(--space-20) var(--space-70);
  background-color: var(--color-bg-lightfog);
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
  border-radius: 50px;

  @media (max-width: 959px) {
    gap: 20px;
  }
}

.header__nav-item a {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-decoration: none;
}

.header__nav-item .en {
  font-family: var(--font-en-gothic-default);
  font-size: 12px;
  font-weight: 300;
  color: var(--color-green-main);
}

.header__nav-item .jp {
  font-size: clamp(15px, calc(4.09090909090909px + 1.1363636363636365vw), 20px);
  font-weight: 500;
  color: var(--color-green-deep);
  letter-spacing: 0.14em;
  line-height: 1.4;
  margin-top: -3px;
}

.header__nav-icon {
  width: min(21%, 280px);
  display: flex;
  margin-left: clamp(10px, calc(-2.1518987341772142px + 1.2658227848101267vw), 20px);
  gap: -5px;
}

.header__nav-icon a + a {
  margin-left: -8px;
  display: block;

  @media (max-width: 767px) {
    margin-left: 0;
  }
}

.header__nav-icon a {
  width: min(100%, 156px);
}

/* ナビメニューの開閉用 */
.header__nav.open {
  right: 0;
}

.header__nav-logo {
  display: none;

  @media (max-width: 959px) {
    display: block;
    width: min(70%, 120px);
    margin-inline: auto;
    padding: var(--space-35) 0;
    text-align: center;
  }
}

.header__nav-logo-text {
  font-size: var(--fs-15);
  letter-spacing: 0.1em;
  text-align: center;
}

/*================================================================
# ハンバーガーボタン
================================================================*/
.header__hamburger {
  display: none;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background-color: var(--color-green-rich);
  margin: 10px 10px 0 0;
  position: relative;
  border: none;
  cursor: pointer;
  z-index: 200;
}

/* 3本線の共通形状 */
.header__hamburger span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 55%;
  height: 2px;
  background: var(--color-bg-cream);
  transform: translate(-50%, -50%);
  transition: 0.3s ease;
}

/* 上下の線は span を基準にずらす */
.header__hamburger span::before,
.header__hamburger span::after {
  content: "";
  position: absolute;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--color-bg-cream);
  transition: 0.3s ease;
}

.header__hamburger span::before {
  top: -10px;
}

.header__hamburger span::after {
  top: 10px;
}

/* 開いたとき → × に変形 */
.header__hamburger.open span {
  background: transparent;
}

.header__hamburger.open span::before {
  top: 0;
  transform: rotate(45deg);
}

.header__hamburger.open span::after {
  top: 0;
  transform: rotate(-45deg);
}

/*================================================================
# スマホ対応
================================================================*/
@media (max-width: 959px) {
  .header__hamburger {
    display: block;
  }

  .header__nav {
    position: fixed;
    top: 0;
    right: -100%;
    width: 80%;
    height: 100vh;
    background-color: var(--color-bg-cream);
    padding: 40px 20px;
    flex-direction: column;
    justify-content: flex-start;
    transition: 0.5s;
    z-index: 150;
  }

  .header__nav.open {
    right: 0;
  }

  .header__nav-list {
    flex-direction: column;
    padding: var(--space-70);
    border-radius: 30px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
  }

  .header__nav-icon {
    width: min(70%, 200px);
    justify-content: center;
    margin-top: 15px;
  }

  .header__overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: 120;
  }

  .header__overlay.open {
    display: block;
  }
}

/*================================================================
# FIRST VIEW - Video
================================================================*/
.firstview-video {
  position: relative;
  width: min(100% - 2rem, 1600px);
  margin-inline: auto;
  padding-top: var(--space-30);
  aspect-ratio: 1400 / 796;
  overflow: hidden;

  @media (max-width: 767px) {
    aspect-ratio: 353 / 588;
  }

  video {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
    display: block;
    border-radius: 30px;
  }
}

.firstview-video__text {
  position: absolute;
  bottom: 8%;
  left: 5%;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.firstview-video__text span {
  display: inline-block;
  padding: 0.5em 1em;
  color: var(--color-text-main);
  background-color: var(--color-white);
  border-radius: 9.6px 9.6px 0 0;
  margin-bottom: 10px;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: var(--color-green-main);
    width: 100%;
    height: 1px;
    bottom: 8px;
    left: 0;
  }
}

.firstview-video__text {
  font-family: var(--font-ja-gothic-priority);
  font-size: clamp( 19px, calc( 13.807692307692307px + 1.4423076923076923vw ), 34px );
  font-weight: 500;
  letter-spacing: 0.14em;
  line-height: 1.7;
}

/*================================================================
# FOOTER
================================================================*/
.footer {
  background-color: var(--color-bg-lightfog);
  padding: var(--space-130) 0 var(--space-200);
  position: relative;

  &::after {
    position: absolute;
    content: "";
    background: var(--color-green-rich);
    width: 100%;
    height: 16px;
    bottom: 0;
    left: 0;
  }
}

.footer__inner {
  width: min(100% - 8rem, var(--container-wide));
  margin-inline: auto;

  @media (max-width: 1000px) {
    width: min(100% - 4rem, var(--container-wide));
  }

  @media (max-width: 767px) {
    width: min(100% - 3rem, var(--container-wide));
  }
}

.footer__content {
  display: flex;
  gap: var(--space-50);
}

/* 会社情報ブロック */
.footer__info {
  display: flex;
  align-items: flex-start;
  gap: var(--space-80);
  margin-bottom: var(--space-30);
  padding-bottom: 45px;
  border-bottom: 1px solid var(--color-green-rich);

  @media (max-width: 767px) {
    flex-direction: column;
  }
}

.footer__logo {
  width: min(155%, 171px);

  @media (max-width: 767px) {
    width: min(80%, 171px);
    margin-inline: auto;
  }
}

.footer__access {
  width: min(33%, 340px);

  @media (max-width: 767px) {
    width: min(80%, 300px);
    margin-inline: auto;
  }
}

.footer__access img {
  width: 90%;
  margin-inline: auto;

  @media (max-width: 767px) {
    width: 100%;
  }
}

.footer__address {
  margin-top: var(--space-35);
  font-size: var(--fs-18);
  font-weight: 500;
  letter-spacing: 0.14em;
  line-height: 1.66;

  @media (max-width: 767px) {
    width: min(100%, 300px);
  }
}

.footer__map a {
  display: block;
  font-family: var(--font-en-gothic-default);
  font-size: 14px;
  color: var(--color-green-main);
  padding-left: 1.5em;
  margin-top: 15px;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/icon_map.webp) no-repeat center / contain;
    width: 10px;
    height: 13px;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
  }
}

.footer__instagram {
  width: 28px;
  margin-left: auto;
  margin-right: 4rem;

  @media (max-width: 767px) {
    margin-right: 0em;
  }
}

.footer__info-list {
  font-size: var(--fs-16);
  font-weight: 500;
  letter-spacing: 0.14em;
  line-height: 1.87;
  margin-top: clamp(50px, calc(1.392405063291136px + 6.329113924050633vw), 90px);
  display: flex;
  flex-direction: column;
  gap: 5px;

  @media (max-width: 767px) {
    width: min(80%, 300px);
    margin-top: 0;
    margin-inline: auto;
  }
}

/* ナビ */
.footer__nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(30px, calc(-55.063291139240505px + 11.075949367088606vw), 100px);
}

.footer__nav-list {
  display: flex;
  gap: var(--space-40);
  text-align: center;

  @media (max-width: 767px) {
    display: none;
  }
}

.footer__nav-list .en {
  font-family: var(--font-en-gothic-default);
  font-size: clamp(11px, calc(6.139240506329114px + 0.6329113924050633vw), 15px);
  color: var(--color-green-main);
  text-align: center;
}

.footer__nav-list .jp {
  font-size: clamp(14px, calc(3.0632911392405067px + 1.4240506329113924vw), 23px);
  font-weight: 500;
  color: var(--color-green-deep);
  letter-spacing: 0.14em;
  display: block;
}

.footer__icons {
  width: min(20%, 280px);
  display: flex;
  gap: 11px;

  @media (max-width: 767px) {
    width: min(75%, 250px);
    margin-inline: auto;
  }
}

/* footer コピーライト
================================================================*/
.footer__copyright {
  font-size: clamp(10px, calc(9.538461538461538px + 0.1282051282051282vw), 12px);
  text-align: center;
  padding-bottom: 15px;
}

/* フッター内ラップ用 */
.footer__copyright-wrap {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

/*================================================================

#### top-page -tp

=================================================================*/

/*================================================================
# CONCEPT-CTA
================================================================*/
.concept-cta {
  padding: clamp(40px, calc(-21.78217821782178px + 15.841584158415841vw), 200px) 0 clamp( 96px, calc( 76.83453237410072px + 5.323741007194244vw ), 170px );
}

.concept-cta__inner {
  width: min(100% - 4rem, 1235px);
  margin-inline: auto;
  display: flex;
  align-items: flex-start;
  gap: var(--space-60);

  @media (max-width: 959px) {
    gap: 50px;
  }

  @media (max-width: 767px) {
    flex-direction: column;
  }
}

.concept-cta__img {
  width: min(39%, 559px);

  @media (max-width: 1100px) {
    width: min(43%, 559px);
  }

  @media (max-width: 767px) {
    width: 95%;
    margin-inline: auto;
    order: 1;
  }
}

.concept-cta__body {
  display: flex;
  justify-content: center;
  flex-direction: column;
  width: min(48%, 679px);

  @media (max-width: 767px) {
    width: 100%;
    order: 2;
  }
}

.concept-cta__subtitle {
  margin-top: var(--space-100);
}

.concept-cta__content {
  width: 85%;
  display: flex;
  flex-direction: column;
  gap: var(--space-50);
  margin-right: auto;
  /* padding-top: clamp(52px, calc(23.811881188118814px + 7.227722772277227vw), 125px); */

  @media (max-width: 959px) {
    width: 100%;
  }
}

.concept__btn {
  max-width: 100%;
  margin-inline: auto;

  @media (max-width: 767px) {
    margin-top: 20px;
  }
}

/*================================================================
# SNS
================================================================*/
.sns-cta {
  background-color: #bee692;
  padding-bottom: var(--space-130);

  @media (max-width: 767px) {
    margin-top: 0;
  }
}

.sns-cta__inner {
  width: min(100% - 4rem, var(--container));
  margin-inline: auto;
  margin-top: calc(-1 * var(--space-20));
  text-align: center;
}

.sns-cta__head {
  text-align: center;
}

.sns-cta__headline {
  color: var(--color-green-rich);
}

.sns-cta__headline-sub {
  color: var(--color-white);
}

/* Instagram投稿リスト全体 */
.sns__contents {
  width: min(100%, 1177px);
  margin-inline: auto;
  padding: var(--space-100) 0 var(--space-150);
}

.sns__cards {
  display: flex;
  gap: var(--space-40);
}

.sns__card {
  display: block;
  flex: 1;
  border-radius: 10px;
  overflow: hidden;
  background: var(--color-white);
  transition: box-shadow 0.3s ease;
}

.sns__card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.sns__img {
  width: 100%;
  aspect-ratio: 356 / 315;
}

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

.sns__content {
  padding: 14px 16px 24px;
}

.sns__meta {
  font-size: 12px;
  color: var(--color-text-main);
}

.sns__caption {
  font-size: 14px;
  color: var(--color-text-main);
  line-height: 1.5;
  margin-top: 12px;
  padding-top: 12px;
  height: 6.8em;
  border-top: 1px solid var(--color-text-main);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
}

@media (max-width: 767px) {
  .sns__cards {
    grid-template-columns: 1fr;
  }
}

.sns-cta__btn {
  width: min(100%, 420px);
  margin-inline: auto;
  display: inline-block;
  background-color: var(--color-white);
  border-radius: 50px;
  padding: var(--space-30) var(--space-40);
}
.sns-cta__text {
  font-family: var(--font-en-gothic-priority);
  font-size: clamp(18px, calc(16.279411764705884px + 0.4411764705882353vw), 24px);
  font-weight: 500;
  letter-spacing: 0.16em;
  padding: 0 2em 0 2.5em;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/icon_instagram-Green.webp) no-repeat center/ contain;
    width: clamp( 25px, calc( 20.662650602409638px + 1.2048192771084338vw ), 35px );
    aspect-ratio: 1 / 1;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
  }

  &::after {
    position: absolute;
    content: "";
    background: url(../img/arrow_link-right.webp) no-repeat center / contain;
    width: clamp(7px, calc(6.227722772277228px + 0.19801980198019803vw), 9px);
    height: 100%;
    top: 55%;
    right: 0;
    transform: translateY(-50%);

    @media (max-width: 767px) {
      top: 56%;
    }
  }
}

/*================================================================
# PRODUCTS-CTA
================================================================*/
.products-cta {
  padding: var(--space-150) 0;
}

.products-cta__inner {
  width: min(100% - 4rem, var(--container-wide));
  margin-inline: auto;
}

.products-cta__head {
  text-align: center;
}

.products-cta__headline-sub {
  color: var(--color-green-main);
}

.products-cta__content {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-100);
  padding: var(--space-90) 0;

  @media (max-width: 767px) {
    flex-direction: column;
    gap: 70px;
  }
}

.products-cta__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-50);
  width: min(50%, 470px);

  @media (max-width: 767px) {
    width: 100%;
    order: 2;
  }
}

.products-cta__links {
  @media (max-width: 767px) {
    margin-top: var(--space-60);
  }
}

.products-cta__link {
  display: block;
  border-top: 1px solid var(--color-text-sub);
}

.products-cta__link + .products-cta__link {
  border-bottom: 1px solid var(--color-text-sub);
}

.products-cta__link a {
  display: block;
  padding: 40px var(--space-50);
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/arrow_lightGreen.webp) no-repeat center/ contain;
    width: clamp( 41px, calc( 37.53846153846154px + 0.9615384615384616vw ), 51px );
    aspect-ratio: 1 / 1;
    top: 50%;
    right: 22px;
    transform: translateY(-50%);
  }
}

.products-cta__link-text {
  font-size: var(--fs-21);
  font-weight: 500;
  letter-spacing: 0.14em;
}

.products-cta__img {
  width: min(50%, 672px);

  @media (max-width: 767px) {
    width: 95%;
    order: 1;
  }
}

/*================================================================
# ABOUT-CTA
================================================================*/
.about-cta {
  background: url(../img/bg_about-cta.webp) no-repeat top center / cover;
  padding: clamp(64px, calc(10px + 15vw), 220px) 0 clamp(92px, calc(42.49999999999999px + 13.750000000000002vw), 235px);

  @media (max-width: 767px) {
    background: url(../img/sp/bg_about-cta.webp) no-repeat top center / cover;
  }
}

.about-cta_inner {
  width: min(100% - 4rem, 1440px);
  margin-inline: auto;
  display: flex;
  align-items: stretch;

  @media (max-width: 767px) {
    display: flex;
    flex-direction: column;
  }
}

.about-cta__body {
  width: min(50%, 666px);
  display: flex;
  flex-direction: column;
  gap: var(--space-100);

  @media (max-width: 767px) {
    display: contents;
  }
}

.about-cta__headline {
  @media (max-width: 767px) {
    width: min(90%, 290px);
    margin-right: auto;
    order: 1;
  }
}

.about-cta__content {
  width: min(100%, 400px);
  margin-inline: auto;
  background-color: var(--color-white);
  padding: var(--space-60) var(--space-40);

  @media (max-width: 767px) {
    width: 100%;
    order: 3;
  }
}

.about-cta__btn {
  margin-top: var(--space-60);
  width: 100%;
}

.about-cta__images {
  width: min(58.8%, 824px);
  height: auto;
  position: relative;

  @media (max-width: 767px) {
    width: 100%;
    height: auto;
    margin: 50px 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(20px, calc(-0.6896551724137936px + 5.305039787798409vw), 40px);
    order: 2;
  }
}

.about-cta__leaf01,
.about-cta__leaf02,
.about-cta__leaf03 {
  position: absolute;

  @media (max-width: 767px) {
    width: clamp(150px, 45vw, 260px);
    position: static;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    margin: 0 auto;
  }
}

.about-cta__leaf01 {
  width: clamp(148px, calc(13.142857142857167px + 17.559523809523807vw), 266px);
  aspect-ratio: 286 / 328;
  top: 100px;
  left: 130px;

  @media (max-width: 767px) {
    transform: translateX(-51%);
  }
}

.about-cta__leaf02 {
  width: clamp(168px, calc(-6.857142857142861px + 22.767857142857142vw), 321px);
  aspect-ratio: 341 / 282;
  top: 50%;
  right: 0;

  @media (max-width: 767px) {
    transform: translateX(48%);
    margin-top: -30px;
  }
}

.about-cta__leaf03 {
  width: clamp(146px, calc(12.285714285714278px + 17.410714285714285vw), 263px);
  aspect-ratio: 283 / 358;
  bottom: -17px;
  left: 9%;

  @media (max-width: 767px) {
    transform: translateX(-48%);
  }
}

.about-cta__leaf01 span,
.about-cta__leaf02 span,
.about-cta__leaf03 span {
  display: block;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    z-index: 1;
  }
}

.about-cta__leaf01-img {
  &::before {
    background: url(../img/about-cta_leaf-text01.webp) no-repeat center / contain;
    width: 83%;
    aspect-ratio: 238 / 86;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
}

.about-cta__leaf02-img {
  &::before {
    background: url(../img/about-cta_leaf-text02.webp) no-repeat center / contain;
    width: 93%;
    aspect-ratio: 316 / 85;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
}

.about-cta__leaf03-img {
  &::before {
    background: url(../img/about-cta_leaf-text03.webp) no-repeat center / contain;
    width: 139%;
    aspect-ratio: 398 / 85;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
}

/* ----------------------------------------------
 * ゆらゆら揺れる（上下 + 3D）
 * ---------------------------------------------- */
@keyframes leafFloat3D {
  0% {
    transform: rotate(0deg) rotateY(0deg) translateY(0);
  }
  25% {
    transform: rotate(8deg) rotateY(8deg) translateY(-10px);
  }
  50% {
    transform: rotate(-12deg) rotateY(-6deg) translateY(6px);
  }
  75% {
    transform: rotate(7deg) rotateY(5deg) translateY(-8px);
  }
  100% {
    transform: rotate(0deg) rotateY(0deg) translateY(0);
  }
}

/* 画像（葉っぱ）だけ揺れるようにする */
.about-cta__leaf01-img img {
  animation: leafFloat3D 4s ease-in-out infinite;
}
.about-cta__leaf02-img img {
  animation: leafFloat3D 3.4s ease-in-out infinite;
}
.about-cta__leaf03-img img {
  animation: leafFloat3D 3s ease-in-out infinite;
}

/* テキスト画像は ::before にあるので、基準（span）には何もアニメーションを適用しない */
.about-cta__image span {
  display: block;
  transform-origin: center center;
}

/*================================================================
# SERVICE
================================================================*/
.service {
  background-color: var(--color-bg-lightfog);
  overflow: hidden;
}

.service__inner {
  width: var(--container-full);
  margin-inline: auto;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/service_deco-left.webp) no-repeat top/ contain;
    width: 21%;
    aspect-ratio: 356 / 2592;
    top: 0;
    left: -7%;
    z-index: 0;
  }

  &::after {
    position: absolute;
    content: "";
    background: url(../img/service_deco-right.webp) no-repeat top/ contain;
    width: 22%;
    aspect-ratio: 539 / 2897;
    top: 0;
    right: -4%;
    z-index: 0;
  }

  @media (max-width: 767px) {
    &::before {
      background: url(../img/sp/service_deco-left.webp) no-repeat top/ contain;
      width: 38%;
      aspect-ratio: 129 / 2247;
      top: 6%;
      left: -20%;
    }

    &::after {
      background: url(../img/sp/service_deco-right.webp) no-repeat top/ contain;
      width: 58%;
      aspect-ratio: 140 / 1068;
      right: -19%;
      top: 8.2%;
    }
  }
}

/* 背景（スライダー） */
.service__slider .swiper-wrapper {
  display: flex;
  gap: var(--space-18);
  transition-timing-function: linear;
}

.service__slider .swiper-slide {
  flex-shrink: 0; /* Swiperがスライドを縮めないように */
  width: 315px; /* 固定幅指定で slidesPerView: 'auto' に対応 */

  @media (max-width: 767px) {
    width: 261px;
  }

  img {
    width: 100%; /* 親のswiper-slideにフィットさせる */
    height: auto; /* アスペクト比維持 */
    display: block; /* 不要な隙間を防止 */
  }
}

/* コンテンツ */
.service__content {
  padding: clamp(128px, calc(96.15384615384616px + 8.846153846153847vw), 220px) 0 clamp(25px, calc(12.884615384615385px + 3.3653846153846154vw), 60px);
}

.service__head {
  text-align: center;
}

.service__headline {
  color: var(--color-green-rich);
}

.service__headline-sub {
  font-size: var(--fs-27);
}

.service__list {
  margin-top: var(--space-100);
}

.service__item {
  display: flex;
  flex-direction: column;
  width: min(100% - 3rem, 1068px);
  margin-inline: auto;
  position: relative;
  z-index: 1;
}

.service__item + .service__item {
  margin-top: var(--space-90);
}

.service__item-label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-16);
  /* font-family: var(--font-ja-mincho-default); */
  letter-spacing: 0.1em;
  font-weight: 500;
  font-size: clamp( 20px, calc( 18.455445544554454px + 0.39603960396039606vw ), 24px );
  letter-spacing: 0.04em;
  color: var(--color-green-rich);
  background-color: var(--color-white);
  padding: var(--space-30) var(--space-60);
  border-radius: 16px 16px 0 0;
  position: relative;
  z-index: 1;
  margin-bottom: -20px;
  margin-right: auto;

  img {
    width: clamp(30px, calc(27.23076923076923px + 0.7692307692307693vw), 38px);
    height: clamp(30px, calc(27.23076923076923px + 0.7692307692307693vw), 38px);
  }

  @media (max-width: 767px) {
    width: 100%;
    padding: 30px 7% 20px;
  }
}

.service__item-content {
  display: flex;
  align-items: center;
  gap: var(--space-80);
  background-color: var(--color-white);
  padding: var(--space-50) var(--space-60);
  position: relative;
  z-index: 1;

  @media (max-width: 767px) {
    flex-direction: column;
    gap: 30px;
    padding: 20px 7% 60px;
    border-radius: 0 0px 16px 16px;
  }
}

.service__item-body {
  width: min(100%, 460px);

  @media (max-width: 767px) {
    width: 100%;
  }
}

.service__item-title {
  font-size: var(--fs-21);
  letter-spacing: 0.2em;
  line-height: 1.8;
  color: var(--color-green-rich);
  padding-bottom: 20px;
  border-bottom: 3px dotted var(--color-green-rich);
}

.service__item-text {
  font-size: var(--fs-16);
  line-height: 2;
  padding-top: 20px;
}

.service__item-img {
  width: min(47%, 450px);

  @media (max-width: 767px) {
    width: 100%;
  }
}

/* 偶数番目カードを左右反転 */
.service__item:nth-child(even) .service__item-content {
  flex-direction: row-reverse;

  @media (max-width: 767px) {
    flex-direction: column;
  }
}

/* ラベルも右に乗せる（左上 → 右上） */
.service__item:nth-child(even) .service__item-label {
  margin-left: auto;
  margin-right: 0;
}

/*================================================================
# CONTACT-CTA
================================================================*/
.contact-cta {
  background-color: var(--color-bg-lightfog);
  padding-top: clamp(25px, calc(12.884615384615385px + 3.3653846153846154vw), 60px);
  overflow: hidden;
}

.contact-cta--primary {
  background-color: var(--color-green-leaf);
  padding-top: 0;
}

.contact-cta__inner {
  width: min(100% - 3rem, var(--container));
  margin-inline: auto;
}

.contact-cta__visual {
  text-align: center;
}

.contact-cta__visual img {
  width: min(100%, 533px);
  margin-inline: auto;
}

.contact-cta__points {
  display: inline-flex;
  flex-direction: column;
  margin-top: var(--space-90);
  gap: var(--space-70);
}

.contact-cta__point {
  display: inline;
  font-size: clamp(18px, calc(14.138613861386139px + 0.9900990099009901vw), 28px);
  letter-spacing: 0.2em;
  line-height: 1.7;
  font-weight: 600;
  color: var(--color-black);
  text-align: left;
  padding-left: 3em;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/icon_check.webp) no-repeat center/ contain;
    width: clamp(34px, calc(28.46153846153846px + 1.5384615384615385vw), 50px);
    height: clamp(34px, calc(28.46153846153846px + 1.5384615384615385vw), 50px);
    top: 50%;
    left: 0;
    transform: translateY(-50%);
  }
}

.contact-cta__content {
  width: min(100%, 1014px);
  margin-inline: auto;
  background-color: var(--color-bg-leaf-mist);
  margin: var(--space-100) auto var(--space-300);
  padding: var(--space-80);
  text-align: center;
  border-radius: 10px;
  position: relative;
  z-index: 1;

  @media (max-width: 767px) {
    padding: 65px 2%;
  }

  &::before {
    position: absolute;
    content: "";
    background: url(../img/contact_deco-left.webp) no-repeat center/ contain;
    width: 34%;
    height: 100%;
    bottom: -32%;
    left: -80px;
  }

  &::after {
    position: absolute;
    content: "";
    background: url(../img/contact_deco-right.webp) no-repeat center/ contain;
    width: 34%;
    height: 100%;
    top: -32%;
    right: -80px;
  }

  @media (max-width: 767px) {
    &::before {
      width: 50%;
      bottom: -45%;
      left: -40px;
    }

    &::after {
      width: 50%;
      top: -53%;
      right: -63px;
    }
  }
}

.contact-cta__headline {
  font-size: clamp(46px, calc(42.19230769230769px + 1.0576923076923077vw), 57px);
  color: var(--color-green-main);
}

.contact-cta__subtitle {
  font-size: var(--fs-19);
  font-weight: 600;
  margin-top: 10px;
}

.contact-cta__btn {
  max-width: 100%;
  display: inline-block;
  margin-top: 30px;
  background-color: var(--color-white);
  border: 1px solid var(--color-text-sub);
  border-radius: 50px;
  padding: var(--space-40) clamp(20px, calc(2.69230769230769px + 4.807692307692308vw), 70px);
  position: relative;
  z-index: 1;

  @media (max-width: 767px) {
    padding: 30px 20px;
  }
}

.contact-cta__btn-text {
  font-family: var(--font-ja-gothic-default);
  font-size: clamp(13px, calc(11.26923076923077px + 0.4807692307692308vw), 18px);
  font-weight: 500;
  letter-spacing: 0.1em;
  padding: 0 2em 0 3em;
  position: relative;

  @media (max-width: 767px) {
    padding: 1.8em 1.5em 1.5em 0;
  }

  &::before {
    position: absolute;
    content: "";
    background: url(../img/icon_mail.webp) no-repeat center/ contain;
    width: clamp(17px, calc(11.807692307692307px + 1.4423076923076923vw), 32px);
    height: 23px;
    top: 50%;
    left: 0;
    transform: translateY(-50%);

    @media (max-width: 767px) {
      top: 0;
      left: 48%;
      transform: translate(-50%, 0);
    }
  }

  &::after {
    position: absolute;
    content: "";
    background: url(../img/arrow_link-right.webp) no-repeat center / contain;
    width: clamp(7px, calc(6.227722772277228px + 0.19801980198019803vw), 9px);
    height: 100%;
    top: 55%;
    right: 0;
    transform: translateY(-50%);

    @media (max-width: 767px) {
      top: 56%;
    }
  }
}

.contact-cta__bg-img {
  position: relative;
  z-index: 0;
  display: block;

  @media (max-width: 767px) {
    &::after {
      position: absolute;
      content: "";
      background: url(../img/sp/profile_deco.webp) no-repeat center / contain;
      width: 60%;
      aspect-ratio: 47 / 19;
      bottom: -35px;
      left: 0;
      z-index: 3;
    }
  }
}

.contact-cta__bg-img img {
  @media (max-width: 767px) {
    width: 95%;
    margin-left: auto;
    margin-top: -200px;
  }
}

/* ----------------------------------------------
 * 2〜3回だけふわっとゆらゆら揺れる
 * ---------------------------------------------- */
@keyframes leafFloatOnce {
  0% {
    transform: rotate(0deg) translateY(0);
  }
  20% {
    transform: rotate(6deg) translateY(-6px);
  }
  40% {
    transform: rotate(-8deg) translateY(4px);
  }
  60% {
    transform: rotate(5deg) translateY(-5px);
  }
  80% {
    transform: rotate(-6deg) translateY(3px);
  }
  100% {
    transform: rotate(0deg) translateY(0);
  }
}

/* 左デコ */
.contact-cta__content.is-leaf-animated::before {
  animation: leafFloatOnce 3.5s ease-in-out 0.3s 1;
  transform-origin: center;
}

/* 右デコ */
.contact-cta__content.is-leaf-animated::after {
  animation: leafFloatOnce 3s ease-in-out 0.6s 1;
  transform-origin: center;
}

/*================================================================
# PROFILE
================================================================*/
.profile {
  padding: var(--space-150) 0 var(--space-300);
  overflow: hidden;
  background-color: var(--color-white);

  @media (max-width: 767px) {
    padding: 30px 0 var(--space-300);
  }
}

.profile__inner {
  width: min(100% - 4rem, var(--container));
  margin-inline: auto;
  display: flex;
  align-items: flex-start;
  justify-content: center;

  @media (max-width: 767px) {
    flex-direction: column;
  }
}

.profile__img {
  width: min(52.8%, 624px);
  position: relative;
  z-index: 3;

  @media (max-width: 767px) {
    width: 90%;
    margin-left: -20px;
  }

  &::before {
    position: absolute;
    content: "";
    background: url(../img/profile_deco.webp) no-repeat center / contain;
    width: 35%;
    aspect-ratio: 47 / 19;
    bottom: -8%;
    left: -3%;
  }

  @media (max-width: 767px) {
    &::before {
      position: static;
    }
  }
}

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

.profile__body {
  width: min(100%, 615px);
  background-color: var(--color-bg-organic);
  padding: var(--space-150) var(--space-60);
  border-radius: 15px;
  margin: clamp(250px, calc(128.48101265822783px + 15.822784810126583vw), 350px) 0 0 -230px;
  position: relative;
  z-index: 1;

  @media (max-width: 767px) {
    width: 100%;
    margin: -50px auto 0;
  }

  &::before {
    position: absolute;
    content: "";
    background: url(../img/profile_text-deco01.webp) no-repeat center / contain;
    width: 29%;
    aspect-ratio: 1 / 1;
    left: -25%;
    bottom: 6%;
    z-index: 3;
  }

  &::after {
    position: absolute;
    content: "";
    background: url(../img/profile_text-deco02.webp) no-repeat center / contain;
    width: 31%;
    aspect-ratio: 98 / 81;
    bottom: -4%;
    right: -12%;
    z-index: 3;
  }

  @media (max-width: 500px) {
    &::before {
      left: auto;
      right: 0;
      bottom: -10%;
    }
  }

  @media (max-width: 767px) {
    &::after {
      width: 40%;
      top: -45px;
      bottom: auto;
      right: -10%;
    }
  }
}

.profile__name {
  font-weight: 500;
  letter-spacing: 0.2em;
  color: var(--color-green-rich);
  text-align: center;
}

.profile__name--ja {
  font-size: var(--fs-42);
}

.profile__name--en {
  font-size: var(--fs-16);
  margin-top: var(--space-16);
}

.profile__text {
  margin-top: var(--space-70);
  position: relative;
  z-index: 4;
}

/*================================================================

#### sub-page　-sb

=================================================================*/

/*================================================================
# PAGE-FIRST-VIEW
================================================================*/
.page__first-view {
  width: min(100% - 2rem, 1600px);
  margin-inline: auto;
  padding-top: var(--space-30);
  aspect-ratio: 1600 / 382;

  video {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
    display: block;
    border-radius: 30px;
  }
}

/*================================================================
# OUR POLICY
================================================================*/
.our-policy {
  background-color: var(--color-green-leaf);
  overflow: hidden;
}

/* OUR POLICY HEAD */
.our-policy__head {
  padding: var(--space-100) 0 var(--space-50);
  margin-inline: auto;
  text-align: center;
}

.our-policy__headline {
  font-size: clamp(51px, calc(48.68316831683168px + 0.594059405940594vw), 57px);
  color: var(--color-green-spring);
}

.our-policy__headline-sub {
  font-size: clamp(21px, calc(19.84158415841584px + 0.297029702970297vw), 24px);
  color: var(--color-bg-lightfog);
}

/*  ABOUT
================================================================*/
.about {
  background-color: var(--color-white);
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/bg_about.webp) no-repeat top center / cover;
    width: 100%;
    aspect-ratio: 1749 / 867;
    height: 55%;
    top: -2px;
    left: 0;

    @media (max-width: 1000px) {
      height: 48%;
    }

    @media (max-width: 767px) {
      background: url(../img/sp/bg_about.webp) no-repeat top center / cover;
      width: 100%;
      aspect-ratio: 389 / 503;
      height: 19%;
    }
  }
}

.about__inner {
  width: min(100% - 4rem, 1306px);
  margin-inline: auto;
  padding: clamp(220px, calc(173.0753564154786px + 6.109979633401222vw), 280px) 0 var(--space-250);
  position: relative;
  z-index: 2;

  @media (max-width: 767px) {
    padding-top: clamp( 393px, calc( 262.97542997542996px + 36.11793611793612vw ), 540px );
  }
}

.about__headline {
  width: clamp(345px, calc(240.90441176470588px + 26.691176470588236vw), 708px);

  @media (max-width: 767px) {
    width: 100%;
  }
}

.about__items {
  margin-top: var(--space-100);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-60);

  @media (max-width: 767px) {
    grid-template-columns: 1fr;
    gap: 66px;
  }
}

.about__item-text {
  margin-top: var(--space-40);
  padding: 0 1rem;
  flex-grow: 1;
}

/*  PRODUCTION FLOW
================================================================*/
.production-flow {
  background-color: var(--color-green-spring);
  padding: var(--space-200) 0 var(--space-300);
  position: relative;

  &::after {
    position: absolute;
    content: "";
  }
}

.production-flow__inner {
  width: min(100% - 6rem, 1484px);
  margin-inline: auto;
  position: relative;

  @media (max-width: 767px) {
    width: min(100% - 4rem, 1484px);
  }
}

.production-flow__headline {
  font-size: var(--fs-28);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 2;
  text-align: center;
  padding-bottom: var(--space-30);
  position: relative;

  &::after {
    position: absolute;
    content: "";
    background: var(--color-text-main);
    width: 50px;
    height: 1px;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
  }
}

.production-flow__contents {
  width: 100%;
  margin-inline: auto;
  overflow-x: auto;
  padding-bottom: 40px;

  @media (max-width: 959px) {
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
  }
}

.production-flow__scroll {
  @media (max-width: 1150px) {
    width: 100%;
    min-width: 1045px;
    min-width: 1484px;
  }
}

.production-flow__items {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-50);
  padding: var(--space-100) 0;

  @media (max-width: 767px) {
    padding: 70px 0;
  }
}

.production-flow__item {
  display: flex;
  justify-content: center;
  flex-direction: column;
  gap: var(--space-50);
}

.production-flow__media {
  position: relative;
}

.production-flow__number {
  position: absolute;
  top: 0;
  left: 0;
  width: 39px;
}

.production-flow__image {
  display: block;
  width: min(72%, 180px);
  margin-inline: auto;
}

.production-flow__label {
  display: inline-block;
  font-size: var(--fs-28);
  font-weight: 500;
  letter-spacing: 0.2em;
  color: var(--color-green-rich);
  padding-bottom: 10px;
  text-align: center;
  position: relative;

  &::after {
    position: absolute;
    content: "";
    border-bottom: 3px dotted var(--color-green-rich);
    width: 83px;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
  }
}

.production-flow__caption {
  flex-grow: 1;
}

.production-flow__timeline {
  width: min(90%, 1320px);
  margin-inline: auto;
}

.production-flow__bg-bottom {
  background-color: var(--color-bg-lightfog);
  margin-top: -2px;
}

.production-flow__deco-img {
  position: absolute;
  width: min(27%, 480px);
  aspect-ratio: 480 / 381;
  bottom: -15%;
  right: -4%;
  z-index: 1;

  @media (max-width: 959px) {
    bottom: -10%;
  }

  @media (max-width: 767px) {
    width: min(76%, 297px);
    bottom: -122px;
    right: -43px;
  }
}

/*  STORY
================================================================*/
.story {
  position: relative;
  background-color: var(--color-bg-lightfog);
  padding: clamp(130px, calc(75.38148524923703px + 7.121057985757884vw), 200px) 0;
  padding: var(--space-200) 0 var(--space-100);
}

.story__inner {
  width: min(100% - 8rem, var(--container-wide));
  margin-inline: auto;
  position: relative;

  @media (max-width: 767px) {
    width: 100%;
  }
}

.story__contents {
  display: flex;
  gap: 50px;

  @media (max-width: 767px) {
    flex-direction: column;
    gap: 0;
  }
}

.story__body {
  position: relative;
  width: min(100%, 640px);
  padding-top: clamp(210px, calc(22.301425661914465px + 24.43991853360489vw), 450px);

  @media (max-width: 767px) {
    display: contents;
  }
}

.story__img02 {
  position: absolute;
  width: min(149%, 873px);
  top: -37%;
  left: -48%;
  z-index: 1;

  @media (max-width: 1300px) {
    width: min(125%, 873px);
    top: -260px;
    left: -25%;
  }

  @media (max-width: 1000px) {
    top: -210px;
  }

  @media (max-width: 767px) {
    position: static;
    width: min(122%, 479px);
    margin: 55px auto 0 auto;
    order: 4;
  }

  @media (max-width: 455px) {
    margin: 55px auto 0 -7%;
  }
}

.story__subtitle {
  color: var(--color-green-main);

  @media (max-width: 767px) {
    width: min(100% - 4rem);
    margin-inline: auto;
    order: 6;
  }
}

.story__text {
  padding-top: var(--space-40);

  @media (max-width: 767px) {
    width: min(100% - 4rem);
    margin-inline: auto;
    order: 7;
  }
}

.story__img03 {
  width: min(60%, 322px);
  margin-left: -23%;

  @media (max-width: 767px) {
    width: min(36%, 140px);
    margin-left: auto;
    margin-right: 1rem;
    margin-top: -10px;
    order: 5;
  }
}

.story__head {
  position: relative;
  width: min(100%, 945px);

  @media (max-width: 767px) {
    display: contents;
  }
}

.story__img01 {
  position: absolute;
  width: min(100%, 805px);
  margin-top: 40px;
  left: -5%;

  @media (max-width: 1000px) {
    width: min(135%, 805px);
  }

  @media (max-width: 767px) {
    position: static;
    width: min(90%, 310px);
    margin-right: auto;
    margin-left: -10px;
    order: 3;
  }
}

.story__img04 {
  position: absolute;
  width: min(78%, 601px);
  top: 50%;
  right: -22%;

  @media (max-width: 1000px) {
    width: 100%;
    bottom: 0;
  }

  @media (max-width: 767px) {
    position: static;
    width: min(92%, 357px);
    margin-left: auto;
    margin-right: -20px;
    order: 8;
  }
}

.story__headline {
  font-size: clamp(64px, calc(44.306930693069305px + 5.0495049504950495vw), 115px);
  color: var(--color-green-main);
  text-align: center;

  @media (max-width: 767px) {
    order: 1;
  }
}

.story__headline-sub {
  font-size: clamp(21px, calc(19.84158415841584px + 0.297029702970297vw), 24px);
  text-align: center;

  @media (max-width: 767px) {
    order: 2;
    margin-top: 30px;
  }
}

.story__bg-bottom {
  overflow: hidden;
  line-height: 0;

}

.story__bg-bottom svg {
  display: block;
  width: 100%;
  height: auto;
}

/*  CONTACT-CTA_OUR-POLICY
================================================================*/
.contact-cta__our-policy .contact-cta__content {
  margin-top: var(--space-200);
}

/*================================================================
#  PRODUCTS
================================================================*/
.products {
  background-color: #fbfaf9;
}

/* PRODUCTS-HEAD */
.products__head {
  padding: var(--space-100) 0;
  margin-inline: auto;
  text-align: center;

  @media (max-width: 767px) {
    padding: 60px 0;
  }
}

.products__headline {
  font-size: clamp(53px, calc(51.45544554455446px + 0.39603960396039606vw), 57px);
  color: var(--color-green-fresh);
}

.products__headline-sub {
  font-size: clamp(21px, calc(19.84158415841584px + 0.297029702970297vw), 24px);
  color: var(--color-text-main);
}

/* LOCALーMENU */
.products__local-menu {
  width: min(100% - 12rem, 940px);
  margin-inline: auto;
  padding: var(--space-100) 0;
  display: flex;
  gap: var(--space-60);
  text-align: center;

  @media (max-width: 767px) {
    width: min(100% - 3rem, 940px);
    flex-direction: column;
    padding: 20px 0 60px;
  }
}

.products__local-menu-item {
  width: min(100%, 300px);

  @media (max-width: 767px) {
    width: 100%;
  }
}

.products__local-menu-link {
  display: flex;
  flex-direction: column;
  gap: var(--space-40);

  @media (max-width: 767px) {
    flex-direction: inherit;
    align-items: center;
    gap: 20px;
    justify-content: center;
  }
}

.products__local-menu-icon {
  @media (max-width: 767px) {
    width: min(50%, 135px);
  }
}

.products__local-body {
  display: contents;

  @media (max-width: 767px) {
    display: block;
    width: min(100%, 205px);
  }
}

.products__local-menu-text {
  font-size: clamp(17px, calc(3.632911392405063px + 1.740506329113924vw), 28px);
  letter-spacing: 0.2em;
  line-height: 2;
  font-weight: 500;
  color: var(--color-green-rich);

  @media (max-width: 767px) {
    line-height: 1.4;
  }
}

.products__local-menu-arrow {
  width: min(13.5%, 36px);
  margin-inline: auto;

  @media (max-width: 767px) {
    display: block;
    width: min(100%, 17px);
    margin-top: 20px;
  }
}

/*  PRODUCTS-ITEM
================================================================*/
.products-item {
  padding-top: var(--space-100);
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background-color: var(--color-green-rich);
    width: 100%;
    height: clamp(335px, calc(312.05882352941177px + 5.88235294117647vw), 415px);
    bottom: 0;
    left: 0;
  }
}

/* PRODUCTS-HEAD */
.products-item__head {
  width: min(100% - 3.5rem, var(--container));
  margin-inline: auto;
}

.products-item__headline {
  display: block;
  font-size: var(--fs-28);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 2;
  color: var(--color-green-main);
  padding-bottom: var(--space-30);
  position: relative;

  &::after {
    position: absolute;
    content: "";
    background: var(--color-green-main);
    width: clamp(30px, calc(22.277227722772277px + 1.9801980198019802vw), 50px);
    height: 1px;
    bottom: 0;
    left: 0;
  }
}

.products-item__text {
  margin-top: var(--space-50);
}

/* PRODUCTS-ITEM */
.products-item__contents {
  width: min(100%, var(--container-full));
  margin-inline: auto;
  padding: var(--space-90) 0 var(--space-90) var(--space-100);

  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  position: relative;

  @media (max-width: 767px) {
    padding-left: 25px;
  }
}

.products-item__slider .swiper-wrapper {
  display: flex;
  transition-timing-function: linear;
  width: max-content !important;
}

.products-item__slider .swiper-slide {
  flex-shrink: 0; /* Swiperがスライドを縮めないように */
  width: 315px; /* 固定幅指定で slidesPerView: 'auto' に対応 */
  aspect-ratio: 315 / 527;

  @media (max-width: 767px) {
    width: 280px;
  }

  img {
    width: 100%; /* 親のswiper-slideにフィットさせる */
    display: block; /* 不要な隙間を防止 */
  }
}

.products-item__figure {
  position: relative;
  overflow: hidden;
}

.products-item__caption {
  background-color: var(--color-white);
  padding: var(--space-20) var(--space-30);
  position: absolute;
  width: 100%;
  bottom: 0;
  left: 0;
  z-index: 1;
}

.products-item__name-ja {
  font-size: var(--fs-24);
  letter-spacing: 0.2em;
  font-weight: 500;
  color: var(--color-black);
}

.products-item__name-en {
  font-size: var(--fs-14);
  letter-spacing: 0.2em;
  color: var(--color-green-rich);
  margin-top: -5px;
}

.products-item__btn {
  display: flex;
  gap: var(--space-35);
  margin-top: var(--space-80);
}

.products-item__btn .swiper-button-next,
.products-item__btn .swiper-button-prev {
  position: static;
  width: 53px;
  height: 53px;
  color: transparent;
}

.products-item__btn .swiper-button-prev {
  background: transparent url(../img/slider-btn_prev.svg) no-repeat center / contain;
  margin-right: 10px;
}

.products-item__btn .swiper-button-next {
  background: transparent url(../img/slider-btn_next.svg) no-repeat center / contain;
}

/* bg_products */
.bg_products img {
  width: 100%;
  margin-inline: auto;
}

/*  ONLINE-SHOP
================================================================*/
.online-shop {
  background-color: var(--color-bg-lightfog);
  overflow: hidden;
  position: relative;
  z-index: 0;
}

.online-shop::before,
.online-shop::after {
  position: absolute;
  content: "";
  z-index: 1;
}

.online-shop::before {
  background: url(../img/online-shop_deco-left.webp) no-repeat top center / contain;
  width: 33%;
  aspect-ratio: 573 / 1753;
  height: auto;
  top: -10%;
  left: -121px;

  @media (max-width: 767px) {
    background: url(../img/sp/online-shop_deco-left.webp) no-repeat top center / contain;
    width: 28%;
    top: -3px;
    left: 0;
  }
}

.online-shop::after {
  background: url(../img/online-shop_deco-right.webp) no-repeat top center / contain;
  width: 26%;
  aspect-ratio: 395 / 1473;
  height: auto;
  top: -154px;
  right: -63px;

  @media (max-width: 767px) {
    background: url(../img/sp/online-shop_deco-right.webp) no-repeat top center / contain;
    width: 20%;
    top: -5px;
    right: 0;
  }
}

.online-shop__inner {
  width: min(100% - 3.5rem, 902px);
  margin-inline: auto;
  padding: var(--space-150) 0;
  position: relative;
  z-index: 2;

  @media (max-width: 767px) {
    padding: 160px 0 100px;
  }
}

.online-shop__headline {
  display: block;
  font-size: var(--fs-28);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 2;
  color: var(--color-green-main);
  padding-bottom: var(--space-30);
  text-align: center;
  position: relative;

  &::after {
    position: absolute;
    content: "";
    background: var(--color-green-main);
    width: 50px;
    height: 1px;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
  }
}

.online-shop__text {
  margin-top: var(--space-60);
  text-align: center;
}

.online-shop__contents {
  width: min(100%, 787px);
  margin-inline: auto;
  padding-top: var(--space-150);
}

.online-shop__items {
  display: flex;
  justify-content: center;
  gap: var(--space-50);

  @media (max-width: 767px) {
    flex-direction: column;
  }
}

.online-shop__item figure {
  border-radius: 10px 10px 0 0;
  overflow: hidden;
}

.online-shop__item figcaption {
  background-color: var(--color-white);
  padding: var(--space-30);
  border-radius: 0 0 10px 10px;
}

.online-shop__item-name {
  font-size: var(--fs-24);
  font-weight: 500;
  letter-spacing: 0.2em;
  color: var(--color-black);
}

.online-shop__item-categry {
  font-size: var(--fs-14);
  font-weight: 400;
  letter-spacing: 0.2em;
  color: var(--color-green-rich);
  margin-top: -5px;
}

.online-shop__item-prices {
  display: flex;
  align-items: baseline;
  margin-top: 15px;
}

.online-shop__item-price {
  font-size: var(--fs-24);
  font-weight: 500;
  letter-spacing: 0.14em;
  color: var(--color-black);

  span {
    display: inline-block;
    font-size: var(--fs-14);
    letter-spacing: 0.2em;
    margin-left: -7px;
  }
}

.online-shop__item-tax {
  font-size: var(--fs-14);
  letter-spacing: 0.2em;
  margin-left: 0.5em;
}

.online-shop__buy {
  padding-top: var(--space-150);
}

.online-shop__btn {
  display: block;
  width: min(55%, 507px);
  margin-inline: auto;
  background-color: var(--color-white);
  border: 1px solid var(--color-text-sub);
  border-radius: 50px;
  padding: 30px clamp(20px, calc(2.69230769230769px + 4.807692307692308vw), 70px);
  text-align: center;
  position: relative;

  @media (max-width: 767px) {
    width: min(100%, 507px);
    padding: 15px;
  }

  &::after {
    position: absolute;
    content: "";
    background: url(../img/icon_cart.webp) no-repeat center / contain;
    width: 50px;
    aspect-ratio: 50 / 43;
    top: 50%;
    left: 7%;
    transform: translateY(-50%);

    @media (max-width: 767px) {
      width: min(13%, 45px);
    }
  }
}

.btn__text {
  display: inline-block;
  color: var(--color-green-rich);
  line-height: 1.4;
}

/*  SHOP
================================================================*/
.shop {
  background-color: var(--color-white);
}

.shop__head {
  width: min(100%, 1530px);
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: var(--space-80);

  @media (max-width: 767px) {
    flex-direction: column;
  }
}

.shop__headline {
  width: min(100%, 180px);
  font-size: var(--fs-28);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 2;
  color: var(--color-black);
  padding-bottom: var(--space-35);
  margin-left: 2rem;
  position: relative;

  @media (max-width: 767px) {
    order: 2;
  }

  &::after {
    position: absolute;
    content: "";
    background: var(--color-green-main);
    width: clamp(30px, calc(22.277227722772277px + 1.9801980198019802vw), 50px);
    height: 1px;
    bottom: 0;
    left: 0;

    @media (max-width: 767px) {
      left: 50%;
      transform: translateX(-50%);
    }
  }
}

.shop__coverimg {
  width: min(84%, 1285px);

  @media (max-width: 767px) {
    width: 85%;
    margin-left: auto;
    order: 1;
  }
}

.shop__inner {
  width: min(100% - 4rem, var(--container));
  margin-inline: auto;
  padding: var(--space-250) 0 var(--space-200);

  @media (max-width: 767px) {
    padding: 60px 0;
  }
}

.shop__contents + .shop__contents {
  margin-top: var(--space-150);
}

.shop__subtitle {
  font-size: var(--fs-24);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 1.3;
  color: var(--color-green-rich);
  padding-bottom: var(--space-18);
  border-bottom: 2px solid var(--color-green-rich);
}

.shop__lists {
}

.shop__list {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-50);
  color: var(--color-black);
  font-weight: 400;
  letter-spacing: 0.2em;
  padding: var(--space-60) var(--space-60) var(--space-60) var(--space-40);
  border-bottom: 1px solid var(--color-green-rich);

  @media (max-width: 767px) {
    flex-direction: column;
    padding: 30px 10px;
  }
}

.shop__name {
  width: min(35%, 350px);
  font-size: var(--fs-21);
  line-height: 1.5;

  @media (max-width: 767px) {
    width: 100%;
  }
}

.shop__address {
  width: min(35%, 450px);
  font-size: clamp(14px, calc(12.455445544554456px + 0.39603960396039606vw), 18px);
  line-height: 1.6;

  @media (max-width: 767px) {
    width: 100%;
  }
}

.shop__map {
  width: min(100%, 150px);

  @media (max-width: 767px) {
    width: 100%;
    margin-top: -18px;
  }
}

.shop__map-text {
  font-family: var(--font-en-gothic-default);
  font-size: var(--fs-19);
  letter-spacing: 0;
  color: var(--color-green-main);
  padding-left: 1.2em;
  position: relative;

  &::before {
    position: absolute;
    content: "";
    background: url(../img/icon_map.webp) no-repeat center / contain;
    width: 14px;
    height: 18px;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
  }
}

.shop__note {
  width: min(100% - 4rem, 802px);
  margin-inline: auto;
  font-size: var(--fs-24);
  font-weight: 500;
  letter-spacing: 0.2em;
  line-height: 1.6;
  color: var(--color-black);
  padding: var(--space-30) var(--space-40);
  text-align: center;
  border: 1px solid var(--color-black);
}

/*  CONTACT-CTA__PRODUCTS
================================================================*/
.contact-cta__products {
  background-color: var(--color-white);
}

.contact-cta__products .contact-cta__content {
  margin-top: var(--space-150);
}

.contact-form {
  margin-top: 50px;
  max-width: 612px;
  margin-inline: auto;
}

.contact-fields {
  display: flex;
  flex-direction: column;
  gap: 30px;
}

.contact-privacy {
  margin-top: 29px;
  text-align: center;
}

.contact-btn {
  margin-top: 38px;
  text-align: center;
  display: grid;
  place-items: center;
}

.form-field {
  display: flex;
  gap: 32px;

  @media (max-width: 767px) {
    flex-direction: column;
    gap: 15px;
  }
}

.form-field__head {
  width: calc(212px - 32px);
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-shrink: 0;

  @media (max-width: 767px) {
    justify-content: flex-start;
  }
}

.form-field__label {
  font-weight: 700;
  line-height: calc(23 / 16);
}

.form-field__tag {
  display: inline-block;
  border-radius: 2px;
  background: #ee8013;
  padding: 6px 8px 5px 8px;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  line-height: 100%;
  letter-spacing: 1.98px;

  &.is-option {
    background-color: #43b549;
  }
}

.form-field__body {
  flex-grow: 1;
}

.form-text {
  width: 100%;
  border-radius: 5px;
  border: 2px solid #111;
  background: #fff;
  padding: calc(15px - 3px) calc(16px - 3px) calc(14px - 3px);
  transition: border-color 0.3s;

  &:hover,
  &:focus {
    border-color: #fabe00;
    outline: none;
  }
}

.form-radio {
  line-height: calc(23 / 16);

  &:hover {
    .form-radio__text {
      &::before {
        border-color: #fabe00;
      }
    }
  }
}

.form-radio__input {
  width: 1px;
  height: 1px;
  position: absolute;
  clip: rect(0, 0, 0, 0);
  overflow: hidden;

  &:checked {
    + .form-radio__text {
      &::after {
        opacity: 1;
      }
    }
  }
}

.form-radio__text {
  font-weight: 700;
  padding-left: 28px;
  position: relative;

  &::before,
  &::after {
    content: "";
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    border-radius: 50%;
  }

  &::before {
    width: 18px;
    height: 18px;
    border: 2px solid #111;
    left: 0;
    transition: border-color 0.3s;
  }

  &::after {
    width: 10px;
    height: 10px;
    background: #f5810e;
    left: 6px;
    opacity: 0;
  }
}

.form-select {
  appearance: none;
  width: 100%;
  border-radius: 5px;
  border: 2px solid #111;
  background: #fff;
  font-weight: 700;
  padding: calc(15px - 2px) calc(46px - 2px) calc(14px - 3px) calc(16px - 2px);
  background: url(../img/select-arrow.png) no-repeat center right 14px / 13.217px 10.182px;
  transition: border-color 0.3s;

  &:hover,
  &:focus {
    border-color: #fabe00;
    outline: none;
  }
}

.form-textarea {
  border-radius: 5px;
  border: 2px solid #111;
  background: #fff;
  width: 100%;
  height: 180px;
  padding: calc(16px - 3px);
  transition: border-color 0.3s;

  &:hover,
  &:focus {
    border-color: #fabe00;
    outline: none;
  }
}

.form-checkbox {
  &:hover {
    .form-checkbox__text {
      &::before {
        border-color: #fabe00;
      }
    }
  }
}

.form-checkbox__input {
  width: 1px;
  height: 1px;
  position: absolute;
  clip: rect(0, 0, 0, 0);
  overflow: hidden;

  &:checked {
    + .form-checkbox__text {
      &::after {
        opacity: 1;
      }
    }
  }

  &:focus {
    + .form-checkbox__text {
      &::before {
        border-color: #fabe00;
      }
    }
  }
}

.form-checkbox__text {
  position: relative;
  padding-left: 30px;
  font-size: 14px;
  font-weight: 700;

  &::before,
  &::after {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
  }

  &::before {
    width: 20px;
    height: 20px;
    border-radius: 1px;
    border: 1px solid #111;
    transition: border-color 0.3s;

    @include mq(pc) {
      margin-top: 2px;
    }
  }

  &::after {
    width: 23px;
    height: 17.53px;
    left: -1px;
    margin-top: 0.8px;
    background: url(../img/check-icon.png) no-repeat center center / contain;
    opacity: 0;

    @media (max-width: 767px) {
      margin-top: -1.2px;
    }
  }

  a {
    text-decoration-line: underline;
    font-weight: 700;
    transition: color 0.3s;

    &:hover {
      color: #f5810e;
    }
  }
}
