@font-face{font-family:ReveUI;src:url('fonts/inter-variable.woff2') format('woff2');font-weight:100 900;font-display:swap}
/* The common publication glyphs use the same outlines in a smaller file.
   The preceding full face remains available for all other characters. */
@font-face{font-family:ReveUI;src:url('fonts/inter-ui.woff2') format('woff2');font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+03C0,U+2000-206F,U+20A0-20CF,U+2190-21FF,U+2212,U+2265,U+25A1,U+25CF,U+FEFF,U+FFFD}
:root{--paper:#fff;--ink:#202721;--text:#646c64;--line:#dedfd6;--night:#111713;font-family:ReveUI,Arial,sans-serif;line-height:1.5;color:var(--ink);background:var(--paper);scroll-behavior:auto;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}a:focus-visible,video:focus-visible{outline:2px solid currentColor;outline-offset:5px}.skip{position:fixed;top:-100px;left:24px;z-index:50;background:var(--paper);padding:12px}.skip:focus{top:12px}
.header{height:72px;position:absolute;inset:0 0 auto;z-index:20;padding:0 5vw;display:flex;align-items:center}.wordmark{font-size:25px;font-weight:600;letter-spacing:-1px}
.hero{max-width:1600px;margin:auto;padding:136px 5vw 80px;display:grid;grid-template-columns: minmax(280px,.8fr) minmax(0,1.35fr);gap:6vw;align-items:center;min-height: min(860px,100svh)}
.hero-bottom{grid-column:1;grid-row:1}.hero-kicker{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text)}
.hero h1{font:400 clamp(48px,5.4vw,88px)/1.04 ReveUI,Arial,sans-serif;letter-spacing:-.055em;margin:28px 0}.hero-bottom p{font-size:16px;line-height:24px;max-width:310px;color:var(--text);margin:0 0 30px}.hero-link{display:inline-flex;gap:30px;align-items:center;font-size:13px;border-bottom:1px solid var(--ink);padding-bottom:8px}.hero-link:hover{color:#65816c}
.hero-video-slot{grid-column:2;grid-row:1;min-width:0}.hero-robot-video{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:var(--night)}.hero-video-credit{display:block;font-size:10px;line-height:16px;color:var(--text);margin-top:12px;max-width:440px}.hero-video-credit:hover{text-decoration:underline}
#sections{max-width:1280px;margin:auto;padding:0 64px 0 160px}.chapter{padding:64px 0;border-top:0;scroll-margin-top:32px}.chapter-heading{display:grid;grid-template-columns:56px 1fr;align-items:baseline;margin-bottom:24px}.chapter-heading>span{font:11px/1.5 monospace;color:var(--text)}.chapter-heading h2{font:400 clamp(25px,3vw,36px)/1.2 ReveUI,Arial,sans-serif;letter-spacing:-.03em;margin:0}.copy{max-width:760px;margin-left:56px;font-size:16px;line-height:26px;color:var(--text)}.copy p{margin:0 0 18px}.copy p:last-child{margin-bottom:0}
.source-band,.media-band{margin-top:36px}.source-chart,.placeholder,.simulation-figure{margin:0;width:100%}.source-chart img{background:var(--paper)}.source-chart img{display:block;width:100%;height:auto}.source-chart figcaption,.placeholder figcaption,.simulation-figure figcaption{font-size:12px;line-height:19px;color:var(--text);margin-top:16px;max-width:720px}.source-chart figcaption>span{color:var(--ink)}.source-chart figcaption p{margin:6px 0}.source-chart figcaption small{font-size:10px}
.frame{display:flex;align-items:center;justify-content:center;background:#eceedf;aspect-ratio:16/9;width:100%;color:#7d8577;font-size:12px;border:1px solid var(--line)}
.simulation-viewport{width:100%;aspect-ratio:16/10;min-height:240px;background:var(--night);position:relative;overflow:hidden}.simulation-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#c1cabf;font-size:14px}.simulation-status{font-size:12px;color:#7e8a80}.simulation-viewport>iframe,.simulation-viewport>canvas{display:block;width:100%;height:100%;border:0}
footer{max-width:1280px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:48px 64px 48px 160px;border-top:0;color:var(--text);font-size:12px}footer .wordmark{color:var(--ink)}
.section-index{position:fixed;z-index:15;opacity:0;visibility:hidden;mix-blend-mode:difference}.in-article .section-index{opacity:1;visibility:visible}.section-index ol{list-style:none;display:flex;flex-direction:column;padding:0;margin:0}.section-index a{display:flex;align-items:center;white-space:nowrap;pointer-events:auto}.section-index a span{pointer-events:none}
/* A quiet chapter index: compact at rest, readable while exploring. */
.section-index{--tick-rest:#292929;--tick-active:#8c8c8c;top:50%;bottom:auto;left:0;transform:translateY(-50%);width:200px;padding:24px 16px 24px 24px;pointer-events:none}
.in-article .section-index{pointer-events:auto}
.section-index ol{height:auto;gap:0}
.section-index li{flex:none;min-height:0}
.section-index a,.section-index a:hover,.section-index a:focus-visible{position:relative;width:100%;height:16px;padding:0;border:0;transition:height 200ms cubic-bezier(.2,.7,.2,1)}
.section-index a::before{content:"";position:absolute;left:0;top:50%;width:20px;height:1px;background:var(--tick-rest);transform:scaleX(.5);transform-origin:left;transition:transform 180ms cubic-bezier(.2,.7,.2,1),background-color 80ms linear}
.section-index a[aria-current=true]::before{transform:scaleX(1);background:var(--tick-active)}
.section-index a span{position:absolute;left:32px;padding:0;background:transparent;color:#808080;font:400 12px/20px ReveUI,Arial,sans-serif;letter-spacing:.01em;opacity:0;transform:translateX(-4px);transition:opacity 140ms ease-out,transform 200ms ease-out}
.section-index:is(:hover,:focus-within) a{height:28px}
.section-index:is(:hover,:focus-within) a span{opacity:.65;transform:translateX(0)}
.section-index:is(:hover,:focus-within) a[aria-current=true] span{opacity:1;color:#b0b0b0}
.section-index a:hover::before,.section-index a:focus-visible::before{transform:scaleX(1.2);background:#aaa}
.section-index a:hover span,.section-index a:focus-visible span{opacity:1;color:#c0c0c0}
.section-index a:focus-visible{outline:1px solid #808080;outline-offset:3px}
.section-index a:active::before{transform:scaleX(.9)}

@media(max-width:743px){.section-index{padding:20px 8px 20px 10px;width:40px}.section-index:is(:hover,:focus-within){width:184px}.section-index a::before{width:16px}.section-index a span{left:26px}}
@media(hover:none){.section-index a{height:28px}}
@media(prefers-reduced-motion:reduce){.section-index a,.section-index a::before,.section-index a span{transition:none}}


@media(max-width:900px){.hero{gap:32px;padding-top:112px;min-height:auto}.hero h1{font-size:56px}#sections{padding:0 32px 0 100px}.section-index{width:96px}.section-index:is(:hover,:focus-within){width:200px}footer{padding:40px 32px 40px 100px}}
@media(max-width:600px){.header{padding:0 24px}.hero{display:flex;flex-direction:column;align-items:stretch;padding:108px 24px 48px;gap:32px}.hero-bottom{order:-1}.hero h1{font-size:56px;margin:22px 0}.hero-bottom p{max-width:300px}.hero-robot-video{aspect-ratio:4/3}#sections{padding:0 24px 0 40px}.chapter{padding:40px 0;scroll-margin-top:20px}.chapter-heading{grid-template-columns:32px 1fr;margin-bottom:20px}.copy{margin-left:0;font-size:15px;line-height:24px}.source-band,.media-band{margin-top:24px}.section-index{width:32px;padding-left:8px}.section-index:is(:hover,:focus-within){width:184px}footer{margin-left:40px;padding:32px 24px 32px 0;gap:24px;font-size:10px}.simulation-viewport{min-height:210px}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*::before{transition:none!important}}
/* Full-bleed robotics footage behind the opening typography. */
.header{color:#fff}
.hero{position:relative;isolation:isolate;overflow:hidden;max-width:none;min-height:760px;min-height:max(640px,92svh);display:flex;align-items:flex-end;padding:150px max(6vw,24px) 96px;background:var(--night);color:#fff}
.hero-video-slot{position:absolute;inset:0;z-index:-2}
.hero-robot-video{width:100%;height:100%;aspect-ratio:auto;object-fit:cover}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(9,16,12,.78),rgba(9,16,12,.28) 65%),linear-gradient(0deg,rgba(9,16,12,.7),transparent 65%)}
.hero-bottom{max-width:740px;position:relative}
.hero-kicker{color:rgba(255,255,255,.65)}
.hero h1{font-size:clamp(56px,6.5vw,104px);margin:24px 0}
.hero-bottom p{color:rgba(255,255,255,.8);max-width:380px}
.hero-link{border-color:rgba(255,255,255,.55)}
.hero-link:hover{color:#fff;border-color:#fff}
.hero-video-credit{position:absolute;bottom:20px;right:24px;left:auto;max-width:360px;text-align:right;color:rgba(255,255,255,.65);z-index:2;margin:0}
.hero-video-slot{z-index:auto;pointer-events:none}
.hero-robot-video{position:absolute;inset:0;z-index:-2}
.hero-video-credit{pointer-events:auto}


@media(max-width:600px){.hero{min-height:90svh;padding:120px 24px 100px;flex-direction:row;align-items:flex-end}.hero h1{font-size:56px}.hero-video-credit{left:24px;right:24px;max-width:none;text-align:left;font-size:9px}.hero-bottom{order:0}}
.hero-robot-video::-webkit-media-controls{display:none!important}
.hero-robot-video::-webkit-media-controls-timeline{display:none!important}

.atlas-embed{display:block;width:100%;height:800px;height:clamp(620px,85svh,960px);border:0;background:var(--paper)}.atlas-open{display:inline-block;margin-top:4px;border-bottom:1px solid var(--line);font-size:12px}.atlas-open:hover{border-color:var(--ink)}@media(max-width:600px){.atlas-embed{height:720px}}
.graph-reveal{opacity:0;transform:none;transition:opacity 220ms ease-out}
.graph-reveal.graph-visible,.graph-reveal:focus-within{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.graph-reveal{opacity:1;transform:none;transition:none}}

/* Tighter reading rhythm, with unnumbered headings. */
.chapter{padding:36px 0}
.chapter-heading{display:block;margin-bottom:16px}
.copy{margin-left:0}
.copy p{margin-bottom:12px}
.source-band,.media-band{margin-top:24px}
.source-chart figcaption,.placeholder figcaption,.simulation-figure figcaption{margin-top:12px}
@media(max-width:600px){.chapter{padding:28px 0}.chapter-heading{margin-bottom:12px}.source-band,.media-band{margin-top:20px}}
/* Opening typography: restrained editorial scale over the robotics footage. */
.hero-bottom{max-width:640px}
.hero-kicker{display:block;font-size:11px;line-height:1.5;letter-spacing:.1em;color:rgba(255,255,255,.7)}
.hero h1{font-family:ReveUI,Arial,sans-serif;font-size:clamp(48px,5vw,76px);font-weight:400;line-height:1.08;letter-spacing:-.025em;margin:24px 0 28px;text-wrap:balance}
.hero-bottom p{max-width:360px;font-size:15px;line-height:1.55;letter-spacing:0;margin:0;color:rgba(255,255,255,.78)}
@media(max-width:600px){.hero h1{font-size:clamp(42px,11vw,60px);line-height:1.1;margin:20px 0 24px}.hero-kicker{font-size:10px;letter-spacing:.08em}.hero-bottom p{font-size:14px;max-width:280px}}

/* Media-led, sans-serif research presentation. */
.hero h1{font-size:clamp(40px,4.2vw,64px);font-weight:450;line-height:1.12;letter-spacing:-.035em}
.chapter-heading h2{font-family:ReveUI,Arial,sans-serif;font-size:clamp(26px,2.6vw,34px);font-weight:450;line-height:1.2;letter-spacing:-.025em}
.hero-bottom p{font-size:15px;line-height:1.6;max-width:340px}
@media(max-width:600px){.hero h1{font-size:clamp(36px,10vw,48px);line-height:1.12}.chapter-heading h2{font-size:26px}}

.atlas-embed{height:560px}@media(max-width:600px){.atlas-embed{height:540px}}

#framework .source-chart{container-type:inline-size}#framework .atlas-embed{height:calc(100cqw * .5 + 90px)}

/* Article proportions: wide evidence, measured reading width, four-pixel rhythm. */
:root{--ink:#242424;--text:#626262;--line:#e8e8e8;--page-inset:clamp(64px,6.25vw,96px);--reading-width:672px;--evidence-width:960px;--section-space:24px;--media-space:24px}
.header{padding-inline:var(--page-inset)}
.hero{min-height:680px;min-height:90svh;align-items:center;padding:120px var(--page-inset);gap:0}
.hero-bottom{max-width:560px}
.hero-kicker{font-size:11px;line-height:16px;letter-spacing:.12em;color:rgba(255,255,255,.8)}
.hero h1{font-size:clamp(40px,3.45vw,52px);font-weight:450;line-height:1.1;letter-spacing:-.03em;margin:20px 0}
.hero-bottom p{font-size:17px;line-height:1.55;max-width:360px;color:rgba(255,255,255,.85)}
.hero::after{background:linear-gradient(90deg,rgba(8,12,10,.62),rgba(8,12,10,.12) 75%),linear-gradient(0deg,rgba(8,12,10,.35),transparent 25%)}


.hero-video-credit{left:var(--page-inset);right:auto;max-width:520px;text-align:left;font-size:10px;line-height:16px}
#sections{max-width:1088px;padding:32px 32px 0}
.chapter{padding:var(--section-space) 0;scroll-margin-top:40px}
.chapter-heading{max-width:var(--reading-width);margin:0 auto 12px;text-align:left}
.chapter-heading h2{font-size:26px;font-weight:500;line-height:34px;letter-spacing:-.025em}
.copy{max-width:var(--reading-width);font-size:16px;line-height:26px;margin:0 auto;text-align:left;text-wrap:pretty}
.copy p{margin-bottom:12px}
.chapter{--chapter-media-width:var(--evidence-width)}
.source-band,.media-band{margin:var(--media-space) auto 0;max-width:var(--chapter-media-width)}
#framework,#benchmark,#real-robot,#evaluation,#typing{--chapter-media-width:var(--reading-width)}
.source-chart figcaption,.placeholder figcaption,.simulation-figure figcaption{font-size:12px;line-height:20px;max-width:var(--reading-width);margin-top:8px;text-align:left}
.frame{border:0;background:#f6f6f6;color:#727272}
.simulation-viewport{background:#f6f6f6;aspect-ratio:16/9}
.simulation-empty{color:#626262}.simulation-status{color:#727272}
footer{max-width:1440px;padding:40px var(--page-inset);margin:0 auto}
.section-index{width:56px;padding-left:20px}
.section-index:is(:hover,:focus-within){width:192px}
@media(max-width:600px){
 :root{--page-inset:32px;--section-space:24px;--media-space:24px}
 .hero{min-height:80svh;padding:112px var(--page-inset);align-items:center}
 .hero h1{font-size:clamp(34px,9vw,44px)}
 .hero-bottom p{max-width:280px;font-size:16px}
 .hero-video-credit{right:32px;bottom:20px;font-size:9px;line-height:14px}
 #sections{padding-top:16px}.chapter-heading{margin-bottom:12px}.chapter-heading h2{font-size:24px;line-height:32px}
 .copy{font-size:15px;line-height:24px}.copy p{margin-bottom:12px}
 .source-chart figcaption,.placeholder figcaption,.simulation-figure figcaption{font-size:12px;line-height:1.5;margin-top:8px}
 .section-index{width:24px;padding-left:8px}.section-index a::before{width:12px}
 footer{margin-left:0;font-size:10px;align-items:flex-start;gap:24px}
}

/* Hero typography: one title, two deliberate lines, a balanced supporting sentence. */
.hero-bottom{width:100%;max-width:640px}
.hero h1{
 font-family:ReveUI,Arial,sans-serif;
 font-size:clamp(40px,4.1vw,60px);
 font-weight:400;
 line-height:1.04;
 letter-spacing:-.035em;
 margin:0 0 24px;
 text-wrap:initial;
}
.hero-bottom p{
 max-width:38ch;
 margin:0;
 font-size:16px;
 font-weight:400;
 line-height:1.5;
 letter-spacing:0;
 text-wrap:balance;
 color:rgba(255,255,255,.82);
}
@media(max-width:600px){
 .hero h1{font-size:clamp(30px,8.6vw,48px);line-height:1.08;letter-spacing:-.03em;margin-bottom:20px}
 .hero-bottom p{max-width:34ch;font-size:15px;line-height:1.5}
}

/* Presentation shares the graph width and caption rhythm. */
.simulation-viewport{height:525px;min-height:0;aspect-ratio:auto;background:var(--paper);overflow:visible}
.simulation-viewport>iframe{height:100%;width:100%;border:0;display:block}
@media(max-width:640px){.simulation-viewport{height:575px}}

/* Media-led chapters share one left edge from heading through caption. */
.chapter--media .chapter-heading{max-width:var(--chapter-media-width)}
.chapter--media .chapter-heading h2{font-size:24px;line-height:32px;font-weight:450;letter-spacing:-.02em}
@media(max-width:600px){.chapter--media .chapter-heading h2{font-size:22px;line-height:28px}}

/* Narrow screens need a visible navigation trigger and stable touch targets. */
.section-toggle{display:none}
@media(max-width:900px){
 .chapter{scroll-margin-top:76px}
 .section-toggle{position:fixed;right:16px;top:12px;z-index:21;min-height:44px;padding:0 12px;border:0;border-radius:0;background:var(--paper);color:var(--ink);font:400 12px/20px ReveUI,Arial,sans-serif}
 .in-article .section-toggle{display:block}
 .section-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
 .section-index,.in-article .section-index{display:none}
 .in-article .section-index[data-open=true]{display:block;position:fixed;inset:60px 16px auto auto;transform:none;width:248px;max-width:calc(100vw - 32px);max-height:calc(100svh - 76px);overflow-y:auto;mix-blend-mode:normal;background:var(--paper);padding:8px 16px;opacity:1;visibility:visible;z-index:20}
 .section-index[data-open=true] a,.section-index[data-open=true]:is(:hover,:focus-within) a{height:44px;transition:none}
 .section-index[data-open=true] a span,.section-index[data-open=true]:is(:hover,:focus-within) a span{opacity:1;transform:none;left:24px;color:var(--text);font-size:13px}
 .section-index[data-open=true] a[aria-current=true] span{color:var(--ink);font-weight:500}
 .section-index[data-open=true] a::before{background:#b5b5b5}
 .section-index[data-open=true] a[aria-current=true]::before{background:var(--ink)}
}

@media(min-width:901px) and (max-width:1100px){#sections{padding-inline:64px 32px}}

/* Keep the graphite stage local to Simulation; scrolling never obscures nearby evidence. */
:root{--simulation-stage:#101112;--simulation-ink:#e6e8e9;--simulation-note:#969b9f;--ease-out:cubic-bezier(.23,1,.32,1)}
#simulation{position:relative;z-index:2;min-height:90svh;padding-block:40px;color:var(--simulation-ink)}
#simulation::before{content:"";position:absolute;z-index:-1;inset:0 calc((100% - 100vw)/2);background:var(--simulation-stage)}
#simulation .simulation-viewport{background:var(--simulation-stage)}
#simulation .simulation-figure>figcaption{color:var(--simulation-note);font-size:13px;line-height:20px;margin-top:16px}
#simulation .chapter-heading{margin-bottom:0}
.in-simulation .section-index{mix-blend-mode:normal;--tick-rest:#71777b;--tick-active:#e6e8e9}
.in-simulation .section-index a span,.in-simulation .section-index a:hover span{color:var(--simulation-ink)}
.in-simulation .section-toggle,.in-simulation .section-index[data-open=true]{background:var(--simulation-stage);color:var(--simulation-ink)}
.in-simulation .section-index[data-open=true] a span{color:var(--simulation-note)}
.in-simulation .section-index[data-open=true] a[aria-current=true] span{color:var(--simulation-ink)}
@media(max-width:600px){#simulation{padding-block:40px;min-height:100svh}#simulation .simulation-figure>figcaption{font-size:12px}}


/* Desktop section index: stable targets, a single current marker, labels revealed together. */
@media(min-width:901px){
 .section-index{--index-ink:var(--ink);--index-note:var(--text);--index-rule:var(--line);--index-surface:var(--paper);width:48px;padding:12px;mix-blend-mode:normal;background:transparent;max-height:calc(100svh - 32px);overflow-y:auto;overflow-x:hidden;scrollbar-width:none}
 .section-index::-webkit-scrollbar{display:none}
 .section-index:is(:hover,:focus-within){width:192px;background:var(--index-surface)}
 .section-index ol{gap:0}
 .section-index a,.section-index a:hover,.section-index a:focus-visible,.section-index:is(:hover,:focus-within) a{height:24px;transition:none}
 .section-index a::before,.section-index a:hover::before,.section-index a:focus-visible::before{width:8px;transform:none;background:var(--index-rule);transition:background-color 140ms ease-out}
 .section-index a[aria-current]::before,.section-index a[aria-current]:is(:hover,:focus-visible)::before{width:16px;transform:none;background:var(--index-ink)}
 .section-index a span{left:24px;font:400 12px/20px ReveUI,Arial,sans-serif;letter-spacing:0;color:var(--index-note);opacity:0;transform:none;transition:opacity 120ms ease-out}
 .section-index:is(:hover,:focus-within) a span,.section-index:is(:hover,:focus-within) a[aria-current] span{opacity:1;transform:none;color:var(--index-note)}
 .section-index:is(:hover,:focus-within) a[aria-current] span{color:var(--index-ink);font-weight:600}
 .section-index a:hover span,.section-index a:focus-visible span{color:var(--index-ink)}
 .section-index a:focus-visible{outline:1px solid var(--index-ink);outline-offset:2px}
 .in-simulation .section-index{--index-ink:var(--simulation-ink);--index-note:var(--simulation-note);--index-rule:#71777b;--index-surface:var(--simulation-stage)}
}
@media(prefers-reduced-motion:reduce){.section-index a span,.section-index a::before{transition:none}}

/* Keep the skip link out of the reading surface until keyboard focus reveals it. */
.skip:not(:focus){width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Shared by the article and its embedded graphs. One 4 px spacing scale. */
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;

  --space-heading-to-copy: var(--space-4);
  --space-paragraph: var(--space-4);
  --space-copy-to-media: var(--space-10);
  --space-heading-to-media: var(--space-6);
  --space-section-edge: var(--space-16);
  --space-figure-title-to-note: var(--space-1);
  --space-figure-heading-to-plot: var(--space-6);
  --space-plot-to-key: var(--space-2);
  --space-media-control-inset: var(--space-4);
  --space-media-to-caption: var(--space-4);
  --space-plot-to-controls: var(--space-2);
  --space-figure-arrow-clearance: var(--space-4);
  --space-control-gap: var(--space-1);
  --space-control-padding-block: var(--space-2);
  --space-controls-to-figure: var(--space-6);
  --space-related-blocks: var(--space-6);
  --space-opening-gutter: var(--space-12);
  --space-tooltip-padding-block: var(--space-1);
  --space-tooltip-padding-inline: var(--space-2);
  --space-tooltip-row-gap: 0px;
  --space-tooltip-group-gap: var(--space-1);
}
/* Pair chapter spacing with the reading surface's horizontal inset. */
@media (max-width: 999px) {
  body.publication-page #sections { --space-section-edge: var(--space-12); }
}
@media (max-width: 640px) {
  :root {
    --space-copy-to-media: var(--space-8);
    --space-section-edge: var(--space-8);
    --space-figure-heading-to-plot: var(--space-4);
    --space-media-to-caption: var(--space-4);
  }
  body.publication-page #sections { --space-section-edge: var(--space-8); }
}

/* Vertical composition: spacing belongs to the incoming block, never both siblings.
   Add flow-copy / flow-media to give a block its semantic gap. */
.content-flow { display: flow-root; --flow-gap: var(--space-4); }
.content-flow > * { margin-block: 0; }
.content-flow > * + * { margin-block-start: var(--flow-gap); }
.content-flow > .flow-copy { --flow-gap: var(--space-heading-to-copy); }
.content-flow > .flow-media { --flow-gap: var(--space-copy-to-media); }
.content-flow > :is(h2,h3,.chapter-heading) + .flow-media { --flow-gap: var(--space-heading-to-media); }
.prose-flow > * { margin-block: 0; }
.prose-flow > * + * { margin-block-start: var(--space-paragraph); }

/* Map the existing article to the same reusable primitives. */
.chapter.content-flow { padding-block: var(--space-section-edge); }
.copy.prose-flow > p { margin-block: 0; }
.copy.prose-flow > p + p { margin-block-start: var(--space-paragraph); }
:is(.source-chart,.placeholder,.simulation-figure) > figcaption { margin-block: var(--space-media-to-caption) 0; }

/* Opening sequence: paper → moving footage → evidence. The article owns scroll. */
.header{color:var(--ink);pointer-events:none}
.header a{pointer-events:auto}
.hero{display:block;position:relative;isolation:isolate;overflow:visible;min-height:0;height:auto;padding:0;max-width:none;background:var(--paper);color:var(--ink)}
.hero::after{display:none}
.hero-stage{position:relative;min-height:100svh;overflow:hidden;background:var(--paper)}
.hero .hero-bottom{position:relative;width:min(100% - 64px,800px);max-width:none;margin:0 auto;padding:30svh 0 24svh}
.hero h1{font-size:clamp(44px,6.5vw,88px);font-weight:400;line-height:1.04;letter-spacing:-.045em;margin:0 0 32px;text-wrap:initial}
.hero .hero-bottom p{font-size:18px;line-height:28px;max-width:420px;color:var(--text);text-wrap:pretty}
.hero .hero-video-slot{position:relative;inset:auto;width:100%;height:100svh;z-index:2;pointer-events:auto;background:var(--simulation-stage);overflow:hidden;isolation:isolate}
.hero-video-ambient{position:absolute;inset:-32px;width:calc(100% + 64px);height:calc(100% + 64px);z-index:0;pointer-events:none;filter:blur(24px) brightness(.65) saturate(.8)}
.hero .hero-robot-video{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;object-position:center;background:transparent}
.hero-read-link{position:absolute;z-index:4;top:16px;right:calc(var(--page-inset) - 12px);padding-inline:12px;display:flex;align-items:center;gap:8px;min-height:44px;font-size:12px;font-weight:400;line-height:20px;white-space:nowrap;color:var(--ink);text-decoration:none;transition:opacity var(--motion-feedback,120ms) var(--ease-out)}
.hero-read-link:focus-visible,.hero-play-toggle:focus-visible{outline:2px solid currentColor;outline-offset:4px}
.hero-scroll-cue{display:none}
.hero .hero-explore{position:absolute;z-index:4;left:max(var(--space-4),env(safe-area-inset-left));top:50%;transform:translateY(-50%);display:block;width:44px;height:clamp(6rem,20svh,10rem);min-height:44px;color:var(--opening-ink);text-decoration:none;}
.hero .hero-explore[hidden]{display:none}
.hero .hero-explore[inert]{pointer-events:none}
/* Active .75 + inactive .125 = .875 of the half-length rail, plus its 8px gap. */
.hero-explore-reveal{position:absolute;inset:0;height:calc((100% - var(--space-2)) * .4375 + var(--space-2));margin-block:auto;opacity:0;transition:opacity var(--motion-progress-reveal) var(--ease-out)}
.hero-explore[data-started=true] .hero-explore-reveal{opacity:1}
.hero-explore[data-immediate=true] .hero-explore-reveal{transition:none}
.hero-explore-track{position:absolute;left:0;display:block;width:2px;height:calc((100% - var(--space-2)) / .875);background:color-mix(in srgb,var(--opening-ink) 20%,transparent);transition:transform var(--motion-panel) var(--ease-in-out-gentle),opacity var(--motion-panel) var(--ease-in-out-gentle)}
/* A smaller emphasis shift keeps both stages legible; opposite anchors retain
   the rail's height and its 8px gap throughout the reversible transition. */
.hero-explore-text{top:0;transform:scaleY(.75);transform-origin:top;opacity:1}
.hero-explore-video{bottom:0;transform:scaleY(.125);transform-origin:bottom;opacity:.5}
.hero-explore[data-active=video] .hero-explore-text{transform:scaleY(.125);opacity:.5}
.hero-explore[data-active=video] .hero-explore-video{transform:scaleY(.75);opacity:1}
.hero-explore[data-immediate=true] .hero-explore-track{transition:none}
.hero-explore-fill{position:absolute;inset:0;display:block;background:var(--opening-ink);transform:scaleY(0);transform-origin:top}
@keyframes hero-opening-progress{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@media(prefers-reduced-motion:no-preference){
 @supports (animation-timeline:scroll(root block)) and (animation-range:0px 1px){
  .hero-explore-fill{animation:hero-opening-progress auto linear both;animation-timeline:scroll(root block)}
 }
}
.hero .hero-explore:focus-visible{outline:1px solid currentColor;outline-offset:4px}
@media(hover:hover) and (pointer:fine){.hero .hero-explore:hover .hero-explore-track{background:color-mix(in srgb,var(--opening-ink) 50%,transparent)}}
@media(prefers-reduced-motion:reduce){.hero .hero-explore{display:none}.hero-explore-reveal,.hero-explore-track{transition:none}}
.hero-video-footer{position:absolute;inset:auto 0 0;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:40px 32px 20px;background:linear-gradient(transparent,rgba(16,17,18,.85));color:var(--simulation-ink);font-size:12px;line-height:20px}
.hero-video-actions{display:flex;align-items:center;gap:16px;flex-shrink:0}
.hero-play-toggle{padding:0;min-height:44px;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer}
.hero-play-toggle:active,.hero-read-link:active{opacity:.65}
.hero-play-toggle:disabled{opacity:.55;cursor:default}
.hero-rate{min-width:28px;text-align:right;font-variant-numeric:tabular-nums;color:var(--simulation-note)}
@media(hover:hover) and (pointer:fine){.hero-play-toggle:hover{text-decoration:underline;text-underline-offset:4px}}
/* One 100dvh and five 150dvh holds + 196dvh of transitions + the viewport/overlap/feather
   needed for the article handoff. Keep the pre-enhancement shell identical. */
.hero{--opening-scroll-height:calc(1146dvh + 75svh + clamp(64px,16svh,160px))}
.hero-enhanced .hero{height:var(--opening-scroll-height)}
.hero-enhanced .hero-stage{position:sticky;top:0;height:100svh;min-height:0}
.hero-enhanced .hero .hero-bottom{position:absolute;top:40%;left:50%;margin:0;padding:0;z-index:3;pointer-events:none;transform:translate(-50%,-50%)}
.hero-enhanced .hero-video-slot{position:absolute;inset:0;height:100%;transform:scale(.95);opacity:0;transform-origin:center center;will-change:transform,opacity}
.hero-enhanced .hero-scroll-cue{position:absolute;left:50%;bottom:32px;display:flex;gap:24px;font-size:12px;line-height:20px;color:var(--text);transform:translateX(-50%)}
.hero[data-immersed=true] .hero-read-link{color:var(--simulation-ink);background:color-mix(in srgb,var(--simulation-stage) 84%,transparent)}
.hero[data-immersed=true] .hero-read-link{text-shadow:none}
.hero[data-video-error=true] .hero-footage-credit::after{content:" · Video unavailable"}
#sections{padding-top:96px}
@media(max-width:600px){
 .hero .hero-bottom{width:calc(100% - 48px);padding-top:30svh}
 .hero h1{font-size:clamp(38px,10.4vw,60px);line-height:1.08;letter-spacing:-.035em;margin-bottom:24px}
 .hero .hero-bottom p{font-size:16px;line-height:24px;max-width:300px}
 .hero-read-link{right:12px;font-size:11px;gap:8px}
 .hero-video-footer{padding:32px 24px 16px;gap:12px;align-items:flex-end}
 .hero-footage-credit{font-size:11px;max-width:170px}
 .hero-video-actions{gap:8px;font-size:11px}
 .hero-enhanced .hero .hero-bottom{top:42%}
 #sections{padding-top:80px}
}
@media(prefers-reduced-motion:reduce){
 .hero-enhanced .hero{height:auto}
 .hero-enhanced .hero-stage{position:relative;height:auto;min-height:0}
 .hero-enhanced .hero .hero-bottom{position:relative;top:auto;left:auto;transform:none!important;opacity:1!important;margin:auto;padding:28svh 0 20svh}
 .hero-enhanced .hero-video-slot{position:relative;inset:auto;height:70svh;transform:none!important;opacity:1!important;will-change:auto}
 .hero-enhanced .hero-scroll-cue{display:none}
}

/* Scroll composites the sharp and cached blurred image into the paper. */
.hero-enhanced .hero-video-slot{transform:none;will-change:opacity}
.hero-robot-video{transform-origin:center}
.hero-focus-definition{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.hero-footage-credit{position:absolute;bottom:24px;left:var(--grid-gutter,24px);z-index:3;max-width:calc(100% - 160px);font:400 11px/18px var(--publication-font);color:white;text-shadow:0 1px 4px #000}



/* Scroll owns the media dissolve; only the subtle reading tint uses a timer. */
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced .hero-video-slot{transition:none}
 body.publication-page #sections[data-arrived]::before{opacity:.12;transition:opacity var(--motion-arrival,200ms) var(--ease-out)}
 body.publication-page #sections[data-arrived=true]::before{opacity:1}
 body.publication-page #sections[data-arrival-immediate=true]::before{transition:none}
 .hero-enhanced #sections{transition:none}
 .hero-playback{transition:none}
}

/* One small explanatory lift; the caption and the drawing remain in place. */
.hero .opening-traces{position:relative;inset:auto;display:block;width:min(360px,100%);max-width:100%;margin:32px auto 0;color:var(--opening-secondary);pointer-events:none}
.opening-traces svg{display:block;width:100%;height:auto;overflow:visible;fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.opening-traces svg *{vector-effect:non-scaling-stroke}
.opening-labels{fill:currentColor;stroke:none;font:400 12px var(--publication-font);text-anchor:middle}
.opening-lift{transform:translateY(-4px)}
@media(max-width:480px){.hero .opening-traces{margin-top:24px}.opening-labels{font-size:14px}}
@media(prefers-reduced-motion:no-preference){
 .opening-traces:not([data-settled]) .opening-lift{animation:opening-lift 800ms var(--ease-out,cubic-bezier(.23,1,.32,1)) 400ms both}
 .opening-traces[data-running=false] *{animation-play-state:paused!important}
}
@keyframes opening-lift{from{transform:translateY(0)}to{transform:translateY(-4px)}}

.hero-video-pixels{position:absolute;inset:0;z-index:2;width:100%;height:100%;image-rendering:pixelated;pointer-events:none}
.hero-video-pixels[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.hero-video-pixels{display:none}}

.hero-title-pixels{position:absolute;left:-24px;top:-24px;width:calc(100% + 48px);height:calc(100% + 48px);pointer-events:none}
.hero-title-pixels[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.hero-title-pixels{display:none}.hero-bottom :is(h1,p){opacity:1!important}}

.hero .hero-brand{position:relative}

/* Avoid overlapping title layers before the scroll controller first paints. */
.hero .hero-acronym{opacity:0}
.hero-enhanced .hero .hero-acronym{opacity:1}
.hero-enhanced .hero .hero-full-name{opacity:0}

/* Start on black; scrolling reveals the defocused film beneath the reading layer. */
.hero-focus-scrim{position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(to bottom,rgba(0,0,0,.56) 0%,rgba(0,0,0,.62) 50%,rgba(0,0,0,.9) 100%)}
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced .hero-video-slot{opacity:0}
 .hero-enhanced .hero-soft-light{display:none}
 .hero-enhanced .hero-robot-video{filter:none}
}
@media(prefers-reduced-motion:reduce){.hero-focus-scrim{display:none}}

/* Initials stay visible while the remaining letters reveal in reading order. */
.hero-enhanced .hero .hero-full-name{opacity:0}
.hero-enhanced .hero .title-initial{visibility:visible}
.hero-enhanced .hero .title-remainder{opacity:1}
.hero .hero-acronym>span{display:block;flex:none}
.hero .title-word{display:inline-block;white-space:nowrap}
.hero .title-initial{display:inline-block}
.hero .title-glyph,.hero .title-remainder{display:inline-block}
@media(prefers-reduced-motion:reduce){
 .hero-enhanced .hero .title-initial{visibility:visible}
 .hero-enhanced .hero .title-remainder{opacity:1;filter:none}
}
body.publication-page .hero .hero-introduction :is(.copy p,.repo-author-list,.repo-author-row>.repo-note){color:#fff}

/* Static blur is rasterized once; scroll composites two opacity layers. */
.hero-focus-still{position:absolute;inset:-24px;z-index:0;width:calc(100% + 48px);height:calc(100% + 48px);object-fit:cover;object-position:center;filter:blur(18px);pointer-events:none}
.hero-focus-still[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.hero-focus-still{display:none}}
/* Pending media starts faint; the focus controller preserves this strength. */
.hero .hero-robot-video[data-media-pending=true]{opacity:.2}
.hero:has(.hero-robot-video[data-media-pending=true]) .hero-explore{--opening-ink:var(--publication-ink)}
.hero-media-note{position:absolute;inset:0;z-index:3;display:grid;place-items:center;margin:0;padding:0;background:transparent;color:var(--publication-ink);text-align:center;pointer-events:none}
.hero-media-note[hidden]{display:none}

/* Inter, SIL OFL 1.1. ReveUI is a legacy CSS alias. License: fonts/inter-OFL.txt */
@font-face { font-family:ReveUI; src:url('fonts/inter-variable.woff2') format('woff2'); font-style:normal; font-weight:100 900; font-display:swap; }
@font-face { font-family:ReveUI; src:url('fonts/inter-ui.woff2') format('woff2'); font-style:normal; font-weight:100 900; font-display:swap; unicode-range:U+0000-00FF,U+03C0,U+2000-206F,U+20A0-20CF,U+2190-21FF,U+2212,U+2265,U+25A1,U+25CF,U+FEFF,U+FFFD; }
/* IBM Plex Mono, SIL OFL 1.1. License: fonts/ibm-plex-mono-OFL.txt */
@font-face { font-family:SEARMono; src:url('fonts/IBMPlexMono-Light.woff2') format('woff2'); font-style:normal; font-weight:300; font-display:swap; }
@font-face { font-family:SEARMono; src:url('fonts/IBMPlexMono-Regular.woff2') format('woff2'); font-style:normal; font-weight:400 700; font-display:swap; }

/* Shared publication roles: article, evidence, and motion use the same ink family. */
:root {
  --ease-out: cubic-bezier(0.23,1,0.32,1);
  --ease-in-out: cubic-bezier(0.77,0,0.175,1);
  /* Sine curves for quiet explanatory motion: https://easings.net/ */
  --ease-in-out-gentle: cubic-bezier(0.37,0,0.63,1);
  --ease-out-gentle: cubic-bezier(0.61,1,0.88,1);
  --motion-feedback: 120ms;
  --motion-swap: 180ms;
  --motion-progress-reveal: 400ms;
  --motion-panel: 220ms;
  --motion-arrival: 200ms;
  --motion-text-blur: 1.5px;
  --motion-overlap: 80ms;
  --motion-contents: 600ms;
  --motion-opening: 500ms;
  --motion-title-expansion: 400ms;
  --motion-explanation: 600ms;
  --motion-logo: 2500ms;
  --publication-font: ReveUI, Arial, sans-serif;
  --publication-paper: #fafafa;
  --publication-ink: #282828;
  --publication-reading-surface: color-mix(in srgb, var(--publication-paper) 98.75%, var(--publication-ink));
  --publication-author-ink: #000;
  --publication-body: #383838;
  --publication-note: #686868;
  --publication-rule: #dedede;
  --publication-grid: #ededed;
  --publication-comparison: #707070;
  --publication-outcome-success: #31744b;
  --publication-outcome-failure: #ad4741;
  --publication-surface: #f5f5f5;
  --publication-tooltip-background: #282828;
  --publication-tooltip-foreground: #fefefe;
  --publication-tooltip-secondary: #c8c8c8;
  --publication-tooltip-success: #93c6a0;
  --publication-tooltip-failure: #eea09a;
  --publication-stage: #101112;
  --publication-stage-ink: #e6e8e9;
  --publication-stage-note: #a2a8ac;
  --publication-stage-rule: #383e43;
  --publication-control-size: 36px;
  --publication-control-size-touch: 44px;
  --publication-media-control-size: 28px;
  /* Four roles maximum. Size, weight, family, and leading belong to the role. */
  --publication-title-spacing: -0.0375em; /* -8.1px at the 216px reference size */
  --publication-expanded-title-spacing: -0.0523611111111111em; /* -11.31px / 216px */
  --publication-section-spacing: 0;
  --publication-reading-spacing: -0.0025em;
  --publication-label-spacing: 0;
  --publication-display-size: clamp(2rem,13.3cqw,3.5rem);
  --publication-display-leading: 1.1;
  --publication-display-type: var(--publication-title-weight,500) var(--publication-display-size)/var(--publication-display-leading) var(--publication-title-font,SEARReading), Georgia, serif;
  --publication-heading-type: 500 28px/34px SEARReading, Georgia, serif;
  --publication-reading-type: 400 16px/24px ReveUI, Arial, sans-serif;
  --publication-label-type: 400 12px/20px ReveUI, Arial, sans-serif;
  --publication-brand-size: 26px;
  --publication-brand-leading: 32px;
  --publication-section-size: 28px;
  --publication-section-leading: 34px;
  --publication-body-size: 12px;
  --publication-body-leading: 20px;
  --publication-title-size: var(--publication-section-size);
  --publication-title-leading: var(--publication-section-leading);
  --publication-label-leading: 20px;
  --publication-label-size: 12px;
  --publication-caption-size: var(--publication-label-size);
  --publication-caption-leading: var(--publication-label-leading);
}

/* Inspection surfaces stay distinct from paper texture and chart phase fills.
   Scope existing text roles to the overlay so captions keep their hierarchy. */
:is(.graph-tooltip, .repo-scatter-tooltip, body.graph-only .study-tooltip) {
  --publication-surface: var(--publication-tooltip-background);
  --publication-ink: var(--publication-tooltip-foreground);
  --publication-note: var(--publication-tooltip-secondary);
  --study-text: var(--publication-tooltip-foreground);
  --study-muted: var(--publication-tooltip-secondary);
  --ui-ink: var(--publication-tooltip-foreground);
  --ui-muted: var(--publication-tooltip-secondary);
  --graphic-paper: var(--publication-tooltip-background);
  background-image: none;
}

/* Compact controls follow the input device, not the viewport width. */
@media (pointer:coarse) {
  :root { --publication-control-size: var(--publication-control-size-touch); }
}

/* Phone scale: the same four roles, sized for a narrow reading measure. */
@media (max-width:640px) {
  :root {
    --publication-heading-type: 500 22px/28px SEARReading, Georgia, serif;
    --publication-reading-type: 400 14px/22px ReveUI, Arial, sans-serif;
    --publication-brand-size: 22px;
    --publication-brand-leading: 28px;
    --publication-section-size: 22px;
    --publication-section-leading: 28px;
  }
}

/* Preserve the opening's existing short-screen limit in the same display role. */
@media (max-height:600px) {
  :root { --publication-display-size: clamp(2rem,min(13.3cqw,8svh),54.432px); }
}


/* A research publication: one reading measure and a consistent evidence heading. */
:root {
  font-family:var(--publication-font);
  --paper: var(--publication-paper);
  --ink: var(--publication-ink);
  --text: var(--publication-body);
  --line: var(--publication-rule);
  --reading-width: 720px;
  --simulation-stage: var(--publication-stage);
  --simulation-ink: var(--publication-stage-ink);
  --simulation-note: var(--publication-stage-note);
}
::selection { background: #dedede; color: #101112; }
.hero .hero-bottom { width:min(100% - 64px,var(--reading-width)); display:flex; flex-direction:column; align-items:center; gap:12px; text-align:center; }
@media(prefers-reduced-motion:no-preference) { .hero-enhanced .hero .hero-bottom { top:46%; } }
.hero .hero-bottom p { width:100%; max-width:560px; text-align:center; text-wrap:balance; margin:0 auto; font-size:var(--publication-body-size); font-weight:300; line-height:var(--publication-body-leading); letter-spacing:0; color:var(--publication-body); }
.hero-brand { font-size:var(--publication-brand-size); line-height:var(--publication-brand-leading); font-weight:300; letter-spacing:0; color:var(--publication-ink); }
/* One type role per semantic level, including media-only sections. */
.chapter-heading h2,.chapter--media .chapter-heading h2 { font-size:var(--publication-section-size); line-height:var(--publication-section-leading); font-weight:300; letter-spacing:0; }
.copy { font-size:var(--publication-body-size); line-height:var(--publication-body-leading); font-weight:300; letter-spacing:0; }
#learning :is(.chapter-heading,.copy) { max-width:var(--reading-width); }
#learning .copy p { max-width:var(--reading-width); }
.source-chart { border:0; padding:0; }
:is(.source-chart,.placeholder,.simulation-figure)>figcaption { font-size:var(--publication-caption-size); line-height:var(--publication-caption-leading); color:var(--publication-note); }
.frame { background:var(--publication-surface); color:var(--publication-note); border:0; font-size:var(--publication-label-size); line-height:var(--publication-label-leading); }
#simulation.chapter { padding-block:var(--space-section-edge); min-height:0; color:var(--ink); --simulation-stage:var(--paper); --simulation-ink:var(--ink); --simulation-note:var(--text); }
#simulation .simulation-figure>figcaption { color:var(--simulation-note); font-size:var(--publication-caption-size); line-height:var(--publication-caption-leading); margin-top:var(--space-media-to-caption); }
/* Paint to both viewport edges without creating horizontal scroll in the offset grid. */
#simulation::before { display:none; }
footer { line-height:var(--publication-label-leading); font-size:var(--publication-label-size); color:var(--publication-note); }
@media(max-width:600px) {
  .hero .hero-bottom { width:calc(100% - 48px); }
}

/* A separate contents rail gives the reading column a quiet, stable edge. */
.index-label { display:none; }
@media(min-width:1200px) {
  #sections { width:calc(100% - 288px); max-width:1040px; margin-left:auto; margin-right:max(48px,calc((100vw - 1440px)/2)); padding-inline:0; }
  .section-index,.section-index:is(:hover,:focus-within) { left:max(24px,calc((100vw - 1440px)/2)); top:120px; transform:none; width:192px; padding:12px; background:transparent; max-height:calc(100svh - 144px); }
  .index-label { display:block; padding-left:24px; margin-bottom:12px; font-size:var(--publication-label-size); line-height:var(--publication-label-leading); letter-spacing:0; text-transform:none; color:var(--index-note); }
  .section-index a span { opacity:1; }
}

/* Mono direction: keep the shared reading grid and compact navigation targets. */
.hero-brand,.chapter-heading h2,.chapter--media .chapter-heading h2,.section-index a span,.section-toggle { font-family:var(--publication-font); }
.section-index a span,.section-toggle { font-weight:300; }
.section-index a[aria-current] span { font-weight:400; }

/* Three article roles: heading, reading copy, and supporting text. */
.section-index a span,.section-index[data-open=true] a span,.section-toggle,
.source-chart figcaption small,footer .wordmark {
  font-family:var(--publication-font);
  font-size:var(--publication-label-size);
  line-height:var(--publication-label-leading);
  letter-spacing:0;
  font-weight:300;
}
.section-index a[aria-current] span,
.section-index:is(:hover,:focus-within) a[aria-current] span { font-weight:400; }
:is(.source-chart,.placeholder,.simulation-figure)>figcaption,footer { font-weight:300; }

/* One section spine: copy and evidence share a left edge at every width. */
.chapter.content-flow { width:min(100%,var(--evidence-width)); margin-inline:auto; }
.chapter .chapter-heading,.chapter--media .chapter-heading,
.chapter .copy,.chapter .source-band,.chapter .media-band {
  margin-inline:0;
}
.chapter .chapter-heading { max-width:none; }
.chapter .copy { max-width:var(--reading-width); }
.chapter.content-flow + .chapter.content-flow { margin-top:24px; }
.chapter.content-flow > .flow-media { margin-block-start:24px; }
.chapter.content-flow > .chapter-heading + .flow-media { margin-block-start:12px; }
:is(.source-chart,.simulation-figure)>figcaption { max-width:var(--reading-width); margin-top:12px; }

/* The simulation is a viewport-sized study within the article's normal scroll. */
#simulation.chapter.content-flow {
  width:var(--simulation-width,100vw); max-width:none;
  margin-left:calc(-1 * var(--simulation-bleed,0px)); margin-right:0;
  height:100svh; min-height:560px; padding:24px 32px;
  box-sizing:border-box; display:grid; grid-template-rows:24px minmax(0,1fr);
  gap:12px; scroll-margin-top:0;
}
#simulation .chapter-heading { margin:0; }
#simulation .simulation-band { width:100%; max-width:none; min-height:0; margin:0; }
#simulation .simulation-figure { height:100%; display:grid; grid-template-rows:minmax(0,1fr); gap:0; }
#simulation .simulation-viewport { height:100%; min-height:0; }
#simulation .simulation-figure>figcaption { margin:0; max-width:none; }
body.in-simulation .section-index:not([data-open=true]) { opacity:0; visibility:hidden; pointer-events:none; }
@media(max-width:600px) {
  #simulation.chapter.content-flow { padding:20px 24px; min-height:660px; }
}

/* Missing assets remain honest, compact entries rather than empty media panels. */
.chapter--pending.content-flow { padding-block:24px; }
.chapter--pending.content-flow + .chapter--pending.content-flow { margin-top:0; }
.pending-media { display:flex; align-items:baseline; justify-content:space-between; gap:12px 32px; }
.pending-media p { margin:0; font-size:var(--publication-body-size); line-height:var(--publication-body-leading); font-weight:300; color:var(--publication-body); }
.pending-media>span { flex-shrink:0; font-size:var(--publication-label-size); line-height:var(--publication-label-leading); font-weight:300; color:var(--publication-note); }
@media(max-width:700px) { .pending-media { flex-direction:column; gap:4px; } }

/* Stable contents navigation: full-row targets, one selection, no hover expansion. */
.section-index,.section-index:is(:hover,:focus-within) {
  mix-blend-mode:normal; background:var(--publication-paper); width:208px;
  padding:8px; border:0; scrollbar-width:thin;
}
.section-index .index-label { font:300 12px/20px var(--publication-font); letter-spacing:0; text-transform:none; display:block; padding:0 12px; margin:0 0 8px; color:var(--publication-note); }
.section-index a,.section-index a:hover,.section-index a:focus-visible,
.section-index:is(:hover,:focus-within) a,
.section-index[data-open=true] a,.section-index[data-open=true]:is(:hover,:focus-within) a {
  height:36px; box-sizing:border-box; padding:8px 12px; transition:none;
}
.section-index a::before { display:none; }
.section-index a span,.section-index:is(:hover,:focus-within) a span,
.section-index[data-open=true] a span,.section-index[data-open=true]:is(:hover,:focus-within) a span {
  position:static; opacity:1; transform:none; white-space:normal;
  font:300 12px/20px var(--publication-font); color:var(--publication-body);
}
.section-index a[aria-current] { background:var(--publication-surface); }
.section-index a[aria-current] span,.section-index:is(:hover,:focus-within) a[aria-current] span { color:var(--publication-ink); font-weight:400; }
@media(hover:hover) { .section-index a:hover { background:var(--publication-surface); } }
.section-index a:active { background:var(--publication-rule); }
.section-index a:focus-visible { outline:1px solid var(--publication-ink); outline-offset:-1px; }
.section-toggle { position:fixed; left:16px; right:auto; top:12px; z-index:21; min-height:44px; padding:0 12px; border:0; background:var(--publication-paper); color:var(--publication-ink); font:400 12px/20px var(--publication-font); cursor:pointer; }
.section-toggle::after { content:' +'; }
.section-toggle[aria-expanded=true]::after { content:' −'; }
.section-toggle:focus-visible { outline:1px solid var(--publication-ink); outline-offset:2px; }
.section-toggle:hover,.section-toggle[aria-expanded=true] { background:var(--publication-surface); }
@media(min-width:1200px) { .section-index,.section-index:is(:hover,:focus-within) { top:112px; } }
@media(max-width:1199px) {
 .section-index,.in-article .section-index { display:none; }
 .in-article .section-toggle { display:block; }
}
body.in-simulation .section-toggle { display:block; }
.section-index[data-open=true],.in-article .section-index[data-open=true],body.in-simulation .section-index[data-open=true] {
  display:block; position:fixed; inset:64px auto auto 16px; transform:none;
  width:272px; max-width:calc(100vw - 32px); max-height:calc(100svh - 80px);
  box-sizing:border-box; overflow-y:auto; background:var(--publication-paper);
  padding:12px; opacity:1; visibility:visible; pointer-events:auto; z-index:20;
  border:1px solid var(--publication-rule);
}
.section-index[data-open=true] a,.section-index[data-open=true]:is(:hover,:focus-within) a { height:44px; }
@media(pointer:coarse) { .section-index a,.section-index:is(:hover,:focus-within) a { height:44px; } }

/* Center the article's text and evidence on the same reading axis. */
:root { --reading-width:640px; }
.chapter:not(#simulation) :is(.chapter-heading,.copy,.source-band,.media-band,.pending-media) { margin-inline:auto; }
.chapter:not(#simulation) :is(.chapter-heading,.copy) { text-align:center; }
.chapter:not(#simulation) .copy { text-wrap:pretty; }
.chapter:not(#simulation) .source-chart>figcaption { margin-inline:auto; text-align:center; }
.chapter--pending .pending-media { flex-direction:column; align-items:center; gap:4px; text-align:center; }
/* Keep diagram labels at their verified width while centering the narrower prose. */
#framework,#benchmark { --chapter-media-width:720px; }

/* A dedicated scene takes over; the document keeps its natural scroll position. */
:root { --ease-out:cubic-bezier(0.23,1,0.32,1); }
#simulation.chapter.content-flow { height:150svh; min-height:0; display:block; padding:0; }
.simulation-stage {
 position:fixed; inset:0; z-index:40; box-sizing:border-box; background:var(--publication-paper);
 padding:24px 32px; display:grid; grid-template-rows:24px minmax(0,1fr); gap:12px;
 opacity:0; visibility:hidden; pointer-events:none;
 transition:opacity 240ms var(--ease-out),visibility 240ms;
}
#simulation .simulation-stage>.chapter-heading { display:flex; align-items:center; justify-content:space-between; max-width:none; }
.simulation-leave { font:400 12px/20px var(--publication-font); color:var(--publication-ink); background:transparent; border:0; min-height:44px; padding:0 12px; cursor:pointer; }
.simulation-leave:focus-visible { outline:1px solid currentColor; }
@media(hover:hover) { .simulation-leave:hover { background:var(--publication-surface); } }
.simulation-leave:active { background:var(--publication-rule); }
.simulation-immersed .simulation-stage { opacity:1; visibility:visible; pointer-events:auto; }
.simulation-immersed :is(.section-index,.section-toggle) { visibility:hidden !important; pointer-events:none; }
.simulation-instant .simulation-stage { transition:none; }
@media(max-width:600px) { .simulation-stage { padding:20px 24px; } }
@media(prefers-reduced-motion:reduce) { .simulation-stage { transition:none; } }
#simulation { z-index:50; }

/* Reading text needs a stable start and enough stroke weight at small sizes. */
:root { --reading-width:520px; }
.chapter:not(#simulation) .copy {
 font-size:14px; line-height:24px; font-weight:400;
 color:var(--publication-ink); text-align:left;
}
.chapter:not(#simulation) .chapter-heading { max-width:var(--reading-width); text-align:left; }
.chapter:not(#simulation) .chapter-heading h2 { font-weight:400; }
.chapter--pending .chapter-heading { text-align:center; }

/* Opening hierarchy: a strong name and one supporting statement. */
.hero .hero-bottom { width:min(100% - 64px,720px); gap:20px; align-items:flex-start; text-align:left; }
.hero .hero-bottom .hero-brand {
 margin:0; font:750 clamp(64px,7vw,96px)/.96 ReveUI,Arial,sans-serif;
 letter-spacing:-.055em; text-align:left;
}
.hero .hero-bottom p {
 width:100%; max-width:none; margin:0;
 font:450 clamp(24px,2.6vw,34px)/1.22 ReveUI,Arial,sans-serif;
 letter-spacing:-.025em; color:var(--publication-ink); text-align:left;
}
.hero .hero-bottom p span { display:block; }
@media(max-width:600px) {
 .hero .hero-bottom { width:calc(100% - 48px); gap:16px; }
 .hero .hero-bottom .hero-brand { font-size:64px; }
 .hero .hero-bottom p { font-size:24px; line-height:1.25; }
 .hero .hero-bottom p span { display:inline; }
}

/* Black opening gives the title and footage one continuous backdrop. */
.hero { --opening-paper:#000; --opening-ink:#fff; --opening-secondary:#c7c7c7; background:var(--opening-paper); }
.hero .hero-stage,.hero .hero-video-slot { background:var(--opening-paper); }
.hero .hero-bottom .hero-brand { color:var(--opening-ink); }
.hero .hero-bottom p { color:var(--opening-secondary); }

/* A horizon brightens and extends with the opening scroll, beneath the footage. */
.hero-scroll-light {
 position:absolute; z-index:1; left:-10%; bottom:-12%; width:120%; height:52%;
 pointer-events:none; opacity:.12; transform-origin:50% 100%;
 background:radial-gradient(ellipse at 50% 100%,rgba(130,189,222,.55),rgba(38,84,111,.22) 35%,transparent 70%);
 transform:translateY(0) scale(.95); will-change:transform,opacity;
}
.hero-scroll-light svg { width:100%; height:100%; display:block; filter:blur(12px); }
@media(prefers-reduced-motion:reduce) { .hero-scroll-light { display:none; } }

/* Scroll-driven character contours: a quiet texture, with no idle flicker. */
.hero-ascii{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
@media(prefers-reduced-motion:reduce){.hero-ascii{height:70svh;opacity:.55!important}}

/* Give the reading column a clear pause before its supporting figure. */
.chapter.content-flow > .copy + .source-band { margin-block-start:64px; }
@media(max-width:600px) {
 .chapter.content-flow > .copy + .source-band { margin-block-start:48px; }
}

/* Continuous entry: the scene is visible as soon as its section enters the viewport. */
#simulation.chapter.content-flow { height:150svh; }
#simulation .simulation-stage {
 position:sticky; inset:auto; top:0; width:100%; height:100svh;
 opacity:1; visibility:visible; pointer-events:auto; transition:none;
}
@media(prefers-reduced-motion:reduce) {
 #simulation.chapter.content-flow { height:100svh; }
 #simulation .simulation-stage { position:relative; }
}

/* A single quiet arrival behind the character field; settles instead of looping. */
:root{--ease-in-out:cubic-bezier(.77,0,.175,1)}
.hero-atmosphere{
 position:absolute;inset:-8%;z-index:1;pointer-events:none;
 background:radial-gradient(ellipse at 78% 35%,rgba(92,134,146,.18),transparent 46%),radial-gradient(ellipse at 16% 82%,rgba(91,110,135,.1),transparent 42%);
 opacity:.5;transform:translate(-1%,1%) scale(.97);
 animation:opening-atmosphere 4s var(--ease-in-out) both;
 animation-play-state:paused;
}
.hero[data-ambient-active=true] .hero-atmosphere{animation-play-state:running}
@keyframes opening-atmosphere{
 from{opacity:.2;transform:translate(-1%,1%) scale(.97)}
 to{opacity:.65;transform:translate(1%,-1%) scale(1.02)}
}
@media(prefers-reduced-motion:reduce){.hero-atmosphere{animation:none;transform:none;opacity:.5}}

/* Fine publication rules follow the evidence column, without enclosing each figure. */
:root{--publication-divider:color-mix(in srgb,var(--publication-ink) 10%,var(--publication-paper))}
.chapter:not(#simulation){position:relative}
.chapter:not(#simulation)::before{
 content:"";position:absolute;inset:-12px -24px;pointer-events:none;
 border-inline:1px solid var(--publication-divider);
 border-top:1px solid var(--publication-divider);
}
@media(max-width:600px){.chapter:not(#simulation)::before{inset-inline:-12px}}

.hero-playback{position:absolute;left:max(var(--space-4),env(safe-area-inset-left));right:auto;bottom:max(var(--space-4),env(safe-area-inset-bottom));transform:none;z-index:4}
.hero-playback[hidden]{display:none}
.hero-playback:disabled{opacity:.5;cursor:default}

/* Editorial opening: regular sans-serif and a centered two-level composition. */
.hero .hero-bottom{width:min(100% - 64px,960px);align-items:center;text-align:center;gap:28px}
.hero .hero-bottom .hero-brand{font-weight:400;font-size:clamp(80px,9vw,128px);line-height:1.04;letter-spacing:-.045em;text-align:center}
.hero .hero-bottom p{max-width:660px;font-weight:400;font-size:clamp(24px,2.5vw,32px);line-height:1.3;letter-spacing:-.03em;text-align:center}
@media(max-width:600px){
 .hero .hero-bottom{width:calc(100% - 48px);gap:24px}
 .hero .hero-bottom .hero-brand{font-size:80px}
 .hero .hero-bottom p{font-size:24px;line-height:1.3}
}

/* Editorial reading, functional navigation, and technical figure labels. */
@font-face{font-family:SEARReading;src:url('fonts/newsreader-regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:SEARReading;src:url('fonts/newsreader-medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
:root{--publication-reading-font:SEARReading,Georgia,serif;--reading-width:600px;--reading-size:18px;--reading-leading:28px;--reading-heading-size:26px;--reading-heading-leading:32px}
.chapter:not(#simulation) .copy{font-family:var(--publication-reading-font);font-size:var(--reading-size);line-height:var(--reading-leading);font-weight:400;letter-spacing:0;text-wrap:pretty}
.chapter:not(#simulation) .chapter-heading h2{font-family:var(--publication-reading-font);font-size:var(--reading-heading-size);line-height:var(--reading-heading-leading);font-weight:500;letter-spacing:0}
.chapter:not(#simulation) .copy.prose-flow>p+p{margin-top:20px}
.section-index a,.section-index a span,.section-toggle{font-family:ReveUI,Arial,sans-serif;font-weight:400}
.hero .hero-bottom p{font-family:var(--publication-reading-font);font-weight:400;letter-spacing:0;line-height:1.3}

/* Reference-led opening: centered editorial title with a quiet mono deck. */
:root{--opening-title-size:clamp(30px,3.2vw,40px);--opening-title-leading:1.2;--opening-deck-size:13px;--opening-deck-leading:20px;--opening-type-gap:8px}
.hero .hero-bottom{width:min(100% - 48px,640px);gap:var(--opening-type-gap)}
.hero .hero-bottom .hero-brand{font:400 var(--opening-title-size)/var(--opening-title-leading) var(--publication-reading-font);letter-spacing:-.015em}
.hero .hero-bottom p{max-width:560px;font:400 var(--opening-deck-size)/var(--opening-deck-leading) SEARMono,monospace;letter-spacing:.045em;text-transform:uppercase;color:#999;text-wrap:initial}
.hero .hero-bottom p span{display:inline}
@media(max-width:600px){:root{--opening-type-gap:8px;--opening-deck-size:12px;--opening-deck-leading:20px}.hero .hero-bottom p{max-width:320px}}

/* A single transition gap; no inset frame around the reading sections. */
#sections{padding-top:32px}
.chapter:not(#simulation)::before{display:none}
#introduction.chapter.content-flow{padding-top:0}
@media(max-width:600px){#sections{padding-top:24px}}

@media(min-width:600px){.hero .hero-bottom p{max-width:640px;white-space:normal;text-wrap:balance}}

/* Full research name on one line, sized to the available opening width. */
.hero .hero-bottom{width:min(100% - 40px,900px)}
.hero .hero-bottom .hero-brand{font-size:clamp(21px,4.5vw,40px);white-space:nowrap}

/* One low-contrast light field: a single arrival, then stillness. */
.hero{--opening-light:rgba(176,190,200,.075);--opening-light-arrival:3s}
.hero-soft-light{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 58% 46% at 50% 48%,var(--opening-light),transparent 78%);opacity:1;animation:opening-light-arrive var(--opening-light-arrival) var(--ease-out) both}
@keyframes opening-light-arrive{from{opacity:.15}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.hero-soft-light{animation:none}}

/* Center the reading axis in the viewport; the contents rail lives outside it. */
@media(min-width:901px){
 #sections{width:calc(100% - 64px);max-width:960px;margin-inline:auto;padding-inline:0}
}
@media(min-width:1440px){
 .section-index,.section-index:is(:hover,:focus-within){left:max(24px,calc(50vw - 720px));width:176px}
}
@media(min-width:1200px) and (max-width:1439px){
 .section-index,.in-article .section-index{display:none}
 .in-article .section-toggle{display:block}
 .section-index[data-open=true],.in-article .section-index[data-open=true]{display:block}
}

/* Let reading arrive during the fade, rather than after an empty viewport. */
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced #sections{position:relative;z-index:2;margin-top:-75svh;opacity:var(--article-arrival,1)}
}

#simulation .simulation-stage>.chapter-heading{justify-content:center;text-align:center}

/* Article navigation never overlays the opening, including an open mobile menu. */
body:not(.in-article) :is(.section-index,.section-toggle){display:none;visibility:hidden;pointer-events:none}

/* Stable word boxes let the title converge without changing its measure. */
.hero-brand .title-word{display:inline-block}

/* Experience traces live only in the unused outer margins. */
.article-traces{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity 500ms ease-out;color:var(--publication-ink);contain:strict}
.article-traces svg{position:absolute;top:0;left:0;width:clamp(28px,6vw,88px);height:100%;mask-image:linear-gradient(transparent,black 22%,black 78%,transparent)}
.article-traces svg+svg{left:auto;right:0;transform:scaleX(-1)}
.article-traces path{stroke:currentColor;stroke-width:.7;opacity:.055}
body.in-article:not(.in-simulation) .article-traces{opacity:1}
@media(max-width:1000px){.article-traces{display:none}}
@media(prefers-reduced-motion:reduce){.article-traces{transition:none}}

/* A numbered reading rail: quiet chapter order, explicit collapse, stable left edge. */
.section-index ol{counter-reset:chapter}
.section-index a{display:flex;align-items:center;gap:12px;counter-increment:chapter}
.section-index a::before{display:block!important;content:counter(chapter,decimal-leading-zero);position:static!important;width:20px!important;height:auto!important;background:none!important;flex:none;font:10px/20px var(--publication-font);color:var(--publication-note);opacity:.65}
.section-index a[aria-current]::before{opacity:1;color:var(--publication-ink)}
.section-toggle{display:none;min-width:104px;text-align:left;background:var(--publication-paper)}
.in-article .section-toggle{display:block}
.section-toggle::after{content:' ›';float:right;margin-left:16px}
.section-toggle[aria-expanded=true]::after{content:' ‹'}
.section-index,.section-index:is(:hover,:focus-within),.in-article .section-index{display:none}
.section-index[data-open=true],.in-article .section-index[data-open=true],body.in-simulation .section-index[data-open=true]{display:block;left:16px;right:auto;top:64px;width:272px;padding:8px;border:1px solid color-mix(in srgb,var(--publication-rule) 65%,var(--publication-paper))}
.section-index .index-label{display:none}
.section-index a span,.section-index[data-open=true] a span{font-size:12px}

/* One study composition: heading, paired media and playback share a center. */
#simulation.chapter.content-flow{height:auto;min-height:100svh;}
#simulation .simulation-stage{
 position:relative;height:auto;min-height:100svh;
 grid-template-rows:24px auto;align-content:center;gap:8px;
 padding:40px 32px;
}
#simulation .simulation-band{
 width:100%;max-width:1280px;justify-self:center;
 height:calc((min(1280px,100vw - 64px) - 32px)*.28125 + 136px);
}
@media(max-width:640px){
 #simulation .simulation-stage{padding:32px 24px;}
 #simulation .simulation-band{height:calc((100vw - 48px)*1.125 + 176px);}
}
/* The compact contents trigger remains on the publication's paper surface. */
body.in-simulation .section-toggle{background:var(--publication-paper);color:var(--publication-ink);}

/* Give graph navigation its own outer margin without reducing the plot. */
@media(min-width:1000px){
 :is(#benchmark,#learning) .atlas-embed{width:calc(100% + 96px);max-width:none;margin-inline:-48px}
}

/* Keep wrapped contents labels inside the same quiet panel boundary. */
.section-index[data-open=true] a,.section-index[data-open=true]:is(:hover,:focus-within) a{height:auto;min-height:44px}

/* Shared publication dimensions: article and journal. */
:root {
 --grid-unit:4px;--grid-gutter:32px;
 --grid-reading:min(600px,calc(100vw - 2 * var(--grid-gutter)));
 --grid-figure:min(784px,calc(100vw - 2 * var(--grid-gutter)));
 --grid-media:min(1280px,calc(100vw - 2 * var(--grid-gutter)));
 --grid-columns:[full-start] minmax(var(--grid-gutter),1fr)
 [media-start] minmax(0,calc((var(--grid-media) - var(--grid-figure)) / 2))
 [figure-start] minmax(0,calc((var(--grid-figure) - var(--grid-reading)) / 2))
 [reading-start] var(--grid-reading) [reading-end]
 minmax(0,calc((var(--grid-figure) - var(--grid-reading)) / 2)) [figure-end]
 minmax(0,calc((var(--grid-media) - var(--grid-figure)) / 2)) [media-end]
 minmax(var(--grid-gutter),1fr) [full-end];
}
@media(max-width:640px){:root{--grid-gutter:24px}}

/* One 784 px content measure; figure frames add the existing side-arrow rails. */
:root {
 --grid-reading:min(784px,calc(100vw - 2 * var(--grid-gutter)));
 --grid-figure:min(968px,calc(100vw - 2 * var(--grid-gutter)));
 --grid-media:min(1280px,calc(100vw - 2 * var(--grid-gutter)));
 --grid-columns:[full-start] minmax(var(--grid-gutter),1fr)
 [media-start] minmax(0,calc((var(--grid-media) - var(--grid-figure)) / 2))
 [figure-start] minmax(0,calc((var(--grid-figure) - var(--grid-reading)) / 2))
 [reading-start] var(--grid-reading) [reading-end]
 minmax(0,calc((var(--grid-figure) - var(--grid-reading)) / 2)) [figure-end]
 minmax(0,calc((var(--grid-media) - var(--grid-figure)) / 2)) [media-end]
 minmax(var(--grid-gutter),1fr) [full-end];
}


#sections{display:grid;grid-template-columns:var(--grid-columns);width:100%;max-width:none;margin-inline:0;padding:32px 0 0}
.chapter.content-flow{grid-column:full;display:grid;grid-template-columns:var(--grid-columns);width:100%;max-width:none;padding:var(--space-section-edge) 0;min-width:0}
/* A barely darker reading surface with section breaks contained inside it. */
body.publication-page .article-shell #sections{
 --section-rule:color-mix(in srgb,var(--publication-ink) 24%,transparent);
 --reading-surface-width:min(100%,calc(var(--grid-reading) + 2 * var(--space-section-edge)));
 position:relative;
}
body.publication-page #sections::before{
 --paper-surface-base:var(--publication-reading-surface);
 content:"";position:absolute;inset-block:0;
 inset-inline-start:50%;inline-size:var(--reading-surface-width);
 transform:translateX(-50%);
 box-sizing:border-box;
 background:var(--publication-reading-surface);pointer-events:none;
 /* The reading paper enters and leaves through the same soft edge.
    Native scroll reverses the handoff; only the paper is feathered,
    never the reading content or the closing logo. */
 -webkit-mask-image:linear-gradient(to bottom,transparent,#000 var(--article-edge,var(--space-16)),#000 calc(100% - var(--article-edge,var(--space-16))),transparent);
 mask-image:linear-gradient(to bottom,transparent,#000 var(--article-edge,var(--space-16)),#000 calc(100% - var(--article-edge,var(--space-16))),transparent);
}
body.publication-page #sections>.chapter{position:relative;margin-block:0}
body.publication-page #sections>.chapter::before,
body.publication-page #sections::after{
 content:"";display:block;position:absolute;
 inset-inline-start:50%;inline-size:var(--reading-surface-width);block-size:1px;
 transform:translateX(-50%);
 /* Fine ink dots on a 4 px rhythm keep the break quiet against the paper. */
 background:radial-gradient(circle at 1px .5px,var(--section-rule) .5px,transparent .8px) 0 0/4px 1px repeat-x;pointer-events:none;
}
body.publication-page #sections>.chapter::before{inset-block:0 auto;border:0}
body.publication-page #sections>#framework::before{display:none}
/* The closing paper fade replaces the final section divider. */
body.publication-page #sections::after{display:none}

/* Keep a generous entry into the article, including on narrow screens. */
body.publication-page #framework.chapter.content-flow{--space-heading-to-copy:var(--space-6);padding-block-start:var(--space-16)}
.chapter:not(#simulation) :is(.chapter-heading,.copy,.pending-media){grid-column:reading;width:100%;max-width:none;margin-inline:0;padding-inline:0;text-align:left}
.chapter:not(#simulation) .chapter-heading{display:block;grid-column:reading;max-width:none}
.chapter:not(#simulation) .chapter-heading h2{text-wrap:balance}
.chapter:not(#simulation) .source-band{grid-column:figure;width:100%;max-width:none;margin-inline:0;padding:0;min-width:0}
/* Graph controls and labels share the prose track; the plot owns its axis gutter. */
.chapter:not(#simulation) .source-band:has(.atlas-embed){grid-column:reading}
.chapter:not(#simulation) .copy.prose-flow>p+p{margin-top:var(--space-paragraph)}
.chapter.content-flow>.copy{margin-top:var(--space-heading-to-copy)}
.chapter.content-flow>.copy+.source-band{margin-top:var(--space-copy-to-media)}
:is(#benchmark,#learning,#framework) .atlas-embed{width:100%;max-width:100%;margin-inline:0}
/* Every embedded graph sits directly on the article's continuous paper. */
.publication-page .atlas-embed{background:transparent}
/* Expanding source observations must not anchor the viewport to the iframe bottom. */
#library{overflow-anchor:none}
.chapter:not(#simulation) .source-chart>figcaption{width:var(--grid-reading);max-width:100%;margin:var(--space-media-to-caption) auto 0}
.hero .hero-bottom{width:var(--grid-figure)}
.hero .hero-bottom p{max-width:var(--grid-reading)}
.hero .opening-traces{width:min(360px,var(--grid-reading))}
#simulation.chapter.content-flow{display:block;width:100%;margin-inline:0;padding:0;min-height:100svh}
#simulation .simulation-stage{display:grid;grid-template-columns:var(--grid-columns);grid-template-rows:auto auto;gap:8px 0;width:100%;padding:48px 0;min-height:100svh}
#simulation .simulation-stage>.chapter-heading{grid-column:media;width:100%;margin:0;padding:0;justify-content:flex-start;text-align:left}
#simulation .simulation-band{grid-column:media;width:100%;max-width:none;margin:0;height:calc((var(--grid-media) - 32px)*.28125 + 136px)}
footer{box-sizing:border-box;width:var(--grid-media);max-width:none;margin:0 auto;padding:32px 0;gap:24px}
.section-toggle{left:var(--grid-gutter)}
.section-index[data-open=true],.in-article .section-index[data-open=true],body.in-simulation .section-index[data-open=true]{left:var(--grid-gutter);max-width:calc(100vw - 2 * var(--grid-gutter))}
@media(max-width:640px){
 #sections{padding-top:24px}
 body.publication-page #framework.chapter.content-flow{padding-block-start:var(--space-12)}
 #simulation .simulation-stage{padding-block:32px}
 #simulation .simulation-band{height:calc(var(--grid-media)*1.125 + 176px)}
 footer{flex-wrap:wrap;gap:16px}
}

/* Contents owns a column, never an overlay on the reading surface. */
/* Keep the reading cue anchored; only its opacity changes, never its glyph size. */
.section-cue{display:none;user-select:none}
@media(min-width:1000px){
 .section-cue{display:flex;align-items:center;box-sizing:border-box;position:fixed;z-index:22;top:16px;left:16px;max-width:calc(100vw - 32px);height:var(--publication-control-size);padding:0 10px;background:transparent;color:var(--publication-note);font:var(--publication-label-type);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;pointer-events:none;opacity:0;visibility:hidden;transition:opacity var(--motion-feedback) var(--ease-out-gentle),visibility 0s var(--motion-feedback)}
 .section-cue[data-visible]{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
 .section-cue[data-switching]{opacity:0}
 .article-sidebar .section-toggle svg{opacity:1;transition:opacity var(--motion-feedback) var(--ease-out-gentle)}
 .article-sidebar .section-toggle[data-cue-visible] svg{opacity:0}
 .section-cue[data-immediate],.article-sidebar .section-toggle[data-cue-immediate] svg{transition:none}
 .article-shell:has(.section-toggle:focus-visible) .section-cue[data-visible]{opacity:0;transition:none}
 .article-sidebar .section-toggle[data-cue-visible]:focus-visible svg{opacity:1;transform:none;filter:none;transition:none}
 @starting-style{.article-sidebar .section-toggle .contents-close-icon{opacity:0}}
}
@media(min-width:1000px) and (hover:hover) and (pointer:fine){
 .section-cue[data-visible]:hover{background:var(--publication-control-hover,var(--publication-surface))}
}
@media(prefers-reduced-motion:reduce){.section-cue,.article-sidebar .section-toggle svg{transition:none!important;transform:none!important;filter:none!important}}
.article-shell{--contents-width:256px;position:relative;display:grid;grid-template-columns:var(--contents-width) minmax(0,1fr);align-items:start;z-index:2}
.article-shell #sections{--grid-reading:min(784px,calc(100vw - var(--contents-width) - 2 * var(--space-section-edge)));--grid-figure:min(968px,calc(100vw - var(--contents-width) - 2 * var(--grid-gutter)));--grid-media:min(1280px,calc(100vw - var(--contents-width) - 2 * var(--grid-gutter)));min-width:0;margin:0;opacity:1}
/* Resolve tracks with the article's inset at every width, including phones. */
.article-shell #sections{--grid-columns:[full-start] minmax(var(--grid-gutter),1fr) [media-start] minmax(0,calc((var(--grid-media) - var(--grid-figure)) / 2)) [figure-start] minmax(0,calc((var(--grid-figure) - var(--grid-reading)) / 2)) [reading-start] var(--grid-reading) [reading-end] minmax(0,calc((var(--grid-figure) - var(--grid-reading)) / 2)) [figure-end] minmax(0,calc((var(--grid-media) - var(--grid-figure)) / 2)) [media-end] minmax(var(--grid-gutter),1fr) [full-end]}
.article-sidebar{position:sticky;top:0;align-self:start;display:flex;flex-direction:column;box-sizing:border-box;height:100vh;height:100dvh;min-height:0;margin:0;padding:16px;border-right:1px solid var(--publication-grid);overflow:hidden}
.article-sidebar .section-index,
.article-sidebar .section-index:is(:hover,:focus-within),
.article-sidebar .section-index[data-open=true]{display:block;position:static;inset:auto;transform:none;width:100%;min-height:0;max-width:none;max-height:none;margin:8px 0 0;padding:0;border:0;background:none;box-shadow:none;mix-blend-mode:normal;opacity:1;visibility:visible;pointer-events:auto;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;flex:1}
/* A narrow ink mark replaces the native raised scrollbar track. */
.article-sidebar .section-index{
 --contents-scroll-thumb:color-mix(in srgb,var(--publication-note) 80%,var(--publication-paper));
 scrollbar-gutter:stable;
 scrollbar-color:var(--contents-scroll-thumb) transparent;
}
.article-sidebar .section-index:focus-within{scrollbar-color:var(--publication-note) transparent}
@supports selector(::-webkit-scrollbar){
 .article-sidebar .section-index,.article-sidebar .section-index:focus-within{scrollbar-width:auto;scrollbar-color:auto}
 .article-sidebar .section-index::-webkit-scrollbar{width:8px;height:8px;background:transparent}
 .article-sidebar .section-index::-webkit-scrollbar-track{background:transparent;border:0;box-shadow:none}
 .article-sidebar .section-index::-webkit-scrollbar-thumb{min-height:32px;background:var(--contents-scroll-thumb);background-clip:padding-box;border:2px solid transparent;border-radius:0;box-shadow:none}
 .article-sidebar .section-index::-webkit-scrollbar-thumb:hover{background-color:var(--publication-note)}
 .article-sidebar .section-index::-webkit-scrollbar-thumb:active{background-color:var(--publication-ink)}
 .article-sidebar .section-index::-webkit-scrollbar-button{display:none;width:0;height:0}
 .article-sidebar .section-index::-webkit-scrollbar-corner{background:transparent}
}
@media(forced-colors:active){.article-sidebar .section-index{scrollbar-color:auto;scrollbar-width:auto}}
.article-sidebar .section-index[hidden]{display:none!important}
.article-sidebar .section-index .index-label{display:none}
.article-sidebar .section-index a,
.article-sidebar .section-index a:is(:hover,:focus-visible),
.article-sidebar .section-index[data-open=true] a{box-sizing:border-box;height:auto;min-height:var(--publication-control-size);padding:var(--space-control-padding-block,8px) var(--space-3,12px);gap:var(--space-2);align-items:center;white-space:nowrap;transition:none}
.article-sidebar .section-index a span,
.article-sidebar .section-index:is(:hover,:focus-within) a span{position:static;opacity:1;transform:none;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:400 12px/20px var(--publication-font);color:var(--publication-note)}
.article-sidebar .section-index a[aria-current] span{color:var(--publication-ink)}
/* Current section uses paper tint; focus stays separate. */
.article-sidebar .section-index a{isolation:isolate}
/* Chapter numbers keep a fixed slot; legacy tick scaling must not distort text. */
.article-sidebar .section-index a::before{flex-shrink:0;text-align:center;width:max(20px,2ch)!important;transform:none;transition:none}
.article-sidebar .section-index a:not([aria-current]):hover{background:transparent}
.article-sidebar .section-index a::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--publication-surface);opacity:0;transition:opacity var(--motion-feedback,120ms) var(--ease-out)}
.article-sidebar .section-index a[aria-current]{background:var(--publication-surface);color:var(--publication-ink);box-shadow:none}
.article-sidebar .section-index a[aria-current] span{text-decoration:none}
.article-sidebar .section-index a[aria-current]::after{display:none}
@media(hover:hover) and (pointer:fine){
 .article-sidebar .section-index a:hover::after{opacity:1}
 .article-sidebar .section-index a:hover span{color:var(--publication-ink)}
}
.article-sidebar .section-index a:active::after{background:var(--publication-rule);opacity:1;transition:none}
.article-sidebar .section-index a:focus-visible{outline:1px solid var(--publication-ink);outline-offset:-1px}
.article-sidebar .section-index a:focus-visible::after{opacity:1;transition:none}
.article-sidebar .section-index a[aria-current]::before,
.article-sidebar .section-index a[aria-current] span,
.article-sidebar .section-index:is(:hover,:focus-within) a[aria-current] span{color:var(--publication-ink);opacity:1}
.article-sidebar .section-index a[aria-current]:focus-visible{outline-color:var(--publication-ink);outline-offset:-1px}
@media(prefers-reduced-motion:reduce){.article-sidebar .section-index a::after{transition:none}}
body .article-sidebar .section-toggle{display:flex;align-items:center;justify-content:center;gap:4px;flex:none;position:static;inset:auto;visibility:visible;pointer-events:auto;width:var(--publication-control-size);height:var(--publication-control-size);min-width:var(--publication-control-size);min-height:var(--publication-control-size);padding:0;background:transparent;color:var(--publication-note);text-align:left;font:400 12px/20px var(--publication-font)}
body .article-sidebar .section-toggle::after{content:none}
.article-sidebar .section-toggle svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linejoin:round;stroke-linecap:round;transform:none}
.article-sidebar .section-toggle[aria-expanded=false] .contents-close-icon,
.article-sidebar .section-toggle[aria-expanded=true] .contents-open-icon{display:none}
.article-sidebar .section-toggle:focus-visible{outline:2px solid var(--publication-ink);outline-offset:-2px}
@media(hover:hover) and (pointer:fine){body .article-sidebar .section-toggle:hover{background:var(--publication-surface);color:var(--publication-ink)}}
body .article-sidebar .section-toggle:active{background:var(--publication-surface)}
@media(min-width:1000px){
 /* Keep figure widths stable so embedded charts do not reflow during a toggle. */
 .article-shell #sections{--grid-reading:min(784px,calc(100vw - 256px - 2 * var(--space-section-edge)));--grid-figure:min(968px,calc(100vw - 256px - 2 * var(--grid-gutter)));--grid-media:min(1280px,calc(100vw - 256px - 2 * var(--grid-gutter)));overflow-anchor:none}
 .article-sidebar{position:fixed;inset:0 auto auto 0;width:256px;clip-path:inset(0 0 0 0)}
 .article-shell #sections{grid-column:2}
 body .article-sidebar .section-toggle{margin-left:0}
 .article-shell[data-contents-collapsed]{--contents-width:128px;grid-template-columns:64px minmax(0,1fr) 64px}
 .article-shell[data-contents-collapsed] .article-sidebar{clip-path:inset(0 192px 0 0)}
}
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced .article-shell{--article-edge:clamp(64px,16svh,160px);margin-top:-75svh;background:var(--publication-paper)}
 /* Feather only the incoming paper surface; article text stays sharp and opaque. */
 .hero-enhanced .article-shell::before{content:'';position:absolute;inset:auto 0 100%;height:var(--article-edge);background:var(--publication-paper);pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,transparent,#000);mask-image:linear-gradient(to bottom,transparent,#000)}
 .hero-enhanced .article-shell #sections{margin-top:0;opacity:1}
}
@media(max-width:999px){
 .article-shell{--contents-width:0px;display:block}
 /* Keep the trigger reachable throughout the article without intercepting
    scrolling outside the control. The menu overlays without moving the copy. */
 .article-sidebar{--publication-control-size:44px;position:sticky;top:0;z-index:24;height:calc(72px + env(safe-area-inset-top,0px));background:var(--publication-reading-surface);margin:0;padding:calc(16px + env(safe-area-inset-top,0px)) var(--grid-gutter) 0;border:0;overflow:visible;pointer-events:none}
 body .article-sidebar .section-toggle{width:44px;height:44px;min-width:44px;min-height:44px;border-bottom:0;background:transparent}
 .article-sidebar .section-index[data-open=true]{display:block;position:absolute;inset:100% var(--grid-gutter) auto;width:auto;max-width:none;max-height:calc(100dvh - 96px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));margin:0;padding:8px 0 16px;background:var(--publication-reading-surface);border-bottom:1px solid var(--publication-rule)}
 .article-sidebar .section-index ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
 .article-sidebar .section-index li{min-width:0}
 .article-sidebar .section-index a span,
 .article-sidebar .section-index:is(:hover,:focus-within) a span{white-space:normal;overflow-wrap:anywhere}
}
@media(max-width:599px){.article-sidebar .section-index ol{grid-template-columns:1fr}}

/* Keep explanations close to their evidence and preserve a quiet reading rhythm. */

.chapter:not(#simulation) .source-chart>figcaption{font-weight:400;text-align:left}
.chapter-heading h2:focus-visible{outline:1px solid var(--publication-note);outline-offset:6px}


/* The same quiet path enters and leaves the reading boundary. Keeping the rail
   mounted lets CSS reverse from its current opacity during a quick scroll. */
body .article-sidebar{opacity:0;transform:translateX(calc(-1 * var(--space-1)));visibility:hidden;transition:none}
body .article-sidebar[data-boundary-motion]{transition:opacity var(--motion-panel) var(--ease-out),transform var(--motion-panel) var(--ease-out),visibility 0s linear var(--motion-panel)}
body .article-sidebar[data-available]{opacity:1;transform:none;visibility:visible;transition-delay:0s}
body .article-sidebar :is(.section-index,.section-toggle){visibility:inherit!important}
/* Disable input at the boundary while the outgoing contents are still painted. */
body .article-sidebar:not([data-available]),
body .article-sidebar:not([data-available]) *{pointer-events:none!important}
/* Names overlap in reading order, with the divider arriving last.
   All names blur out together; interrupted transitions retain painted values. */
@media(min-width:1000px){
 body .article-sidebar{border-right-color:transparent}
 body .article-sidebar::after{content:"";position:absolute;inset:0 0 0 auto;width:1px;background:color-mix(in srgb,var(--publication-grid) 70%,var(--publication-paper));opacity:0;pointer-events:none;transition:none}
 body .article-sidebar[data-available]::after{opacity:1}
 .article-shell[data-contents-collapsed] .article-sidebar::after{opacity:0}
}
@media(prefers-reduced-motion:no-preference){
 /* Count × start interval + overlap + divider = the full entrance. */
 body .article-sidebar{--contents-stagger-step:calc((var(--motion-contents) - var(--motion-feedback) - var(--motion-overlap)) / var(--contents-count,1));--contents-item-time:calc(var(--contents-stagger-step) + var(--motion-overlap))}
 body .article-sidebar:has(.section-toggle[aria-expanded=true]){opacity:1;transform:none}
 body .article-sidebar[data-boundary-motion]:has(.section-toggle[aria-expanded=true]){transition:visibility 0s linear var(--motion-swap)}
 body .article-sidebar[data-boundary-motion][data-available]:has(.section-toggle[aria-expanded=true]){transition-delay:0s}
 body .article-sidebar .section-index li{opacity:0;filter:blur(var(--motion-text-blur));transition:none}
 body .article-sidebar[data-available] .section-index li{opacity:1;filter:blur(0)}
 body .article-sidebar[data-boundary-motion] .section-index li{transition:opacity var(--motion-swap) var(--ease-out),filter var(--motion-swap) var(--ease-out);transition-delay:0s}
 body .article-sidebar[data-boundary-motion][data-available] .section-index li{transition-duration:var(--contents-item-time);transition-delay:calc(var(--contents-order) * var(--contents-stagger-step))}
 body .article-sidebar:has(.section-toggle[aria-expanded=true]) .section-toggle{opacity:0;transition:none}
 body .article-sidebar[data-available]:has(.section-toggle[aria-expanded=true]) .section-toggle{opacity:1}
 body .article-sidebar[data-boundary-motion]:has(.section-toggle[aria-expanded=true]) .section-toggle{transition:opacity var(--motion-swap) var(--ease-out)}
 body .article-sidebar[data-toggle-motion]::after{transition:opacity var(--motion-swap) var(--ease-out-gentle)}
 body .article-sidebar[data-boundary-motion]::after{transition:opacity var(--motion-feedback) var(--ease-out-gentle)}
 body .article-sidebar[data-boundary-motion][data-available]::after{transition-delay:calc(var(--motion-contents) - var(--motion-feedback))}
 body .article-shell[data-contents-collapsed] .article-sidebar::after{transition-delay:0s}
 @starting-style{
  body .article-sidebar[data-boundary-motion][data-available] .section-index li{opacity:0;filter:blur(var(--motion-text-blur))}
 }
}
@media(prefers-reduced-motion:reduce){
 body .article-sidebar{transform:none}
 body .article-sidebar[data-boundary-motion]{transition:opacity var(--motion-feedback) var(--ease-out),visibility 0s linear var(--motion-feedback)}
 body .article-sidebar[data-boundary-motion][data-available]{transition-delay:0s}
}
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced .article-shell:not([data-ready=true]) .article-sidebar,
 .hero-enhanced .article-shell:not([data-ready=true]) .article-sidebar *{visibility:hidden!important;pointer-events:none!important}
}

/* Center the opening title and subtitle as one group in the viewport. */
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced .hero .hero-bottom{top:50%;left:50%;transform:translate(-50%,-50%)}
}

/* Intro metadata follows the reading measure with a quieter, compact rhythm. */
#introduction>.repository-content{margin-top:24px}
#introduction .repo-author-list{display:flex;flex-wrap:wrap;gap:4px 16px;list-style:none;padding:0;margin:0;font:400 12px/20px var(--publication-font)}
#introduction .repo-author-list li{margin:0;padding:0;white-space:nowrap}
#introduction .repo-authors>.repo-note{margin:8px 0 0;font-size:12px;line-height:20px}
#introduction .repo-authors>details{margin-top:8px}
#introduction .repo-authors>details>summary{justify-content:flex-start;gap:8px;color:var(--publication-note)}
#introduction .repo-authors>details>summary::after{content:'+';font-size:14px}
#introduction .repo-authors>details[open]>summary::after{content:'−'}

/* One update path at a time; the full framework is optional context. */
.component-tabs{display:flex;flex-wrap:wrap;gap:0 24px;margin-bottom:24px}
.component-tabs [role=tab]{min-height:44px;padding:12px 0;border:0;border-bottom:1px solid transparent;font:var(--publication-label-type);color:var(--publication-note)}
.component-tabs [aria-selected=true]{border-bottom-color:var(--publication-ink);color:var(--publication-ink)}
.component-panels{display:grid}
.component-panels>.component-example{grid-area:1/1;gap:24px;padding:0}
.component-panels>.component-example[hidden]{display:flex!important;visibility:hidden;pointer-events:none}
.component-panels .component-sketch{align-self:center;width:280px;margin:0}
.component-panels .component-copy h3{font:var(--publication-label-type);margin:0 0 8px}
.component-panels .component-copy p{font:var(--publication-reading-type)}
#framework>.framework-overview{grid-column:reading;margin-top:24px}
.framework-overview>summary{display:flex;justify-content:space-between;align-items:center;min-height:44px;list-style:none;cursor:pointer;font:var(--publication-label-type);color:var(--publication-note)}
.framework-overview>summary::-webkit-details-marker{display:none}
.framework-overview[open]>summary>.confound-toggle::after{content:'−'}
.framework-overview>figure{margin-top:24px}
.framework-overview>summary:focus-visible,.component-tabs [role=tab]:focus-visible,.component-panels [role=tabpanel]:focus-visible{outline:1px solid var(--publication-ink);outline-offset:4px}
@media(hover:hover) and (pointer:fine){.component-tabs [role=tab]:hover,.framework-overview>summary:hover{color:var(--publication-ink)}}
@media(max-width:420px){.component-tabs{gap:0 16px}}

/* Concept comparisons use direct labels, not unrelated illustrative icons. */
.confound-sketch.confound-comparison{display:grid;grid-template-columns:84px fit-content(40%) 24px minmax(0,1fr);gap:0 16px;padding:8px 0 0}
.comparison-lane{display:grid;grid-column:1/-1;grid-template-columns:subgrid;align-items:center;gap:16px;min-height:64px;padding:12px 0;font:var(--publication-label-type);color:var(--publication-ink)}
.comparison-lane+.comparison-lane{border-top:1px solid var(--publication-rule)}
.comparison-lane:last-child{min-height:48px;padding-bottom:0}
.comparison-label{color:var(--publication-note)}
.comparison-lane svg{display:block;justify-self:center;width:24px;height:16px;fill:none;stroke:var(--publication-note);stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:480px){.confound-sketch.confound-comparison{grid-template-columns:fit-content(40%) 24px minmax(0,1fr);column-gap:12px}.comparison-lane{gap:8px 12px}.comparison-label{grid-column:1/-1}}

/* The opening shares one left edge at the article's reading measure. */
.hero .hero-bottom{width:var(--grid-reading);gap:24px}
.hero .hero-bottom .hero-brand,.hero-introduction{width:100%;text-align:left}
.hero .hero-introduction .copy{width:100%;margin-inline:auto}
.hero .hero-introduction .copy p{max-width:none;text-align:left;text-wrap:balance;color:rgb(204 204 204 / 85%);letter-spacing:0;text-transform:none;margin:0}
.hero .hero-introduction .copy p+p{margin-top:16px}
.hero .hero-introduction .repo-authors{margin-top:24px;color:#aaa}
.hero .hero-introduction .repo-author-list{justify-content:flex-start;row-gap:4px}
.hero .hero-introduction .repo-note,.hero .hero-introduction summary{color:#aaa;text-align:left}
.hero .hero-introduction .repo-note{margin-top:8px}
.hero .hero-introduction details{margin-top:12px}
@media(max-height:650px){.hero .hero-bottom{gap:16px}.hero .hero-introduction .repo-authors{margin-top:16px}}

.hero .hero-introduction details{position:relative;pointer-events:auto}
.hero .hero-introduction details > .repo-note{position:absolute;top:100%;left:0;width:100%;max-height:20svh;overflow-y:auto;overscroll-behavior:contain;margin:0;padding:8px 4px 0;box-sizing:border-box}
.hero .hero-introduction summary{opacity:1;color:#999!important;width:fit-content;margin-inline:0;justify-content:flex-start}
.hero .hero-introduction [inert]{pointer-events:none}

/* The type system assigns the same reading role to authors and affiliation. */

.hero{
 --hero-reading-width:38rem;--hero-intro-width:37.5rem;
 --hero-inline-inset:max(var(--space-opening-gutter),calc(env(safe-area-inset-left) + var(--space-8)),calc(env(safe-area-inset-right) + var(--space-8)));
 --hero-content-width:min(var(--grid-reading),var(--hero-reading-width),calc(100vw - 2 * var(--hero-inline-inset)));
 overflow-anchor:none;
}

/* The display role scales with the shared reading column, not the viewport. */
.hero .hero-bottom{container-type:inline-size}

/* Title and introduction share the center, each in its own reading phase. */
.hero-enhanced .hero-stage{height:100dvh}
/* Center the occupied title/credit measure, not the wider article column. */
.hero-enhanced .hero .hero-bottom{width:var(--hero-content-width);height:auto;top:50%;left:50%;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-8);transform:translate(-50%,-50%)}
.hero .hero-bottom .hero-brand{position:absolute;top:50%;left:0;width:100%;margin:0;transform:translateY(-50%)}
.hero-enhanced .hero .hero-introduction{position:relative;inset:auto;width:100%}
.hero .hero-introduction .repo-authors{margin-top:var(--space-1)}
.hero-acronym{position:absolute;inset:0;display:flex;justify-content:center;align-items:center}
.hero-full-name{display:block}
@media(max-width:600px){.hero-enhanced .hero .hero-bottom{gap:var(--space-6)}}
@media(prefers-reduced-motion:reduce){
 .hero-acronym{display:none}
 .hero-enhanced .hero-stage{height:auto}
 .hero-enhanced .hero .hero-bottom{position:relative;left:auto;top:auto;height:auto;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:var(--space-8) 0;box-sizing:border-box}
 .hero .hero-introduction{position:relative;inset:auto;transform:none}
}
.hero .hero-bottom .hero-brand{max-width:none}
.hero .hero-introduction > :is(.copy,.repository-content){width:100%;max-width:none;margin-inline:auto}
.hero .hero-introduction{display:grid;grid-template-columns:[content-start] minmax(0,1fr) [content-end]}
.hero .hero-introduction > :is(.copy,.repository-content){grid-column:content}
.hero .hero-introduction > .copy{width:min(100%,var(--hero-intro-width));max-width:none;margin-inline:0;justify-self:center}
body.publication-page .hero .hero-introduction .copy p{width:100%;max-width:100%;margin-inline:0;text-wrap:balance}
.hero .hero-introduction .repo-authors{width:100%;max-width:none;margin-inline:auto}
body.publication-page.hero-enhanced .hero .hero-bottom .hero-brand{position:relative;inset:auto;width:100%;max-width:100%;transform:none}
@media(prefers-reduced-motion:no-preference){
 .hero-enhanced .hero .hero-bottom{gap:0}
 .hero-enhanced .hero .hero-bottom > :is(.hero-brand,.hero-introduction){grid-area:1 / 1;align-self:center}
 .hero-enhanced .hero .hero-introduction > :is(.copy,.repository-content){grid-row:1;align-self:center}
 .hero-enhanced .hero .hero-introduction .repo-authors{margin-top:0}
}
@media(prefers-reduced-motion:reduce){
 .hero .hero-introduction{row-gap:var(--space-8)}
}
body.publication-page .hero .hero-introduction .repo-note{max-width:none;width:100%;margin-inline:auto}

/* Center the initial acronym; measured letter offsets resolve to the reading grid. */
.hero .hero-acronym{visibility:visible;gap:0;pointer-events:none}
.hero .hero-full-name{opacity:1;transform:none}
.hero-enhanced .hero .hero-introduction{will-change:opacity}
.hero-playback[hidden]{display:none!important}

.hero .hero-introduction summary{gap:8px}
.hero .hero-introduction summary:focus-visible{color:#ccc!important;outline-color:currentColor}
@media(hover:hover) and (pointer:fine){
 .hero .hero-introduction summary:hover{color:#ccc!important}
}

/* Names wrap intact, with no extra gap between rows. */
#introduction.hero .hero-introduction .repo-author-row{
 position:relative;left:min(50%,calc(var(--hero-reading-width) / 2));transform:translateX(-50%);
 width:100%;max-width:var(--hero-reading-width);
 display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:baseline;gap:0 var(--space-2);
}
#introduction.hero .hero-introduction .repo-author-list{display:contents}
.hero .hero-introduction .repo-author-list li{flex:none;white-space:nowrap}
body.publication-page .hero .hero-introduction .repo-author-row>.repo-note{
 flex:none;width:auto;margin:0;white-space:nowrap;
}
/* Match the wordmark's cap height and compensate for its SVG baseline inset. */
.hero .hero-introduction .repo-logo{
 display:inline-block;width:auto;height:.82em;vertical-align:-.05em;
 color:var(--imprint-copy-ink,var(--opening-copy-ink,#fff));opacity:1;
}
body.publication-page .hero .hero-introduction .repo-author-row>.repo-author-footnote{flex:0 0 100%;opacity:.65!important;white-space:normal}
.hero .hero-introduction .repo-author-footnote>span{display:inline-block;white-space:nowrap;margin-right:1.2em}
.hero .hero-introduction .repo-author-footnote>span:last-child{margin-right:0}
.hero .hero-introduction .repo-author-row:focus-visible{outline:1px solid currentColor;outline-offset:4px}

/* Related explanations share a closer rhythm than the primary evidence. */
.chapter.content-flow>:is(.source-band,.manuscript-interaction)+:is(.source-band,.manuscript-interaction){margin-top:var(--space-related-blocks)}
.chapter.content-flow>.chapter-heading+:is(.source-band,.manuscript-interaction){margin-top:var(--space-heading-to-media)}

/* Article panel arrows now live in the header, so frames need no outer rails. */
.chapter .source-chart iframe.atlas-embed{width:100%;max-width:100%;margin-inline:0}

/* Compact attribution rows: each contribution starts on its own line. */
#contributions .copy.prose-flow{--space-paragraph:var(--space-1)}
#contributions .copy.prose-flow>p{color:var(--publication-note)}
#contributions .contribution-author{color:var(--publication-author-ink)}

/* Author markers sit on the baseline grid: superscripts are raised, not aligned, so they cannot stretch their line (line-height is locked). */
.hero .hero-introduction :is(.repo-author-list,.repo-author-footnote) sup{vertical-align:baseline;position:relative;top:-.45em}

/* Phones crop the landscape hand photograph to a tall frame. Aim the crop at the
   hand and keypad, and keep the pending note below the subject. */
@media(max-width:600px){
 .hero .hero-robot-video{object-position:55% 50%}
 .hero-media-note{place-items:end center;padding-bottom:24px}
}

/* A quiet status holds the figure's space. The real evidence supplies the marks. */
.figure-load-host{position:relative}
.figure-load-message{position:absolute;z-index:1;box-sizing:border-box;display:grid;place-content:center;justify-items:center;gap:var(--space-2);padding:var(--space-6);background:var(--publication-paper);color:var(--publication-note);font:var(--publication-label-type);text-align:center}
.figure-load-message[hidden],.figure-load-message button[hidden],.atlas-embed[hidden]{display:none!important}
.figure-load-message p{margin:0;font:inherit;color:inherit}
.figure-load-message[data-feedback=delayed] p{opacity:0}
.figure-load-message button{min-height:2.75rem;padding:var(--space-2) var(--space-4);border:1px solid var(--publication-rule);background:transparent;color:var(--publication-ink);font:inherit;cursor:pointer}
.figure-load-message button:focus-visible{outline:2px solid var(--publication-ink);outline-offset:3px}
.figure-load-message button:active{background:var(--publication-surface)}
@media(hover:hover) and (pointer:fine){.figure-load-message button:hover{background:var(--publication-surface)}}
.figure-load-message[data-state=error]{min-height:8rem}
.figure-load-message[data-state=ready]{pointer-events:none}

/* One frosted control overlays the footage; the evidence keeps its full frame. */
.publication-player{position:relative;min-width:0;color:var(--publication-ink);background:var(--publication-paper);font:var(--publication-label-type);box-shadow:none}
.publication-player>video{display:block;width:100%}
.publication-player .player-controls{display:flex;gap:var(--space-2,8px);position:absolute;bottom:var(--space-media-control-inset,16px);left:var(--space-media-control-inset,16px);z-index:2;margin:0;padding:0;background:none;box-shadow:none}
/* Compact visible surfaces share the embedded clips' 44 px hit area. */
.publication-player .player-toggle{position:relative}
:is(.publication-player .player-toggle,.hero-playback){--player-surface:var(--publication-paper);--player-surface-hover:var(--publication-surface);--player-surface-active:var(--publication-rule);display:grid;place-items:center;width:var(--publication-media-control-size);height:var(--publication-media-control-size);min-height:var(--publication-media-control-size);padding:0;border:0;border-radius:0;color:var(--publication-ink);background:var(--player-surface);box-shadow:none;text-shadow:none;cursor:pointer;transition:background-color var(--motion-feedback,120ms) var(--ease-out)}
:is(.publication-player .player-toggle,.hero-playback)::after{content:"";position:absolute;inset:calc((var(--publication-media-control-size) - var(--publication-control-size-touch))/2)}
/* Only the surface is translucent: the icon keeps the publication's solid ink.
   Opaque surfaces above remain the fallback when backdrop blur is unavailable. */
@supports (backdrop-filter:blur(12px)) or (-webkit-backdrop-filter:blur(12px)){
 :is(.publication-player .player-toggle,.hero-playback){--player-surface:color-mix(in srgb,var(--publication-paper) 64%,transparent);--player-surface-hover:color-mix(in srgb,var(--publication-paper) 76%,transparent);--player-surface-active:color-mix(in srgb,var(--publication-paper) 86%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
}
:is(.publication-player .player-toggle,.hero-playback) svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
:is(.publication-player .player-toggle,.hero-playback):focus-visible{outline:2px solid var(--publication-ink);outline-offset:2px;box-shadow:0 0 0 2px var(--publication-paper)}
@media(hover:hover) and (pointer:fine){:is(.publication-player .player-toggle,.hero-playback):hover{background:var(--player-surface-hover)}}
:is(.publication-player .player-toggle,.hero-playback):active{background:var(--player-surface-active);transition:none}
@media(prefers-reduced-transparency:reduce){
 :is(.publication-player .player-toggle,.hero-playback){--player-surface:var(--publication-paper);--player-surface-hover:var(--publication-surface);--player-surface-active:var(--publication-rule);-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media(forced-colors:active){
 :is(.publication-player .player-toggle,.hero-playback){--player-surface:ButtonFace;--player-surface-hover:ButtonFace;--player-surface-active:ButtonFace;color:ButtonText;-webkit-backdrop-filter:none;backdrop-filter:none}
}
.publication-player .player-status{margin:8px 0 0;font:inherit;color:var(--publication-note)}
.publication-player .player-status[hidden]{display:none}
.publication-player .player-loading{position:absolute;left:50%;top:50%;z-index:2;transform:translate(-50%,-50%);display:flex;align-items:center;height:var(--publication-media-control-size);box-sizing:border-box;margin:0;padding:0 8px;background:var(--publication-paper);color:var(--publication-note);font:var(--publication-label-type);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--motion-feedback) var(--ease-out)}
.publication-player .player-loading[data-visible]{opacity:1}
.publication-player .player-loading[data-immediate]{transition:none}
@media(prefers-reduced-motion:reduce){:is(.publication-player .player-toggle,.hero-playback){transition:none}}
@media(prefers-reduced-motion:reduce){.publication-player .player-loading{transition:none}}

/* Keep a real preview visible until playback produces its first frame. */
.publication-player>.player-preview{position:absolute;inset:0 auto auto 0;z-index:1;display:block;width:100%;object-fit:contain;pointer-events:none}
.publication-player>.player-preview[hidden]{display:none}

.disclosure-with-preview{container-type:inline-size}
.manuscript-interaction .disclosure-with-preview>summary{align-items:center;gap:var(--space-3)}
.disclosure-summary-copy{display:flex;flex:1;align-items:center;justify-content:space-between;gap:var(--space-3);min-width:0}
.disclosure-summary-copy>span:first-child{min-width:0}
/* Static previews sit with the expand control. Keep their slot when open so
   the label, control and row height stay fixed while the full content appears. */
.disclosure-preview{display:flex;align-items:center;gap:var(--space-1);flex:none;block-size:2rem;pointer-events:none}
.disclosure-preview-item{display:block;flex:none;inline-size:2rem;block-size:2rem;box-sizing:border-box;border:1px solid var(--publication-paper);background:var(--publication-paper);object-fit:contain}
.disclosure-with-preview[open]>summary .disclosure-preview{visibility:hidden}
@media(hover:hover) and (pointer:fine){
 .disclosure-with-preview>summary:hover{color:var(--publication-ink)}
}
@container(max-width:319px){
 .disclosure-summary-copy{gap:var(--space-2)}
 .disclosure-preview-item:nth-child(n+3){display:none}
}
.repository-content .repo-observations>summary{align-items:center}
.disclosure-label-with-icon{display:inline-flex;align-items:center;gap:var(--space-2);min-width:0}
.disclosure-table-icon{display:block;flex:none;inline-size:1rem;block-size:1rem;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}

/* Keep tall images and evidence at their final size. A shallow opening fade
   softens the state change without sweeping the rest of the article downward. */
details[data-disclosure-effect=fade]>[data-disclosure-fade]{opacity:1}
details[data-disclosure-effect=fade][data-disclosure-motion]>[data-disclosure-fade]{transition:opacity var(--motion-swap,180ms) var(--ease-out)}
details[data-disclosure-effect=fade][data-disclosure-motion=closing]>[data-disclosure-fade]{opacity:0;transition-duration:var(--motion-feedback,120ms)}
details[data-disclosure-effect=fade][data-disclosure-start]>[data-disclosure-fade]{opacity:.8;transition:none}
details[data-disclosure-measuring]>[data-disclosure-fade]{transition:none!important}
details[data-disclosure-motion]:not([data-disclosure-effect=fade]){box-sizing:border-box;overflow:clip;transition:height var(--motion-arrival,200ms) var(--ease-out)}
details[data-disclosure-measuring]{transition:none!important}
.disclosure-mark{position:relative;display:inline-block;flex:none;width:12px;height:12px;align-self:center;color:var(--publication-note)}
.disclosure-mark::before,.disclosure-mark::after{content:'';position:absolute;background:currentColor}
.disclosure-mark::before{width:10px;height:1px;left:1px;top:5.5px}
.disclosure-mark::after{width:1px;height:10px;left:5.5px;top:1px;opacity:1}
details[open]>summary .disclosure-mark::after{opacity:0}
details[data-disclosure-motion=closing]>summary .disclosure-mark::after{opacity:1}
summary[data-pointer-motion] .disclosure-mark::after{transition:opacity var(--motion-feedback) var(--ease-out)}

/* Keep the hit target centered on the first heading line, including wrapped titles. */
.chapter-heading.has-section-link{position:relative}
.chapter-heading.has-section-link h2{padding-inline-end:calc(var(--publication-control-size) + var(--space-2))}
.chapter-heading .section-link{position:absolute;inset:calc((var(--publication-section-leading) - var(--publication-control-size))/2) 0 auto auto;display:grid;place-items:center;width:var(--publication-control-size);height:var(--publication-control-size);min-height:var(--publication-control-size);padding:0;border:0;background:transparent;color:var(--publication-note);cursor:pointer;opacity:1;transition:opacity var(--motion-feedback) var(--ease-out)}
.section-link svg{grid-area:1/1;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:opacity var(--motion-feedback) var(--ease-out)}
@media(max-width:640px){.section-link svg{width:11.2px;height:11.2px}}
.section-link .section-link-check{opacity:0}
.section-link[data-state=copied] .section-link-glyph{opacity:0}
.section-link[data-state=copied] .section-link-check{opacity:1}
.chapter-heading .section-link:focus-visible{outline:1px solid var(--publication-ink);outline-offset:2px;opacity:1;transition:none}
.chapter-heading .section-link:active{background:var(--publication-surface)}
.section-link[data-immediate],.section-link[data-immediate] svg{transition:none}
.section-link-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.section-link-status[data-error]{inset:100% 0 auto auto;width:max-content;max-width:100%;height:auto;padding:4px 8px;clip-path:none;white-space:normal;background:var(--publication-paper);color:var(--publication-note);font:var(--publication-label-type);z-index:2}
@media(hover:hover) and (pointer:fine){
 .chapter-heading .section-link{opacity:0}
 .chapter-heading:hover .section-link,.chapter-heading:focus-within .section-link,.chapter-heading .section-link:is([data-state=copied],[data-state=error]){opacity:1}
 .chapter-heading .section-link:hover{color:var(--publication-ink);background:var(--publication-surface)}
}
@media(prefers-reduced-motion:reduce){details[data-disclosure-motion],details>[data-disclosure-fade],summary[data-pointer-motion] .disclosure-mark::after,.section-link,.section-link svg{transition:none!important}}

/* The environment preview and full scene respond as one disclosure. */
.environment-examples>.disclosure-with-preview{overflow-anchor:none}
.environment-examples>.disclosure-with-preview>summary .disclosure-preview{visibility:visible;opacity:1}
.environment-examples>.disclosure-with-preview[open]>summary .disclosure-preview{opacity:0}
.environment-examples>.disclosure-with-preview[data-disclosure-motion=closing]>summary .disclosure-preview{opacity:1}
.environment-examples summary[data-pointer-motion] .disclosure-preview{transition:opacity var(--motion-feedback) var(--ease-out)}
.environment-examples summary:focus-visible{outline:1px solid var(--publication-ink);outline-offset:var(--space-1)}
.environment-examples summary:active .disclosure-mark{opacity:.6}
@media(hover:hover) and (pointer:fine){
 .environment-examples summary .disclosure-preview-item{opacity:.8;transition:opacity var(--motion-feedback) var(--ease-out)}
 .environment-examples summary:hover .disclosure-mark{color:var(--publication-ink)}
 .environment-examples summary:hover .disclosure-preview-item{opacity:1}
 .environment-examples summary:active .disclosure-preview-item{opacity:.8}
}
@media(prefers-reduced-motion:reduce){
 .environment-examples>details>[data-disclosure-content]{transition:none!important}
 .environment-examples summary .disclosure-preview-item{transform:none!important;transition:none}
 .environment-examples summary[data-pointer-motion] .disclosure-preview{transition:none}
}

/* Manuscript blocks use the publication's existing reading and figure tracks. */
.chapter>.manuscript-interaction{grid-column:reading;min-width:0;margin-top:var(--space-copy-to-media)}
/* Shared task-family control for the student-teacher chapter: sits above the curves figure and drives the scatter below it. */
.chapter>.shared-family-hint{grid-column:reading;margin:var(--space-copy-to-media) 0 var(--space-2,8px);font:var(--publication-label-type);color:var(--publication-note)}
.chapter>.shared-family-controls{grid-column:reading;min-width:0;margin:0}
.chapter>.shared-family-controls+.source-band{margin-top:var(--space-2,8px)}
/* Keep the family toggles right above the plot they drive. */
#student-teacher .source-band .graph-paper{padding-top:var(--space-2,8px)}
/* The curves and the scatter read as one evidence block: trim the facing paper margins. */
#student-teacher .source-band .graph-paper{padding-bottom:var(--space-4,16px)}
#student-teacher .repo-teacher .graph-paper{padding-top:var(--space-4,16px)}
#student-teacher>.manuscript-interaction[data-repository-block="repo-teacher"]{margin-top:var(--space-2,8px)}
/* Physical practice: the timeline sits right under its Practice/Testing tabs, the outcome key right under its axis. */
#physical-practice .graph-paper{padding-top:var(--space-2,8px);padding-bottom:var(--space-2,8px)}
/* Typing progression: the chart sits right under its title, the mark key right under its axis. */
.typing-chart>.graph-paper{padding-top:var(--space-2,8px);padding-bottom:var(--space-2,8px)}
.chapter>.manuscript-interaction+.source-band{margin-top:var(--space-copy-to-media)}
.manuscript-interaction{color:var(--publication-ink);font:400 var(--publication-body-size)/var(--publication-body-leading) var(--publication-font);text-align:left}
.manuscript-interaction button{font:inherit;color:inherit;background:none;border:0;border-radius:0;cursor:pointer}
/* Keep the runtime comparison visible; preparation lives in each disclosure. */
.agent-modes{container-type:inline-size}
.mode-comparison-header,.mode-comparison>summary{display:grid;grid-template-columns:minmax(0,8rem) 176px minmax(12px,1fr);align-items:center;gap:16px}
.mode-comparison-header{margin-bottom:8px;color:var(--publication-note)}
.mode-comparison-header>span{grid-column:2}
.mode-comparison{margin:0;padding:0;border:0;border-bottom:1px solid var(--publication-grid)}
.mode-comparison:last-child{border-bottom:0}
.mode-comparison>summary{min-height:56px;list-style:none;cursor:pointer;padding:12px 0;box-sizing:border-box}
.mode-comparison>summary::-webkit-details-marker{display:none}
.mode-comparison>summary>:last-child{justify-self:end}
.mode-name{color:var(--publication-ink)}
.mode-flow{display:grid;grid-template-columns:32px 16px 1fr;gap:var(--space-2,8px);align-items:center}
.mode-arrow{display:block;width:16px;height:16px;color:var(--publication-note);fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}
.mode-step{white-space:nowrap}
.mode-comparison[open] .confound-toggle::after{content:'−'}
.mode-explanation{padding:0 28px 20px 0}
.mode-explanation p{margin:0!important;font:var(--publication-reading-type);color:var(--publication-body)}
@container(max-width:420px){
 .mode-comparison-header,.mode-comparison>summary{grid-template-columns:minmax(0,8rem) 120px minmax(12px,1fr);gap:12px}
 .mode-explanation{padding-right:0}
}
.manuscript-interaction :is(button,summary):active{opacity:.7}
.manuscript-interaction :is(button,summary):focus-visible{outline:2px solid currentColor;outline-offset:5px}
.mode-comparison>summary:focus-visible{outline-offset:-2px}
@media(hover:hover) and (pointer:fine){.manuscript-interaction summary:hover{color:var(--publication-note)}}

.confound-list details{border:0;margin:0}
.confound-list summary{display:grid;grid-template-columns:28px 1fr 16px;align-items:baseline;gap:12px;cursor:pointer;padding:16px 0;list-style:none;min-height:44px}
.confound-list summary::-webkit-details-marker{display:none}
.confound-number{font-size:var(--publication-label-size);color:var(--publication-note)}
.confound-toggle::after{content:'+';color:var(--publication-note)}
.confound-list [open] .confound-toggle::after{content:'−'}
.confound-list details>p{margin:0 28px 20px 40px;font:400 var(--reading-size,18px)/var(--reading-leading,28px) var(--publication-reading-font,Georgia,serif);color:var(--publication-body)}
.article-content .manuscript-interaction{max-width:var(--grid-reading);margin:32px auto}
.routine-summary{margin-inline:0}
.routine-summary>figcaption{text-align:left;font:inherit;color:var(--publication-ink);margin:0 0 24px}
.routine-context{display:block;margin-top:8px;color:var(--publication-note)}
.routine-axis{color:var(--publication-note);margin-bottom:16px}
.routine-scale{display:flex;justify-content:space-between;margin-top:8px}
.routine-comparison{display:grid;gap:24px}
.routine-heading{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:8px}
.routine-value{flex:none;font-variant-numeric:tabular-nums;text-align:right}
.routine-track{height:12px;position:relative}
.routine-bar{display:block;height:100%;background:var(--publication-ink)}
.routine-note{font-size:var(--publication-label-size);line-height:var(--publication-label-leading);color:var(--publication-note);margin-top:24px}
.fault-comparison{margin-inline:0}
.fault-comparison>figcaption{text-align:left;font:inherit;color:var(--publication-ink);margin:0 0 16px}
.fault-legend{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0 0 16px;font:var(--publication-label-type);color:var(--publication-note)}
.fault-key{display:inline-flex;align-items:center;gap:8px}
.fault-comparison{--fault-code:#35649a;--fault-vla:#a15c32}
.fault-key::before{content:'';display:inline-block;width:20px;height:6px;background:var(--fault-code)}
.fault-key-vla::before{background:var(--fault-vla)}
.fault-rows{display:grid;gap:24px}
.fault-row{display:grid;grid-template-columns:minmax(9rem,11rem) minmax(0,1fr) auto;align-items:center;gap:16px;font:var(--publication-label-type)}
.fault-axis{color:var(--publication-ink)}
.fault-track{display:grid;grid-auto-rows:20px;align-items:center;gap:4px;min-width:0}
.fault-bar{display:block;height:12px;background:var(--fault-code)}
.fault-bar-vla{background:var(--fault-vla)}
.fault-bar-missing{width:0}
.fault-values{display:grid;gap:4px;min-width:2.5rem;text-align:right;font-variant-numeric:tabular-nums;color:var(--publication-ink)}
.fault-value{display:block;min-height:20px;font:var(--publication-label-type)}
.fault-value-cap{color:var(--fault-code)}
.fault-value-vla{color:var(--fault-vla)}
@media(max-width:560px){
 .fault-row{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
 .fault-axis{grid-column:1/-1}
}
@media(prefers-reduced-motion:reduce){.manuscript-interaction *{animation:none!important;transition:none!important}}
.article-content section>.manuscript-interaction{grid-column:reading;width:100%;min-width:0;max-width:none;margin:24px 0 32px}
/* Source-backed explanations: same flat surface and reading track as the article. */
:is(.component-examples,.environment-examples,.manuscript-video) summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;padding:12px 0;list-style:none;cursor:pointer}
:is(.component-examples,.environment-examples,.manuscript-video) summary::-webkit-details-marker{display:none}
.manuscript-interaction details[open]>summary>.confound-toggle::after{content:'−'}
.component-examples{container-type:inline-size}
.component-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.component-example{display:flex;flex-direction:column;align-items:flex-start;gap:16px;min-width:0}
.component-copy{min-width:0}
.component-example h3{font:var(--publication-label-type);margin:0 0 8px;color:var(--publication-ink)}
.component-example p{font:400 var(--reading-size,18px)/var(--reading-leading,28px) var(--publication-reading-font,Georgia,serif);margin:0;color:var(--publication-body)}
.component-sketch{display:block;flex:none;width:240px;max-width:100%;height:auto;margin-top:auto;fill:none;stroke:var(--publication-note);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.component-sketch *{vector-effect:non-scaling-stroke}
.component-sketch text{fill:var(--publication-note);stroke:none;text-anchor:middle;font:var(--publication-label-type)}
@container(max-width:543px){.component-grid{grid-template-columns:minmax(0,1fr);gap:32px}}
.model-limits{container-type:inline-size}
.model-limits>figcaption{margin:0 0 16px;text-align:left;color:var(--publication-note);font:400 var(--publication-caption-size)/var(--publication-caption-leading) var(--publication-font)}
.limit-row{display:grid;grid-template-columns:168px 16px minmax(0,1fr);gap:16px;align-items:baseline;padding:20px 0;border-top:1px solid var(--publication-rule)}
.limit-row:last-child{padding-bottom:0}
.model-limits .limit-row h3,.model-limits .limit-row p{margin:0;font:400 var(--publication-body-size)/var(--publication-body-leading) var(--publication-font);letter-spacing:0;text-transform:none}
.model-limits .limit-arrow{color:var(--publication-note);text-align:center;font:400 var(--publication-body-size)/var(--publication-body-leading) var(--publication-font)}
.model-limits .limit-result{min-width:0}
.model-limits .limit-result .limit-detail{margin-top:8px;color:var(--publication-note);font-size:var(--publication-caption-size);line-height:var(--publication-caption-leading)}
@container(max-width:440px){.limit-row{grid-template-columns:minmax(0,1fr);gap:8px;padding:20px 0}.limit-row .limit-arrow{display:none}.model-limits .limit-result .limit-detail{margin-top:4px}}
.manuscript-video details>p{font:400 var(--reading-size,18px)/var(--reading-leading,28px) var(--publication-reading-font,Georgia,serif);margin:8px 0 16px}
.environment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px;margin-top:16px}
.environment-grid figure{margin:0;min-width:0}
.environment-grid img{display:block;width:100%;height:auto;aspect-ratio:8/5;object-fit:contain}
.environment-grid figcaption{font:var(--publication-label-type);color:var(--publication-note);margin-top:var(--space-media-to-caption)}
.manuscript-video .publication-player{width:100%}
.manuscript-video video{display:block;width:100%;height:auto;aspect-ratio:16/9;max-height:none;object-fit:contain;background:var(--publication-surface)}
/* This source clip is portrait; keep the full picture and caption on one narrow measure. */
#sim-to-real .manuscript-video{width:min(100%,360px);justify-self:center;margin:0}
#sim-to-real .manuscript-video video{aspect-ratio:4/5;background:var(--publication-paper)}
#sim-to-real .hardware-evidence .paired-media{align-items:start}
#sim-to-real .hardware-photo{margin:0;min-width:0}
#sim-to-real .hardware-photo img{display:block;width:100%;height:auto;background:var(--publication-surface)}
#sim-to-real .hardware-photo figcaption{margin-top:var(--space-media-to-caption);font:var(--publication-label-type);color:var(--publication-note)}
.manuscript-video>figcaption{font-size:var(--publication-label-size);color:var(--publication-note);margin-top:var(--space-media-to-caption)}
.manuscript-video>details{font-size:var(--publication-label-size);color:var(--publication-note)}
@media(max-width:480px){.environment-grid{grid-template-columns:1fr}}
/* Closed disclosures must not contribute hidden layout or focusable content. */
.environment-examples>details:not([open])>.environment-grid{display:none}
.model-limits{margin-inline:0}
.manuscript-video{width:100%;margin-inline:0}

/* Quiet conceptual drawings sit on the same reading surface as the evidence. */
.confound-body{margin:0 0 24px 40px}
.confound-body>p{margin:var(--space-media-to-caption) 0 0;font:var(--publication-label-type);color:var(--publication-note);text-wrap:pretty}
.confound-sketch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;padding:8px 0}
.sketch-panel{min-width:0}
.sketch-panel svg{display:block;width:100%;max-width:240px;height:auto;stroke:var(--publication-ink);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.sketch-panel svg *{vector-effect:non-scaling-stroke}
.sketch-panel .sketch-ground{stroke:var(--publication-note)}
.sketch-panel>span{display:block;margin-top:8px;font:400 var(--publication-label-size)/var(--publication-label-leading) var(--publication-font);color:var(--publication-note)}
.confound-list>details:not([open])>.confound-body{display:none}
@media(max-width:480px){.confound-body{margin-left:0}.confound-sketch{gap:16px}}

@media(max-width:400px){.confound-sketch--scene{grid-template-columns:minmax(0,1fr);gap:20px}}

/* Privileged-information sketch: separate input paths, no decorative symbols. */
.confound-sketch--access{display:block;padding:8px 0;max-width:440px}
.access-lane{display:grid;grid-template-columns:minmax(0,1fr) 48px 88px;gap:20px;align-items:center;min-height:64px;padding:12px 0;box-sizing:border-box}
.access-lane+.access-lane{border-top:1px dashed var(--publication-rule)}
.access-input{color:var(--publication-note);font:var(--publication-label-type)}
.access-recipient{color:var(--publication-ink);font:var(--publication-label-type)}
.access-lane svg{display:block;width:48px;height:16px;fill:none;stroke:var(--publication-note);stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:480px){.access-lane{grid-template-columns:minmax(0,1fr) 32px 72px;gap:12px}.access-lane svg{width:32px}}

/* One source scene at a time; fixed stage and controls prevent layout jumps. */
.environment-carousel{--environment-media-height:clamp(220px,45vw,360px);position:relative;margin-top:16px;min-width:0}
.environment-carousel .environment-grid{display:grid;grid-auto-flow:column;grid-auto-columns:100%;grid-template-columns:none;gap:0;align-items:stretch;margin:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:auto;overscroll-behavior-x:contain;scrollbar-width:none}
.environment-carousel .environment-grid::-webkit-scrollbar{display:none}
.environment-carousel .environment-grid>figure{scroll-snap-align:start;min-width:0}
.environment-carousel .environment-grid img{width:100%;height:var(--environment-media-height);aspect-ratio:auto;object-fit:contain}
.environment-navigation{display:grid;grid-template-columns:minmax(0,1fr) 44px 40px 44px;align-items:center;gap:4px;min-height:44px;margin:0 0 var(--space-plot-to-controls);font:var(--publication-label-type);color:var(--publication-note)}
.environment-context{min-width:0;color:var(--publication-ink)}
.environment-navigation [role=status]{display:block;text-align:center;font-variant-numeric:tabular-nums}
.environment-navigation button{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--publication-ink);font:var(--publication-reading-type);cursor:pointer}
.environment-navigation svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}
.environment-navigation button[aria-disabled=true]{opacity:.3;cursor:default}
.environment-carousel:focus-visible,.environment-navigation button:focus-visible{outline:2px solid var(--publication-ink);outline-offset:2px}
@media(hover:hover) and (pointer:fine){.environment-navigation button:not([aria-disabled=true]):hover{background:var(--publication-surface)}}
.environment-navigation button:not([aria-disabled=true]):active{background:var(--publication-rule)}
.environment-examples>details:not([open])>.environment-carousel{display:none}

/* Revised article compositions use the established reading track and type roles. */
.content-placeholder{--publication-placeholder-background:color-mix(in srgb,var(--publication-paper) 90%,var(--publication-ink));min-inline-size:0;margin:0}
.content-placeholder-frame{box-sizing:border-box;display:grid;place-content:center;gap:0;inline-size:100%;min-inline-size:0;padding:var(--space-6);aspect-ratio:16/9;background:var(--publication-surface);font:var(--publication-label-type);color:var(--publication-note);text-align:center;overflow-wrap:anywhere}
/* Empty slots use a solid paper-relative fill so their reserved area stays visible. */
.content-placeholder-frame:not(.content-placeholder-photo){background:var(--publication-placeholder-background,var(--publication-surface))}
.content-placeholder-title{font:inherit;color:var(--publication-ink)}
.content-placeholder-frame[data-placeholder=links]{aspect-ratio:auto;min-block-size:6rem;text-align:left;place-content:center start}
.content-placeholder figcaption{margin-block:var(--space-media-to-caption) 0;font:var(--publication-label-type);color:var(--publication-note)}
.content-placeholder-frame.content-placeholder-photo{grid-template-rows:minmax(0,1fr) auto;place-content:stretch;gap:0;padding:0}
.content-placeholder-frame.content-placeholder-photo img{display:block;inline-size:100%;block-size:100%;min-block-size:0;max-block-size:none;aspect-ratio:auto;object-fit:contain;object-position:center}
.content-placeholder-photo .content-placeholder-status{padding:var(--space-2) var(--space-4)}
.content-placeholder-photo[data-placeholder=video]{grid-template-rows:minmax(0,1fr);isolation:isolate}
.content-placeholder-photo[data-placeholder=video] img{grid-area:1/1;opacity:.28}
.content-placeholder-photo[data-placeholder=video] .content-placeholder-status{grid-area:1/1;z-index:1;align-self:center;justify-self:center;color:var(--publication-ink);max-inline-size:100%;box-sizing:border-box}
.opening-media{display:grid;gap:var(--space-related-blocks)}
.opening-media .manuscript-video video{aspect-ratio:1078/720;background:#0b0e14}
/* The trailer sits between the opening and the first section, on the dark frame of its own footage. */
.opening-video-band{padding-bottom:0}
.opening-video-band>.manuscript-interaction{margin-top:0}
.opening-video .manuscript-video video{background:#0b0e14}
.opening-links{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-media-to-caption)}
.opening-link{display:inline-flex;align-items:center;box-sizing:border-box;min-block-size:var(--publication-control-size);padding:var(--space-control-padding-block) var(--space-3);border:1px solid var(--publication-rule);font:var(--publication-label-type);letter-spacing:var(--publication-label-spacing);color:var(--publication-ink);background:transparent;text-decoration:none;white-space:nowrap}
.opening-link[aria-disabled=true]{color:var(--publication-note);border-style:dashed;cursor:default}
.opening-link:focus-visible{outline:2px solid var(--publication-control-focus);outline-offset:3px}
@media(hover:hover) and (pointer:fine){.opening-link:not([aria-disabled=true]):hover{background:var(--publication-control-hover)}}
/* Pending-media captions belong inside their reserved surface. */
.opening-media .content-placeholder:has(>figcaption){box-sizing:border-box;display:grid;align-content:center;gap:var(--space-1);aspect-ratio:16/9;padding:var(--space-6);background:var(--publication-placeholder-background,var(--publication-surface));text-align:center}
.opening-media .content-placeholder:has(>figcaption)>.content-placeholder-frame{aspect-ratio:auto;padding:0}
.opening-media .content-placeholder>figcaption{inline-size:min(100%,52ch);justify-self:center;margin:0;text-wrap:pretty;overflow-wrap:anywhere}
.paired-media{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-related-blocks)}
.physical-task-media{margin:0 0 var(--space-related-blocks)}
.physical-task-media figcaption{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);margin-top:var(--space-media-to-caption);font:var(--publication-label-type)}
.physical-task-media figcaption span{display:block}
.physical-task-media .repo-note{margin-top:8px;font:var(--publication-label-type)}
.physical-task-tabs{min-inline-size:0;--publication-control-hover:transparent}
.physical-task-tabs button{flex:0 0 auto;white-space:nowrap}
.physical-agent-choices{min-inline-size:0;--publication-control-selected:color-mix(in srgb,var(--publication-paper) 90%,var(--publication-ink));--publication-control-on-selected:var(--publication-ink)}
.physical-agent-choices button{flex:0 0 auto;white-space:nowrap}
.physical-task-media .publication-player{width:100%}
.physical-task-media video{display:block;width:100%;height:auto;aspect-ratio:2/1;background:var(--publication-surface)}
.physical-clip-frame{position:relative;--physical-clip-surface:var(--publication-paper);--physical-clip-hover-surface:var(--publication-paper);--physical-clip-backdrop:none}
@supports (backdrop-filter:blur(12px)) or (-webkit-backdrop-filter:blur(12px)){
 .physical-clip-frame{--physical-clip-surface:color-mix(in srgb,var(--publication-paper) 35%,transparent);--physical-clip-hover-surface:color-mix(in srgb,var(--publication-paper) 50%,transparent);--physical-clip-backdrop:blur(12px)}
}
.physical-clip-frame :is(.physical-clip-badge,.player-toggle){-webkit-backdrop-filter:var(--physical-clip-backdrop);backdrop-filter:var(--physical-clip-backdrop)}
.physical-clip-frame .player-toggle{--player-surface:var(--physical-clip-surface)}
.physical-clip-footer{position:absolute;inset:auto var(--space-media-control-inset,16px) var(--space-media-control-inset,16px);z-index:2;display:grid;grid-template-columns:minmax(var(--publication-media-control-size),1fr) minmax(0,auto) minmax(max-content,1fr);align-items:end;gap:var(--space-2);pointer-events:none}
.physical-clip-kind{grid-column:3;justify-self:end;display:grid;place-items:center;width:var(--publication-media-control-size);height:var(--publication-media-control-size);box-sizing:border-box;padding:var(--space-1);background:var(--physical-clip-outcome,var(--publication-outcome-success));color:var(--publication-paper);color:contrast-color(var(--physical-clip-outcome,var(--publication-outcome-success)))}
.physical-clip-kind svg{display:block;width:16px;height:16px}
.physical-clip-kind.outcome-success{--physical-clip-outcome:var(--publication-outcome-success);color:var(--publication-paper);color:contrast-color(var(--physical-clip-outcome))}
.physical-clip-kind.outcome-failure{--physical-clip-outcome:var(--publication-outcome-failure);color:var(--publication-paper);color:contrast-color(var(--physical-clip-outcome))}
.physical-clip-kind.outcome-unverified{--physical-clip-outcome:var(--publication-note);color:var(--publication-paper);color:contrast-color(var(--physical-clip-outcome))}
.physical-clip-header{position:absolute;inset:var(--space-media-control-inset,16px) var(--space-media-control-inset,16px) auto;z-index:2;display:flex;align-items:flex-start;justify-content:flex-end;gap:var(--space-2);pointer-events:none}
.physical-clip-badge{display:block;box-sizing:border-box;min-height:var(--publication-media-control-size);padding:var(--space-1) var(--space-2);font:var(--publication-label-type);background:var(--publication-paper);background:var(--physical-clip-surface);color:var(--publication-ink);text-shadow:none}
.physical-description{grid-column:2;justify-self:center;min-inline-size:0;text-align:center}
.physical-clip-speed{flex:0 0 auto;min-width:32px;text-align:center}
@media(max-width:640px){
 .physical-clip-footer{inset:var(--space-media-control-inset,16px);grid-template-columns:minmax(0,1fr) max(var(--publication-media-control-size),32px);grid-template-rows:minmax(0,1fr) auto}
 .physical-description{grid-area:1/1;align-self:start;justify-self:start;text-align:left}
 .physical-clip-kind{grid-area:2/2}
}
@media(hover:hover) and (pointer:fine){
 .physical-clip-badge{pointer-events:auto;transition:background-color var(--motion-feedback) var(--ease-out)}
 .physical-clip-frame :is(.physical-clip-badge,.player-toggle):hover{background:var(--physical-clip-hover-surface)}
}
@media(prefers-reduced-motion:reduce){.physical-clip-badge{transition:none}}
@media(prefers-reduced-transparency:reduce){.physical-clip-frame{--physical-clip-surface:var(--publication-paper);--physical-clip-hover-surface:var(--publication-paper);--physical-clip-backdrop:none}}
@media(forced-colors:active){.physical-clip-frame{--physical-clip-surface:Canvas;--physical-clip-hover-surface:Canvas;--physical-clip-backdrop:none}.physical-clip-badge{background:Canvas;color:CanvasText}}
.physical-learning .atlas-embed{display:block;width:100%;height:304px;min-height:0;border:0}
.physical-learning [hidden]{display:none!important}
.physical-outcome-key{display:flex;flex-wrap:wrap;gap:8px 16px}
.outcome-success{color:var(--publication-outcome-success)}.outcome-failure{color:var(--publication-outcome-failure)}
.physical-task-results{width:100%;border-collapse:collapse;font:var(--publication-label-type);font-variant-numeric:tabular-nums}
.physical-task-results caption{text-align:left;color:var(--publication-note);padding-block:16px}
.physical-task-results :is(th,td){padding:12px 0;border-bottom:1px solid var(--publication-rule);font:inherit;text-align:left}
.physical-task-results tr>:last-child{text-align:right}
.physical-test-scope{margin:0 0 var(--space-4,16px)}
.physical-test-scope strong{font-weight:inherit;color:var(--publication-ink)}
.physical-testing-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-related-blocks)}
@media(max-width:640px){.physical-testing-values{grid-template-columns:minmax(0,1fr)}}
.physical-protocol-results{min-inline-size:0}
.physical-protocol-results h3{margin:0;font:var(--publication-label-type);color:var(--publication-ink)}
.physical-protocol-results .physical-test-context{margin:var(--space-2) 0 0}
.physical-protocol-results .repo-note:last-child{margin-bottom:0}
.physical-protocol-note{margin:0 0 var(--space-related-blocks)}
.physical-all-values{display:grid;gap:var(--space-related-blocks)}
.physical-full-results{margin-top:var(--space-related-blocks)}
.physical-full-results summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:44px;padding:12px 0;list-style:none;cursor:pointer;font:var(--publication-label-type)}
.physical-full-results summary::-webkit-details-marker{display:none}
.physical-full-results .repo-table-wrap{overflow-x:auto}
.repo-published-figure{margin:var(--space-related-blocks) 0}
.repo-published-figure img{display:block;width:100%;height:auto}
.repo-published-figure figcaption{margin-top:var(--space-media-to-caption)}

@media(max-width:640px){.paired-media{grid-template-columns:1fr}}

/* Reading-sized tier definitions share one aligned text column. */
.tier-guide .tier-definitions{width:100%;min-width:32rem;border-collapse:collapse;margin:0;color:var(--publication-ink)}
.tier-guide .tier-definitions th,.tier-guide .tier-definitions td{padding:12px 0;text-align:left;vertical-align:baseline;border:0;border-top:1px solid var(--publication-rule);white-space:normal}
.tier-guide .tier-definitions thead th{font:var(--publication-label-type);color:var(--publication-note);border:0;min-width:0;padding-top:0;padding-bottom:8px;vertical-align:bottom}
.tier-guide .tier-definitions thead tr+tr th{padding-top:0}
.tier-guide .tier-definitions .tier-col-group{text-align:right}
.tier-guide .tier-definitions tbody th{font-weight:400;color:var(--publication-note);width:32px;padding-right:16px}
.tier-guide .tier-definitions .tier-definition{padding-right:24px}
.tier-guide .tier-definitions .tier-col-mean,.tier-guide .tier-definitions .tier-mean{text-align:right;white-space:nowrap;width:1%;padding-left:24px;font-variant-numeric:tabular-nums}
.tier-guide .tier-definitions .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.tier-means-note{margin:var(--space-media-to-caption) 0 0}
@media(max-width:640px){
 .tier-guide .tier-definitions tbody th{width:24px;padding-right:12px}
 .tier-guide .tier-definitions .tier-definition{padding-right:12px}
 .tier-guide .tier-definitions .tier-col-mean,.tier-guide .tier-definitions .tier-mean{padding-left:12px}
}

/* Native, inspectable curves share the publication's type and evidence colors. */
.typing-chart{margin:var(--space-related-blocks) 0;--typing-accuracy:#284f78;--typing-speed:#783f64}
.typing-chart>figcaption{margin:0 0 8px;font:var(--publication-label-type);color:var(--publication-ink)}
.typing-chart>figcaption>.repo-note{display:block;margin-top:4px}
.typing-frame{position:relative}
.typing-tooltip{position:absolute;z-index:1;box-sizing:border-box;inline-size:216px;padding:8px 12px;background:var(--publication-surface,#f5f5f5);font:var(--publication-label-type);color:var(--publication-ink);pointer-events:none;font-variant-numeric:tabular-nums}
.typing-tooltip[hidden]{display:none}
.typing-tooltip-row{display:flex;justify-content:space-between;gap:12px}
.typing-tooltip-phase{color:var(--publication-note);margin-top:4px}
.typing-tooltip-time{margin-bottom:4px}
.typing-plot .typing-accuracy-label{fill:var(--typing-accuracy)}
.typing-plot .typing-speed-label{fill:var(--typing-speed)}
.typing-plot svg{user-select:none;display:block;inline-size:100%;overflow:visible;touch-action:pan-y pinch-zoom;cursor:crosshair;font:var(--publication-label-type)}
.typing-plot text{fill:var(--publication-ink)}
.typing-plot .typing-tick{fill:var(--publication-body)}
.typing-stages{pointer-events:none}
.typing-stage-band{fill:color-mix(in srgb,var(--publication-ink) var(--typing-stage-tint),transparent)}
.typing-stage-header{fill:color-mix(in srgb,var(--publication-ink) calc(var(--typing-stage-tint) + 1%),transparent)}
.typing-stage-boundary{fill:none;stroke:var(--publication-note);stroke-opacity:.4;stroke-width:.75;stroke-dasharray:3 4}
.typing-axis{fill:none;stroke:var(--publication-rule);stroke-width:.75}
.typing-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.typing-line.typing-accuracy{stroke:var(--typing-accuracy)}
.typing-line.typing-speed{stroke:var(--typing-speed);stroke-dasharray:5 3}
.typing-gate{fill:none;stroke:var(--publication-note);stroke-width:.75;stroke-dasharray:3 4}
.typing-crosshair{fill:none;stroke:var(--publication-note);stroke-width:.75;stroke-dasharray:2 4}
.typing-dot{stroke:var(--publication-paper);stroke-width:1.5}
.typing-dot.typing-accuracy{fill:var(--typing-accuracy)}
.typing-dot.typing-speed{fill:var(--typing-speed)}
.typing-point-ring{fill:none;stroke-width:1.5;pointer-events:none}
.typing-plot svg[data-inspection-state=pinned] .typing-line.is-selected{stroke-width:3}
.typing-plot svg[data-inspection-state=pinned] .typing-line:not(.is-selected){opacity:.4}
.typing-plot svg[data-inspection-state=pinned] .typing-observations{opacity:.4}
.typing-plot svg[data-inspection-state=focus] .typing-point-ring{stroke-width:2}
.typing-plot svg:focus-visible,.routine-row:focus-visible{outline:1px solid var(--publication-ink);outline-offset:4px}
.typing-plot svg:focus:not(:focus-visible){outline:none}
.routine-row[role=button]{cursor:pointer;position:relative}
.routine-row.is-inspected .routine-bar{background:var(--publication-comparison)}
.routine-row[aria-pressed=true] .routine-value{text-decoration:underline;text-underline-offset:4px}
.routine-summary[data-inspection-state=pinned] .routine-row:not([aria-pressed=true]) .routine-bar{opacity:.4}
.routine-row[aria-pressed=true] .routine-bar{position:relative;background:var(--publication-ink)}
.routine-row[aria-pressed=true] .routine-bar::after{content:'';position:absolute;right:-3px;top:50%;width:6px;height:6px;border-radius:50%;background:var(--publication-ink);transform:translateY(-50%)}
.routine-inspection{min-height:40px;margin:16px 0 0!important;color:var(--publication-note);font:var(--publication-label-type)}
.typing-announcement,.routine-announcement{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* One inspection surface across inline publication graphs. */
.routine-summary{position:relative}
.graph-tooltip{position:absolute;z-index:5;box-sizing:border-box;width:max-content;max-width:min(244px,calc(100% - 16px));padding:8px 12px;border:0;border-radius:0;background:var(--publication-surface);color:var(--publication-ink);box-shadow:none;font:var(--publication-label-type);font-variant-numeric:tabular-nums;pointer-events:none;overflow-wrap:break-word}
.graph-tooltip[hidden]{display:none!important}
.graph-tooltip .routine-inspection{min-height:0;margin:0!important;color:inherit;font:inherit}

/* Compare persistence through a sequence; document marks carry no score encoding. */
.confound-sketch--attempts{gap:16px 32px;padding:12px 0}
.attempt-context{grid-column:1 / -1;display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;color:var(--publication-ink)}
.attempt-context>span{color:var(--publication-note)}
.attempt-panel{min-width:0}
.attempt-heading{display:block;margin-bottom:16px;color:var(--publication-ink)}
.attempt-run-labels{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;color:var(--publication-note)}
.attempt-panel svg{display:block;width:100%;height:auto;fill:none;stroke:var(--publication-note);stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.attempt-panel svg *{vector-effect:non-scaling-stroke}
.attempt-library--retained{fill:var(--publication-surface);stroke:var(--publication-ink)}
.attempt-library--empty{stroke-dasharray:2 3}
.attempt-link{stroke:var(--publication-ink)}
.attempt-caption{display:block;color:var(--publication-note);margin-top:4px}
@media(max-width:480px){.confound-sketch--attempts{gap:16px}.attempt-context{gap:4px}.attempt-heading{margin-bottom:8px}}

/* Published typing marks and smoothed trends share their original scales. */
.typing-mark-key{display:flex;flex-wrap:wrap;gap:4px 16px;margin:var(--space-media-to-caption) 0 0;color:var(--publication-note);font:var(--publication-label-type)}
.typing-observation.typing-accuracy{fill:var(--typing-accuracy);fill-opacity:.35}
.typing-observation.typing-speed{fill:var(--typing-speed);fill-opacity:.35}
rect.typing-observation.typing-speed{fill:var(--publication-paper);fill-opacity:1;stroke:var(--typing-speed);stroke-opacity:.45;stroke-width:1}
/* Library comparison: the inherited skill shown under the paired clips. */
.library-comparison .paired-media{align-items:start}
.library-comparison .manuscript-video{margin:0}
.library-clip{padding:12px;box-sizing:border-box;background:color-mix(in srgb,var(--publication-ink) 8%,var(--publication-paper))}
.library-clip[data-library=without]{background:none;outline:1px dashed color-mix(in srgb,var(--publication-ink) 25%,var(--publication-paper));outline-offset:-1px}
.library-comparison .library-clip>figcaption.library-clip-title{display:flex;align-items:center;gap:7px;margin:0 0 12px;color:var(--publication-ink)}
.library-clip-mark{flex:none;inline-size:9px;block-size:9px;border-radius:50%;background:var(--publication-ink)}
.library-clip[data-library=without] .library-clip-mark{background:none;box-shadow:inset 0 0 0 1.5px var(--publication-ink)}
.library-clip-score{margin:var(--space-media-to-caption,8px) 0 0;color:var(--publication-note)}
.library-skill{position:relative;margin:var(--space-related-blocks,24px) 0 0;color:var(--publication-ink)}
.library-skill>figcaption{color:var(--publication-ink);margin:0 0 8px}
.library-skill>p{color:var(--publication-note);margin:0 0 16px;max-width:72ch}
.library-skill pre{margin:0;padding:12px 16px;background:var(--publication-surface);border-radius:6px;overflow-x:auto;color:var(--publication-ink);white-space:pre}
.library-skill-calls{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-top:12px}
.library-skill-label{display:block;color:var(--publication-note);margin:0 0 6px}
@media(max-width:640px){.library-skill pre{padding:10px 12px}}
/* A call into the inherited library: tinted and dotted-underlined, it opens the skill source in the shared graph tooltip. */
.library-skill .code-ref{background:color-mix(in srgb,var(--publication-ink) 8%,var(--publication-paper));text-decoration:underline dotted;text-decoration-thickness:1px;text-underline-offset:3px;cursor:help;border-radius:2px}
.library-skill .code-ref:is(:hover,[aria-expanded=true]){background:color-mix(in srgb,var(--publication-ink) 16%,var(--publication-paper))}
.library-skill .code-ref:focus-visible{outline:1px solid var(--publication-ink);outline-offset:2px}
.library-skill-tooltip{max-width:min(560px,calc(100vw - 16px))}
.library-skill-tooltip pre{padding:0;border-radius:0;background:none;white-space:pre-wrap;overflow-wrap:anywhere;overflow:visible}
/* Python highlighting: the models-chart palette, paper shades on the page and night shades in the dark tooltip. */
.library-skill{--py-kw:#8b46b8;--py-fn:#1b5eb5;--py-str:#1a7c4e;--py-num:#be471a;--py-const:#8d6503;--py-attr:#0f7480;--py-com:var(--publication-note)}
.library-skill-tooltip{--py-kw:#c49ae0;--py-fn:#7fa8dc;--py-str:#6cc196;--py-num:#ec8a62;--py-const:#d9b25a;--py-attr:#5cc3cc;--py-com:var(--publication-tooltip-secondary)}
.library-skill :is(.py-kw,.py-op,.py-fn,.py-str,.py-num,.py-const,.py-attr,.py-com){color:var(--py-kw)}
.library-skill .py-attr{color:var(--py-attr)}
.library-skill .py-fn{color:var(--py-fn)}
.library-skill .py-str{color:var(--py-str)}
.library-skill .py-num{color:var(--py-num)}
.library-skill .py-const{color:var(--py-const)}
.library-skill .py-com{color:var(--py-com)}

/* The article stays on paper; source playback follows the supplied code replay. */
.physical-media-modes{margin-bottom:var(--space-4,16px);--publication-control-selected:color-mix(in srgb,var(--publication-paper) 90%,var(--publication-ink));--publication-control-on-selected:var(--publication-ink)}
.physical-learning[data-media=code] .physical-task-video{aspect-ratio:16/9;object-fit:contain}
.physical-learning[data-media=code] .physical-clip-kind{display:none}
.physical-replay-caption{color:var(--publication-note)}
.physical-code-replay{margin-top:var(--space-3,12px);color:var(--publication-ink);font:var(--publication-label-type)}
.physical-replay-seek{display:flex;align-items:center;gap:var(--space-3,12px);margin-bottom:var(--space-3,12px);font-variant-numeric:tabular-nums}
.physical-replay-seek>input{flex:1;min-width:0;accent-color:var(--publication-ink)}
.physical-replay-seek output{white-space:nowrap;min-width:8ch;color:var(--publication-note)}
.physical-replay-seek label{display:flex;align-items:center;gap:4px;white-space:nowrap;color:var(--publication-note)}
.physical-replay-seek input[type=checkbox]{accent-color:var(--publication-ink);margin:0}
.physical-code-paper{background:#12212d;color:#edf3f7;border:1px solid #30424e;border-radius:3px;overflow:hidden}
.physical-code-scroll{position:relative;height:280px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#536974 #12212d;padding:12px 0 16px;box-sizing:border-box;overflow-anchor:none}
.physical-learning .physical-code-call{position:relative;display:block;width:100%;box-sizing:border-box;border:0;border-left:3px solid #687f8c;border-radius:0;margin:0;padding:8px 16px 8px 0;background:#192934;color:#9dacb5;text-align:left;cursor:pointer;font:inherit}
.physical-learning .physical-code-call+.physical-code-call{margin-top:20px}
.physical-learning .physical-code-call+.physical-code-call::before{content:'…';position:absolute;top:-20px;left:42px;height:20px;color:#8e9fa9;font:16px/20px ui-monospace,monospace}
.physical-learning .physical-code-call.is-current{border-left-color:#e6d46b;background:#2e443a;color:#f4f8ec}
.physical-code-action{display:block;padding-left:42px;margin-bottom:5px;color:#b9a2d4;font:11px/1.5 var(--font-sans,system-ui,sans-serif)}
.physical-learning .physical-code-call.is-current .physical-code-action{color:#e5cfff}
.physical-code-line{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:baseline}
.physical-code-file{padding-right:10px;text-align:right;color:#8e9fa9;font:10px/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.physical-learning .physical-code-call.is-current .physical-code-file{color:#e4d787}
.physical-learning .physical-code-call pre,.physical-learning .physical-code-call pre code{margin:0;padding:0;border:0;background:transparent;color:inherit;font:12px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:0;text-transform:none;white-space:pre-wrap;overflow-wrap:anywhere}
.physical-learning .physical-code-call pre code{display:block}
.physical-learning .physical-code-call:focus-visible{outline:1px solid #e6d46b;outline-offset:-2px}
.physical-task-media .physical-top-video{position:absolute;right:12px;top:12px;width:27%;height:auto;aspect-ratio:16/9;object-fit:contain;border:1px solid var(--publication-rule);pointer-events:none;z-index:3}
@media(max-width:480px){.physical-learning .physical-code-call{padding-right:12px}.physical-learning .physical-code-call pre,.physical-learning .physical-code-call pre code{font-size:11px}.physical-replay-seek{gap:8px;font-size:11px}.physical-code-scroll{height:260px}}
/* Opening diagram: one agent, three ways to act, one harness for simulation or the real world. */
.harness-diagram{position:relative;margin:0}
.harness-hint{margin:0 0 var(--space-2,8px);color:var(--publication-note)}
.harness-diagram>.harness-world-tabs{margin-bottom:var(--space-2,8px)}
.harness-diagram .graph-paper{padding-top:var(--space-4,16px);padding-bottom:var(--space-4,16px)}
.hd-canvas{width:100%}
.hd-svg{display:block;width:100%;height:auto;overflow:visible}
.hd-svg text{fill:var(--publication-ink)}
.hd-svg :is(.hd-detail,.hd-connector){fill:var(--publication-note)}
.hd-svg .hd-line{fill:none;stroke:var(--publication-note);stroke-width:1;stroke-linejoin:miter;stroke-linecap:butt}
.hd-svg .hd-dashed{stroke-dasharray:3 4}
.hd-svg .hd-chevron{fill:none;stroke:var(--publication-note);stroke-width:1}
.hd-svg .hd-hit{fill:transparent;stroke:none}
.hd-svg .hd-item{cursor:help;outline:none}
.hd-svg .hd-item:is(:hover,[aria-expanded=true]) .hd-hit{fill:color-mix(in srgb,var(--publication-ink) 6%,transparent)}
.hd-svg .hd-item:focus-visible .hd-hit{stroke:var(--publication-ink);stroke-width:1}
.harness-tooltip{max-width:300px}
.harness-tooltip p{margin:0}
.harness-tooltip .harness-tooltip-example{color:var(--publication-note);margin-top:4px}
/* Company marks beside model names: text-sized, ink unless the mark carries its own colour. */
.model-logo{display:inline-block;inline-size:1em;block-size:1em;margin-inline-end:.4em;vertical-align:-.14em;fill:currentColor;flex:none}
/* A small outward arrow identifies author profiles; ink tint responds to input. */
.author-link{color:inherit;text-decoration:none;white-space:nowrap;border-radius:2px;transition:background-color var(--motion-feedback) var(--ease-out)}
.author-link::after{content:'';display:inline-block;inline-size:.625em;block-size:.625em;margin-inline-start:var(--space-1,4px);vertical-align:.05em;background-color:currentColor;opacity:.7;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 10 10 2M4 2h6v6' fill='none' stroke='black' stroke-width='1.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;transition:opacity var(--motion-feedback) var(--ease-out)}
@media(hover:hover){.author-link:hover{background-color:color-mix(in srgb,var(--publication-ink) 6%,transparent)}.author-link:hover::after{opacity:1}}
.author-link:active{background-color:color-mix(in srgb,var(--publication-ink) 12%,transparent)}
.author-link:focus-visible{outline:2px solid var(--publication-control-focus,currentColor);outline-offset:2px;background-color:color-mix(in srgb,var(--publication-ink) 6%,transparent)}
.author-link:is(:focus-visible,:active)::after{opacity:1}
@media(prefers-reduced-motion:reduce){.author-link,.author-link::after{transition:none}}
@media(forced-colors:active){.author-link{color:LinkText}.author-link::after{opacity:1;background-color:LinkText}}
/* The opening disables pointer events on its text; author links opt back in once the credits are shown. */
.hero .repo-author-row[data-interactive=true] a.author-link{pointer-events:auto}

/* Repository material adopts the publication's reading track, ink and 4 px rhythm. */
.repository-content{font:400 var(--publication-body-size)/var(--publication-body-leading) var(--publication-font);min-width:0}
.repository-content>*{margin-block:0}
.repository-content>*+*{margin-top:var(--space-related-blocks)}
.repository-content .repo-note,.repository-content figcaption{font:400 var(--publication-caption-size)/var(--publication-caption-leading) var(--publication-font);color:var(--publication-note);text-align:left;margin-top:var(--space-media-to-caption)}
.repository-content a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
.repo-authors>p{font:400 13px/24px var(--publication-font);text-wrap:pretty}
.repository-content summary{display:flex;justify-content:space-between;align-items:baseline;gap:16px;min-height:44px;padding:12px 0;list-style:none;cursor:pointer;font:400 12px/20px var(--publication-font)}
.repository-content summary::-webkit-details-marker{display:none}
.repository-content details{border:0}
.repository-content details:not([open])>:not(summary){display:none}
.repo-controls{display:flex;flex-wrap:wrap;gap:4px 16px;margin-bottom:var(--space-controls-to-figure)}
.repo-dexterity-video{position:relative}
.repo-dexterity-video .publication-player{width:100%}
.repo-dexterity-video video{display:block;width:100%;height:auto;aspect-ratio:1856/1280;background:var(--publication-surface)}
.repository-content button{min-height:44px;padding:8px 0;font:400 12px/20px var(--publication-font);color:var(--publication-note);background:none;border:0;border-radius:0;cursor:pointer}
.repository-content button[aria-pressed=true]{color:var(--publication-ink);text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}
.repository-content :is(button,summary,a,[tabindex]):focus-visible{outline:1px solid var(--publication-ink);outline-offset:4px}
@media(hover:hover) and (pointer:fine){.repository-content :is(button,summary):hover{color:var(--publication-ink)}}
.repository-content button:active{opacity:.65}
.repo-table-wrap{max-width:100%;overflow:auto;overscroll-behavior-x:contain;scrollbar-width:thin}
.repo-table-wrap table{border-collapse:collapse;width:100%;font:400 11px/18px var(--publication-font);font-variant-numeric:tabular-nums}
.repo-table-wrap caption{text-align:left;font-size:12px;line-height:20px;margin:0 0 16px;color:var(--publication-ink)}
.repo-table-wrap caption>span{display:block;position:sticky;inset-inline-start:0;width:fit-content;max-width:var(--grid-reading)}
.repo-table-wrap :is(th,td){padding:12px 16px;border:0;border-bottom:1px dotted var(--publication-rule);text-align:right;white-space:nowrap;font-weight:400}
.repo-table-wrap thead th{color:var(--publication-note);vertical-align:bottom;white-space:normal;min-width:72px}
.repo-table-wrap :is(th,td):first-child{background:transparent;padding-left:0;text-align:left}
.repo-table-wrap[data-overflow] :is(th,td):first-child{position:sticky;inset-inline-start:0;z-index:1;background:var(--publication-reading-surface,var(--publication-paper))}
.repo-table-wrap :is(th,td):last-child{padding-right:0}
.repo-table-wrap tbody tr:last-child>*{border-bottom:0}
/* Descriptive typing results reflow within their two-column table. */
[data-repository-block="repo-dexterity"] .repo-table-wrap :is(th,td){white-space:normal}
[data-repository-block="repo-dexterity"] .repo-table-wrap td{overflow-wrap:anywhere;hyphens:auto}
/* Four absolute TEST measures share a scale; the paired library gain does not. */
.chapter>.manuscript-interaction[data-repository-block="repo-models"]{grid-column:reading}
.repo-model-comparison{container:repo-model/inline-size;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-related-blocks);min-width:0}
.repo-model-summary,.repo-model-gains{min-width:0;margin:0}
.repository-content .repo-model-summary>figcaption,.repository-content .repo-model-gains>figcaption{margin:0 0 16px;color:var(--publication-ink)}
.repo-score-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.repo-score-panel{min-width:0}
.repo-score-heading{min-height:56px;box-sizing:border-box;border-bottom:1px solid var(--publication-rule);padding-bottom:8px;margin-bottom:8px}
.repo-score-heading h3,.repo-score-heading p{margin:0;font:var(--publication-label-type)}
.repo-score-heading h3{color:var(--publication-ink)}
.repo-score-heading p{color:var(--publication-note)}
.repo-model-rows{list-style:none;display:grid;gap:4px;margin:0;padding:0}
.repo-model-row{display:grid;grid-template-columns:minmax(0,120px) minmax(0,1fr) 80px;align-items:center;gap:6px;min-height:24px;font:var(--publication-label-type)}
.repo-model-name{min-width:0;overflow-wrap:anywhere;color:var(--publication-note)}
.repo-model-value{display:flex;align-items:baseline;justify-content:flex-end;gap:4px;white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;color:var(--publication-ink)}
.repo-model-sd{color:var(--publication-note)}
.repo-score-track,.repo-gain-track{position:relative;display:block;min-width:0;height:20px}
.repo-score-bar{position:absolute;top:8px;left:0;display:block;height:4px;background:var(--publication-comparison)}
.repo-score-bar.is-leading{background:var(--publication-ink)}
.repo-score-axis{display:grid;grid-template-columns:minmax(0,120px) minmax(0,1fr) 80px;gap:6px;margin-top:8px;color:var(--publication-note);font:var(--publication-label-type)}
.repo-score-axis span{grid-column:2;grid-row:1}
.repo-score-axis span:last-child{justify-self:end}
.repo-score-context{margin:16px 0 0;color:var(--publication-note);font:var(--publication-label-type)}
.repo-model-gains{border-top:1px solid var(--publication-rule);padding-top:16px}
.repository-content .repo-model-gains>figcaption{margin-bottom:0}
.repo-gain-context{margin:0 0 12px;color:var(--publication-note);font:var(--publication-label-type)}
.repo-model-gains .repo-model-row,.repo-gain-axis{grid-template-columns:minmax(0,120px) minmax(0,1fr) 48px;gap:8px}
.repo-gain-track::before{content:"";position:absolute;top:1px;bottom:1px;left:50%;border-left:1px solid var(--publication-rule)}
.repo-gain-bar{position:absolute;top:8px;display:block;height:4px;background:var(--publication-ink)}
.repo-gain-bar.is-negative{background:var(--publication-comparison)}
.repo-gain-axis{display:grid;margin-top:8px;color:var(--publication-note);font:var(--publication-label-type)}
.repo-gain-axis-scale{grid-column:2;position:relative;display:block;min-height:20px}
.repo-gain-axis-scale span{position:absolute;top:0;white-space:nowrap}
.repo-gain-axis-scale span:first-child{left:0}
.repo-gain-axis-scale span:nth-child(2){left:50%;transform:translateX(-50%)}
.repo-gain-axis-scale span:last-child{right:0}
.repo-model-data{min-width:0;border-top:1px solid var(--publication-rule)!important}
.repo-model-data summary{padding:12px 0}
.repo-model-data .repo-table-wrap{margin-top:8px}
.repo-model-data .repo-note{margin-top:16px}
@container repo-model (max-width:640px){
 .repo-score-panels{grid-template-columns:1fr;gap:20px}
 .repo-score-heading{min-height:0}
 .repo-model-gains .repo-model-row,.repo-gain-axis{grid-template-columns:minmax(0,94px) minmax(0,1fr) 38px;gap:6px}
}
.repo-cell-table{min-width:0}
.repo-cell-table .repo-table-wrap{max-height:min(360px,calc(100svh - 104px))}
.repo-cell-table thead{position:sticky;inset-block-start:0;z-index:2;background:var(--publication-reading-surface,var(--publication-paper))}
.repo-figure{margin:0}
.repository-content img{display:block;width:100%;height:auto;object-fit:contain}
.repo-figure img{object-position:left center}
/* The typing still fills the same content width as the physical-task video. */
.repo-figure:not(.repo-dexterity-video) img{max-height:400px}
.repo-published-figure img{margin-top:16px}
.repo-gallery{min-width:0}
.repo-gallery figure{margin:0}
.repo-gallery video{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:contain;background:var(--publication-surface)}
.repo-gallery figcaption{min-height:0}
.repo-clip-list{margin-top:16px}
.repo-clip-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;max-height:264px;overflow:auto;padding:4px}
.repo-clip-options button{box-sizing:border-box;box-shadow:none;position:relative;display:flex;flex-direction:column;text-align:left;align-items:flex-start;padding:8px 28px 8px 12px;white-space:normal;flex-shrink:0}
.repo-clip-options button span{font:inherit;color:var(--publication-note)}
.repository-content .repo-clip-options button[aria-pressed=true]{color:var(--publication-ink);background:var(--publication-surface);text-decoration:none}
.repository-content .repo-clip-options button[aria-pressed=true] span{color:inherit}
.repository-content .repo-clip-options button[aria-pressed=true]::after{content:'';position:absolute;right:10px;top:50%;width:8px;height:4px;border-left:1px solid currentColor;border-bottom:1px solid currentColor;transform:translateY(-75%) rotate(-45deg)}
.repository-content .repo-clip-options button:focus-visible{outline:none;color:var(--publication-ink);background:var(--publication-surface)}
.repository-content .repo-clip-options button:focus-visible::before{content:'';position:absolute;left:3px;top:8px;bottom:8px;width:2px;background:currentColor}
@media(forced-colors:active){.repository-content .repo-clip-options button:focus-visible{outline:2px solid Highlight;outline-offset:-2px}}
@media(hover:hover) and (pointer:fine){.repository-content .repo-clip-options button:hover{color:var(--publication-ink);background:var(--publication-surface)}}
.repo-goals p{font:400 var(--reading-size)/var(--reading-leading) var(--publication-reading-font);margin:16px 0}
.repo-scatter{position:relative;width:100%;min-height:260px}
.repo-scatter svg{display:block;width:100%;overflow:visible}
.repo-scatter text{font:400 11px var(--publication-font);fill:var(--publication-note)}
.repo-axis,.repo-diagonal{fill:none;stroke:var(--publication-rule);stroke-width:1}
.repo-diagonal{stroke:var(--publication-note);stroke-dasharray:3 5;opacity:.5}
.repo-scatter-point{cursor:pointer;outline:none!important}
.repo-scatter-point .repo-hit{fill:transparent;stroke:none;pointer-events:all}
.repo-scatter-point .repo-point-mark{fill:var(--publication-paper);stroke:var(--publication-note);stroke-width:1.2;pointer-events:none}
.repo-scatter-point.is-higher .repo-point-mark{fill:var(--publication-ink);stroke:var(--publication-ink)}
.repo-scatter-point .repo-point-ring{fill:none;stroke:var(--publication-ink);stroke-width:1;opacity:0;pointer-events:none}
.repo-scatter-point:is(.is-inspected,[aria-pressed=true],:focus-visible) .repo-point-ring{opacity:1}
.repo-scatter-point[aria-pressed=true] .repo-point-ring{stroke-width:2}
.repo-scatter[data-inspection-state=pinned] .repo-scatter-point:not([aria-pressed=true]) .repo-point-mark{opacity:.4}
.repo-scatter .repo-region-label{fill:var(--publication-ink)}
.repo-chart-key{margin:4px 0 0;color:var(--publication-note);font:var(--publication-label-type)}
/* Inspection stays next to its observation, with no extra row below the plot. */
.repo-scatter-tooltip{position:absolute;z-index:3;box-sizing:border-box;width:max-content;max-width:min(244px,calc(100% - 8px));padding:8px 12px;background:var(--publication-surface);color:var(--publication-ink);font:var(--publication-label-type);pointer-events:none}
.repo-scatter-tooltip[hidden],.repo-scatter-tooltip button[hidden]{display:none}
.repo-scatter-tooltip .repo-inspection{display:grid;gap:4px;margin:0;font:inherit;overflow-wrap:anywhere}
.repo-scatter-tooltip .repo-inspection-detail{color:var(--publication-note)}
.repo-inspection-status{position:absolute!important;width:1px;height:1px;padding:0!important;margin:-1px!important;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.repo-bibliography{margin:0;padding:0;font:var(--publication-label-type);color:var(--publication-body)}
.repo-bibliography li{padding:0;overflow-wrap:anywhere}
.repo-bibliography li+li{margin-top:12px}
.repo-bibliography li::marker{color:var(--publication-note);font-variant-numeric:tabular-nums}
@media(max-width:480px){.repo-clip-options{grid-template-columns:1fr}.repo-controls{gap:0 16px}.repo-table-wrap :is(th,td){padding:12px 8px}.repo-table-wrap thead th{min-width:64px}}
@media(prefers-reduced-motion:reduce){.repository-content *{animation:none!important;transition:none!important}}

.repo-inspection:empty{min-height:0;margin:0}

/* Environment → clip → playback: one selection path, no repeated caption. */
.repo-rollout-gallery{container-type:inline-size}
.repo-environment-row{display:flex;align-items:baseline;gap:16px;margin-bottom:8px}
.repo-field-label{color:var(--publication-note);flex:none}
.repo-environment-row .repo-controls{margin:0;gap:4px 16px}
.repo-rollout-gallery .repo-clip-picker{position:relative;z-index:2;margin:0 0 16px;border-block:1px solid var(--publication-rule)}
.repo-rollout-gallery .repo-clip-picker summary{display:grid;grid-template-columns:80px minmax(0,1fr) auto 16px;align-items:center;gap:12px;padding:12px 0;min-height:48px;box-sizing:border-box}
.repo-selected-clip{color:var(--publication-ink)}
.repo-selected-outcome{color:var(--publication-note)}
.repo-clip-picker summary svg{display:block;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.2}
.repo-clip-picker[open] summary svg{transform:rotate(180deg)}
.repo-rollout-gallery .repo-clip-options{position:absolute;inset:100% 0 auto 80px;z-index:1;background:var(--publication-paper);border:1px solid var(--publication-rule);box-sizing:border-box;overscroll-behavior:contain;display:flex;flex-direction:column;gap:0;max-height:248px;margin:0;padding:4px 0;overflow:auto;scrollbar-width:thin}
.repo-rollout-gallery .repo-clip-options button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:baseline;min-height:36px;padding:8px 28px 8px 12px;text-decoration:none}
.repo-rollout-gallery .repo-clip-options button span{font:inherit;color:inherit}
.repo-rollout-gallery .player-controls button{padding:0}
@container(max-width:440px){
 .repo-environment-row{display:block}
 .repo-rollout-gallery .repo-clip-picker summary{grid-template-columns:minmax(0,1fr) auto 16px;gap:8px}
 .repo-clip-picker summary .repo-field-label{grid-column:1/-1}
 .repo-rollout-gallery .repo-clip-options{left:0}
 .repo-rollout-gallery .repo-clip-options button{padding-left:12px}
}

.repo-table-hint{font:var(--publication-label-type);color:var(--publication-note);margin:4px 0 0!important;text-align:right}
.repo-table-hint[hidden]{display:none}

/* Protocol selection belongs to the evidence; focus remains a separate cue. */
.repo-hardware .repo-controls{gap:4px 24px}
.repo-hardware .repo-controls button{display:inline-flex;align-items:center;gap:8px;padding:8px 4px;text-decoration:none}
.repo-hardware .repo-controls button::before{content:"";width:4px;height:4px;flex:none;background:currentColor;opacity:0}
.repo-hardware .repo-controls button[aria-pressed=true]{color:var(--publication-ink);text-decoration:none}
.repo-hardware .repo-controls button[aria-pressed=true]::before{opacity:1}
.repo-hardware .repo-controls button:focus-visible{outline:1px solid var(--publication-ink);outline-offset:2px}
@media(hover:hover) and (pointer:fine){.repo-hardware .repo-controls button:not([aria-pressed=true]):hover{color:var(--publication-ink);background:var(--publication-surface)}}
.repo-hardware .repo-controls button:disabled{opacity:.45;cursor:default}

@media(pointer:coarse){.repo-rollout-gallery .repo-clip-options button{min-height:44px;padding-block:12px}}

/* Inter, SIL OFL 1.1. ReveUI is a legacy CSS alias. License: fonts/inter-OFL.txt */
@font-face { font-family:ReveUI; src:url('fonts/inter-variable.woff2') format('woff2'); font-style:normal; font-weight:100 900; font-display:swap; }
@font-face { font-family:ReveUI; src:url('fonts/inter-ui.woff2') format('woff2'); font-style:normal; font-weight:100 900; font-display:swap; unicode-range:U+0000-00FF,U+03C0,U+2000-206F,U+20A0-20CF,U+2190-21FF,U+2212,U+2265,U+25A1,U+25CF,U+FEFF,U+FFFD; }
/* IBM Plex Mono, SIL OFL 1.1. License: fonts/ibm-plex-mono-OFL.txt */
@font-face { font-family:SEARMono; src:url('fonts/IBMPlexMono-Light.woff2') format('woff2'); font-style:normal; font-weight:300; font-display:swap; }
@font-face { font-family:SEARMono; src:url('fonts/IBMPlexMono-Regular.woff2') format('woff2'); font-style:normal; font-weight:400 700; font-display:swap; }

/* Shared publication roles: article, evidence, and motion use the same ink family. */
:root {
  --ease-out: cubic-bezier(0.23,1,0.32,1);
  --ease-in-out: cubic-bezier(0.77,0,0.175,1);
  /* Sine curves for quiet explanatory motion: https://easings.net/ */
  --ease-in-out-gentle: cubic-bezier(0.37,0,0.63,1);
  --ease-out-gentle: cubic-bezier(0.61,1,0.88,1);
  --motion-feedback: 120ms;
  --motion-swap: 180ms;
  --motion-progress-reveal: 400ms;
  --motion-panel: 220ms;
  --motion-arrival: 200ms;
  --motion-text-blur: 1.5px;
  --motion-overlap: 80ms;
  --motion-contents: 600ms;
  --motion-opening: 500ms;
  --motion-title-expansion: 400ms;
  --motion-explanation: 600ms;
  --motion-logo: 2500ms;
  --publication-font: ReveUI, Arial, sans-serif;
  --publication-paper: #fafafa;
  --publication-ink: #282828;
  --publication-reading-surface: color-mix(in srgb, var(--publication-paper) 98.75%, var(--publication-ink));
  --publication-author-ink: #000;
  --publication-body: #383838;
  --publication-note: #686868;
  --publication-rule: #dedede;
  --publication-grid: #ededed;
  --publication-comparison: #707070;
  --publication-outcome-success: #31744b;
  --publication-outcome-failure: #ad4741;
  --publication-surface: #f5f5f5;
  --publication-tooltip-background: #282828;
  --publication-tooltip-foreground: #fefefe;
  --publication-tooltip-secondary: #c8c8c8;
  --publication-tooltip-success: #93c6a0;
  --publication-tooltip-failure: #eea09a;
  --publication-stage: #101112;
  --publication-stage-ink: #e6e8e9;
  --publication-stage-note: #a2a8ac;
  --publication-stage-rule: #383e43;
  --publication-control-size: 36px;
  --publication-control-size-touch: 44px;
  --publication-media-control-size: 28px;
  /* Four roles maximum. Size, weight, family, and leading belong to the role. */
  --publication-title-spacing: -0.0375em; /* -8.1px at the 216px reference size */
  --publication-expanded-title-spacing: -0.0523611111111111em; /* -11.31px / 216px */
  --publication-section-spacing: 0;
  --publication-reading-spacing: -0.0025em;
  --publication-label-spacing: 0;
  --publication-display-size: clamp(2rem,13.3cqw,3.5rem);
  --publication-display-leading: 1.1;
  --publication-display-type: var(--publication-title-weight,500) var(--publication-display-size)/var(--publication-display-leading) var(--publication-title-font,SEARReading), Georgia, serif;
  --publication-heading-type: 500 28px/34px SEARReading, Georgia, serif;
  --publication-reading-type: 400 16px/24px ReveUI, Arial, sans-serif;
  --publication-label-type: 400 12px/20px ReveUI, Arial, sans-serif;
  --publication-brand-size: 26px;
  --publication-brand-leading: 32px;
  --publication-section-size: 28px;
  --publication-section-leading: 34px;
  --publication-body-size: 12px;
  --publication-body-leading: 20px;
  --publication-title-size: var(--publication-section-size);
  --publication-title-leading: var(--publication-section-leading);
  --publication-label-leading: 20px;
  --publication-label-size: 12px;
  --publication-caption-size: var(--publication-label-size);
  --publication-caption-leading: var(--publication-label-leading);
}

/* Inspection surfaces stay distinct from paper texture and chart phase fills.
   Scope existing text roles to the overlay so captions keep their hierarchy. */
:is(.graph-tooltip, .repo-scatter-tooltip, body.graph-only .study-tooltip) {
  --publication-surface: var(--publication-tooltip-background);
  --publication-ink: var(--publication-tooltip-foreground);
  --publication-note: var(--publication-tooltip-secondary);
  --study-text: var(--publication-tooltip-foreground);
  --study-muted: var(--publication-tooltip-secondary);
  --ui-ink: var(--publication-tooltip-foreground);
  --ui-muted: var(--publication-tooltip-secondary);
  --graphic-paper: var(--publication-tooltip-background);
  background-image: none;
}

/* Compact controls follow the input device, not the viewport width. */
@media (pointer:coarse) {
  :root { --publication-control-size: var(--publication-control-size-touch); }
}

/* Phone scale: the same four roles, sized for a narrow reading measure. */
@media (max-width:640px) {
  :root {
    --publication-heading-type: 500 22px/28px SEARReading, Georgia, serif;
    --publication-reading-type: 400 14px/22px ReveUI, Arial, sans-serif;
    --publication-brand-size: 22px;
    --publication-brand-leading: 28px;
    --publication-section-size: 22px;
    --publication-section-leading: 28px;
  }
}

/* Preserve the opening's existing short-screen limit in the same display role. */
@media (max-height:600px) {
  :root { --publication-display-size: clamp(2rem,min(13.3cqw,8svh),54.432px); }
}


/* The publication has four named type treatments, including the opening.
   This named layer owns typography over the legacy unlayered component rules
   (some of which are !important). Geometry, ink, and interaction stay local.
   Descendants inherit their semantic role, so links, spans, and emphasis cannot
   accidentally introduce an extra font, weight, size, or line height. */
@layer publication-type {
  body.publication-page,
  body.graph-only {
    font: var(--publication-label-type) !important;
    letter-spacing: var(--publication-label-spacing) !important;
  }

  :is(body.publication-page, body.graph-only) :where(*) {
    font: inherit !important;
    letter-spacing: inherit !important;
    text-transform: none !important;
    font-variant-numeric: tabular-nums !important;
  }

  :is(body.publication-page, body.graph-only) ::before,
  :is(body.publication-page, body.graph-only) ::after {
    font: inherit !important;
    letter-spacing: inherit !important;
    text-transform: none !important;
  }

  body.publication-page :is(.hero-brand, .chapter-heading h2) {
    font: var(--publication-heading-type) !important;
  }

  body.publication-page .hero-brand,
  body.publication-page .hero-brand * {
    letter-spacing: var(--publication-title-spacing) !important;
  }

  body.publication-page .hero-brand .hero-full-name,
  body.publication-page .hero-brand .hero-full-name * {
    letter-spacing: var(--publication-expanded-title-spacing) !important;
  }

  body.publication-page .chapter-heading h2,
  body.publication-page .chapter-heading h2 * {
    letter-spacing: var(--publication-section-spacing) !important;
  }

  /* Both opening title states inherit the same display size. */
  body.publication-page .hero .hero-brand {
    font: var(--publication-display-type) !important;
  }

  body.publication-page :is(.copy, .hero-bottom > p, .component-copy > p,
    .mode-explanation > p, .routine-row > p, .manuscript-video details > p,
    .repo-goals p:not(.repo-note), .limit-detail, .tier-definition) {
    font: var(--publication-reading-type) !important;
    letter-spacing: var(--publication-reading-spacing) !important;
  }

  body.publication-page .hero .hero-introduction :is(.copy, .repo-author-list, .repo-author-row > .repo-note) {
    font: var(--publication-reading-type) !important;
    letter-spacing: var(--publication-reading-spacing) !important;
  }

  /* Captions and controls keep their role even when nested inside prose. */
  body.publication-page :is(button, input, select, textarea, summary,
    figcaption, caption, table, svg:not(.repo-logo), .repo-note, .content-placeholder-frame,
    .hero-media-note) {
    font: var(--publication-label-type) !important;
    letter-spacing: var(--publication-label-spacing) !important;
  }

  /* Library-comparison panel headings match the explored / never-explored scene headings. */
  body.publication-page .library-clip > figcaption.library-clip-title {
    font: 650 13px/20px ReveUI, Arial, sans-serif !important;
    letter-spacing: .01em !important;
  }

  /* Opening diagram: names as in the previous loop figure; details and connectors stay labels. */
  body.publication-page .hd-svg .hd-name {
    font: 500 13px/1 ReveUI, Arial, sans-serif !important;
  }

  /* Quoted policy source keeps its columns: the one monospace role, scoped to code excerpts. */
  body.publication-page :is(.library-skill,.physical-code-replay) :is(pre, pre *, code) {
    font: 400 12px/20px SEARMono, ui-monospace, monospace !important;
    letter-spacing: 0 !important;
  }

  /* Figure headlines identify the evidence; axes, values, and source notes stay labels. */
  body.publication-page :is(.typing-chart, .routine-summary, .fault-comparison, .repo-model-summary, .repo-model-gains, .library-skill) > figcaption {
    font: var(--publication-reading-type) !important;
    letter-spacing: var(--publication-reading-spacing) !important;
  }
  /* Panel navigation names use the same label role as their counters. */
  body.graph-only .has-header-navigation .figure-progress-context,
  body.publication-page :is(.routine-summary, .fault-comparison) .routine-context {
    font: var(--publication-label-type) !important;
    letter-spacing: var(--publication-label-spacing) !important;
  }

  /* These disclosures title an explanation; their notes support the diagram. */
  body.publication-page .confound-list > details > summary,
  body.publication-page .confound-body > p {
    font: var(--publication-reading-type) !important;
    letter-spacing: var(--publication-reading-spacing) !important;
  }
  body.publication-page .confound-list > details > summary :is(.confound-number, .confound-toggle) {
    font: var(--publication-label-type) !important;
    letter-spacing: var(--publication-label-spacing) !important;
  }

  /* SVG coordinates may scale; the rendered label remains 12 CSS pixels.
     fitViewportGraphs supplies the inverse viewBox scale without changing data. */
  body.graph-only .study-svg text[data-text-role] {
    font: var(--publication-label-type) !important;
    font-size: calc(var(--publication-label-size) * var(--embed-text-scale, 1)) !important;
  }
}

/* Preserve the opening title composition across viewport sizes. */
body.publication-page .hero .hero-brand {
  white-space: normal;
  font-optical-sizing: auto;
  font-size-adjust: from-font;
  text-wrap: wrap;
  max-width: 100%;
  margin-inline: auto;
}

body.publication-page :is(.typing-chart, .routine-summary, .fault-comparison, .repo-model-summary, .repo-model-gains) > figcaption {
  color: var(--publication-ink);
}

/* The sketch's SVG units stay 1:1, including its label on a phone. */
body.publication-page .opening-traces svg {
  width: 240px;
  max-width: 100%;
  margin-inline: auto;
}

/* Fixed reading order; fit the shared display role when a wider face is chosen. */
body.publication-page .hero .hero-brand {
  --publication-display-type: var(--publication-title-weight,500) var(--hero-title-size,var(--publication-display-size))/var(--publication-display-leading) var(--publication-title-font,SEARReading),Georgia,serif;
}
.hero .hero-title-line { display:block; width:max-content; white-space:nowrap; }

/* Short editorial blocks should not end in a stray word or phrase when the
   reading measure changes. Browsers limit balancing for long passages. */
body.publication-page #sections :is(p, figcaption, .repo-bibliography li) {
  text-wrap: balance;
}
/* Balance the short introduction so its final line does not leave a stray
   word or phrase when the reading measure changes. */
body.publication-page .hero .hero-introduction .copy p { text-wrap: balance; }

/* One compact rhythm for article, embedded-figure, and control readouts.
   Keep the existing label typography, surfaces, and inspection behavior. */
:is(body.publication-page, body.graph-only) :is(.study-tooltip, .graph-tooltip, .repo-scatter-tooltip, .typing-tooltip, .tooltip, .icon-control-tooltip) {
  /* Override the legacy embedded tooltip's important padding. */
  padding: var(--space-tooltip-padding-block) var(--space-tooltip-padding-inline) !important;
}

body.graph-only .study-tooltip :is(.inspection-header, .inspection-time-header, .inspection-heading, .inspection-method, .fault-tip-title, .fault-tip-context, .fault-tip-title + .fault-tip-context, .fault-tip-method),
body.graph-only .study-tooltip.diagram-readout .inspection-heading {
  margin-block: 0;
}
body.graph-only .study-tooltip :is(.inspection-detail, .inspection-attempt .inspection-detail, .fault-tip-secondary, .experiment-outcome) {
  margin-block-start: var(--space-tooltip-row-gap);
}
body.graph-only .study-tooltip :is(.inspection-rows, .inspection-header) {
  row-gap: var(--space-tooltip-row-gap);
}
body.graph-only .study-tooltip :is(.inspection-header, .inspection-time-header, .inspection-rows, .inspection-row, .fault-tip-row) {
  column-gap: var(--space-2);
}
body.graph-only .study-tooltip .inspection-model-primary {
  margin-block-end: var(--space-tooltip-group-gap);
}
body.graph-only .study-tooltip .inspection-difference {
  margin-block-start: var(--space-tooltip-group-gap);
}
body.publication-page .repo-scatter-tooltip .repo-inspection {
  gap: var(--space-tooltip-row-gap);
}
body.publication-page :is(.typing-tooltip-time, .typing-tooltip-phase),
:is(body.publication-page, body.graph-only) .tooltip b {
  margin-block: 0;
}


/* Shared selection contract for article and embedded evidence controls. */
:root{--publication-control-selected:#000;--publication-control-on-selected:#fff;--publication-control-hover:var(--publication-surface);--publication-control-focus:var(--publication-ink)}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview){display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:var(--space-control-gap)}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button{
 box-sizing:border-box;min-width:var(--publication-control-size);min-height:var(--publication-control-size);padding:var(--space-control-padding-block) var(--space-3);border:0;border-radius:0;box-shadow:none;
 font:var(--publication-label-type);text-align:left;color:var(--publication-note);background:transparent;text-decoration:none;opacity:1;
}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button::before,
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button::after{display:none}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button:is([aria-pressed=true],[aria-selected=true]){background:var(--publication-control-selected);color:var(--publication-control-on-selected);text-decoration:none}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button:focus-visible{outline:2px solid var(--publication-control-focus);outline-offset:3px;box-shadow:none}
@media(hover:hover) and (pointer:fine){
 :is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button:not([aria-pressed=true]):not([aria-selected=true]):not(:disabled):hover{background:var(--publication-control-hover);color:var(--publication-ink)}
 :is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button:is([aria-pressed=true],[aria-selected=true]):hover{background:var(--publication-control-selected);color:var(--publication-control-on-selected)}
}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button:not(:disabled):active{opacity:.8}
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview) button:disabled{opacity:.45;cursor:default}

/* Compact protocol switches retain the shared label size and selected palette. */
body.publication-page .repo-hardware .repo-controls button{padding-inline:var(--space-2)}
body.publication-page .repo-hardware .repo-controls button:focus-visible{outline-width:1px;outline-offset:2px}

/* Keep the mobile environment filter compact without tightening touch targets. */
@media(max-width:640px){
 body.publication-page .repo-teacher .repo-controls button{position:relative;min-height:var(--space-8);padding-block:var(--space-1)}
}
@media(max-width:640px) and (pointer:coarse){
 body.publication-page .repo-teacher .repo-controls{row-gap:var(--space-3)}
 body.publication-page .repo-teacher .repo-controls button::after{content:"";display:block;position:absolute;inset-inline:0;inset-block:calc((var(--space-8) - var(--publication-control-size-touch))/2)}
}

/* Overview modes share the reading edge used by the other evidence controls. */
body.graph-only .article-layout-preview{justify-content:flex-start;gap:var(--space-control-gap)}

/* Shared spacing applies to nested tab rows as well as their outer groups. */
:is(body.publication-page,body.graph-only) :is(.repo-controls,.component-tabs,.article-strategies,.article-layout-preview){margin-bottom:var(--space-controls-to-figure)}
body.graph-only .article-layout-preview [role=group]{gap:var(--space-control-gap)}
body.publication-page .repo-environment-row .repo-controls{margin-bottom:0}
body.publication-page .physical-agent-choices{margin-bottom:0}

/* One quiet response across tabs, arrows, disclosures, and media controls. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 :is(body.publication-page,body.graph-only) :is(.repo-controls,.repo-clip-options,.component-tabs,.article-strategies,.article-layout-preview,.environment-navigation) button{transition:background-color var(--motion-feedback) var(--ease-out),color var(--motion-feedback) var(--ease-out)}
 :is(body.publication-page,body.graph-only) summary{transition:color var(--motion-feedback) var(--ease-out)}
}
:is(body.publication-page,body.graph-only) :is(button,summary):focus-visible{transition:none}

/* Inspection belongs to the data mark, including keyboard focus after clearing. */
body.publication-page :is(.typing-plot svg,.repo-scatter svg,.routine-row):focus,
body.graph-only :is(.study-frame,.figure-frame,.study-svg):focus{
 outline:none!important;
 box-shadow:none!important;
}
body.publication-page .routine-row:focus-visible .routine-bar{
 outline:2px solid var(--publication-control-focus);
 outline-offset:2px;
}

:is(body.publication-page,body.graph-only) :is(.repo-controls,.repo-clip-options,.component-tabs,.article-strategies,.article-layout-preview,.environment-navigation):has(:focus-visible) button{transition:none}

/* A complete first frame, even while modules or fonts are still arriving.
   Reserve the enhanced geometry before JavaScript to prevent a layout jump. */
body.publication-page:not(.hero-enhanced) .hero{height:var(--opening-scroll-height)}
body.publication-page:not(.hero-enhanced) .hero-stage{position:sticky;top:0;height:100dvh;min-height:0;background:var(--opening-paper)}
body.publication-page:not(.hero-enhanced) .hero .hero-bottom{position:absolute;inset:0 auto 0 50%;width:var(--hero-content-width);height:100%;max-width:none;margin:0;padding:0;transform:translateX(-50%)}
body.publication-page:not(.hero-enhanced) .hero .hero-brand{position:absolute;top:50%;left:50%;margin:0;transform:translate(-50%,-50%)}
body.publication-page:not(.hero-enhanced) .hero .hero-acronym{opacity:1;visibility:visible}
body.publication-page:not(.hero-enhanced) .hero .hero-full-name{opacity:0;visibility:hidden}
body.publication-page:not(.hero-enhanced) .hero .hero-introduction{visibility:hidden}
body.publication-page:not(.hero-enhanced) .hero .hero-video-slot{position:absolute;inset:0;height:100%;opacity:0;visibility:hidden}

@keyframes opening-title-arrival{from{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur(0px)}}
@media(prefers-reduced-motion:no-preference){
 body.publication-page .hero .hero-brand{animation:opening-title-arrival var(--motion-opening,500ms) var(--ease-out) both}
 html[data-opening-interacted] body.publication-page .hero .hero-brand{animation:none}
}
@media(prefers-reduced-motion:reduce){
 body.publication-page:not(.hero-enhanced) .hero{height:100svh}
 body.publication-page:not(.hero-enhanced) .hero .hero-full-name{opacity:1;visibility:visible}
 body.publication-page:not(.hero-enhanced) .hero .hero-acronym{display:none}
}

/* Only an actual loading failure exposes recovery; no indefinite blank screen. */
.site-load-error{display:none}
html[data-site-state=error] body.publication-page:not(.hero-enhanced) .hero{height:100svh}
html[data-site-state=error] .site-load-error{position:absolute;z-index:10;bottom:24px;left:24px;right:24px;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:12px;color:var(--publication-stage-ink)}
.site-load-error p{margin:0}
.site-load-error button{min-height:44px;padding:8px 12px;border:1px solid var(--publication-stage-rule);background:transparent;color:inherit;cursor:pointer}
.site-load-error button:focus-visible{outline:2px solid currentColor;outline-offset:3px}
@media(hover:hover) and (pointer:fine){.site-load-error button:hover{border-color:currentColor}}

/* Plain ink on the same warm paper as the article. */
html[data-opening=paper] .hero {
  --opening-paper:var(--publication-paper);
  --opening-ink:var(--publication-ink);
  --opening-secondary:var(--publication-body);
  --opening-copy-ink:var(--publication-ink);
  --opening-copy-note:var(--publication-note);
}
html[data-opening=paper] body.publication-page .hero .hero-brand {animation:none}
/* Only controls over the photograph use light ink; the reading layer never inverts. */
html[data-opening=paper] .hero .hero-explore {
  --opening-ink:var(--publication-stage-ink);
}
html[data-opening=paper] .hero .hero-explore[data-surface=paper] {
  --opening-ink:var(--publication-ink);
}
html[data-opening=paper] body.publication-page .hero .hero-brand,
html[data-opening=paper] body.publication-page .hero .hero-acronym,
html[data-opening=paper] body.publication-page .hero .hero-introduction :is(.copy p,.repo-author-list,.repo-author-row>.repo-note) {color:var(--opening-copy-ink)}
html[data-opening=paper] body.publication-page .hero .hero-introduction :is(summary,.repo-note) {color:var(--opening-copy-note)!important}
html[data-opening=paper] .site-load-error {color:var(--opening-copy-ink)}
html[data-opening=paper] .site-load-error button {border-color:currentColor}

/* Keep the readable transition on paper while the photograph gains focus. */
html[data-opening=paper] .hero-focus-scrim {background:var(--publication-paper)}

/* One wordmark, one title. The measured transform preserves each font choice. */
.hero-wordmark{display:inline-flex;transform-origin:top left}

/* Material belongs to the sheet's background. These layers never composite
   over text, chart marks, photographs, or video pixels. */
@supports (background-blend-mode: multiply) and (color: color-mix(in srgb, white, transparent)) {
  :root[data-paper-material],
  :root[data-paper-material] :is(body, .article-shell),
  :root[data-paper-material] .hero-enhanced .article-shell::before,
  :root[data-paper-material] body.publication-page #sections::before,
  :root[data-paper-material]:is([data-opening=paper], [data-opening=imprint]) :is(.hero, .hero-stage) {
    --paper-cover: color-mix(in srgb, var(--paper-surface-base, var(--publication-paper)) calc(100% - var(--paper-strength, 34%)), transparent);
    background-color: var(--paper-surface-base, var(--publication-paper)) !important;
    background-image: linear-gradient(var(--paper-cover), var(--paper-cover)), var(--paper-texture, none) !important;
    background-size: auto, var(--paper-scale, 256px) var(--paper-scale, 256px) !important;
    background-repeat: repeat !important;
    background-blend-mode: normal, multiply !important;
  }
  /* The feather uses the article's exact grain and phase, so its end cannot
     reveal a flat-color / textured-paper dividing line. */
  :root[data-paper-material] .hero-enhanced .article-shell::before {
    background-position: 0 0, 0 var(--article-edge);
  }
  /* The compact Contents overlay continues the reading paper. Its opaque base
     keeps underlying prose out; desktop Contents reveals the sheet directly. */
  @media (max-width: 999px) {
    :root[data-paper-material] .article-sidebar,
    :root[data-paper-material] .article-sidebar .section-index[data-open=true] {
      --paper-surface-base: var(--publication-reading-surface);
      --paper-cover: color-mix(in srgb, var(--paper-surface-base) calc(100% - var(--paper-strength, 34%)), transparent);
      background-color: var(--paper-surface-base) !important;
      background-image: linear-gradient(var(--paper-cover), var(--paper-cover)), var(--paper-texture, none) !important;
      background-size: auto, var(--paper-scale, 256px) var(--paper-scale, 256px) !important;
      background-repeat: repeat !important;
      background-blend-mode: normal, multiply !important;
    }
  }
}
/* Graphs reveal the sheet underneath instead of restarting its texture at
   each plot edge. Keep data fills, controls, and inspection surfaces intact. */
:root[data-paper-material] :is(.study-frame, .study-svg, .diagram-scroll, .diagram-svg, .plotwrap, .transfer-shared-guide) {
  background: transparent !important;
}
/* The article is the single paper surface across same-origin figure frames.
   Apply before material initialization as well, avoiding a plain-color tile
   while a lazy figure loads or when the paper effect is disabled. */
:root[data-article-embed="true"],
:root[data-article-embed="true"] :is(body, .study-frame, .study-svg, .diagram-scroll, .diagram-svg, .plotwrap, .transfer-shared-guide) {
  background: transparent !important;
}
/* The still texture needs no motion exception. Contrast and print keep a plain
   sheet, including material inherited by embedded figures. */
@media print, (forced-colors: active), (prefers-contrast: more) {
  :root[data-paper-material] { --paper-texture: none !important; }
}

/* A quiet coordinate-paper surface distinguishes figures from prose.
   This decorative layer never masks marks, labels, focus, or pointer input. */
:is(.study-frame, .graph-paper) {
  --graph-surface-grid: color-mix(in srgb, var(--publication-ink) 1.5%, transparent);
  --graph-surface-bleed: var(--space-4, 16px);
  --graph-surface-fade: var(--space-12, 48px);
  --graph-surface-step: var(--space-6, 24px);
  position: relative;
  isolation: isolate;
}
:is(.study-frame, .graph-paper)::before {
  content: "";
  position: absolute;
  inset: calc(-1 * var(--graph-surface-bleed));
  z-index: -1;
  pointer-events: none;
  background-image:
    linear-gradient(to right, var(--graph-surface-grid) 1px, transparent 1px),
    linear-gradient(to bottom, var(--graph-surface-grid) 1px, transparent 1px);
  background-size: var(--graph-surface-step) var(--graph-surface-step);
  background-position: center;
  --graph-surface-mask:
    linear-gradient(to right, transparent, #000 var(--graph-surface-fade), #000 calc(100% - var(--graph-surface-fade)), transparent),
    linear-gradient(to bottom, transparent, #000 var(--graph-surface-fade), #000 calc(100% - var(--graph-surface-fade)), transparent);
  -webkit-mask-image: var(--graph-surface-mask);
  mask-image: var(--graph-surface-mask);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
}
/* The article owns one continuous grid for each complete figure. Its side
   bleed reaches the paper edge; equal block padding keeps that space clear. */
.graph-paper {
  --graph-surface-bleed: var(--space-section-edge, 64px);
  display: flow-root;
  min-width: 0;
  padding-block: var(--graph-surface-bleed);
}
.graph-paper::before { inset-block: 0; }
/* A second grid inside the iframe would create clipped edges between panels. */
html[data-article-embed] .study-frame::before { content: none; }
@media print, (forced-colors: active), (prefers-contrast: more) {
  :is(.study-frame, .graph-paper)::before { content: none; }
}

/* The illustration is the interface. All instructions remain accessible. */
.paper-robots{position:absolute;inset:0;z-index:4;overflow:hidden;pointer-events:none;contain:layout style}
.paper-robot{position:absolute;left:0;top:0;pointer-events:none}
.paper-robot-carry{position:fixed;inset:0;z-index:40;pointer-events:none}
.paper-robot-companion{position:fixed;inset:0;z-index:25;pointer-events:none}
.paper-robot[hidden],.paper-robot-controls[hidden]{display:none}
.paper-robot[data-motion=pointer]{transition:transform var(--motion-panel) var(--ease-in-out-gentle)}
.paper-robot-view{position:relative;display:block;width:100%;height:100%;padding:0;border:0;background:transparent;color:var(--publication-note);pointer-events:none;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;transition:opacity var(--motion-feedback) var(--ease-out)}
/* Only clear paper is interactive; the drawing and keyboard focus stay whole. */
.paper-robot-hit{position:absolute;inset:0;pointer-events:auto}
.paper-robot[data-dragging] .paper-robot-view{cursor:grabbing;opacity:calc(1 - var(--robot-edge,0)*.72);transition:none}
.paper-robot[data-orbiting] .paper-robot-view{cursor:ew-resize}
.paper-robot-view{-webkit-touch-callout:none}
.paper-robot-view[aria-disabled=true]{cursor:progress}
.paper-robot-canvas{position:relative;display:block;width:100%;height:100%;opacity:0;transition:opacity var(--motion-feedback) var(--ease-out)}
.paper-robot[data-settled] .paper-robot-canvas{opacity:1}
.paper-robot[data-instant=true] .paper-robot-canvas{transition:none}
.paper-robot-canvas canvas{position:relative;display:block;width:100%;height:100%;pointer-events:none}
.paper-robot-ground{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;transform-origin:50% 75%}
.paper-robot-touch{position:absolute;pointer-events:none;opacity:0;transform:translate(-50%,-85%) scale(1.1);transition:opacity var(--motion-feedback) var(--ease-out),transform var(--motion-swap) var(--ease-out)}
.paper-robot[data-pressed=true] .paper-robot-touch{opacity:.7;transform:translate(-50%,-85%) scale(1);transition:none}
.paper-robot-signal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}
.paper-robot[data-state=ready] .paper-robot-signal,.paper-robot-retry,.paper-robot[data-state=error] .paper-robot-loading{display:none}
.paper-robot[data-state=error] .paper-robot-retry{display:block}
.paper-robot[data-state=error] .paper-robot-view{cursor:pointer}
/* Blank paper is the pointer trigger; retain a keyboard-only entry point. */
.paper-robot-add{position:absolute;width:1px;height:1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;pointer-events:none;background:transparent;color:var(--publication-note);font:inherit}
.paper-robot-add:focus-visible{position:relative;width:auto;height:var(--publication-control-size,36px);padding:0 8px;overflow:visible;clip-path:none;pointer-events:auto}
.paper-robot-add:focus-visible{outline:1px solid var(--publication-ink);outline-offset:2px}
/* A quiet keyboard marker replaces the rectangular canvas focus outline. */
.paper-robot .paper-robot-view:focus{outline:none;box-shadow:none}
.paper-robot-view:focus-visible::after{content:"";position:absolute;left:50%;bottom:8%;width:1.5rem;height:2px;transform:translateX(-50%);background:var(--publication-ink);pointer-events:none}
.paper-robot[data-input=pointer] .paper-robot-view:focus-visible::after{display:none}
.paper-robot button,.paper-robot-add{-webkit-tap-highlight-color:transparent}
.paper-robot-add:active{color:var(--publication-ink)}
.paper-robot-controls{position:absolute;bottom:max(16px,env(safe-area-inset-bottom));left:var(--grid-gutter,24px);z-index:4}
.paper-robot-controls[data-populated=true] .paper-robot-add:not(:focus-visible){opacity:0;pointer-events:none}
.paper-robot-status,.paper-robot-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* A single action surface; keyboard focus shares its edge instead of nesting a second box. */
.paper-robot-menu{position:fixed;z-index:41;box-sizing:border-box;max-width:calc(100vw - 16px);padding:0;border:1px solid var(--publication-rule);background:var(--publication-paper);color:var(--publication-ink)}
.paper-robot-menu[hidden]{display:none}
.paper-robot-menu button{display:block;box-sizing:border-box;width:100%;min-height:var(--publication-control-size,36px);padding:0 var(--space-3,12px);border:0;border-radius:0;background:transparent;color:inherit;font:var(--publication-label-type);text-align:left;white-space:nowrap;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent}
.paper-robot-menu[data-input=keyboard] button:focus{outline:1px solid var(--publication-control-focus);outline-offset:0}
@media(hover:hover) and (pointer:fine){.paper-robot-menu button:hover{background:var(--publication-control-hover)}}
.paper-robot-menu button:active{background:var(--publication-control-selected);color:var(--publication-control-on-selected)}
@media(hover:hover) and (pointer:fine){.paper-robot-add:hover{color:var(--publication-ink)}}
@media(prefers-reduced-motion:reduce){.paper-robot[data-motion=pointer]{transition:none}.paper-robot .paper-robot-canvas,.paper-robot[data-settled] .paper-robot-canvas{transform:none;transition:opacity var(--motion-feedback) var(--ease-out)}.paper-robot[data-instant=true] .paper-robot-canvas{transition:none}.hero-stage>.paper-robots{height:100svh}.paper-robot-controls{top:calc(100svh - 60px);bottom:auto}}
@media(forced-colors:active),print{.paper-robots,.paper-robot-controls,.paper-robot-carry,.paper-robot-companion,.paper-robot-menu{display:none}}
@media(prefers-reduced-motion:reduce){.paper-robot .paper-robot-touch,.paper-robot[data-pressed=true] .paper-robot-touch{transform:translate(-50%,-85%);transition:opacity var(--motion-feedback) var(--ease-out)}}
@media(prefers-reduced-motion:reduce){.paper-robot-view{transition:opacity var(--motion-feedback) var(--ease-out)}.paper-robot[data-dragging] .paper-robot-view{transform:none;opacity:calc(.85 - var(--robot-edge,0)*.6)}}

@font-face{font-family:SEARPage-yujisyuku;src:url('assets/og-studio/fonts/yujisyuku-latin.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
:root{--publication-logo-size:calc(var(--publication-logo-title-size,4rem) * 1.65)}
html[data-logo-opening] body.publication-page .hero .hero-brand{animation:none}
.hero .hero-lettering{display:block}
.hero .hero-logo{display:none}
.hero .hero-logo,.footer-logo{background:currentColor;-webkit-mask:url('assets/title-logo/twin-heat.svg?v=calligraphy-30-2') center/contain no-repeat;mask:url('assets/title-logo/twin-heat.svg?v=calligraphy-30-2') center/contain no-repeat;pointer-events:none}
.hero .hero-logo[data-brush-active],.footer-logo[data-brush-active]{background:none;-webkit-mask:none;mask:none}
.hero-logo>svg,.footer-logo>svg{display:block;width:100%;height:100%;overflow:visible}
html[data-logo-opening] .hero .hero-logo{display:block;position:absolute;left:50%;top:50%;width:var(--publication-logo-size);aspect-ratio:1;transform:translate(-50%,-50%);opacity:0}
html[data-logo-opening] .hero :is(.hero-logo,.hero-lettering){transition:opacity var(--motion-swap,180ms) var(--ease-out)}
html[data-logo-ink=pending] .hero .hero-logo{visibility:hidden}
html[data-logo-state=logo] .hero .hero-logo{opacity:1;transition-duration:var(--motion-opening,500ms);transition-delay:var(--motion-swap,180ms);transition-timing-function:var(--ease-out-gentle,var(--ease-out))}
html[data-logo-state=logo] .hero .hero-lettering{opacity:0;transition-delay:0s}
html[data-logo-state=title] .hero .hero-lettering{opacity:1;transition-duration:var(--motion-opening,500ms);transition-delay:var(--motion-swap,180ms);transition-timing-function:var(--ease-out-gentle,var(--ease-out))}
html[data-logo-state=title] .hero .hero-logo{opacity:0;transition-delay:0s}
html[data-logo-immediate=true] .hero :is(.hero-logo,.hero-lettering){transition:none}
.publication-page .publication-footer{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto 1fr;align-items:start;justify-items:center;gap:0;width:100%;min-block-size:100svh;min-block-size:100dvh;margin:0;padding:var(--space-section-edge) var(--grid-gutter);color:var(--publication-ink)}
.footer-logo{grid-row:2;display:block;width:var(--publication-logo-size);aspect-ratio:1}
.footer-links{grid-row:3;align-self:start;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2);margin-block-start:var(--space-12)}
.footer-link{display:inline-flex;align-items:center;box-sizing:border-box;min-block-size:var(--publication-control-size);padding:var(--space-control-padding-block) var(--space-3);border:0;border-radius:0;box-shadow:none;font:var(--publication-label-type);letter-spacing:var(--publication-label-spacing);color:var(--publication-note);background:transparent;text-decoration:none;white-space:nowrap}
.footer-link:focus-visible{outline:2px solid var(--publication-control-focus);outline-offset:3px;transition:none}
.footer-link:active{opacity:.8}
.footer-link[aria-disabled=true]{opacity:.55;cursor:default}
@media(hover:hover) and (pointer:fine){.footer-link:not([aria-disabled=true]):hover{color:var(--publication-ink);background:var(--publication-control-hover)}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .footer-link{transition:background-color var(--motion-feedback) var(--ease-out),color var(--motion-feedback) var(--ease-out)}
}
.publication-footer:is([data-logo-ink=waiting],[data-logo-ink=pending]) .footer-logo{visibility:hidden}
/* Keep the action hidden before enhancement as well as throughout the draw. */
.publication-footer:not(:where([data-logo-ink=settled],[data-logo-ink=revealing],[data-logo-ink=static])) .footer-links{visibility:hidden}
html[data-site-state=error] .publication-footer :is(.footer-logo,.footer-links){visibility:visible}
@media(max-height:480px){
 .publication-page .publication-footer{padding-block:var(--space-8)}
 .footer-links{margin-block-start:var(--space-8)}
}
@media(prefers-reduced-motion:reduce){
 html[data-logo-opening] .hero .hero-logo{display:none}
 html[data-logo-opening] .hero .hero-lettering{opacity:1;transition:none}
 .publication-page .publication-footer :is(.footer-logo,.footer-links){visibility:visible}
}
@media print{
 .publication-page .publication-footer{min-block-size:0}
 .publication-page .publication-footer :is(.footer-logo,.footer-links){visibility:visible}
}
