/* ============================================================
   Little Signals
   Palette sampled directly from the approved clay renders, so the
   page and the footage are literally the same colours.
   ============================================================ */

:root{
  --bone-1:#E2CCB0;
  --bone-2:#E7D2BA;
  --bone-3:#EDDCC7;
  --paper:#F3E7D6;

  --ink:#2B2118;
  --ink-soft:#6A5744;
  /* 4.56:1 on the lightest ground this page ever uses. The obvious lighter
     value fails AA at 3.29, and it carries the eyebrows and captions — small
     text, so it needs the full 4.5, not the large-text allowance. */
  --ink-faint:#75614C;
  --ink-deep:#1D1710;

  --clay:#C97B5A;
  --sage:#8A9070;
  --blue:#7E97A6;

  --rule:rgba(43,33,24,.14);
  --rule-soft:rgba(43,33,24,.07);

  --display:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;

  --gut:clamp(1.25rem,5vw,5rem);
  --measure:34rem;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:linear-gradient(135deg,var(--bone-1) 0%,var(--bone-2) 45%,var(--bone-3) 100%);
  background-attachment:fixed;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

.sr,.skip{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip:focus{position:fixed;top:.75rem;left:.75rem;width:auto;height:auto;clip:auto;margin:0;padding:.7rem 1rem;background:var(--ink);color:var(--paper);z-index:999;border-radius:.4rem}
:focus-visible{outline:2.5px solid var(--clay);outline-offset:3px;border-radius:2px}

.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* ---------- progress rail ---------- */
.rail{position:fixed;top:0;left:0;width:3px;height:100vh;background:var(--rule-soft);z-index:60}
.rail__fill{width:100%;height:8%;background:linear-gradient(180deg,var(--sage),var(--blue),var(--clay));transform-origin:top}
.rail-label{position:fixed;top:.9rem;left:.95rem;z-index:60;font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;color:var(--ink-faint)}

/* ---------- ambient video stage ---------- */
.stage{position:fixed;inset:0;z-index:-1;overflow:hidden}
.stage__clip{position:absolute;inset:0;opacity:0}
.stage__clip picture{display:contents}
.stage__clip img,.stage__clip video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.stage__clip video{opacity:0;transition:opacity .5s ease}
.stage__clip video.ready{opacity:1}
/* Scrim: keeps AA contrast for copy on the left while leaving the clay legible
   on the right. Without it, body text sits directly on mid-tone photography. */
.stage::after{content:"";position:absolute;inset:0;background:
  linear-gradient(97deg,rgba(241,228,210,.985) 0%,rgba(240,226,207,.96) 46%,rgba(238,222,202,.6) 68%,rgba(237,220,199,.14) 100%)}
/* Brighter clips (the ripple, the seed) still wash out body copy under the
   horizontal scrim alone, so the text column gets a second, softer pass. */
.stage::before{content:"";position:absolute;inset:0;z-index:1;background:
  linear-gradient(180deg,rgba(240,226,207,.5) 0%,rgba(240,226,207,0) 26%,rgba(240,226,207,0) 74%,rgba(240,226,207,.42) 100%)}

/* ---------- carrier rails ---------- */
/* width:100% not 100vw — 100vw includes the scrollbar and forces the whole
   document to scroll horizontally. */
.carrier{position:fixed;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
/* The rails run low, beneath the text column — a current under the page rather
   than a line through it. Crossing the headline reads as a mistake. */
.carrier path{fill:none;stroke-width:1.4;vector-effect:non-scaling-stroke;opacity:.42}
#carrierA{stroke:var(--sage)}
#carrierB{stroke:var(--blue)}

/* ---------- acts ---------- */
main{position:relative;z-index:2}
/* Each act is 2 viewports tall; its inner sticks for one viewport. That gives a
   full viewport of scrub distance with native CSS sticky — no JS pinning, no
   layout thrash, and progress stays a pure function of scrollY. */
.act{height:200vh;position:relative}
.act--hero{height:180vh}
.act--final{height:auto;min-height:100vh}
.act__inner{position:sticky;top:0;min-height:100vh;display:grid;align-content:center;
  width:100%;max-width:74rem;margin:0 auto;padding:clamp(4rem,10vh,7rem) var(--gut)}
.act--final .act__inner{position:static;min-height:0}
.act__inner--left>*{max-width:var(--measure)}
/* Display type needs a wider column than body copy or the lines fracture. */
.act__inner--left>.display{max-width:min(48rem,86vw)}
.act--hero .act__inner{max-width:60rem}
/* Everything the scroll engine drives starts hidden and is placed purely as a
   function of progress — nothing is ever tweened from its current value. */
[data-fx]{will-change:transform,opacity}

.act--dark{background:var(--ink-deep);color:var(--paper)}
.act--dark .eyebrow{color:#B9A388}
.act--dark .lede{color:#DCCDB8}
.act--dark figcaption{color:#A2907A}
.act--final{background:linear-gradient(180deg,rgba(243,231,214,0) 0%,rgba(243,231,214,.62) 22%,rgba(243,231,214,.95) 46%)}

/* ---------- type ---------- */
.eyebrow{font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 1.4rem}
.display{font-family:var(--display);font-weight:400;line-height:1.02;letter-spacing:-.022em;margin:0 0 1.5rem}
h1.display{font-size:clamp(2.6rem,7.4vw,5.6rem)}
h2.display{font-size:clamp(2rem,5.1vw,3.9rem)}
.display span{display:block}
.display .dim{color:var(--ink-soft)}
.lede{font-size:clamp(1.06rem,1.9vw,1.32rem);line-height:1.55;color:var(--ink-soft);max-width:38rem;margin:0 0 2rem;text-wrap:pretty}
.body{font-size:clamp(1rem,1.55vw,1.12rem);line-height:1.66;color:var(--ink-soft);margin:0 0 2rem;text-wrap:pretty}
.foot{font-size:.8rem;color:var(--ink-faint);margin:1.1rem 0 0}
.act--dark .foot{color:#93816C}

/* ---------- scroll cue ---------- */
.cue{display:inline-flex;align-items:center;gap:.7rem;font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none;padding:.6rem 0}
.cue i{display:block;width:2.6rem;height:1px;background:var(--ink-soft);position:relative}
.cue i::after{content:"";position:absolute;right:0;top:-2.5px;width:6px;height:6px;border-right:1px solid var(--ink-soft);border-bottom:1px solid var(--ink-soft);transform:rotate(-45deg)}
.cue:hover i{background:var(--clay)}

/* ---------- waveforms / contours ---------- */
.wavebox,.contourbox,.resolvebox{margin:0;max-width:38rem}
.wave,.contour{width:100%;display:block}
.wave{height:clamp(64px,9vw,90px)}
/* overflow:visible so annotation labels sitting above the peak and below the
   trough are not clipped by the viewBox. */
.contour{height:clamp(126px,16.5vw,178px);overflow:visible}
.contour--sm{height:clamp(104px,14vw,146px)}
.wave path,.wave line{vector-effect:non-scaling-stroke}
figcaption{font-family:var(--mono);font-size:.68rem;letter-spacing:.05em;color:var(--ink-faint);margin-top:.85rem}

/* ---------- measurements ----------
   A reading on its own is not information: "41.6 nPVI" tells a reader nothing.
   Each row carries the number as evidence, a plain restatement of the same fact
   as the point, and where it falls against the other two recordings. */
.metrics{display:grid;gap:0;margin-top:1.2rem}

.summary{margin:1.3rem 0 0;font-size:.92rem;line-height:1.7;color:var(--ink-soft);max-width:34rem}
.summary b{font-family:var(--mono);font-weight:500;font-size:1.02rem;color:var(--ink)}

.mrow{padding:.7rem 0;border-top:1px solid var(--rule-soft)}
.mrow:last-child{border-bottom:1px solid var(--rule-soft)}
.mrow__head{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.mrow__k{font-size:.7rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-faint);
  flex:1 1 8.5rem;min-width:0}
.mrow__v{font-family:var(--mono);font-size:1.5rem;font-weight:500;letter-spacing:-.025em;
  line-height:1;color:var(--ink)}
.mrow__u{font-family:var(--mono);font-size:.7rem;color:var(--ink-faint)}
.mrow__says{margin:.4rem 0 0;font-size:.95rem;line-height:1.45;color:var(--ink);
  max-width:30rem;text-wrap:pretty}
.mrow__is{margin:.25rem 0 0;font-size:.78rem;line-height:1.4;color:var(--ink-faint);max-width:30rem}

.mrow__foot{display:flex;align-items:center;gap:.75rem;margin-top:.55rem}
.mrow__scale{position:relative;flex:0 1 9rem;height:3px;border-radius:2px;
  background:linear-gradient(90deg,rgba(138,144,112,.35),rgba(201,123,90,.45))}
.mrow__scale i{position:absolute;top:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;
  border-radius:50%;background:var(--clay);box-shadow:0 0 0 2.5px var(--bone-3)}
.mrow__rank{font-family:var(--mono);font-size:.66rem;letter-spacing:.04em;color:var(--ink-faint)}

/* ---------- a measurement, read ----------
   Meaning first, action second, instrument third and only on request. */
.rread{padding:1rem 0;border-top:1px solid var(--rule-soft)}
.rread:first-child{border-top:0;padding-top:.2rem}
.rread__head{display:flex;align-items:baseline;justify-content:space-between;gap:.7rem}
.rread__k{font-family:var(--mono);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-faint)}
.rread__v{font-family:var(--mono);font-size:1.32rem;font-weight:500;letter-spacing:-.025em;
  line-height:1;white-space:nowrap}
.rread__v small{font-size:.62rem;color:var(--ink-faint);margin-left:.3rem;letter-spacing:.03em}
.rread__headline{margin:.45rem 0 0;font-size:1.08rem;font-weight:600;line-height:1.4;
  padding-left:.7rem;border-left:2.5px solid var(--sage);text-wrap:pretty}
.rread__headline.band-low{border-left-color:var(--blue)}
.rread__headline.band-high{border-left-color:var(--clay)}
.rread__detail{margin:.35rem 0 0;font-size:.85rem;color:var(--ink-faint);padding-left:.7rem}
.rread__means{margin:.6rem 0 0;font-size:.92rem;line-height:1.55;color:var(--ink-soft);max-width:44rem}
.rread__try{margin:.7rem 0 0;padding:.65rem .8rem;border-radius:.45rem;
  background:rgba(201,123,90,.09);border-left:2px solid var(--clay);
  font-size:.9rem;line-height:1.5;max-width:44rem}
.rread__try b{font-family:var(--mono);font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--clay);margin-right:.3rem}
.rread__tech{margin-top:.7rem;font-size:.8rem}
.rread__tech summary{cursor:pointer;font-family:var(--mono);font-size:.66rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-faint);padding:.25rem 0}
.rread__tech summary:hover{color:var(--clay)}
.rread__tech dl{display:grid;grid-template-columns:auto 1fr;gap:.28rem .9rem;margin:.5rem 0 0;
  padding:.7rem .8rem;background:rgba(43,33,24,.035);border-radius:.45rem}
.rread__tech dt{font-family:var(--mono);font-size:.62rem;letter-spacing:.07em;text-transform:uppercase;
  color:var(--ink-faint)}
.rread__tech dd{margin:0;font-size:.8rem;color:var(--ink-soft);line-height:1.45}
.rread__tech code{font-family:var(--mono);font-size:.74rem;background:rgba(43,33,24,.06);
  padding:.05rem .3rem;border-radius:.2rem;overflow-wrap:anywhere}

.quality{display:grid;gap:0;margin-top:1.2rem;padding-top:.3rem;border-top:1px solid var(--rule-soft)}
.qrow{padding:.6rem 0}
.qrow+.qrow{border-top:1px solid var(--rule-soft)}
.qrow__head{display:flex;align-items:baseline;gap:.6rem}
.qrow__k{font-size:.82rem;font-weight:600;flex:1}
.qrow__v{font-family:var(--mono);font-size:.92rem;color:var(--ink)}
.qrow__is{margin:.15rem 0 0;font-size:.75rem;color:var(--ink-faint);line-height:1.4}

/* ---------- the transcript under the pitch line ---------- */
.wl__pause{fill:rgba(43,33,24,.055)}
.wl__w{font-family:var(--sans);font-size:9.5px;fill:rgba(43,33,24,.26);
  transition:fill .25s ease}
.wl__w.is-on{fill:var(--ink-soft)}
.wl__w--peak{font-weight:700}
.wl__w--peak.is-on{fill:var(--clay)}
.wl__stem{stroke:var(--clay);stroke-width:1;stroke-dasharray:2 3;opacity:.55}
.act--dark .wl__w{fill:rgba(233,216,195,.3)}
.act--dark .wl__w.is-on{fill:#DCCDB8}
.act--dark .wl__pause{fill:rgba(233,216,195,.06)}

/* ---------- contour annotations ---------- */
.ann__rule{stroke:rgba(43,33,24,.13);stroke-width:1;stroke-dasharray:2 5}
.ann__tick{stroke:rgba(43,33,24,.3);stroke-width:1}
.ann__dot{fill:var(--clay)}
.ann__dot--gap{fill:var(--ink-faint)}
.ann__label{font-family:var(--mono);font-size:9.5px;fill:var(--ink-soft);letter-spacing:.02em}
.act--dark .ann__rule{stroke:rgba(233,216,195,.16)}
.act--dark .ann__tick{stroke:rgba(233,216,195,.34)}
.act--dark .ann__label{fill:#B9A388}

/* ---------- act 3 quote ---------- */
.quotebox{border-left:2px solid var(--rule);padding-left:1.3rem;margin:0 0 2.1rem;max-width:38rem}
.quote{font-family:var(--display);font-size:clamp(1.16rem,2.3vw,1.5rem);line-height:1.5;margin:0}
.quote mark{background:none;padding:0 .06em;border-radius:.15em;transition:background-color .45s ease,color .45s ease}
.quote mark.on.m-hedge{background:rgba(126,151,166,.3)}
.quote mark.on.m-cause{background:rgba(138,144,112,.32)}
.quote mark.on.m-revise{background:rgba(201,123,90,.28)}
.quote-key{display:flex;flex-wrap:wrap;gap:.9rem;margin:1rem 0 0;font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
.key::before{content:"";display:inline-block;width:.62rem;height:.62rem;border-radius:.14rem;margin-right:.42rem;vertical-align:-1px}
.key--hedge::before{background:rgba(126,151,166,.75)}
.key--cause::before{background:rgba(138,144,112,.8)}
.key--revise::before{background:rgba(201,123,90,.7)}

.signals{list-style:none;margin:0;padding:0;display:grid;gap:.05rem;max-width:38rem}
.signals li{display:grid;grid-template-columns:minmax(9rem,11rem) 1fr;gap:.9rem;padding:.72rem 0;border-top:1px solid var(--rule-soft);align-items:baseline}
.signals li:last-child{border-bottom:1px solid var(--rule-soft)}
.signals b{font-weight:600;font-size:.9rem}
.signals span{font-size:.88rem;color:var(--ink-soft)}

/* ---------- act 5 evidence ---------- */
.evidence{max-width:41rem;width:100%}
.claim{display:block;width:100%;text-align:left;background:rgba(255,250,242,.05);border:1px solid rgba(233,216,195,.22);border-radius:.75rem;padding:1.15rem 1.3rem;color:inherit;font:inherit;cursor:pointer;transition:background-color .3s ease,border-color .3s ease}
.claim:hover{background:rgba(255,250,242,.09);border-color:rgba(233,216,195,.4)}
.claim__facet{display:block;font-family:var(--mono);font-size:.63rem;letter-spacing:.13em;text-transform:uppercase;color:var(--clay);margin-bottom:.5rem}
.claim__text{display:block;font-family:var(--display);font-size:clamp(1.1rem,2.1vw,1.38rem);line-height:1.42}
.claim__cta{display:inline-flex;align-items:center;gap:.5rem;margin-top:.85rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:#B9A388}
.chev{width:.5rem;height:.5rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);transition:transform .3s ease}
.claim[aria-expanded="true"] .chev{transform:rotate(-135deg)}

.evidence__panel{margin-top:.9rem;padding:1.2rem 1.3rem 1.35rem;border:1px solid rgba(233,216,195,.2);border-radius:.75rem;background:rgba(0,0,0,.16)}
.evidence__quote{font-family:var(--display);font-size:clamp(1.02rem,1.9vw,1.2rem);line-height:1.55;margin:0 0 .9rem;color:var(--paper)}
.evidence__quote em{font-style:normal;background:rgba(201,123,90,.26);border-radius:.15em;padding:0 .1em}
.evidence__meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem;font-size:.68rem;color:#A2907A;font-family:var(--mono)}
.evidence__conf b{color:var(--paper)}
.wave--zoom{height:56px;margin:.9rem 0 .2rem}

.player{display:flex;align-items:center;gap:.9rem;margin-top:.7rem}
.player__track{flex:1;height:3px;background:rgba(233,216,195,.2);border-radius:2px;overflow:hidden}
.player__fill{width:0;height:100%;background:var(--clay)}
.player__time{font-size:.7rem;color:#A2907A}

.play{display:inline-flex;align-items:center;gap:.55rem;background:var(--clay);color:#fff;border:0;border-radius:2rem;padding:.5rem .95rem .5rem .85rem;font:inherit;font-size:.78rem;cursor:pointer;transition:filter .2s ease}
.play:hover{filter:brightness(1.07)}
.play__icon{width:0;height:0;border-left:8px solid currentColor;border-top:5.5px solid transparent;border-bottom:5.5px solid transparent;margin-left:1px}
.play.playing .play__icon{border:0;width:8px;height:9px;border-left:3px solid currentColor;border-right:3px solid currentColor;margin-left:0}
.play--lg{padding:.62rem 1.15rem .62rem 1rem;font-size:.85rem}

.mini{display:inline-flex;align-items:center;gap:.42rem;background:none;border:1px solid var(--rule);border-radius:2rem;padding:.32rem .72rem .32rem .62rem;font:inherit;font-size:.68rem;font-family:var(--mono);letter-spacing:.05em;color:var(--ink-soft);cursor:pointer}
.mini:hover{border-color:var(--clay);color:var(--clay)}
.mini .play__icon{border-left-color:currentColor;border-left-width:6px;border-top-width:4px;border-bottom-width:4px}
.mini.playing .play__icon{border:0;width:6px;height:7px;border-left:2px solid currentColor;border-right:2px solid currentColor}

/* ---------- act 6 timeline ---------- */
.chart-title{margin:1.1rem 0 .1rem;font-size:.86rem;font-weight:600;max-width:34rem}
.chart-title span{font-weight:400;color:var(--ink-faint)}
.ax{font-family:var(--mono);font-size:9px;fill:var(--ink-faint);letter-spacing:.04em}
.timeline{max-width:52rem;width:100%;margin-top:.5rem}
.timeline:focus-visible{outline:2.5px solid var(--clay);outline-offset:8px;border-radius:.5rem}
.trend{width:100%;height:clamp(158px,22vw,226px);display:block;overflow:visible}
.timeline__read{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap;margin-top:.9rem;
  font-size:.85rem;color:var(--ink-soft)}
.timeline__read .mono{color:var(--ink);font-size:.78rem}
.timeline__read #tlNote{font-family:var(--display);font-size:.98rem;color:var(--ink);
  flex:1 1 16rem;min-width:0}

/* Belief bars: a held position has weight, a retired one is hollow. */
.jbar{transition:opacity .2s ease}
.jbar--active{fill:rgba(138,144,112,.34);stroke:var(--sage);stroke-width:1}
.jbar--retired{fill:rgba(139,123,102,.15);stroke:rgba(139,123,102,.5);stroke-width:1;
  stroke-dasharray:4 3}
.jbar__t{font-family:var(--sans);font-size:10px;fill:var(--ink);dominant-baseline:middle}
.jbar__end{font-family:var(--mono);font-size:8.5px;fill:var(--clay);letter-spacing:.06em}
.jtick{fill:var(--bone-3);stroke:var(--ink-faint);stroke-width:1.5;cursor:pointer;
  transition:opacity .2s ease}
.jtick:hover{stroke:var(--clay)}
.jtick--clash{stroke:var(--clay);stroke-width:2.5}
.jtick.is-on{fill:var(--clay);stroke:var(--clay)}

/* ---------- act 7 nudge ---------- */
.nudge{max-width:44rem;width:100%}
/* Clips the cards' horizontal entry so it can never widen the document. Safe to
   clip here because this is not an ancestor of any position:sticky element. */
.nudge__pair{display:grid;grid-template-columns:1fr auto 1fr;gap:1.15rem;align-items:stretch;
  overflow:hidden;padding:2px}
.said{border:1px solid var(--rule);border-radius:.7rem;padding:1rem 1.05rem;background:rgba(255,252,246,.46);display:flex;flex-direction:column;gap:.7rem}
.said__when{font-size:.63rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:0}
.said__text{font-family:var(--display);font-size:clamp(.98rem,1.75vw,1.1rem);line-height:1.45;margin:0;flex:1}
.said .mini{align-self:flex-start}
.nudge__vs{width:1px;background:var(--rule);position:relative}
.nudge__vs::after{content:"vs";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bone-3);padding:.3rem .1rem;font-family:var(--mono);font-size:.6rem;color:var(--ink-faint);letter-spacing:.08em}
.nudge__q{font-family:var(--display);font-size:clamp(1.2rem,2.6vw,1.7rem);margin:1.6rem 0 0;line-height:1.35}
.nudge__q b{font-weight:400;color:var(--clay)}

/* ---------- act 8 picker + readout ---------- */
.picker{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.4rem;max-width:41rem}
.pick{background:rgba(255,252,246,.5);border:1px solid var(--rule);border-radius:.55rem;padding:.62rem .9rem;font:inherit;font-size:.84rem;cursor:pointer;text-align:left;transition:border-color .2s ease,background-color .2s ease}
.pick b{display:block;font-weight:600}
.pick span{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.05em;color:var(--ink-faint);margin-top:.2rem}
.pick:hover{border-color:var(--ink-faint)}
.pick[aria-selected="true"]{border-color:var(--clay);background:rgba(201,123,90,.11)}
.pick[aria-selected="true"] span{color:var(--clay)}

.readout{max-width:41rem;width:100%;border:1px solid var(--rule);border-radius:.85rem;padding:1.25rem 1.3rem 1.4rem;background:rgba(255,252,246,.56)}
.readout__head{display:flex;gap:1rem;align-items:flex-start;margin-bottom:1rem}
.readout__transcript{font-family:var(--display);font-size:clamp(1rem,1.9vw,1.16rem);line-height:1.5;margin:0;flex:1}

/* ---------- record your own voice ---------- */
.tryit{max-width:41rem;width:100%;margin-top:1.6rem;padding:1.25rem 1.35rem;
  border:1px solid var(--rule);border-radius:.8rem;background:rgba(255,252,246,.7)}
.tryit[data-state="recording"]{border-color:var(--clay);background:rgba(201,123,90,.07)}
.tryit__k{margin:0 0 .45rem;font-family:var(--mono);font-size:.64rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--clay)}
.tryit__t{margin:0 0 .5rem;font-family:var(--display);font-weight:400;
  font-size:clamp(1.25rem,2.6vw,1.6rem);line-height:1.25;letter-spacing:-.015em}
.tryit__w{margin:0 0 1rem;font-size:.9rem;line-height:1.55;color:var(--ink-soft);max-width:38rem}
.tryit__bar{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
.tryit__s{margin:.7rem 0 0;font-size:.82rem;color:var(--ink-faint);min-height:1.2rem;line-height:1.5}

.play.is-rec{background:#9A3B22}
.play.is-rec .play__icon{border:0;width:9px;height:9px;border-radius:2px;background:currentColor}

.meter{flex:1 1 8rem;height:5px;min-width:6rem;border-radius:3px;
  background:rgba(43,33,24,.1);overflow:hidden}
.meter i{display:block;height:100%;width:0;border-radius:3px;
  background:linear-gradient(90deg,var(--sage),var(--clay))}

.yours{margin-top:1.3rem;padding-top:1.1rem;border-top:1px solid var(--rule)}
.yours__head{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;margin-bottom:.6rem}
.yours__meta{margin:0;font-family:var(--mono);font-size:.72rem;color:var(--ink-faint)}
.yours__caveat{margin:1.1rem 0 0;font-size:.76rem;line-height:1.55;color:var(--ink-faint);
  padding-top:.8rem;border-top:1px dashed var(--rule)}

/* ---------- onward to the dashboard ---------- */
.onward{display:block;max-width:41rem;width:100%;margin-top:1.5rem;padding:1.15rem 1.25rem;
  border:1px solid var(--rule);border-radius:.75rem;background:rgba(255,252,246,.62);
  text-decoration:none;color:inherit;transition:border-color .2s ease,background-color .2s ease}
.onward:hover{border-color:var(--clay);background:rgba(201,123,90,.07)}
.onward__k{display:block;font-family:var(--mono);font-size:.64rem;letter-spacing:.13em;
  text-transform:uppercase;color:var(--clay);margin-bottom:.5rem}
.onward__t{display:block;font-family:var(--display);font-size:clamp(1rem,1.9vw,1.18rem);
  line-height:1.45;margin-bottom:.7rem}
.onward__go{display:inline-flex;align-items:center;gap:.55rem;font-size:.85rem;font-weight:600}
.onward__go i{display:block;width:1.6rem;height:1px;background:currentColor;position:relative}
.onward__go i::after{content:"";position:absolute;right:0;top:-2.5px;width:6px;height:6px;
  border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(-45deg)}

/* ---------- ask ---------- */
.ask{max-width:41rem;width:100%;margin-top:3.4rem;padding-top:2.4rem;border-top:1px solid var(--rule)}
.ask__title{font-family:var(--display);font-weight:400;font-size:clamp(1.5rem,3.4vw,2.15rem);line-height:1.15;margin:0 0 .55rem;letter-spacing:-.02em}
.ask__sub{color:var(--ink-soft);margin:0 0 1.5rem;font-size:1rem}

.form__row{display:flex;gap:.5rem;flex-wrap:wrap}
.form__row input{flex:1 1 15rem;min-width:0;padding:.82rem .95rem;font:inherit;font-size:1rem;color:var(--ink);background:rgba(255,253,249,.9);border:1px solid var(--rule);border-radius:.55rem}
.form__row input::placeholder{color:var(--ink-faint)}
.form__row button{background:var(--ink);color:var(--paper);border:0;border-radius:.55rem;padding:.82rem 1.5rem;font:inherit;font-size:.95rem;font-weight:600;cursor:pointer;transition:background-color .2s ease}
.form__row button:hover{background:var(--clay)}
.form__row button[disabled]{opacity:.55;cursor:progress}

.form__sel{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:.95rem;font-size:.85rem;color:var(--ink-soft)}
.form__sel select{font:inherit;font-size:.85rem;padding:.42rem .6rem;border:1px solid var(--rule);border-radius:.4rem;background:rgba(255,253,249,.9);color:var(--ink)}
.form__check{display:flex;align-items:flex-start;gap:.6rem;margin-top:.85rem;font-size:.85rem;color:var(--ink-soft)}
.form__check input{margin-top:.18rem;width:1rem;height:1rem;accent-color:var(--clay)}
/* Honeypot. Clip-based hiding rather than a huge negative offset, which can
   extend the scrollable area. */
.hp{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.form__msg{margin:.95rem 0 0;font-size:.86rem;min-height:1.25rem}
.form__msg.ok{color:#4C6B3F}
.form__msg.err{color:#9A3B22}

.ask__own{margin:1.7rem 0 0;font-size:.86rem;color:var(--ink-soft);max-width:34rem}
.ask__loss{margin:.5rem 0 0;font-family:var(--mono);font-size:.7rem;letter-spacing:.03em;color:var(--ink-faint)}

/* ---------- footer ---------- */
.foot-bar{position:relative;z-index:2;padding:2.5rem var(--gut) 3rem;border-top:1px solid var(--rule);background:var(--paper);font-size:.75rem;color:var(--ink-faint)}
.foot-bar p{margin:0 0 .4rem;max-width:44rem}
.foot-bar .mono{font-size:.68rem}

/* ---------- responsive ---------- */
@media (max-width:760px){
  /* Every clip composes its subject right of centre, so a portrait cover-crop
     that keeps the middle throws the subject away. Bias the crop rightward and
     lighten the scrim, which no longer has a wide empty left to sit over. */
  .stage__clip img,.stage__clip video{object-position:74% center}
  .stage::after{background:linear-gradient(178deg,rgba(241,228,210,.97) 0%,rgba(240,226,207,.9) 42%,rgba(238,222,202,.72) 72%,rgba(237,220,199,.6) 100%)}
  .stage::before{background:linear-gradient(180deg,rgba(240,226,207,.72) 0%,rgba(240,226,207,.1) 34%,rgba(240,226,207,.35) 100%)}
  .rail-label{display:none}
  h1.display{font-size:clamp(2.3rem,10.5vw,3.2rem)}
  h2.display{font-size:clamp(1.85rem,8.4vw,2.6rem)}

  .nudge__pair{grid-template-columns:1fr}
  .nudge__vs{width:auto;height:1px}
  .nudge__vs::after{background:var(--bone-2)}
  .signals li{grid-template-columns:1fr;gap:.15rem}
  .readout__head{flex-direction:column}
  .mrow__head{gap:.35rem}
  .mrow__k{flex:1 1 100%}
  .mrow__foot{flex-wrap:wrap;gap:.5rem}
  .mrow__scale{flex:1 1 100%}
  .ann__label{font-size:8px}
}

/* ============================================================
   Reduced motion — a designed page, not a broken one.
   No pinning, no scrub, every act rendered at its end state.
   ============================================================ */
.rm .act{height:auto;min-height:0}
.rm .act__inner{position:static;min-height:0;padding-top:clamp(5rem,12vh,9rem);padding-bottom:clamp(5rem,12vh,9rem)}
.rm [data-fx]{opacity:1!important;transform:none!important}
.rm .stage__clip video{display:none}
.rm .carrier{display:none}
.rm .act:not(.act--dark):nth-of-type(even){background:rgba(255,252,246,.28)}

@media (prefers-reduced-motion:reduce){
  .stage__clip video{display:none}
  [data-fx]{opacity:1;transform:none}
}

/* ── enter (sign-in) corner link ── */
.enter{position:fixed;top:1.1rem;right:1.2rem;z-index:50;font-family:var(--sans,system-ui);
  font-size:.82rem;letter-spacing:.02em;color:var(--ink-soft,#5b5342);text-decoration:none;
  padding:.4rem .9rem;border:1px solid rgba(107,87,68,.28);border-radius:999px;
  background:rgba(251,245,236,.7);backdrop-filter:blur(6px);transition:color .2s,border-color .2s}
.enter:hover,.enter:focus-visible{color:var(--clay,#C97B5A);border-color:var(--clay,#C97B5A)}
@media (max-width:520px){.enter{top:.7rem;right:.7rem;font-size:.76rem;padding:.35rem .75rem}}
