/* Shared page grid: copy columns and the visible paper, not an image canvas, share anchors. */
:root { --page-gutter: clamp(20px, 4.45vw, 64px); --content-max: 1240px; --section-gap: clamp(32px, 5vw, 68px); }
.container, .header-inner, .hero-inner { width: min(100% - (var(--page-gutter) * 2), var(--content-max)); }

/* Blender exports include transparent breathing room. Pull only the rendered content into line with copy. */
.rendered-scene.paper-piece { padding: 0; overflow: visible; filter: drop-shadow(0 18px 25px rgba(0,0,0,.25)); }
.rendered-scene .paper-render { width: 118%; max-width: none; margin: -4% -9% -7%; aspect-ratio: 4 / 3; object-fit: contain; }
.spectrum-layout, .results-stage, .process-layout, .proof-intro { gap: var(--section-gap); }
.spectrum-layout { align-items: center; }
.routing-landscape { min-height: 0; background: transparent; border: 0; }
.results-stage { align-items: center; }
.results-lens { position: relative; top: auto; min-height: 0; padding: 0; background: transparent; }
.process-layout { align-items: center; }
.process-assembly { min-height: 0; background: transparent; }
.qualification-strip { margin-top: clamp(22px, 3vw, 40px); }

/* Scroll-linked commentary stack. Without .js, the articles remain a normal readable list. */
.source-wall { display: grid; gap: 18px; margin-top: clamp(36px, 5vw, 60px); }
#proof { overflow: visible; }
#proof .source-wall { overflow: visible; padding: 0; margin-right: 0; }
.source-post { min-height: 0; padding: clamp(24px, 4vw, 46px); background-color: var(--paper-cream); color: var(--paper-navy); }
.source-post cite { display: block; font-size: 11px; line-height: 1.4; }
.source-post blockquote { max-width: 42ch; margin: clamp(24px, 4vw, 43px) 0 28px; font-size: clamp(27px, 3.15vw, 48px); font-weight: 500; line-height: 1.12; letter-spacing: -.025em; }
.source-post mark { padding: 0 .05em; color: inherit; background: linear-gradient(transparent 61%, rgba(217,167,45,.72) 61%); }
.source-post a { margin-top: auto; font-size: 12px; }
.js .source-wall[data-stack-ready] { --source-count: 8; display: block; height: calc(var(--source-count) * min(76svh, 720px)); margin-top: clamp(36px, 5vw, 60px); }
.js .commentary-stack-stage { position: sticky; top: calc(var(--header-h) + clamp(12px, 2vh, 24px)); height: min(72svh, 600px); display: grid; isolation: isolate; }
.js .source-wall[data-stack-ready] .source-post { position: absolute; inset: 0; z-index: var(--stack-depth); display: flex; transform-origin: 50% 0; will-change: transform, opacity; }
.js .source-wall[data-stack-ready] .source-post:nth-child(2) { transform: translate(10px, 12px) rotate(1.2deg); }
.js .source-wall[data-stack-ready] .source-post:nth-child(3) { transform: translate(-8px, 23px) rotate(-1deg); }
.js .source-wall[data-stack-ready] .source-post:nth-child(n + 4) { transform: translate(0, 30px); }
.js .source-wall[data-stack-ready] .source-post[data-stack-active="false"] { pointer-events: none; }
.js .source-wall[data-stack-ready] .source-post:focus-within { pointer-events: auto; }

@media (min-width: 761px) {
  .spectrum-layout, .results-stage, .process-layout, .proof-intro { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .container, .header-inner, .hero-inner { width: min(100% - 40px, var(--content-max)); }
  .rendered-scene .paper-render { width: 116%; margin: -3% -8% -6%; }
  .routing-landscape, .results-lens, .process-assembly { min-height: 0; }
  .spectrum-layout, .results-stage, .process-layout { gap: clamp(28px, 8vw, 42px); }
  .results-lens { order: 0; }
  .source-post { min-height: min(70svh, 620px); }
  .source-post blockquote { font-size: clamp(25px, 7.7vw, 33px); }
  .js .source-wall[data-stack-ready] { height: calc(var(--source-count) * min(79svh, 660px)); }
  .js .commentary-stack-stage { top: calc(var(--header-h) + 10px); height: min(75svh, 620px); }
}
@media (prefers-reduced-motion: reduce) {
  .js .source-wall[data-stack-ready] { height: auto; display: grid; gap: 18px; }
  .js .commentary-stack-stage { position: static; height: auto; display: grid; gap: 18px; }
  .js .source-post { position: static; min-height: 0; transform: none !important; opacity: 1 !important; pointer-events: auto; }
}
