/* Sketch 05: a self-playing film in DOM and CSS.
   film.js only switches data-scene, data-beat and b1..bn on #st; every picture is drawn here,
   so any scene's final state is a pure function of those attributes. Colours: PixelKit Paper / Charcoal. */
@font-face{font-family:"JetBrains Mono";src:url("../fonts/JetBrainsMono-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/JetBrainsMono-Medium.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Fixel Text";src:url("../fonts/FixelText-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Fixel Text";src:url("../fonts/FixelText-Medium.woff2") format("woff2");font-weight:500;font-display:swap}

:root{
  color-scheme:light dark;
  --paper:#f3f3f2;--card:#fbfbf7;--ink:#191a1c;--muted:#4c4e53;--faint:#65676d;
  --hair:rgba(20,22,26,.10);--rule:rgba(20,22,26,.26);
  --coral:#c04f31;--blue:#3a6cbf;--mint:#2f8f63;--violet:#8256b8;--warn:#96690a;
  --mono:"JetBrains Mono",ui-monospace,SF Mono,Menlo,Consolas,monospace;
  --sans:"Fixel Text",-apple-system,SF Pro Text,Inter,Segoe UI,system-ui,sans-serif;
  --hand:Chalkboard SE,Comic Sans MS,Comic Neue,cursive;
  --e:cubic-bezier(.6,0,.2,1);
}
@media (prefers-color-scheme:dark){:root{
  --paper:#151517;--card:#1c1c1f;--ink:#d9d9d5;--muted:#a8a9a5;--faint:#83847f;
  --hair:rgba(255,255,255,.10);--rule:rgba(255,255,255,.26);
  --coral:#d0603f;--blue:#4a7dd6;--mint:#379d70;--violet:#9268cc;--warn:#b8860b;
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.5 var(--sans)}
.defs{position:absolute}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

.top{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;border-bottom:1px solid var(--hair);font:500 14px/1.4 var(--mono)}
.top nav{display:flex;flex-wrap:wrap;gap:4px 16px;justify-content:flex-end}
.top a{color:var(--muted);text-decoration:none}
.top a:hover{color:var(--ink);text-decoration:underline}
.top a[aria-current]{color:var(--ink);text-decoration:underline;text-underline-offset:4px}

main{max-width:1120px;margin:0 auto;padding:16px 24px 64px}
h1{font:500 24px/1.2 var(--sans);margin:0 0 4px}
.lead{margin:0 0 16px;font-size:15px;color:var(--muted);max-width:640px}

/* ---------- stage ---------- */
.stage{position:relative;aspect-ratio:16/9;width:min(100%,max(420px,calc((100svh - 330px)*16/9)));margin:0 auto;background:var(--card);border:1px solid var(--hair);overflow:hidden;container-type:size}
.st{position:absolute;inset:0;font:400 var(--fs)/1.35 var(--mono);
  --fs:clamp(10.5px,1.25cqw,14px);
  --ww:21cqw;--pw:17cqw;--ph:30cqw;--jw:21cqw;
  --nbx:13.5;--nby:45;--xlx:37.8;--xly:45;--vbx:62.2;--vby:45;--c1x:86.5;--c1y:45;--chy:-23;
  --phx:50;--phy:35;--ly:66;
  --j1x:13.5;--j2x:37.8;--j3x:62.2;--j4x:86.5;--j1y:83;--j2y:83;--j3y:83;--j4y:83}
.el{position:absolute;margin:0;left:calc(var(--x)*1%);top:calc(var(--y)*1%);
  transform:translate(-50%,-50%) scale(var(--s,1));opacity:var(--o,0);
  transition:left .9s var(--e),top .9s var(--e),transform .9s var(--e),opacity .5s ease var(--od,0s)}

/* the three natures. A person: a thick uneven line. A program: a thin exact one. A model: a dashed, slightly uneven one. */
.k-human::before,.k-model::before,.k-prog::before{content:"";position:absolute;inset:0;pointer-events:none}
.k-human::before{border:2.5px solid var(--ink)}
.k-prog::before{border:1px solid var(--ink)}
.k-model::before{border:1.5px dashed var(--ink)}

/* ---------- 1-2: sentence ---------- */
.who{--x:50;--y:24;color:var(--faint);white-space:nowrap}
.sent{--x:50;--y:48;width:76cqw;text-align:center;font:500 clamp(20px,3.3cqw,38px)/1.32 var(--sans);text-wrap:balance}
.ch{opacity:0}
.ph{transition:background-color .4s,box-shadow .4s}
[data-scene="1"] .who,[data-scene="1"] .sent{--o:1}
[data-scene="1"].b1 .ch{opacity:1;transition:opacity 0s calc(var(--i)*36ms)}
[data-scene="2"] .sent{--o:1;--y:20;--s:.64}
[data-scene="2"] .ch{opacity:1}
[data-scene="2"].b1 .p1,[data-scene="2"].b2 .p2,[data-scene="2"].b3 .p3{box-shadow:inset 0 -.12em 0 var(--ink)}
[data-scene="2"][data-beat="1"] .p1,[data-scene="2"][data-beat="2"] .p2,[data-scene="2"][data-beat="3"] .p3{box-shadow:inset 0 -.12em 0 var(--coral);background:color-mix(in srgb,var(--coral) 20%,transparent)}

.gl{--y:66;width:26cqw;display:flex;flex-direction:column;gap:.5em;padding:1em 1.1em;border-top:2px solid var(--ink)}
.g1{--x:19}.g2{--x:50}.g3{--x:81}
.gl .gk{color:var(--faint)}
.gl b{font:500 clamp(14px,1.75cqw,20px)/1.25 var(--sans)}
.gx{display:flex;flex-wrap:wrap;gap:.45em;align-items:center;margin-top:.2em}
.gx i{font-style:normal;border:1px solid var(--rule);padding:.1em .5em}
.gx i.none{border-style:dashed;color:var(--coral)}
.gx u{text-decoration:none;color:var(--faint)}
[data-scene="2"] .gl{--s:.94}
[data-scene="2"].b1 .g1,[data-scene="2"].b2 .g2,[data-scene="2"].b3 .g3{--o:1;--s:1}
[data-scene="2"][data-beat="1"] .g1,[data-scene="2"][data-beat="2"] .g2,[data-scene="2"][data-beat="3"] .g3{border-top-color:var(--coral)}

/* ---------- 3-4: windows ---------- */
.win{width:var(--ww);background:var(--paper);border:1px solid var(--ink);transition-delay:var(--d,0s),var(--d,0s),var(--d,0s),var(--od,0s)}
.win.k-human{border-color:transparent}
.nb{--x:var(--nbx);--y:var(--nby);--d:0s}
.xl{--x:var(--xlx);--y:var(--xly);--d:.08s}
.vb{--x:var(--vbx);--y:var(--vby);--d:.16s}
.c1{--x:var(--c1x);--y:var(--c1y);--d:.24s}
.wt{padding:.45em .7em;border-bottom:1px solid var(--rule);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nb .wt{border-bottom-style:dashed}
.wb{padding:.5em .7em .7em;height:8.4em;overflow:hidden}
.wb p{margin:0;display:flex;justify-content:space-between;gap:.5em;padding:.28em 0;color:var(--faint);white-space:nowrap}
.wb p.hit{color:var(--ink)}
.wb.hand{font-family:var(--hand);font-size:1.08em}
.wb.grid p{border-bottom:1px solid var(--hair)}
.wb.grid p span{border-left:1px solid var(--hair);padding-left:.6em;min-width:2.6em;text-align:right}
.wb.chat{display:flex;flex-direction:column;align-items:flex-start;gap:.35em}
.wb.chat .bub{display:block;border:1px solid var(--rule);padding:.25em .55em;white-space:normal}
.wb.chat .bub.me{align-self:flex-end;border-color:var(--ink);color:var(--ink)}
.wb.chat .bub.q-v2{color:var(--ink)}
mark{background:none;color:inherit;transition:box-shadow .4s,background-color .4s}
.q{opacity:0;transition:opacity .35s .55s}
.q-xl{position:relative}
.q-xl s{text-decoration:none;transition:opacity .3s}
.q-xl b{font-weight:500;position:absolute;right:0;top:0;opacity:0;transition:opacity .3s .5s}
.q-c1{transition:opacity .35s,color .35s}

[data-scene="3"] .win{--s:.94}
[data-scene="3"].b1 .nb,[data-scene="3"].b2 .xl,[data-scene="3"].b3 .vb,[data-scene="3"].b4 .c1{--o:1;--s:1}
[data-scene="3"].b5 mark{box-shadow:inset 0 -.14em 0 var(--coral);background:color-mix(in srgb,var(--coral) 20%,transparent)}
.note{white-space:nowrap;color:var(--ink);font-weight:500;display:flex;align-items:center;gap:.7em}
.n3{--x:50;--y:83;font-size:clamp(13px,1.6cqw,18px)}
[data-scene="3"].b5 .n3{--o:1}

[data-scene="4"] .win{--o:.5}
[data-scene="4"][data-beat="0"] .win,[data-scene="4"][data-beat="5"] .win,
[data-scene="4"][data-beat="1"] .nb,[data-scene="4"][data-beat="2"] .xl,[data-scene="4"][data-beat="3"] .vb,[data-scene="4"][data-beat="4"] .xl{--o:1}
[data-scene="4"].b1 .q-nb,[data-scene="4"].b2 .q-xl,[data-scene="4"].b3 .q-v1,[data-scene="4"].b3 .q-v2,[data-scene="4"] .q-c1{opacity:1}
[data-scene="4"].b3 .q-v2{transition-delay:1.2s}
[data-scene="4"].b4 .q-xl s{opacity:.001}
[data-scene="4"].b4 .q-xl b{opacity:1}
[data-scene="4"].b5 .q-c1{color:var(--coral);font-weight:500}
[data-scene="4"].b5 .c1{border-color:var(--coral)}

/* the number a person carries from window to window */
.chip{--x:var(--nbx);--y:calc(var(--nby) + var(--chy));--s:.6;width:3.2em;height:2.1em;background:var(--coral);color:#fff;font-weight:500;font-size:1.15em;transition-duration:.75s,.75s,.75s,.3s}
.chip b{position:absolute;inset:0;display:grid;place-items:center;font-weight:500;opacity:0;transition:opacity .25s .3s}
[data-scene="4"].b1 .chip{--o:1;--s:1}
[data-scene="4"].b2 .chip{--x:var(--xlx);--y:calc(var(--xly) + var(--chy))}
[data-scene="4"].b3 .chip{--x:var(--vbx);--y:calc(var(--vby) + var(--chy))}
[data-scene="4"].b4 .chip{--x:var(--xlx);--y:calc(var(--xly) + var(--chy))}
[data-scene="4"].b5 .chip{--o:0}
[data-scene="4"] .chip .c12{opacity:1}
[data-scene="4"].b3 .chip .c12{opacity:0}
[data-scene="4"][data-beat="3"] .chip .cq{opacity:1}
[data-scene="4"].b4 .chip .c10{opacity:1}
/* each carry is a hop: a new animation name per beat restarts it */
@keyframes hop1{50%{margin-top:-2.2em}}@keyframes hop2{50%{margin-top:-2.2em}}@keyframes hop3{50%{margin-top:-2.2em}}
[data-scene="4"][data-beat="2"] .chip{animation:hop1 .75s var(--e)}
[data-scene="4"][data-beat="3"] .chip{animation:hop2 .75s var(--e)}
[data-scene="4"][data-beat="4"] .chip{animation:hop3 .75s var(--e)}

.n4{--x:50;--y:85;font-size:clamp(13px,1.6cqw,18px)}
.pips{display:flex;gap:.3em}
.pips i{width:.8em;height:.8em;border:1px solid var(--ink);transition:background-color .3s .5s}
.n4b{color:var(--coral);opacity:0;transition:opacity .4s;padding-left:.9em;border-left:1px solid var(--rule)}
[data-scene="4"].b1 .n4{--o:1}
[data-scene="4"].b1 .pips i:nth-child(1),[data-scene="4"].b2 .pips i:nth-child(2),[data-scene="4"].b3 .pips i:nth-child(3),[data-scene="4"].b4 .pips i:nth-child(4){background:var(--ink)}
[data-scene="4"].b5 .n4b{opacity:1}

/* ---------- 5-8: one screen and the side ---------- */
[data-scene="5"] .win{--o:1}
[data-scene="5"] .q,[data-scene="8"] .q{opacity:1;transition:none}
[data-scene="5"] .q-xl s,[data-scene="8"] .q-xl s{opacity:.001}
[data-scene="5"] .q-xl b,[data-scene="8"] .q-xl b{opacity:1}
[data-scene="5"].b1 .win,[data-scene="6"] .win,[data-scene="7"] .win{--x:var(--phx);--y:var(--phy);--s:.22;--o:0;--od:.5s}

.phone{--x:var(--phx);--y:var(--phy);--s:.7;width:var(--pw);height:var(--ph);background:var(--paper);border:2px solid var(--ink);border-radius:1.6em;padding:1.5em .7em 1.2em}
.phone::after{content:"";position:absolute;left:50%;top:.6em;width:22%;height:.3em;margin-left:-11%;background:var(--rule)}
[data-scene="5"].b1 .phone,[data-scene="6"] .phone,[data-scene="7"] .phone,[data-scene="8"] .phone{--o:1;--s:1}
[data-scene="5"].b1 .phone{--od:.45s;transition-delay:.3s,.3s,.3s,.45s}
.scr{position:absolute;inset:1.5em .7em 1.2em;display:flex;flex-direction:column;gap:.45em;opacity:0;transition:opacity .4s}
.scr .sh{color:var(--faint);padding-bottom:.4em;border-bottom:1px solid var(--rule)}
.scr p{margin:0;display:flex;justify-content:space-between;gap:.5em;padding:.3em 0;border-bottom:1px solid var(--hair);white-space:nowrap;overflow:hidden}
.scr p:first-of-type{color:var(--ink);font-weight:500}
.scr p{color:var(--faint)}
.scr b{font:500 1.12em/1.25 var(--sans)}
.scr .aka,.scr .conf{color:var(--faint)}
.scr-rec .aka{margin-top:.4em;padding-top:.5em;border-top:1px solid var(--hair)}
[data-scene="5"] .scr-list,[data-scene="6"] .scr-list,[data-scene="7"] .scr-cam,[data-scene="8"] .scr-rec{opacity:1}

.view{position:relative;flex:1 1 0;min-height:0;border:1px dashed var(--rule);overflow:hidden;display:grid;place-items:center}
.ring{width:46%;aspect-ratio:1;border-radius:50%;border:.75em solid var(--muted);box-shadow:0 0 0 1.5px var(--ink),inset 0 0 0 1.5px var(--ink)}
.scan{position:absolute;left:0;right:0;top:0;height:2px;background:var(--violet);opacity:0}
@keyframes scan{from{top:4%}to{top:94%}}
[data-scene="7"][data-beat="1"] .scan{opacity:1;animation:scan 1.1s ease-in-out infinite alternate}
.card{display:flex;flex-direction:column;gap:.15em;opacity:0;transition:opacity .4s}
.card .conf{color:var(--violet)}
.btn{position:relative;text-align:center;padding:.55em;border:1.5px solid var(--ink);font-weight:500;opacity:0;transition:opacity .4s .2s,background-color .25s,color .25s}
.tap{position:absolute;left:50%;top:50%;width:2.6em;height:2.6em;margin:-1.3em;border:2px solid var(--coral);border-radius:50%;opacity:0;transform:scale(1.6);transition:opacity .3s,transform .5s}
.saved{position:absolute;left:0;right:0;bottom:0;text-align:center;padding:.55em;background:var(--mint);color:#fff;font-weight:500;opacity:0;transition:opacity .3s}
[data-scene="7"].b2 .card,[data-scene="7"].b2 .btn{opacity:1}
[data-scene="7"][data-beat="3"] .tap{opacity:1;transform:scale(1)}
[data-scene="7"].b3 .btn{background:var(--ink);color:var(--paper)}
[data-scene="7"].b4 .saved{opacity:1}

.you{--x:74;--y:35;padding:.6em .9em;white-space:nowrap;font-weight:500}
.you::after{content:"";position:absolute;right:100%;top:50%;width:3.2cqw;border-top:2px solid var(--ink)}
.you span{display:block}
.you .y7{position:absolute;inset:0;display:grid;place-items:center;opacity:0}
[data-scene="6"].b5 .you,[data-scene="7"] .you{--o:1}
[data-scene="7"] .you{color:transparent}
[data-scene="7"] .you .y7{opacity:1;color:var(--ink)}

.line{--x:50;--y:var(--ly);width:94cqw;height:0;border-top:1px dashed var(--rule)}
.line span{position:absolute;left:0;top:.5em;color:var(--faint);white-space:nowrap}
[data-scene="5"].b2 .line,[data-scene="6"] .line,[data-scene="7"] .line{--o:1}

.legend{--x:97;--y:calc(var(--ly) + 3.6);transform:translate(-100%,-50%);display:flex;gap:1.4em;white-space:nowrap;color:var(--muted)}
.lg{display:flex;align-items:center;gap:.5em}
.lg::before{content:"";width:1.7em;height:0}
.lg.h::before{border-top:3px solid var(--ink);transform:rotate(-3deg)}
.lg.p::before{border-top:1px solid var(--ink)}
.lg.m::before{border-top:2px dashed var(--ink)}
[data-scene="6"].b5 .legend,[data-scene="7"] .legend{--o:1}

.job{width:var(--jw);min-height:5.6em;padding:.7em .85em;background:var(--paper);display:flex;flex-direction:column;justify-content:center}
.j1{--x:var(--j1x);--y:calc(var(--j1y) - 14);--d:0s}
.j2{--x:var(--j2x);--y:calc(var(--j2y) - 14);--d:.1s}
.j3{--x:var(--j3x);--y:calc(var(--j3y) - 14);--d:.2s}
.j4{--x:var(--j4x);--y:calc(var(--j4y) - 14);--d:.3s}
.job{transition-delay:var(--d),var(--d),var(--d),var(--d)}
[data-scene="5"].b3 .job,[data-scene="6"] .job,[data-scene="7"] .job{--o:1}
[data-scene="5"].b3 .j1,[data-scene="6"] .j1,[data-scene="7"] .j1{--y:var(--j1y)}
[data-scene="5"].b3 .j2,[data-scene="6"] .j2,[data-scene="7"] .j2{--y:var(--j2y)}
[data-scene="5"].b3 .j3,[data-scene="6"] .j3,[data-scene="7"] .j3{--y:var(--j3y)}
[data-scene="5"].b3 .j4,[data-scene="6"] .j4,[data-scene="7"] .j4{--y:var(--j4y)}
[data-scene="6"] .job,[data-scene="7"] .job{transition-delay:0s}
.job::before{opacity:0;transition:opacity .4s}
.job::after{content:"";position:absolute;inset:0;border:1px dotted var(--rule);pointer-events:none;transition:opacity .4s}
.job .was{color:var(--muted);transition:opacity .35s}
.job .now{position:absolute;inset:0;padding:.7em .85em;display:flex;flex-direction:column;justify-content:center;gap:.25em;opacity:0;transition:opacity .4s .15s}
.job .now b{font:500 1.08em/1.2 var(--sans)}
.job .now em{font-style:normal;color:var(--faint);transition:opacity .3s}
.k-model .now em{color:var(--violet)}
.k-prog .now em{color:var(--blue)}
.job .act{position:absolute;left:.85em;right:.85em;bottom:.7em;color:var(--mint);font-weight:500;opacity:0;transition:opacity .3s}
[data-scene="6"].b1 .j1 .now,[data-scene="6"].b2 .j2 .now,[data-scene="6"].b3 .j3 .now,[data-scene="6"].b4 .j4 .now,[data-scene="7"] .job .now{opacity:1}
[data-scene="6"].b1 .j1 .was,[data-scene="6"].b2 .j2 .was,[data-scene="6"].b3 .j3 .was,[data-scene="6"].b4 .j4 .was,[data-scene="7"] .job .was{opacity:0}
[data-scene="6"].b1 .j1::before,[data-scene="6"].b2 .j2::before,[data-scene="6"].b3 .j3::before,[data-scene="6"].b4 .j4::before,[data-scene="7"] .job::before{opacity:1}
[data-scene="6"].b1 .j1::after,[data-scene="6"].b2 .j2::after,[data-scene="6"].b3 .j3::after,[data-scene="6"].b4 .j4::after,[data-scene="7"] .job::after{opacity:0}
[data-scene="7"].b2 .k-model .act,[data-scene="7"].b4 .k-prog .act{opacity:1}
[data-scene="7"].b2 .k-model .now em,[data-scene="7"].b4 .k-prog .now em{opacity:0}
[data-scene="7"].b2 .j2 .act{transition-delay:.5s}
[data-scene="7"].b4 .j4 .act{transition-delay:.5s}

/* 8: before and after, side by side */
[data-scene="8"] .phone{--x:74;--y:40}
[data-scene="8"] .win{--s:.66}
[data-scene="8"].b1 .win{--o:.6}
[data-scene="8"] .nb{--x:14;--y:28}[data-scene="8"] .xl{--x:36;--y:28}
[data-scene="8"] .vb{--x:14;--y:55}[data-scene="8"] .c1{--x:36;--y:55}
.cap8{white-space:nowrap;color:var(--faint)}
.was8{--x:25;--y:9}.now8{--x:74;--y:9;color:var(--ink);font-weight:500}
[data-scene="8"].b1 .cap8{--o:1}
.closing{--x:50;--y:87;width:80cqw;text-align:center;font:500 clamp(17px,2.4cqw,28px)/1.3 var(--sans);text-wrap:balance}
[data-scene="8"].b2 .closing{--o:1}

/* ---------- caption and controls ---------- */
.say{margin:12px 0 0;min-height:5.2em;max-width:760px;font-size:17px;line-height:1.5}
.say-n{display:block;font:500 13px/1.6 var(--mono);color:var(--faint)}
.bar{display:flex;align-items:center;gap:8px;margin-top:12px}
.ctl{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;height:44px;padding:0 12px;background:var(--card);color:var(--ink);border:1px solid var(--rule);font:500 14px/1 var(--mono);cursor:pointer}
.ctl:hover{border-color:var(--ink)}
.ctl svg{fill:currentColor;flex:none}
.ctl.main{background:var(--ink);color:var(--paper);border-color:var(--ink);min-width:124px}
.ctl .i-pause{display:none}
.film.playing .ctl .i-pause{display:block}
.film.playing .ctl .i-play{display:none}
.prog{flex:1;display:flex;gap:4px;list-style:none;margin:0 0 0 8px;padding:0;min-width:0}
.prog li{flex:1 1 0;min-width:0}
.prog button{display:block;width:100%;height:44px;padding:0;border:0;background:none;cursor:pointer;position:relative}
.prog button::before,.prog button i{content:"";position:absolute;left:0;top:50%;height:3px;margin-top:-1.5px}
.prog button::before{right:0;background:var(--rule)}
.prog button i{width:0;background:var(--ink)}
.prog li.done button i{width:100%}
.prog li.cur button i{width:100%}
.prog li.cur.run button i{animation:fill var(--dur) linear both}
.film:not(.playing) .prog li.cur.run button i{animation-play-state:paused}
.prog button:hover::before{background:var(--muted)}
@keyframes fill{from{width:0}to{width:100%}}

.script{margin-top:24px;max-width:760px;border-top:1px solid var(--hair);padding-top:12px}
.script summary{cursor:pointer;font:500 14px/1.6 var(--mono);color:var(--muted)}
.script ol{margin:12px 0 0;padding:0;list-style:none;display:grid;gap:12px}
.script li button{all:unset;cursor:pointer;display:block;font:500 13px/1.6 var(--mono);color:var(--faint)}
.script li button:hover{color:var(--ink);text-decoration:underline}
.script li button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.script li p{margin:0;color:var(--muted)}
.script li[aria-current] p{color:var(--ink)}

/* ---------- phone width: an upright stage, two columns ---------- */
@media (max-width:700px){
  .top{padding:10px 16px;font-size:13px}
  main{padding:16px 16px 48px}
  h1{font-size:20px}
  .lead{font-size:14px;line-height:1.4;margin-bottom:12px}
  .stage{aspect-ratio:10/14;width:min(100%,max(260px,calc((100svh - 300px)*10/14)))}
  .st{--fs:clamp(9.5px,3cqw,13px);
    --ww:45cqw;--pw:44cqw;--ph:66cqw;--jw:45cqw;
    --nbx:26;--nby:29;--xlx:74;--xly:29;--vbx:26;--vby:62;--c1x:74;--c1y:62;--chy:-14.5;
    --phx:50;--phy:28;--ly:57;
    --j1x:26;--j2x:74;--j3x:26;--j4x:74;--j1y:68;--j2y:68;--j3y:84;--j4y:84}
  .who{--y:20}
  .sent{--y:46;width:88cqw;font-size:clamp(19px,6.4cqw,27px)}
  [data-scene="2"] .sent{--y:15;--s:.72}
  .gl{width:88cqw;padding:.7em .2em;gap:.3em}
  .g1{--x:50;--y:42}.g2{--x:50;--y:62}.g3{--x:50;--y:82}
  .gl b{font-size:clamp(14px,4.4cqw,18px)}
  .n3{--y:88;font-size:13px}
  .n4{--y:86;font-size:12px;flex-wrap:wrap;justify-content:center;width:90cqw;white-space:normal;row-gap:.3em}
  .you{--x:50;--y:53.3;padding:.35em .7em;background:var(--paper)}
  .you::after{display:none}
  .legend{--x:50;--y:96;transform:translate(-50%,-50%)}
  .job{min-height:6.4em}
  [data-scene="8"] .phone{--x:50;--y:56;--s:.78}
  [data-scene="8"] .win{--s:.46}
  [data-scene="8"] .nb{--x:13;--y:14}[data-scene="8"] .xl{--x:37.7;--y:14}
  [data-scene="8"] .vb{--x:62.3;--y:14}[data-scene="8"] .c1{--x:87;--y:14}
  .was8{--x:50;--y:3.5}.now8{--x:50;--y:32}
  .closing{--y:92;width:90cqw;font-size:clamp(16px,5cqw,21px)}
  .say{font-size:15px;min-height:9em}
  .ctl.main{min-width:0}
  .ctl.main span{display:none}
  .prog{margin-left:4px;gap:3px}
}

/* a still (a jump while paused, ?s=N, reduced motion) snaps into its final state */
.st.still *,.st.still *::before,.st.still *::after{transition:none!important;animation:none!important}

/* ---------- reduced motion: stills only ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
  .prog li.cur button i{width:100%}
}
@media print{.bar{display:none}.script[open],.script{display:block}}
