@charset "UTF-8";

/* =========================================================
   Base
========================================================= */
:root {
  --green-dark: #173b31;
  --green: #285b49;
  --green-light: #dce6df;
  --orange: #d86e32;
  --beige: #f4f0e7;
  --text: #272b29;
  --text-light: #646b67;
  --white: #ffffff;
  --header-height: 82px;
}
* {box-sizing: border-box;}
html {scroll-behavior: smooth;}
body {margin: 0; padding-top: 72px; color: var(--text); background: #faf9f6; font-family: "Noto Sans JP", sans-serif; font-size: 16px; line-height: 2; letter-spacing: 0.04em;}
img {display: block; width: 100%; height: auto;}
a {color: inherit; text-decoration: none;}
button {font: inherit;}
.pc-only {display: block;}

/* =========================================================
   Header
========================================================= */
.site-header {position: fixed; top: 0; left: 0; z-index: 1000; width: 100%; height: 72px; padding: 0 42px; display: flex; align-items: center; justify-content: space-between; color: #fff; background: rgba(24, 70, 17, .97); box-shadow: 0 3px 16px rgba(0, 0, 0, .16); transition: .25s;}
.site-header.is-scrolled {background: rgba(24, 70, 17, .9); box-shadow: 0 8px 28px rgba(0, 0, 0, .18); backdrop-filter: blur(12px);}
.brand {display: flex; align-items: center; gap: 18px; font-weight: 700;}
.brand-logo {width: 92px;}
.site-header .global-nav {display: flex; align-items: center; gap: 28px;}
.site-header .global-nav a {position: relative; font-size: 13px; opacity: .9;}
.site-header .global-nav a::before {position: absolute; right: 0; bottom: -7px; left: 0; height: 2px; content: ""; background: #fff; transform: scaleX(0); transition: .22s;}
.site-header .global-nav a:hover::before, .site-header .global-nav a.is-active::before {transform: scaleX(1);}
.menu-toggle {position: relative; z-index: 12; width: 46px; height: 46px; padding: 0; display: none; background: transparent; border: 0; cursor: pointer;}
.menu-toggle span {position: absolute; left: 10px; width: 26px; height: 2px; background: #fff; transition: .3s;}
.menu-toggle span:nth-child(1) {top: 14px;}
.menu-toggle span:nth-child(2) {top: 22px;}
.menu-toggle span:nth-child(3) {top: 30px;}
.menu-toggle[aria-expanded="true"] span:nth-child(1) {top: 22px; transform: rotate(45deg);}
.menu-toggle[aria-expanded="true"] span:nth-child(2) {opacity: 0;}
.menu-toggle[aria-expanded="true"] span:nth-child(3) {top: 22px; transform: rotate(-45deg);}
.menu-backdrop {display: none;}

/* =========================================================
   Story Hero
========================================================= */
.story-hero {position: relative; min-height: 650px; padding: calc(var(--header-height) + 74px) 0 82px; overflow: hidden; background-color: #f6f5f1; background-image: url("assets/story/story-hero-bg.png"); background-repeat: no-repeat; background-position: center center; background-size: cover;}
.story-hero::before {position: absolute; inset: 0; z-index: 1; content: ""; background: linear-gradient(90deg, rgba(250, 249, 246, .76) 0%, rgba(250, 249, 246, .58) 28%, rgba(250, 249, 246, .26) 48%, rgba(250, 249, 246, .04) 66%, rgba(250, 249, 246, 0) 76%);}
.story-hero::after {position: absolute; inset: 0; content: ""; background: rgba(17, 29, 24, .045); pointer-events: none;}
.story-hero__inner {position: relative; z-index: 2; width: min(1280px, calc(100% - 96px)); min-height: 494px; margin: 0 auto; display: flex; align-items: center;}
.story-hero__content {width: min(530px, 46%); padding: 34px 0;}
.story-hero__label {margin: 0 0 30px; color: var(--orange); font-family: "Oswald", sans-serif; font-size: 13px; font-weight: 600; letter-spacing: .3em;}
.story-hero h1 {margin: 0; color: var(--green-dark); font-size: clamp(52px, 5.3vw, 80px); font-weight: 600; line-height: 1.28; letter-spacing: .08em;}
.story-hero__lead {margin: 34px 0 0; color: var(--text); font-size: clamp(15px, 1.25vw, 19px); line-height: 1.9; letter-spacing: .08em;}
.story-hero__profile {width: fit-content; margin-top: 34px; padding-top: 22px; border-top: 1px solid rgba(40, 91, 73, .28);}
.story-hero__profile p {margin: 0; color: var(--text-light); font-size: 13px; line-height: 1.9; letter-spacing: .12em;}
.story-hero__profile p:last-child {color: var(--green-dark); font-size: 15px; font-weight: 500;}

/* =========================================================
   Story Article
========================================================= */
.story-article {overflow: hidden;}
.story-section {display: grid; grid-template-columns: minmax(270px, 380px) minmax(0, 690px); gap: clamp(60px, 8vw, 130px); width: min(1180px, calc(100% - 96px)); margin: 0 auto; padding: 130px 0; border-top: 1px solid #d9d8d2;}
.story-section__heading {position: sticky; top: calc(var(--header-height) + 50px); align-self: start;}
.story-section__chapter {display: flex; align-items: flex-end; gap: 18px; margin-bottom: 34px; padding-bottom: 18px; border-bottom: 1px solid rgba(40, 91, 73, 0.28);}
.story-section__number {margin: 0; color: var(--orange); font-family: "Oswald", sans-serif; font-size: 76px; font-weight: 600; line-height: 0.82; letter-spacing: 0.02em;}
.story-section__label {margin: 0 0 2px; color: var(--green); font-family: "Oswald", sans-serif; font-size: 11px; font-weight: 600; line-height: 1; letter-spacing: 0.34em;}
.story-section__heading h2 {margin: 0; color: var(--green-dark); font-size: clamp(25px, 2.25vw, 34px); font-weight: 600; line-height: 1.72; letter-spacing: 0.065em;}
.story-text p, .story-media__text p {margin: 0 0 2em;}
.story-text p:last-child, .story-media__text p:last-child {margin-bottom: 0;}
.story-text blockquote, .story-media__text blockquote {position: relative; margin: 54px 0; padding: 42px 46px; color: var(--green-dark); background: var(--beige); font-size: 17px; font-weight: 500; line-height: 2.15;}
.story-text blockquote::before, .story-media__text blockquote::before {position: absolute; top: 0; left: 0; width: 4px; height: 100%; content: ""; background: var(--orange);}

/* =========================================================
   Story Images
========================================================= */
.story-wide-image {width: min(1380px, calc(100% - 64px)); height: min(57vw, 720px); margin: 30px auto 80px; overflow: hidden;}
.story-wide-image img {height: 100%; object-fit: cover; object-position: center 38%;}
.story-portrait-image {width: min(920px, calc(100% - 96px)); height: min(68vw, 720px); margin: 40px auto 80px; overflow: hidden;}
.story-portrait-image img {height: 100%; object-fit: cover; object-position: center 38%;}
.story-media {display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: clamp(60px, 7vw, 110px); width: min(1280px, calc(100% - 96px)); margin: 30px auto 110px; padding: 85px; background: var(--green-dark); color: var(--white);}
.story-media--right .story-media__image {order: 2;}
.story-media__image {min-height: 560px; overflow: hidden;}
.story-media__image img {height: 100%; object-fit: cover;}
.story-media__image--pair {display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 12px;}
.story-media__image--pair img:first-child {object-position: center;}
.story-media__image--pair img:last-child {object-position: center top;}
.story-media__text blockquote {margin-top: 0; color: var(--white); background: rgba(255, 255, 255, 0.07);}

/* =========================================================
   Story Closing
========================================================= */
.story-closing {width: min(900px, calc(100% - 96px)); margin: 140px auto 0; padding: 110px 40px; border-top: 1px solid #d9d8d2; border-bottom: 1px solid #d9d8d2; text-align: center;}
.story-closing p {margin: 0; color: var(--green-dark); font-size: clamp(28px, 3.4vw, 46px); font-weight: 500; line-height: 1.75; letter-spacing: 0.12em;}

/* =========================================================
   Story Product
========================================================= */
.story-product {display: grid; grid-template-columns: minmax(0, 760px) minmax(240px, 1fr); align-items: end; gap: 70px; width: min(1180px, calc(100% - 96px)); margin: 60px auto 0; padding: 100px; background: var(--beige);}
.story-product__image {overflow: hidden;}
.story-product__image img {aspect-ratio: 1.45 / 1; object-fit: cover;}
.story-product figcaption {padding-bottom: 18px; color: var(--green-dark);}
.story-product figcaption p {margin: 0;}
.story-product__label {margin-bottom: 14px !important; color: var(--orange); font-family: "Oswald", sans-serif; font-size: 18px; font-weight: 600; letter-spacing: 0.12em;}
.story-back {padding: 100px 24px 140px; text-align: center;}
.story-back a {display: inline-flex; align-items: center; justify-content: center; min-width: 330px; min-height: 66px; padding: 18px 34px; color: var(--white); background: var(--green-dark); font-size: 14px; font-weight: 600; letter-spacing: 0.08em; transition: background 0.25s ease, transform 0.25s ease;}
.story-back a:hover {background: var(--green); transform: translateY(-3px);}

/* =========================================================
   Footer / Page Top
========================================================= */
footer {padding: 65px 90px; display: flex; align-items: end; justify-content: space-between; color: #fff; background: #245515;}
footer p, footer small {opacity: .8;}
.footer-company {display: flex; flex-direction: column; align-items: flex-start;}
.footer-logo {width: 107px; margin-bottom: 18px;}
footer div small {max-width: 500px; margin-top: 24px;}
.back-to-top {position: fixed; right: 28px; bottom: 28px; z-index: 900; width: 64px; height: 64px; padding: 0; display: grid; place-items: center; align-content: center; gap: 2px; color: #fff; background: #245515; border: 0; border-radius: 50%; box-shadow: 0 8px 22px rgba(0, 0, 0, .2); cursor: pointer; opacity: 0; visibility: hidden; transform: translateY(12px); transition: .25s;}
.back-to-top.is-visible {opacity: 1; visibility: visible; transform: none;}
.back-to-top span {width: 13px; height: 13px; border-top: 2px solid; border-left: 2px solid; transform: rotate(45deg) translate(3px, 3px);}
.back-to-top small {font-size: 10px;}

/* =========================================================
   Reveal
========================================================= */
.reveal {opacity: 0; transform: translateY(36px); transition: opacity 0.8s ease, transform 0.8s ease;}
.reveal.is-visible {opacity: 1; transform: translateY(0);}

/* =========================================================
   Tablet
========================================================= */
@media screen and (max-width: 1100px) {
  .global-nav {gap: 15px;}
  .global-nav a {font-size: 10px;}
  .story-hero {min-height: 600px; background-position: 52% center;}
  .story-hero__content {width: min(500px, 48%);}
  .story-section {grid-template-columns: 280px minmax(0, 1fr); gap: 55px;}
  .story-media {padding: 60px;}
  .story-product {padding: 70px;}
}

/* =========================================================
   Smartphone
========================================================= */
@media screen and (max-width: 767px) {
  :root {
    --header-height: 68px;
  }
  body {font-size: 14px; line-height: 2;}
  .pc-only {display: none;}
  .header__inner {width: calc(100% - 40px);}
  .header__logo {gap: 9px;}
  .header__logo-main {font-size: 25px;}
  .header__logo-sub {font-size: 9px;}
  .menu-button {position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: space-between; width: 30px; height: 20px; padding: 0; background: transparent; border: 0; cursor: pointer;}
  .menu-button span {display: block; width: 100%; height: 1px; background: var(--white); transition: transform 0.25s ease, opacity 0.25s ease;}
  .menu-button.is-open span:nth-child(1) {transform: translateY(9.5px) rotate(45deg);}
  .menu-button.is-open span:nth-child(2) {opacity: 0;}
  .menu-button.is-open span:nth-child(3) {transform: translateY(-9.5px) rotate(-45deg);}
  .global-nav {position: fixed; top: 0; right: 0; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; width: min(82vw, 360px); height: 100vh; padding: 90px 46px; background: #102b23; transform: translateX(100%); transition: transform 0.3s ease;}
  .global-nav.is-open {transform: translateX(0);}
  .global-nav a {width: 100%; padding: 12px 0; font-size: 14px;}
  .global-nav a::after {display: none;}
  .story-hero {min-height: 620px; padding: calc(var(--header-height) + 48px) 0 54px; background-position: 61% center;}
  .story-hero::before {background: linear-gradient(90deg, rgba(250, 249, 246, .96) 0%, rgba(250, 249, 246, .88) 48%, rgba(250, 249, 246, .34) 76%, rgba(250, 249, 246, 0) 100%);}
  .story-hero::after {background: rgba(17, 29, 24, .025);}
  .story-hero__inner {width: calc(100% - 48px); min-height: 498px; display: flex; align-items: flex-end;}
  .story-hero__content {width: min(100%, 390px); padding: 0 0 6px;}
  .story-hero__label {margin-bottom: 18px; font-size: 11px;}
  .story-hero h1 {font-size: clamp(40px, 12.5vw, 56px); line-height: 1.35;}
  .story-hero__lead {margin-top: 24px; font-size: 14px;}
  .story-hero__profile {margin-top: 26px; padding-top: 18px;}
  .story-hero__profile p {font-size: 11px;}
  .story-hero__profile p:last-child {font-size: 13px;}
  .story-section {display: block; width: calc(100% - 48px); padding: 78px 0;}
  .story-section__heading {position: static; margin-bottom: 48px;}
  .story-section__chapter {gap: 13px; margin-bottom: 27px; padding-bottom: 14px;}
  .story-section__number {font-size: 56px;}
  .story-section__label {font-size: 9px;}
  .story-section__heading h2 {font-size: 23px; line-height: 1.7;}
  .story-text blockquote, .story-media__text blockquote {margin: 38px 0; padding: 30px 26px; font-size: 15px; line-height: 2.05;}
  .story-wide-image, .story-portrait-image {width: calc(100% - 24px); height: 70vw; margin: 0 auto 30px;}
  .story-wide-image img {object-position: center;}
  .story-media {display: flex; flex-direction: column; gap: 42px; width: calc(100% - 24px); margin: 15px auto 55px; padding: 36px 24px 48px;}
  .story-media--right .story-media__image {order: 0;}
  .story-media__image {width: 100%; min-height: 0;}
  .story-media__image > img {aspect-ratio: 0.95 / 1;}
  .story-media__image--pair {grid-template-columns: 1fr 0.82fr;}
  .story-media__image--pair img {height: 74vw;}
  .story-closing {width: calc(100% - 48px); margin-top: 90px; padding: 72px 16px;}
  .story-closing p {font-size: 26px; line-height: 1.8;}
  .story-product {display: block; width: calc(100% - 48px); margin-top: 20px; padding: 26px;}
  .story-product figcaption {padding: 24px 4px 0;}
  .story-back {padding: 70px 24px 90px;}
  .story-back a {min-width: 0; width: 100%;}
  .page-top {right: 18px; bottom: 18px; width: 46px; height: 46px;}
}

/* =========================================================
   Story Profile / Inline Image
========================================================= */
.story-inline-image {margin: 48px 0; overflow: hidden;}
.story-inline-image img {aspect-ratio: 3 / 2; object-fit: cover; object-position: center 42%;}
.story-media__image--button img {object-fit: cover; object-position: center;}
@media screen and (max-width: 767px) {
  .story-inline-image {margin: 34px 0;}
  .story-media__image--button > img {aspect-ratio: 1 / 1;}
}

/* =========================================================
   Common Responsive
========================================================= */
@media screen and (max-width: 900px) {
  body {padding-top: 64px;}
  .site-header {height: 64px; padding: 0 18px;}
  .brand {z-index: 12; gap: 10px; font-size: 13px;}
  .brand-logo {width: 76px;}
  .menu-toggle {display: block;}
  .site-header .global-nav {position: fixed; top: 0; right: 0; z-index: 11; width: min(84vw, 360px); height: 100dvh; padding: 100px 28px 40px; flex-direction: column; align-items: stretch; gap: 0; background: #245515; visibility: hidden; transform: translateX(105%); transition: .32s;}
  .site-header .global-nav.is-open {visibility: visible; transform: none;}
  .site-header .global-nav a {padding: 18px 4px; border-bottom: 1px solid rgba(255, 255, 255, .18); font-size: 16px; font-weight: 700;}
  .site-header .global-nav a::before {display: none;}
  .menu-backdrop {position: fixed; inset: 0; z-index: 10; display: block; background: rgba(0, 0, 0, .48); opacity: 0; visibility: hidden; transition: .3s;}
  .menu-backdrop.is-open {opacity: 1; visibility: visible;}
  body.menu-open {overflow: hidden;}
  footer {padding: 45px 25px; display: block;}
  footer > small {display: block; margin-top: 30px;}
}

@media screen and (max-width: 560px) {
  .back-to-top {right: 16px; bottom: 16px; width: 56px; height: 56px;}
}
