[hidden] { display: none !important; }

@font-face {
  font-family: "IBM Plex Sans";
  src: url("fonts/IBMPlexSans-latin.056e4e2459f5.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("fonts/IBMPlexSans-latin-ext.ae1d854fefa1.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 700;
  font-display: swap;
  unicode-range: U+0100-02FF, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  color-scheme: light;
  --paper: #ede8dc;
  --paper-raised: #f5f1e8;
  --ink: #14292b;
  --muted: #435a5b;
  --line: #b8b9ad;
  --signal-strong: #00676d;
  --focus: #8c3d25;
  --night: #10272c;
  --gold: #d0a76f;
  --rust: #b85432;
  --river: #287980;
  --shadow: 0 22px 55px rgb(6 27 31 / 13%);
  --topbar-h: 3.75rem;
  --reading-line: 34vh;
  font-family: "IBM Plex Sans", Arial, sans-serif;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: #101d20;
  --paper-raised: #17282b;
  --ink: #f0eee4;
  --muted: #bfcbc5;
  --line: #465b5d;
  --signal-strong: #83d2c7;
  --focus: #f0bd7e;
  --night: #091517;
  --gold: #d8b783;
  --rust: #ed9368;
  --river: #88c4bd;
  --shadow: 0 22px 60px rgb(0 0 0 / 34%);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--topbar-h) + 1rem); }
body { margin: 0; color: var(--ink); background: var(--paper); font-size: 1rem; line-height: 1.65; }
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: var(--signal-strong); text-underline-offset: .18em; text-decoration-thickness: .07em; }
a:hover { text-decoration-thickness: .13em; }
button:focus-visible, a:focus-visible, input:focus-visible, h1:focus-visible { outline: 3px solid var(--focus); outline-offset: 4px; }
::selection { color: #101d20; background: #d6b47e; }

.skip-link { position: fixed; z-index: 100; top: .5rem; left: .5rem; padding: .75rem 1rem; color: var(--paper-raised); background: var(--night); transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }

.topbar { position: sticky; z-index: 50; top: 0; display: flex; align-items: center; gap: clamp(.5rem, 1.5vw, 1.5rem); height: var(--topbar-h); padding: 0 clamp(.65rem, 2vw, 1.75rem); color: #f3f0e7; background: #0d2024; border-bottom: 1px solid rgb(233 225 207 / 18%); }
.home-mark { display: inline-flex; align-items: center; gap: .4rem; flex: 0 0 auto; color: #f3f0e7; font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-decoration: none; }
.mark-wave { color: var(--gold); font-family: Georgia, serif; font-size: 1.55rem; line-height: 1; }
.top-nav { display: flex; align-items: center; gap: clamp(.45rem, 1.5vw, 1.4rem); min-width: 0; margin-left: auto; overflow-x: auto; scrollbar-width: none; }
.top-nav::-webkit-scrollbar { display: none; }
.top-nav a { flex: 0 0 auto; color: #e2e5dd; font-size: .78rem; text-decoration: none; white-space: nowrap; }
.top-nav a:hover { color: #f4c988; }
.top-controls { display: flex; flex: 0 0 auto; align-items: center; gap: .45rem; }
.edition-link { display: inline-flex; min-height: 2.75rem; align-items: center; padding: 0 .5rem; color: #f3f0e7; font-size: .78rem; text-decoration: underline; text-underline-offset: .2em; white-space: nowrap; }
.theme-button { display: grid; width: 2.75rem; height: 2.75rem; place-items: center; border: 1px solid rgb(243 240 231 / 42%); border-radius: 50%; color: #f3f0e7; background: transparent; font-size: 1.35rem; cursor: pointer; }
.theme-button:hover { color: #ffd69a; border-color: #ffd69a; }

.atmosphere { position: absolute; z-index: -1; inset: var(--topbar-h) 0 auto; height: 100vh; overflow: hidden; pointer-events: none; background: var(--night); }
.atmosphere::before { position: absolute; inset: 0; content: ""; background: radial-gradient(ellipse at 77% 26%, rgb(61 126 125 / 27%), transparent 43%), linear-gradient(130deg, #10272c, #091719 82%); }
.atmosphere span { position: absolute; right: -15%; width: 92%; height: 1px; background: linear-gradient(90deg, transparent, rgb(155 202 190 / 23%), transparent); transform: rotate(-12deg); }
.atmosphere span:nth-child(1) { top: 31%; }
.atmosphere span:nth-child(2) { top: 47%; right: -8%; opacity: .55; }
.atmosphere span:nth-child(3) { top: 64%; right: -23%; opacity: .38; }

.hero { position: relative; display: grid; grid-template-columns: minmax(18rem, .92fr) minmax(24rem, 1.08fr); align-items: center; gap: clamp(2rem, 5vw, 5.6rem); min-height: min(860px, calc(100svh - var(--topbar-h))); padding: clamp(3.4rem, 7vw, 7rem) max(7vw, calc((100vw - 82rem) / 2)); color: #f0eee4; background: var(--night); isolation: isolate; }
.hero::after { position: absolute; z-index: -1; inset: 0; content: ""; opacity: .36; background: linear-gradient(90deg, #0c1c1f 0%, rgb(11 31 34 / 88%) 43%, rgb(11 31 34 / 16%) 100%); }
.hero-copy { max-width: 39rem; }
.eyebrow, .kicker { margin: 0 0 1rem; color: #dcb579; font-size: .76rem; font-weight: 700; letter-spacing: .16em; line-height: 1.35; text-transform: uppercase; }
.hero h1 { max-width: 12ch; margin: 0; color: #f5f1e8; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.55rem, 5.1vw, 5.1rem); font-weight: 400; letter-spacing: -.055em; line-height: 1.04; text-wrap: balance; }
.deck { max-width: 39rem; margin: 1.65rem 0 0; color: #dbe1d9; font-size: clamp(1.04rem, 1.45vw, 1.24rem); line-height: 1.55; }
.hero-date { margin: 1.7rem 0 0; color: #dab77d; font-size: .82rem; font-weight: 650; letter-spacing: .12em; text-transform: uppercase; }
.locator-figure { min-width: 0; margin: 0; }
.scene-floor--map { min-height: 330px; overflow: hidden; border: 1px solid rgb(240 238 228 / 25%); border-radius: 1.2rem; background: #e6dfd0; box-shadow: 0 28px 72px rgb(0 0 0 / 28%); }
.locator-figure img { display: block; width: 100%; height: auto; aspect-ratio: 1000 / 760; object-fit: contain; }
.locator-figure figcaption { display: grid; gap: .65rem; padding: .95rem .1rem 0; color: #e1e4dc; font-size: .78rem; line-height: 1.5; }
.locator-figure a { color: #f1c784; }
.map-credits { color: #bacac4; }
.map-mark-key { display: flex; flex-wrap: wrap; gap: .35rem 1rem; margin: .15rem 0 0; padding: 0; list-style: none; }
.map-mark-key li { display: flex; flex-wrap: wrap; gap: .35rem; }
.map-mark-key li::before { width: .55rem; height: .55rem; margin-top: .47em; border: 2px solid #7b2f21; border-radius: 50%; content: ""; }

.share-section { display: flex; align-items: center; gap: 1rem; min-height: 5.5rem; padding: .9rem max(7vw, calc((100vw - 82rem) / 2)); color: var(--ink); background: var(--paper-raised); border-bottom: 1px solid var(--line); }
.share-section > p { margin: 0; color: var(--muted); font-size: .78rem; font-weight: 650; }
.share-row { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.share-icon { display: grid; width: 2.75rem; height: 2.75rem; flex: 0 0 auto; place-items: center; border: 1px solid var(--line); border-radius: 50%; color: var(--signal-strong); background: transparent; cursor: pointer; }
.share-icon:hover { color: var(--paper-raised); background: var(--signal-strong); }
.share-icon svg { width: 1.2rem; height: 1.2rem; fill: currentColor; }
.share-status { min-height: 1.35em; color: var(--muted); font-size: .78rem; }
.share-copy-target { width: min(26rem, 70vw); min-height: 2.75rem; padding: .4rem .65rem; color: var(--ink); background: var(--paper-raised); border: 1px solid var(--line); }
.share-copy-target[hidden] { display: none; }

.story-wrap { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); }
.story { width: min(100%, 76rem); margin: 0 auto; }
.chapter { position: relative; min-height: 690px; padding: clamp(4.8rem, 9vw, 8rem) clamp(1.25rem, 7vw, 7.2rem); scroll-margin-top: calc(var(--topbar-h) + 1rem); }
.chapter:nth-child(odd) { color: var(--ink); background: var(--paper); }
.chapter:nth-child(even) { color: var(--ink); background: var(--paper-raised); }
.chapter-inner { width: min(100%, 66rem); margin: 0 auto; }
.chapter-heading { max-width: 54rem; margin: 0 auto 2.25rem; }
.chapter-heading .kicker { color: var(--signal-strong); }
.chapter h2, .source-section h2 { margin: 0; color: var(--ink); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2rem, 4.2vw, 3.75rem); font-weight: 400; letter-spacing: -.045em; line-height: 1.1; text-wrap: balance; }
.permalink { display: inline-block; width: 1.15em; margin-left: -1.15em; color: var(--muted); font-family: "IBM Plex Sans", Arial, sans-serif; font-size: .62em; text-decoration: none; opacity: .7; }
.permalink:hover { color: var(--signal-strong); opacity: 1; }
.chapter-copy { width: min(100%, 48rem); margin: 0 auto; font-size: clamp(1rem, 1.25vw, 1.13rem); line-height: 1.82; }
.chapter-copy p { margin: 0 0 1.35rem; }
.inquiry-sidebar { width: min(100%, 50rem); margin: 2rem 0 2.6rem auto; padding: 1.2rem 1.45rem 1.35rem; border-inline-start: 3px solid var(--gold); border-radius: .2rem .8rem .8rem .2rem; color: var(--ink); background: var(--paper-raised); box-shadow: var(--shadow); }
.inquiry-sidebar .kicker { margin: 0 0 .45rem; color: var(--signal-strong); }
.inquiry-sidebar h3 { margin: 0 0 .65rem; font-family: Georgia,serif; font-size: clamp(1.25rem,2.3vw,1.8rem); line-height: 1.2; }
.inquiry-sidebar p:last-child { max-width: 68ch; margin: 0; }
.source-marks { display: inline-flex; gap: .18rem; margin-left: .15rem; white-space: nowrap; }
.source-mark { color: var(--signal-strong); font-size: .72em; font-weight: 750; vertical-align: super; text-decoration: none; }
.source-mark:hover { text-decoration: underline; }

.data-scene { width: min(100%, 55rem); min-height: 340px; margin: 2.7rem auto 1rem; padding: clamp(1.25rem, 3.5vw, 2.8rem); border: 1px solid var(--line); border-radius: .8rem; background: color-mix(in srgb, var(--paper-raised) 82%, transparent); box-shadow: var(--shadow); }
.data-scene figcaption, .evidence-photo figcaption { margin-top: 1.1rem; color: var(--muted); font-size: .85rem; line-height: 1.55; }
.flow-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem; margin: 0; padding: 0; list-style: none; }
.flow-list li { display: grid; grid-template-columns: auto auto 1fr; align-items: center; gap: .4rem .75rem; min-height: 148px; padding: 1.2rem; border-left: 4px solid var(--river); background: var(--paper); }
.flow-value { grid-column: 1; color: var(--signal-strong); font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 3.15rem); font-variant-numeric: tabular-nums; line-height: 1; }
.flow-unit { align-self: center; color: var(--muted); font-size: .75rem; }
.flow-list li > div { grid-column: 1 / -1; }
.flow-list strong, .flow-list small { display: block; }
.flow-list strong { font-size: 1rem; }
.flow-list small { margin-top: .2rem; color: var(--muted); font-size: .82rem; }
.scope-scene > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.scope-card { min-height: 235px; padding: 1.4rem; border-top: 5px solid var(--signal-strong); background: var(--paper); }
.scope-card--1 { border-color: var(--rust); }
.scope-number { margin: 0; color: var(--signal-strong); font-family: Georgia,serif; font-size: 4.6rem; line-height: 1; }
.scope-card--1 .scope-number { color: var(--rust); }
.scope-card h3 { margin: .75rem 0 .5rem; font-family: Georgia,serif; font-size: 1.25rem; font-weight: 500; line-height: 1.2; }
.scope-card p:last-child { margin: 0; color: var(--muted); font-size: .88rem; line-height: 1.5; }
.route-scene ol, .restoration-scene ol { display: grid; gap: .8rem; margin: 0; padding: 0; list-style: none; }
.route-scene ol { grid-template-columns: repeat(2,minmax(0,1fr)); }
.route-scene li { position: relative; display: grid; min-height: 175px; align-content: end; gap: .55rem; padding: 1.25rem; border-radius: .45rem; color: #f3f0e7; background: linear-gradient(155deg, #164d50, #0f2b30); }
.route-scene li + li::before { position: absolute; top: 50%; left: -1.05rem; color: var(--gold); content: "→"; font-size: 1.5rem; transform: translateY(-50%); }
.route-index { position: absolute; top: 1rem; left: 1.25rem; color: #f2c888; font-size: .75rem; letter-spacing: .12em; }
.route-scene li strong { font-family: Georgia,serif; font-size: 1.5rem; font-weight: 400; line-height: 1.15; }
.route-scene li small { color: #d4ded6; font-size: .85rem; }
.route-scene .separate-site { margin: 1rem 0 0; padding-top: .9rem; color: var(--muted); border-top: 1px solid var(--line); font-size: .86rem; }
.image-pair { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.25rem; width: min(100%,66rem); margin: 2.5rem auto 0; }
.evidence-photo { min-width: 0; margin: 0; }
.scene-floor--photo { display: grid; min-height: 360px; place-items: center; overflow: hidden; background: #15282b; }
.evidence-photo img { display: block; width: 100%; max-height: 580px; object-fit: contain; }
.image-credit { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; margin: .6rem 0 0; color: var(--muted); font-size: .74rem; line-height: 1.45; }
.image-credit a { color: var(--signal-strong); }
.volunteer-scene { position: relative; display: grid; grid-template-columns: minmax(11rem,.75fr) minmax(0,1.25fr); align-items: center; gap: 2rem; overflow: hidden; color: #f3f0e7; background: linear-gradient(135deg,#10282d,#174a4a); }
.volunteer-word { margin: 0; color: #ecc68c; font-family: Georgia,serif; font-size: clamp(2.1rem, 5vw, 4.2rem); line-height: .95; letter-spacing: -.05em; }
.volunteer-scene > p:not(.volunteer-word) { color: #dce5dd; }
.volunteer-scene figcaption { grid-column: 1 / -1; color: #c6d4cd; }
.restoration-scene ol { grid-template-columns: repeat(3,minmax(0,1fr)); }
.restoration-scene li { display: grid; min-height: 180px; align-content: space-between; padding: 1.15rem; border-bottom: 4px solid var(--signal-strong); background: var(--paper); }
.restoration-scene time { color: var(--signal-strong); font-family: Georgia,serif; font-size: 2.5rem; }
.restoration-scene strong { font-size: .95rem; line-height: 1.4; }
.identity-scene { display: grid; grid-template-columns: minmax(12rem,.65fr) minmax(0,1.35fr); align-items: center; gap: 1rem 2rem; }
.identity-scene > div { display: grid; justify-items: center; align-content: center; width: min(100%,17rem); aspect-ratio: 1; padding: 1rem; border: 2px solid var(--rust); border-radius: 50%; text-align: center; }
.identity-scene > div strong { color: var(--rust); font-family: Georgia,serif; font-size: clamp(2.3rem,5vw,4.1rem); font-weight: 400; line-height: 1; }
.identity-scene > div span { margin-top: .55rem; font-size: .87rem; }
.identity-scene > p { max-width: 28rem; color: var(--muted); font-size: 1.08rem; }
.identity-scene figcaption { grid-column: 1 / -1; }
.defenses-scene > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.defense-card { min-height: 220px; padding: 1.3rem; background: var(--paper); border-top: 5px solid var(--signal-strong); }
.defense-card--ongoing { border-color: var(--rust); }
.defense-card > span { color: var(--muted); font-size: .74rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.defense-card h3 { margin: .9rem 0 .6rem; font-family: Georgia,serif; font-size: 1.45rem; font-weight: 500; line-height: 1.15; }
.defense-card p { margin: 0; color: var(--muted); font-size: .88rem; }

.source-section { padding: clamp(4rem,8vw,7rem) clamp(1.25rem,7vw,7.2rem); color: var(--ink); background: #d9ded5; scroll-margin-top: calc(var(--topbar-h) + 1rem); }
:root[data-theme="dark"] .source-section { background: #192a2c; }
.source-section > .chapter-inner { max-width: 66rem; }
.source-section .kicker { color: var(--signal-strong); }
.source-intro, .method-note { max-width: 48rem; color: var(--muted); }
.source-list { display: grid; gap: .35rem; margin: 2rem 0 0; padding: 0; list-style: none; }
.source-item { display: grid; grid-template-columns: 3.5rem minmax(0,1fr); gap: 1rem; padding: 1.25rem 0; border-top: 1px solid var(--line); scroll-margin-top: calc(var(--topbar-h) + 1rem); }
.source-id { color: var(--signal-strong); font-size: .82rem; font-weight: 750; letter-spacing: .09em; }
.source-item h3 { margin: 0 0 .35rem; font-family: Georgia,serif; font-size: 1.2rem; font-weight: 500; }
.source-item p { max-width: 48rem; margin: 0 0 .6rem; color: var(--muted); font-size: .87rem; }
.source-item ul { display: flex; flex-wrap: wrap; gap: .4rem 1.25rem; margin: 0; padding-left: 1rem; font-size: .85rem; }
.source-item li { padding-left: .1rem; }
.site-footer { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .5rem .8rem; min-height: 6rem; padding: 1.25rem; color: #dce4de; background: #0d2024; font-size: .8rem; }
.site-footer p { flex-basis: 100%; margin: 0; color: #e8d2ad; text-align: center; }
.site-footer a { color: #f1c784; }

.reading-rail { position: fixed; z-index: 40; top: 50%; right: max(1.25rem, calc((100vw - 104rem) / 2)); display: grid; gap: .48rem; padding: .8rem .65rem; border: 1px solid rgb(232 231 217 / 34%); border-radius: 2rem; background: rgb(13 32 36 / 92%); box-shadow: 0 8px 26px rgb(0 0 0 / 20%); transform: translateY(-50%); }
.rail-dot { position: relative; display: grid; width: 1.2rem; height: 1.2rem; place-items: center; color: #f0eee4; text-decoration: none; }
.dot { display: block; width: .55rem; height: .55rem; border: 1px solid #e9e2d1; border-radius: 50%; background: transparent; }
.rail-dot[aria-current="true"] .dot { border-color: #f0c17d; background: #f0c17d; box-shadow: 0 0 0 3px rgb(240 193 125 / 22%); }
.rail-label { position: absolute; right: calc(100% + .8rem); top: 50%; width: max-content; max-width: 16rem; padding: .35rem .65rem; border-radius: .25rem; color: #f6f2e8; background: #0d2024; font-size: .75rem; line-height: 1.25; opacity: 0; pointer-events: none; transform: translate(4px,-50%); transition: opacity .16s ease,transform .16s ease; }
.rail-dot:hover .rail-label, .rail-dot:focus-visible .rail-label { opacity: 1; transform: translate(0,-50%); }
.back-top { position: fixed; z-index: 60; bottom: calc(env(safe-area-inset-bottom, 0px) + 1rem); left: 1rem; display: grid; width: 44px; height: 44px; place-items: center; border: 1px solid var(--paper-raised); border-radius: 50%; color: var(--paper-raised); background: var(--signal-strong); box-shadow: 0 3px 14px rgb(0 0 0 / 25%); font-size: 1.35rem; cursor: pointer; }
:root[data-theme="dark"] .back-top { color: #0a1a1c; background: #a1ded4; border-color: #a1ded4; }
.back-top:hover { transform: translateY(-2px); }
.back-top[hidden] { display: none; }

@media (min-width: 1120px) {
  .story { width: min(calc(100% - 4rem), 75rem); margin-left: max(2rem, calc((100vw - 90rem) / 2)); margin-right: auto; }
  .reading-rail { display: grid; }
}
@media (max-width: 1119px) {
  .reading-rail { display: none; }
}
@media (max-width: 850px) {
  .hero { grid-template-columns: 1fr; gap: 2.5rem; min-height: auto; padding: 4.5rem clamp(1.25rem,5vw,3rem) 3rem; }
  .hero h1 { max-width: 14ch; font-size: clamp(2.8rem,9vw,4.4rem); }
  .locator-figure { width: min(100%, 45rem); }
  .scene-floor--map { min-height: 0; }
  .top-nav { max-width: 36vw; }
  .share-section { flex-wrap: wrap; gap: .35rem .85rem; padding: .85rem 1.25rem; }
  .share-status { flex-basis: 100%; }
  .chapter { min-height: 620px; padding: 4.6rem clamp(1.25rem,6vw,3rem); }
  .source-section { padding: 4.5rem clamp(1.25rem,6vw,3rem); }
}
@media (max-width: 560px) {
  :root { --topbar-h: 3.5rem; }
  .topbar { gap: .45rem; padding-inline: .65rem; }
  .home-mark { gap: .2rem; font-size: .7rem; }
  .mark-wave { font-size: 1.25rem; }
  .top-nav { flex: 1 1 auto; justify-content: center; gap: .18rem; max-width: none; overflow: visible; }
  .top-nav a { font-size: .64rem; letter-spacing: -.02em; }
  .top-controls { gap: .12rem; }
  .edition-link { min-height: 2.65rem; padding-inline: .25rem; font-size: .7rem; }
  .theme-button { width: 2.65rem; height: 2.65rem; }
  .hero { gap: 2rem; padding: 3.5rem 1.15rem 2.6rem; }
  .eyebrow { font-size: .67rem; letter-spacing: .13em; }
  .hero h1 { font-size: clamp(2.5rem,12vw,3.45rem); }
  .deck { margin-top: 1.2rem; font-size: 1.04rem; }
  .hero-date { margin-top: 1.25rem; font-size: .72rem; }
  .locator-figure figcaption { font-size: .72rem; }
  .share-section > p { flex-basis: 100%; }
  .chapter { min-height: 580px; padding: 3.8rem 1.2rem; }
  .chapter-heading { margin-bottom: 1.55rem; }
  .chapter h2, .source-section h2 { font-size: clamp(1.95rem,9vw,2.7rem); }
  .permalink { margin-left: -.95em; width: .95em; }
  .chapter-copy { font-size: 1rem; line-height: 1.72; }
  .data-scene { min-height: 300px; margin-top: 2rem; padding: 1rem; border-radius: .55rem; }
  .flow-list, .scope-scene > div, .defenses-scene > div { grid-template-columns: 1fr; }
  .flow-list li { min-height: 120px; }
  .scope-card { min-height: 190px; }
  .route-scene ol { grid-template-columns: 1fr; }
  .route-scene li { min-height: 145px; }
  .route-scene li + li::before { top: -.9rem; left: 50%; transform: translateX(-50%) rotate(90deg); }
  .image-pair { grid-template-columns: 1fr; gap: 2rem; }
  .scene-floor--photo { min-height: 250px; }
  .volunteer-scene { grid-template-columns: 1fr; gap: .5rem; }
  .volunteer-word { font-size: 3.2rem; }
  .restoration-scene ol { grid-template-columns: 1fr; }
  .restoration-scene li { min-height: 135px; }
  .identity-scene { grid-template-columns: 1fr; justify-items: center; }
  .identity-scene > div { width: min(66vw, 15rem); }
  .identity-scene > p { text-align: center; }
  .identity-scene figcaption { grid-column: auto; }
  .source-section { padding: 3.8rem 1.15rem; }
  .source-item { grid-template-columns: 2.3rem minmax(0,1fr); gap: .55rem; }
  .source-item ul { display: grid; gap: .35rem; }
  .site-footer { gap: .35rem .55rem; font-size: .75rem; }
  .back-top { left: .6rem; bottom: calc(env(safe-area-inset-bottom, 0px) + .7rem); width: 44px; height: 44px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
@media print {
  .topbar, .reading-rail, .back-top, .share-section, .atmosphere { display: none !important; }
  body { color: #111; background: #fff; }
  .hero { min-height: 0; color: #111; background: #fff; }
  .hero h1 { color: #111; }
  .chapter, .source-section { min-height: 0; break-inside: avoid; padding-block: 2rem; color: #111; background: #fff; }
  a { color: #111; }
}
