:root {
  --ps-brand: #0da44f;
  --ps-ink: #111d18;
  --ps-muted: #65726b;
  --ps-paper: #f7fbf8;
  --ps-mint: #eef8f1;
  --ps-dark: #07110c;
  --ps-line: #cbd9d0;
}

.project-story-page { background: var(--ps-paper); color: var(--ps-ink); }
.project-story-page .page { background: var(--ps-paper); }
.project-story-page .header { width: min(1440px, 100%); }
.ps-container { width: min(1120px, calc(100% - 64px)); margin-inline: auto; }
.ps-kicker { margin: 0 0 14px; color: var(--ps-brand); font-family: var(--font-en); font-size: 12px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.ps-section-title { margin: 0; font-size: clamp(34px, 3vw, 52px); line-height: 1.35; letter-spacing: -.035em; }

.ps-hero { position: relative; min-height: 470px; overflow: hidden; color: #fff; background: var(--ps-dark); }
.ps-hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ps-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(2,9,5,.84) 0%, rgba(2,9,5,.55) 47%, rgba(2,9,5,.3) 100%), linear-gradient(0deg, rgba(2,9,5,.5), transparent 55%); }
.ps-hero__inner { position: relative; z-index: 1; display: flex; flex-direction: column; justify-content: center; min-height: 470px; padding: 130px 0 70px; }
.ps-hero .ps-kicker { color: #929aa5; }
.ps-hero h1 { margin: 0 0 18px; max-width: 820px; font-size: clamp(44px, 5vw, 68px); line-height: 1.2; letter-spacing: -.04em; }
.ps-hero__lead { max-width: 730px; margin: 0; color: rgba(255,255,255,.92); font-size: 15px; font-weight: 500; line-height: 1.9; }

.ps-overview { padding: 110px 0 120px; }
.ps-overview__grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); gap: 86px; align-items: center; }
.ps-overview__media { position: relative; }
.ps-overview__media::after { content: ""; position: absolute; right: -12px; bottom: -12px; z-index: -1; width: 88%; height: 88%; border: 1px solid var(--ps-brand); }
.ps-overview__media img { width: 100%; aspect-ratio: 4 / 5.5; object-fit: cover; }
.ps-overview__media--railway-s img { object-position: 72% center; }
.ps-overview__media--restaurant-s img { object-position: right center; }
.ps-overview h2 { margin: 0 0 26px; font-size: clamp(32px, 3.4vw, 48px); line-height: 1.48; letter-spacing: -.035em; }
.ps-overview__project { margin: 0 0 25px; font-size: 18px; font-weight: 800; }
.ps-overview__copy { margin: 0; color: #425149; font-size: 15px; line-height: 2; }
.ps-meta { margin: 30px 0 0; border-top: 1px solid var(--ps-line); }
.ps-meta div { display: grid; grid-template-columns: 120px 1fr; gap: 24px; padding: 15px 0; border-bottom: 1px solid var(--ps-line); font-size: 13px; }
.ps-meta dt { color: #66736c; font-weight: 700; }
.ps-meta dd { margin: 0; font-weight: 700; }
.ps-challenge { margin-top: 26px; padding: 24px 26px; background: #d7f2df; }
.ps-challenge h3 { margin: 0 0 14px; font-size: 14px; }
.ps-challenge li { position: relative; padding-left: 22px; color: #405147; font-size: 13px; line-height: 1.8; }
.ps-challenge li + li { margin-top: 8px; }
.ps-challenge li::before { content: ""; position: absolute; top: .9em; left: 0; width: 10px; height: 2px; background: var(--ps-brand); }

.ps-members { padding: 98px 0 112px; background: #eaf4ed; }
.ps-members__intro { max-width: 630px; margin-bottom: 54px; }
.ps-members__intro > p:last-child { margin: 20px 0 0; color: var(--ps-muted); line-height: 1.9; }
.ps-members__grid { display: grid; grid-template-columns: 1.52fr 1fr; gap: 24px; }
.ps-person { display: grid; grid-template-columns: 1.15fr .95fr; min-height: 270px; overflow: hidden; background: #fff; }
.ps-person:first-child { grid-row: span 2; min-height: 570px; }
.ps-person:first-child .ps-person__photo { min-height: 100%; }
.ps-person__photo { min-height: 270px; }
.ps-person__photo img { width: 100%; height: 100%; object-fit: cover; }
.ps-person__body { display: flex; flex-direction: column; padding: 30px 28px; }
.ps-person__role { margin: 0 0 22px; color: var(--ps-brand); font-size: 11px; font-weight: 800; line-height: 1.6; }
.ps-person h3 { margin: auto 0 16px; font-size: 24px; line-height: 1.45; }
.ps-person__text { margin: auto 0 0; color: #657269; font-size: 13px; line-height: 1.9; }

.ps-chapter { padding: 120px 0; }
.ps-chapter:nth-of-type(even) { background: #eaf4ed; }
.ps-chapter__grid { display: grid; grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); gap: 90px; align-items: center; }
.ps-chapter--reverse .ps-chapter__copy { order: 2; }
.ps-chapter--reverse .ps-gallery { order: 1; }
.ps-chapter__eyebrow { display: flex; align-items: center; gap: 16px; margin-bottom: 26px; font-size: 12px; font-weight: 700; }
.ps-chapter__number { display: grid; width: 42px; height: 42px; place-items: center; border: 1px solid var(--ps-brand); border-radius: 50%; color: var(--ps-ink); font-family: var(--font-en); font-weight: 700; }
.ps-chapter h2 { margin: 0 0 26px; font-size: clamp(31px, 3vw, 44px); line-height: 1.45; letter-spacing: -.035em; }
.ps-chapter__copy > p { margin: 0 0 18px; color: #526058; font-size: 15px; line-height: 2; }
.ps-quote { margin: 28px 0; padding: 24px 15px; border-top: 1px solid var(--ps-brand); border-bottom: 1px solid var(--ps-brand); font-size: 20px; font-weight: 800; line-height: 1.8; }
.ps-gallery { display: grid; grid-template-columns: 1.5fr .9fr; grid-template-rows: 190px 190px; gap: 12px; }
.ps-gallery img { width: 100%; height: 100%; object-fit: cover; }
.ps-gallery img:first-child { grid-row: 1 / 3; }
.ps-gallery__image--railway-s { object-position: 72% center; }
.ps-gallery--single { display: block; }
.ps-gallery--single img { width: 100%; aspect-ratio: 1.5; }

.ps-learning { padding: 105px 0; color: #fff; background: var(--ps-dark); }
.ps-learning__grid { display: grid; grid-template-columns: .95fr 1.05fr; gap: 90px; align-items: center; }
.ps-learning h2 { margin: 0 0 24px; max-width: 480px; font-size: clamp(38px, 4vw, 58px); line-height: 1.4; letter-spacing: -.04em; }
.ps-learning p { max-width: 520px; margin: 0; color: #aebbb3; font-size: 14px; line-height: 2; }
.ps-learning blockquote { margin: 0; padding: 40px 38px; border: 1px solid rgba(255,255,255,.62); border-radius: 24px; font-size: clamp(27px, 2.6vw, 38px); font-weight: 800; line-height: 1.65; }
.ps-learning cite { display: block; margin-top: 26px; color: #94a199; font-size: 12px; font-style: normal; }

.ps-related { padding: 95px 0 110px; }
.ps-related__head { display: flex; justify-content: space-between; align-items: end; margin-bottom: 50px; }
.ps-related__link { min-height: 44px; padding: 10px 0; border-bottom: 1px solid var(--ps-ink); font-size: 13px; font-weight: 800; }
.ps-related__grid { display: grid; grid-template-columns: 2fr 1fr; gap: 24px; }
.ps-related__card { display: block; }
.ps-related__card img { width: 100%; aspect-ratio: 1.85; object-fit: cover; }
.ps-related__card:first-child img { aspect-ratio: 2.2; }
.ps-related__label { margin: 18px 0 8px; color: var(--ps-brand); font-family: var(--font-en); font-size: 11px; font-weight: 800; letter-spacing: .1em; }
.ps-related__title { margin: 0; padding-bottom: 18px; border-bottom: 1px solid var(--ps-line); font-size: 15px; font-weight: 800; }

.ps-cta { padding: 72px 0; background: #dfece3; }
.ps-cta__inner { display: flex; justify-content: space-between; align-items: center; gap: 40px; }
.ps-cta h2 { margin: 0 0 12px; font-size: clamp(28px, 3vw, 40px); line-height: 1.5; }
.ps-cta p { margin: 0; color: var(--ps-muted); }
.ps-button { display: inline-flex; align-items: center; justify-content: space-between; gap: 28px; min-width: 188px; min-height: 54px; padding: 14px 24px; border: 1px solid var(--ps-ink); border-radius: 999px; font-size: 13px; font-weight: 800; transition: background .2s, color .2s; }
.ps-button:hover { color: #fff; background: var(--ps-ink); }
.project-story-page .footer { border-radius: 0; }

@media (max-width: 900px) {
  .ps-overview__grid, .ps-chapter__grid, .ps-learning__grid { gap: 50px; }
  .ps-members__grid { grid-template-columns: 1fr; }
  .ps-person:first-child { grid-row: auto; }
}

@media (max-width: 768px) {
  .ps-container { width: calc(100% - 36px); }
  .ps-hero, .ps-hero__inner { min-height: 410px; }
  .ps-hero__inner { justify-content: center; padding: 120px 0 58px; }
  .ps-hero h1 { margin-bottom: 18px; font-size: 42px; }
  .ps-hero__lead { font-size: 13px; line-height: 1.9; }
  .ps-overview { padding: 62px 0 72px; }
  .ps-overview__grid { grid-template-columns: 1fr; gap: 55px; }
  .ps-overview__media img { aspect-ratio: 1 / 1.35; }
  .ps-overview h2 { font-size: 29px; }
  .ps-overview__project { font-size: 15px; }
  .ps-overview__copy { font-size: 13px; line-height: 1.85; }
  .ps-meta div { grid-template-columns: 88px 1fr; gap: 10px; font-size: 11px; }
  .ps-challenge { padding: 20px; }
  .ps-members { padding: 70px 0 76px; }
  .ps-section-title { font-size: 30px; }
  .ps-members__intro { margin-bottom: 36px; }
  .ps-members__intro > p:last-child { font-size: 12px; }
  .ps-members__grid { gap: 16px; }
  .ps-person, .ps-person:first-child { grid-template-columns: 1fr; min-height: auto; }
  .ps-person__photo, .ps-person:first-child .ps-person__photo { min-height: 0; aspect-ratio: 1 / 1.12; }
  .ps-person__body { min-height: 220px; padding: 24px 20px; }
  .ps-person h3 { margin: 0 0 16px; font-size: 21px; }
  .ps-person__role { margin-bottom: 16px; }
  .ps-person__text { font-size: 12px; }
  .ps-chapter { padding: 76px 0; }
  .ps-chapter__grid { grid-template-columns: 1fr; gap: 42px; }
  .ps-chapter--reverse .ps-chapter__copy, .ps-chapter--reverse .ps-gallery { order: initial; }
  .ps-chapter h2 { font-size: 29px; }
  .ps-chapter__copy > p { font-size: 13px; line-height: 1.9; }
  .ps-quote { padding: 20px 8px; font-size: 17px; }
  .ps-gallery { grid-template-rows: 132px 132px; gap: 8px; }
  .ps-gallery--single img { aspect-ratio: 1.35; }
  .ps-learning { padding: 72px 0; }
  .ps-learning__grid { grid-template-columns: 1fr; gap: 42px; }
  .ps-learning h2 { font-size: 34px; }
  .ps-learning blockquote { padding: 30px 24px; border-radius: 18px; font-size: 25px; }
  .ps-related { padding: 72px 0 80px; }
  .ps-related__head { display: block; margin-bottom: 34px; }
  .ps-related__link { display: inline-block; margin-top: 18px; }
  .ps-related__grid { grid-template-columns: 1fr; gap: 34px; }
  .ps-related__card img, .ps-related__card:first-child img { aspect-ratio: 1.55; }
  .ps-cta { padding: 58px 0; }
  .ps-cta__inner { display: block; }
  .ps-cta h2 { font-size: 27px; }
  .ps-cta p { font-size: 13px; }
  .ps-button { width: 100%; margin-top: 28px; }
}

@media (prefers-reduced-motion: no-preference) {
  .ps-person, .ps-related__card { transition: transform .25s ease, box-shadow .25s ease; }
  .ps-person:hover, .ps-related__card:hover { transform: translateY(-4px); box-shadow: 0 18px 50px rgba(10,40,24,.1); }
}

/* Station story refinements */
.story-station-page .ps-overview__media--reveal { isolation:isolate; }
.story-station-page .ps-overview__media--reveal::after { right:-24px; bottom:-24px; z-index:0; width:100%; height:100%; border:0; background:var(--ps-brand); }
.story-station-page .ps-overview__media--reveal img { position:relative; z-index:1; transform:translate3d(24px,24px,0); will-change:transform; }
.story-station-page .ps-overview h2 { max-width:580px; margin-bottom:24px; font-size:clamp(29px,2.25vw,36px); line-height:1.55; }
.story-station-page .ps-overview__project { color:var(--ps-brand); font-size:22px; line-height:1.55; }
.story-station-page .ps-members { position:relative; isolation:isolate; overflow:hidden; color:#fff; background:var(--ps-dark); }
.story-station-page .ps-members::before { content:""; position:absolute; inset:0; z-index:-2; background:url("../assets/railway/railway-appeal-teamwork.jpeg") center 48% / cover no-repeat fixed; }
.story-station-page .ps-members::after { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(105deg,rgba(1,8,4,.72),rgba(2,36,18,.58)); }
.story-station-page .ps-members__intro { max-width:820px; }
.story-station-page .ps-members__intro > p:last-child { color:rgba(255,255,255,.74); }
.story-station-page .ps-members__grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.story-station-page .ps-person { grid-template-columns:1fr; min-height:0; overflow:hidden; border:1px solid rgba(255,255,255,.68); border-radius:24px; color:var(--ps-ink); background:rgba(255,255,255,.97); box-shadow:0 24px 58px rgba(0,0,0,.2); }
.story-station-page .ps-person:first-child { grid-column:1/-1; grid-row:auto; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); min-height:430px; }
.story-station-page .ps-person:first-child .ps-person__photo { min-height:430px; }
.story-station-page .ps-person:not(:first-child) .ps-person__photo { min-height:0; aspect-ratio:16/9; }
.story-station-page .ps-person:not(:first-child) .ps-person__body { min-height:270px; }
.story-station-page .ps-person__body { padding:32px; }
.story-station-page .ps-person h3 { margin:10px 0 14px; font-size:26px; }
.story-station-page .ps-person__role { margin-bottom:12px; }
.story-station-page .ps-person__text { margin:0; }
.story-station-page .ps-chapter { --ps-chapter-surface:var(--ps-paper); position:relative; background:var(--ps-chapter-surface); }
.story-station-page .ps-chapter--mint { --ps-chapter-surface:#eaf4ed; }
.story-station-page .ps-chapter--reverse .ps-chapter__grid { grid-template-columns:minmax(0,1.18fr) minmax(0,.82fr); }
.story-station-page .ps-chapter h2 { font-size:clamp(27px,2.1vw,32px); line-height:1.5; }
.story-station-page .ps-quote { display:grid; grid-template-columns:104px minmax(0,1fr); gap:18px; align-items:center; padding:20px 10px; }
.story-station-page .ps-quote__icon { display:block; width:104px; height:104px; object-fit:contain; }
.story-station-page .ps-quote__text { min-width:0; }
.story-station-page .ps-chapter--continues::after { content:""; position:absolute; left:50%; bottom:clamp(-56px,-4vw,-36px); z-index:5; width:clamp(96px,11vw,160px); height:clamp(36px,4vw,56px); transform:translateX(-50%); clip-path:polygon(0 0,100% 0,50% 100%); background:var(--ps-chapter-surface); }
.story-station-page .ps-learning { position:relative; isolation:isolate; overflow:hidden; background:var(--ps-dark); }
.story-station-page .ps-learning::before { content:""; position:absolute; inset:0; z-index:-2; background:url("../assets/railway/railway-service-night.jpeg") center 58% / cover no-repeat fixed; }
.story-station-page .ps-learning::after { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(100deg,rgba(2,10,6,.89),rgba(3,18,10,.78)); }
.story-station-page .ps-learning__grid { grid-template-columns:1.08fr .92fr; gap:64px; }
.story-station-page .ps-learning h2 { max-width:none; font-size:clamp(28px,2.85vw,41px); white-space:nowrap; }
.story-station-page .ps-related__grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.story-station-page .ps-related__card img,.story-station-page .ps-related__card:first-child img { aspect-ratio:1.75; }
.story-station-page .ps-cta { padding:60px 0; color:#fff; border-bottom:1px solid var(--ps-brand); background:#111; }
.story-station-page .ps-cta__inner { display:flex; justify-content:space-between; align-items:center; gap:40px; }
.story-station-page .ps-cta__eyebrow { margin:0 0 8px; color:#9ca29f; font-size:12px; font-weight:700; letter-spacing:.08em; }
.story-station-page .ps-cta h2 { max-width:620px; margin:0; font-size:27px; line-height:1.5; }
.story-station-page .ps-cta__buttons { display:flex; gap:14px; }
.story-station-page .ps-cta .ps-button { min-width:190px; min-height:54px; margin:0; padding:14px 23px; border-color:rgba(255,255,255,.55); color:#fff; }
.story-station-page .ps-cta .ps-button--primary,.story-station-page .ps-cta .ps-button:hover { color:#161e29; border-color:#fff; background:#fff; }

/* Restaurant story photography
   （単独ページの .story-restaurant-page と、統合ページの .ps-story--02 の両方に適用） */
.story-restaurant-page .ps-members::before,
.ps-story--02 .ps-members::before { background-image:url("../assets/index/index-trusted-photo-r5.jpg"); background-position:center 48%; }
.story-restaurant-page .ps-members::after,
.ps-story--02 .ps-members::after { background:linear-gradient(105deg,rgba(1,7,4,.7),rgba(3,28,15,.52)); }
.story-restaurant-page .ps-learning::before,
.ps-story--02 .ps-learning::before { background-image:url("../assets/index/index-trusted-photo-r1.jpg"); background-position:center 42%; }
.story-restaurant-page .ps-learning::after,
.ps-story--02 .ps-learning::after { background:linear-gradient(100deg,rgba(2,10,6,.87),rgba(3,18,10,.72)); }

/* ==========================================================================
   統合ページ（プロジェクトストーリー01＋02）専用
   ========================================================================== */

/* ---- 目次 ---- */
.ps-index { padding:64px 0 0; }
.ps-index__grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.ps-index__item {
  position:relative; overflow:hidden;
  display:grid; grid-template-columns:auto minmax(0,1fr); gap:22px; align-items:start;
  padding:30px 32px;
  border:1px solid var(--ps-line); border-radius:20px;
  background:#fff; color:inherit; text-decoration:none;
  transition:transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.ps-index__item::after {
  content:"↓"; position:absolute; right:26px; bottom:22px;
  color:var(--ps-brand); font-size:18px; line-height:1;
  transition:transform .3s ease;
}
.ps-index__item:hover { transform:translateY(-4px); border-color:var(--ps-brand); box-shadow:0 22px 46px rgba(8,60,31,.12); }
.ps-index__item:hover::after { transform:translateY(4px); }
.ps-index__num { font-family:var(--font-en); font-size:44px; font-weight:800; line-height:1; color:var(--ps-brand); letter-spacing:-.04em; }
.ps-index__body { display:block; min-width:0; }
.ps-index__label { display:block; margin-bottom:9px; color:var(--ps-muted); font-family:var(--font-en); font-size:11px; font-weight:800; letter-spacing:.16em; }
.ps-index__title { display:block; font-size:19px; font-weight:700; line-height:1.6; letter-spacing:-.02em; }
.ps-index__meta { display:block; margin-top:12px; padding-right:34px; color:var(--ps-muted); font-size:12px; line-height:1.7; }

/* ---- ストーリーの区切り見出し ---- */
.ps-story { scroll-margin-top:120px; }
.ps-story__head { padding:76px 0 4px; }
.ps-story__head-inner { display:grid; grid-template-columns:auto minmax(0,1fr); gap:26px; align-items:center; padding-bottom:26px; border-bottom:2px solid var(--ps-brand); }
.ps-story__num { margin:0; font-family:var(--font-en); font-size:clamp(56px,6vw,88px); font-weight:800; line-height:.85; letter-spacing:-.05em; color:var(--ps-brand); }
.ps-story__head .ps-kicker { margin-bottom:8px; }
.ps-story__title { margin:0; font-size:clamp(22px,2.2vw,30px); font-weight:700; line-height:1.5; letter-spacing:-.03em; }

/* 統合ページでは各ストーリー先頭の余白を見出し側が持つ */
.ps-story .ps-overview { padding-top:64px; }

@media (max-width:900px) {
  .ps-index__grid { grid-template-columns:1fr; }
}

@media (max-width:768px) {
  .ps-index { padding-top:44px; }
  .ps-index__item { gap:16px; padding:24px 22px; border-radius:16px; }
  .ps-index__num { font-size:34px; }
  .ps-index__title { font-size:17px; }
  .ps-index__meta { padding-right:26px; }
  .ps-story { scroll-margin-top:80px; }
  .ps-story__head { padding-top:52px; }
  .ps-story__head-inner { gap:16px; padding-bottom:20px; }
  .ps-story .ps-overview { padding-top:44px; }
}

@media (max-width:900px) {
  .story-station-page .ps-members__grid { grid-template-columns:1fr; }
  .story-station-page .ps-person:first-child { grid-column:auto; }
}

@media (max-width:768px) {
  .story-station-page .ps-overview h2 { font-size:24px; line-height:1.55; }
  .story-station-page .ps-overview__project { font-size:18px; }
  .story-station-page .ps-overview__media--reveal::after { right:-16px; bottom:-16px; }
  .story-station-page .ps-overview__media--reveal img { transform:translate3d(16px,16px,0); }
  .story-station-page .ps-members::before { background-attachment:scroll; }
  .story-station-page .ps-person,.story-station-page .ps-person:first-child { grid-template-columns:1fr; border-radius:18px; }
  .story-station-page .ps-person:first-child,.story-station-page .ps-person:first-child .ps-person__photo { min-height:0; }
  .story-station-page .ps-person:first-child .ps-person__photo,.story-station-page .ps-person:not(:first-child) .ps-person__photo { aspect-ratio:16/11; }
  .story-station-page .ps-person:not(:first-child) .ps-person__body { min-height:220px; }
  .story-station-page .ps-person__body { padding:24px 20px; }
  .story-station-page .ps-chapter--reverse .ps-chapter__grid { grid-template-columns:1fr; }
  .story-station-page .ps-chapter h2 { font-size:25px; }
  .story-station-page .ps-quote { grid-template-columns:76px minmax(0,1fr); gap:12px; padding:18px 4px; }
  .story-station-page .ps-quote__icon { width:76px; height:76px; }
  .story-station-page .ps-learning::before { background-attachment:scroll; }
  .story-station-page .ps-learning__grid { grid-template-columns:1fr; gap:42px; }
  .story-station-page .ps-learning h2 { font-size:25px; white-space:nowrap; }
  .story-station-page .ps-related__grid { grid-template-columns:1fr; }
  .story-station-page .ps-cta { padding:48px 0; }
  .story-station-page .ps-cta__inner { display:flex; flex-direction:column; align-items:flex-start; }
  .story-station-page .ps-cta h2 { font-size:23px; line-height:1.5; }
  .story-station-page .ps-cta__buttons { display:flex; width:100%; flex-direction:column; margin-top:4px; }
  .story-station-page .ps-cta .ps-button { width:100%; margin:0; }
}

@media (prefers-reduced-motion:reduce) {
  .story-station-page .ps-overview__media--reveal img { transform:translate3d(0,0,0) !important; will-change:auto; }
}
