/* The scroll scene is independent of the site grid and keeps a stable drawing buffer. */
.hero-diagram { align-self: stretch; display: flex; flex-direction: column; justify-content: center; border: 1px solid var(--rule); background: var(--paper-2); padding: 1.4rem; }
.hero-diagram .label { margin-bottom: .5rem; font-size: .62rem; }
.hero-figure { position: relative; aspect-ratio: 600 / 360; }
.hero-figure img, .hero-figure canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-figure canvas { display: none; }
.hero-ready canvas { display: block; }
.hero-ready img { opacity: 0; }
.hero-diagram-foot { display: flex; justify-content: space-between; gap: 1rem; padding-top: 1rem; border-top: 1px solid var(--rule); font: .65rem var(--mono); color: var(--ink-3); }
.hero-diagram-foot a { color: var(--accent); }
.hero { padding-bottom: 4rem; }
.pose-story { margin: 0; border: 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); border-radius: 0; overflow: visible; background: var(--paper); max-width: none; width: 100%; }
.pose-story.story-ready { height: 500svh; }
.story-stage { max-width: 90rem; margin: auto; padding: 1.8rem 2.5rem 1rem; display: flex; flex-direction: column; min-height: 40rem; }
.story-ready .story-stage { position: sticky; top: 4.5rem; height: calc(100svh - 4.5rem); min-height: 0; }
.story-mast { display: flex; justify-content: flex-end; align-items: center; gap: 1rem; }
.story-index { font-size: .65rem; }
.story-variants { display: grid; grid-template-columns: repeat(4,1fr); gap: 1.5rem; margin: 1.2rem 0 .5rem; }
.story-variants button { min-height: 44px; background: none; border: 0; border-bottom: 1px solid var(--rule); border-radius: 0; text-align: left; padding: .6rem 0; color: var(--ink-3); font: .74rem var(--mono); }
.story-variants button small { font-size: .6rem; margin-right: .65rem; opacity: .55; }
.story-variants button[aria-pressed=true] { border-color: var(--accent); color: var(--accent); }
.story-variants button:hover { color: var(--accent); }
.story-body { flex: 1; min-height: 0; display: grid; grid-template-columns: 28% minmax(0,1fr); gap: 1.5rem; }
.story-description { padding: 0; border: 0; align-self: center; min-height: 0; }
.story-description .story-kicker { font: .62rem var(--mono); color: var(--accent); letter-spacing: .12em; margin-bottom: 1.2rem; }
.story-description h2 { font-size: clamp(2rem,3.2vw,3rem); max-width: 22rem; line-height: 1.06; margin-bottom: 1.4rem; }
.story-description #story-text { color: var(--ink-2); font-size: .89rem; line-height: 1.75; max-width: 21rem; }
.story-description .story-detail { font: .63rem/1.7 var(--mono); color: var(--accent); border-top: 1px solid var(--rule); padding-top: 1.2rem; margin-top: 1.7rem; }
.story-scroll { display: inline-flex; align-items: center; gap: 1rem; font: .58rem var(--mono); color: var(--ink-3); margin-top: 2rem; }
.story-scroll span { color: var(--accent); font-size: 1.15rem; }
.story-viewport { position: relative; height: auto; min-height: 0; margin: .5rem 0; overflow: hidden; background: radial-gradient(ellipse at 55% 50%,color-mix(in srgb,var(--accent) 5%,transparent),transparent 68%); }
.pose-story:not(.story-ready) .story-viewport { height: 26rem; }
.story-fallback,#pose-canvas,.story-leaders,.story-labels { position: absolute; inset: 0; width: 100%; height: 100%; }
.story-fallback { object-fit: contain; }
.story-leaders,.story-labels { pointer-events: none; }
.story-leaders { overflow: hidden; }
.story-leaders path { stroke: var(--accent); stroke-width: .6; fill: none; }
.story-label { position: absolute; top: 0; left: 0; display: inline-flex; align-items: center; gap: .35rem; white-space: nowrap; font: .58rem var(--mono); color: var(--ink-2); padding: .32rem .4rem; background: color-mix(in srgb,var(--paper) 93%,transparent); border-radius: 2px; }
.story-label-number { color: var(--accent); font-size: .53rem; }
.story-label.is-active { color: var(--accent); }
.story-label.is-future { opacity: .15; }
.story-label.is-number { font-size: 0; gap: 0; border: 1px solid var(--rule); border-radius: 50%; width: 25px; height: 25px; justify-content: center; }
.story-label.is-number .story-label-number { font-size: .56rem; }
.story-controls { padding: .7rem 0 .5rem; gap: 1rem; border-top: 1px solid var(--rule); }
.story-play { min-height: 44px; min-width: 6.5rem; border: 1px solid var(--rule-2); background: transparent; padding: .4rem .7rem; font-size: .65rem; }
.story-mode { margin-left: auto; font: .58rem var(--mono); color: var(--ink-3); white-space: nowrap; }
.chapter-number { font-size: .52rem; opacity: .65; }
#story-caption { margin: .6rem 0 0; color: var(--ink-3); font: .55rem/1.5 var(--mono); }
[data-variant=layers] .story-viewport { background: radial-gradient(ellipse at center,color-mix(in srgb,#6a9fad 8%,transparent),transparent 70%); }
[data-variant=atlas] .story-viewport { background: radial-gradient(ellipse at center,color-mix(in srgb,var(--accent) 9%,transparent),transparent 65%); }
@media(max-width:960px) { .story-stage { padding-left: 1.5rem; padding-right: 1.5rem; } .story-body { grid-template-columns: 30% minmax(0,1fr); gap: .7rem; } .story-description h2 { font-size: 2rem; } .story-variants { gap: .8rem; } .story-variants button { font-size: .65rem; } }
@media(max-width:700px) {
  .hero { padding-bottom: 2rem; }
  .hero-diagram { padding: 1rem; }
  .hero-diagram-foot { flex-wrap: wrap; font-size: .6rem; }
  .story-stage { padding: 1rem 1.25rem .6rem; }
  .story-variants { grid-template-columns: 1fr 1fr; gap: 0 1rem; margin: .65rem 0 1rem; }
  .story-variants button { padding: .45rem 0; min-height: 44px; font-size: .62rem; }
  .story-body { grid-template-columns: 1fr; grid-template-rows: 168px minmax(0,1fr); gap: .4rem; }
  .story-description { align-self: start; }
  .story-description .story-kicker { font-size: .52rem; margin-bottom: .6rem; }
  .story-description h2 { font-size: clamp(1.65rem,6.2vw,2.2rem); max-width: none; margin-bottom: .6rem; }
  .story-description #story-text { font-size: .74rem; line-height: 1.6; max-width: 35rem; }
  .story-description .story-detail,.story-scroll { display: none; }
  .story-viewport { margin: 0; }
  .story-mode { display: none; }
  .story-controls { gap: .8rem; padding: .5rem 0 .3rem; }
  .chapter-number { font-size: .48rem; }
  #story-caption { font-size: .48rem; margin-top: .4rem; }
  .story-label { font-size: .52rem; }
  .pose-story:not(.story-ready) .story-stage { min-height: 0; }
  .pose-story:not(.story-ready) .story-viewport { height: 18rem; }
}
@media(max-width:700px) and (max-height:650px) {
  .story-stage { padding-top: .6rem; }
  .story-body { grid-template-rows: 142px minmax(0,1fr); }
  .story-variants { grid-template-columns: repeat(4,minmax(0,1fr)); margin: .3rem 0 .6rem; gap: 0 .45rem; }
  .story-variants button { font-size: .5rem; text-align: center; }
  .story-variants button small { display: block; margin: 0 0 .2rem; font-size: .48rem; }
  .story-description h2 { font-size: 1.5rem; margin-bottom: .45rem; }
  .story-description #story-text { font-size: .66rem; line-height: 1.45; }
  .story-description .story-kicker { margin-bottom: .4rem; }
  #story-caption { font-size: .45rem; }
}
@media(min-width:650px) and (max-height:500px) {
  .story-stage { padding: .5rem 1.25rem .3rem; }
  .story-variants { grid-template-columns: repeat(4,1fr); margin: .2rem 0 .3rem; }
  .story-variants button { font-size: .59rem; }
  .story-body { grid-template-columns: 29% minmax(0,1fr); grid-template-rows: 1fr; }
  .story-description h2 { font-size: 1.45rem; margin-bottom: .6rem; }
  .story-description #story-text { font-size: .65rem; line-height: 1.5; }
  .story-description .story-kicker { font-size: .5rem; margin-bottom: .5rem; }
  .story-description .story-detail,.story-scroll,.story-mode,#story-caption { display: none; }
  .story-controls { padding: .2rem 0; }
}
@media(prefers-reduced-motion:reduce) { .pose-story * { transition: none; } }
