/* Digital strategy route (choreography sheet programmes__cameroon-textile__digital-strategy). Every class, variable and
   keyframe is prefixed ds-. Pre-states live only under :root[data-m-go]; every scroll-linked rule sits inside
   @supports (animation-timeline:view()) and is written in longhands. Transform, opacity, clip-path and filter only. */
:root{--ds-night:#072d2b;--ds-deep:#04201e;--ds-signal-bg:#062329;--ds-forest:#0d4744;--ds-sage:#6bb68f;--ds-sage-lt:#bfe4cf;--ds-ochre:#c98a2b;--ds-ochre-lt:#f0ca8e;--ds-ochre-ink:#6b460e;--ds-indigo:#2c3e7a;--ds-indigo-lt:#b8c6f0;--ds-paper:#f6f4ef;--ds-ink:#13211f;--ds-mute-d:#d8e8df;--ds-mute-l:#364740;--ds-gut:max(48px,calc((100vw - 1440px) / 2));--ds-out:cubic-bezier(.25,.75,.2,1);--ds-glide:cubic-bezier(.42,0,.2,1)}
@media(max-width:1000px){:root{--ds-gut:28px}}
@media(max-width:640px){:root{--ds-gut:20px}}
[data-page="prog-a-digital"] main{overflow-x:clip;timeline-scope:--ds-cold,--ds-close}
.ds-sec{position:relative;overflow-x:clip}
.ds-signal{font:600 13px/1.5 var(--gft-font-mono);letter-spacing:.09em;text-transform:uppercase}
.ds-note{font:13px/1.68 var(--gft-font-mono);color:var(--ds-mute-l);max-width:64ch}
.ds-note--dark,.ds-b2 .ds-note{color:var(--ds-mute-d)}
:root:not([data-ds-ready]) .ds-needs-js{display:none!important}
:root[data-ds-ready] .ds-nojs{display:none!important}

/* section entrances act as triggers when marked .ds-trig/.ds-own: the wrapper keeps its place, its children carry the authored choreography */
:root[data-m-go] :is(.ds-trig,.ds-own)[data-m]:not([data-m-in]){opacity:1;transform:none;clip-path:none}
:root[data-m-go] :is(.ds-trig,.ds-own)[data-m][data-m-in]{animation-name:none}

/* gate standard block entrances on [data-ds-in] (viewport-centre entry) with 860ms glide so 250ms mid-frames show clear motion */
:root[data-m-go] .ds-sec :is([data-m=weft],[data-m=comb],[data-m=card],[data-m=pick],[data-m=shed],[data-m=heddle],[data-m=satin-float],[data-m=beat-up],[data-m=ply],[data-m=unspool]):not(.ds-trig):not(.ds-own):not([data-ds-in]){animation-name:none!important;opacity:.14;transform:translateY(42px)}
:root[data-m-go] .ds-sec [data-m=weft]:not(.ds-trig):not(.ds-own):not([data-ds-in]){transform:translateX(-48px)}
:root[data-m-go] .ds-sec [data-m=comb]:not(.ds-trig):not(.ds-own):not([data-ds-in]){transform:translateY(-38px)}
:root[data-m-go] .ds-sec [data-m=ply]:not(.ds-trig):not(.ds-own):not([data-ds-in]){transform:translateX(48px)}
:root[data-m-go] .ds-sec :is([data-m=weft],[data-m=comb],[data-m=card],[data-m=pick],[data-m=shed],[data-m=heddle],[data-m=satin-float],[data-m=beat-up],[data-m=ply],[data-m=unspool]):not(.ds-trig):not(.ds-own)[data-ds-in]{animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-iteration-count:1;animation-direction:normal;animation-fill-mode:backwards}

/* heads */
.ds-head{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:20px 56px;align-items:end;margin-bottom:34px}
.ds-head .gft-eyebrow{margin-bottom:14px}
.ds-head h2{font-size:clamp(2.2rem,4.1vw,4.2rem);line-height:1.03}
.ds-head--compact{margin-bottom:24px}.ds-head--compact h2{font-size:clamp(2rem,3.4vw,3.5rem)}
.ds-lede{font-size:clamp(15px,1.12vw,17px);line-height:1.7;max-width:58ch}
.ds-head--dark,.ds-b2,.ds-b3,.ds-b4,.ds-b6,.ds-b7,.ds-b8,.ds-b9{color:var(--ds-paper)}
:is(.ds-b2,.ds-b3,.ds-b4,.ds-b6,.ds-b8,.ds-b9) .gft-eyebrow{color:var(--ds-sage-lt)}
.ds-b7 .gft-eyebrow{color:#d8efe2}
:is(.ds-b2,.ds-b3,.ds-b4,.ds-b6,.ds-b7,.ds-b8,.ds-b9) .ds-lede{color:#e2eee8}
.ds-b5 .gft-eyebrow{color:#235842}
.ds-b5 .ds-lede{color:#2c3d37}

/* ---------- segmented controls (native radios) ---------- */
.ds-seg{border:0;margin:0;padding:0;min-width:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0}
.ds-seg legend{font:600 13px/1.5 var(--gft-font-mono);letter-spacing:.09em;text-transform:uppercase;margin-bottom:10px;padding:0;color:var(--ds-sage-lt)}
.ds-b5 .ds-seg legend{color:#235842}
.ds-seg__opt{position:relative;display:block;cursor:pointer}
.ds-seg__opt input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.ds-seg__opt>span{display:flex;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:8px 14px;border:1px solid currentColor;margin-left:-1px;font-size:15px;font-weight:650;line-height:1.2;text-align:center;transition:background-color 220ms,color 220ms,border-color 220ms}
.ds-seg__opt b{font:600 13px var(--gft-font-mono);letter-spacing:.08em}
.ds-seg__opt:has(input:focus-visible)>span{outline:3px solid var(--ds-ochre);outline-offset:3px}
.ds-seg__opt:has(input:checked)>span{background:var(--ds-ochre);border-color:var(--ds-ochre);color:var(--ds-night)}
.ds-seg--wide .ds-seg__opt>span{min-height:56px;font-size:16px}
:is(.ds-b2,.ds-b3,.ds-b4,.ds-b6,.ds-b7,.ds-b8,.ds-b9) .ds-seg__opt>span{border-color:#a8d8bdb3}
.ds-b5 .ds-seg__opt:has(input:checked)>span{background:var(--ds-night);border-color:var(--ds-night);color:var(--ds-paper)}
.ds-scrub{display:grid;gap:6px;font:600 13px/1.5 var(--gft-font-mono);letter-spacing:.09em;text-transform:uppercase}
.ds-scrub input{width:100%;accent-color:var(--ds-ochre)}

/* ---------- the motif ---------- */
.ds-planes{--pl-line:#6bb68f;--pl-fill:#0e4d4a;--pl-fo:.58;--pl-text:#eaf4ee;--pl-weave:.26;--pl-halo:#072d2b;--pl-top:#9fb0e8;--pl-topfill:#2c3e7a;display:block;width:100%;height:auto;overflow:visible}
.ds-cam,.ds-pl,.ds-pl__in,.ds-pl__st,.ds-pl__fl{transform-box:view-box}
.ds-pl--0{transform-origin:320px 312px}.ds-pl--1{transform-origin:320px 197px}.ds-pl--2{transform-origin:320px 82px}
.ds-pl__face{fill:var(--pl-fill);fill-opacity:var(--pl-fo);stroke:var(--pl-line);stroke-width:1.7;transition:stroke 380ms,fill-opacity 380ms,opacity 380ms,fill 380ms}
.ds-pl__weave{stroke:var(--pl-line);stroke-opacity:var(--pl-weave);stroke-width:1;transition:opacity 380ms}
.ds-pl__edge{stroke:var(--pl-line);stroke-opacity:.55;stroke-width:1.2}
.ds-pl--2 .ds-pl__face{fill:var(--pl-topfill);fill-opacity:.48;stroke:var(--pl-top)}
.ds-pl--2 .ds-pl__edge{stroke:var(--pl-top)}
.ds-pl__label{font:700 13px var(--gft-font-mono);letter-spacing:.1em;fill:var(--pl-text);stroke:var(--pl-halo);stroke-opacity:.92;stroke-width:6;stroke-linejoin:round;paint-order:stroke}
.ds-pl__scan path:first-child{fill:var(--ds-ochre-lt);fill-opacity:.26}
.ds-pl__scanline{stroke:var(--ds-ochre-lt);stroke-width:2.2;stroke-opacity:.85}
.ds-pl__scan{overflow-anchor:none}
.ds-pl__st{transition:transform 620ms var(--ds-out),opacity 420ms}
.ds-pl__hit{fill:transparent;pointer-events:all;cursor:pointer}
.ds-thr__line,.ds-thr__run{stroke:var(--ds-ochre);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.ds-thr__dot circle,.ds-b9__drop circle{fill:#fff6e4;stroke:var(--ds-ochre);stroke-width:2}
.ds-node__ring{stroke:var(--ds-ochre);stroke-width:1.5;fill:none;opacity:.3;transform-box:fill-box;transform-origin:center}
.ds-node__target{stroke:var(--ds-ochre-lt);stroke-width:2.4;stroke-dasharray:4 3;fill:#c98a2b26;opacity:0;transition:opacity 260ms,transform 320ms;transform-box:fill-box;transform-origin:center}
.ds-node__dot{fill:var(--ds-night);stroke:var(--ds-ochre);stroke-width:2.2;transition:fill 380ms}
.ds-node[data-ready="true"] .ds-node__dot{fill:var(--ds-ochre)}
.ds-node[data-ready="true"] .ds-node__ring{opacity:.85}
.ds-pulse{fill:var(--ds-ochre-lt);opacity:0;transform-box:view-box}
:is(.ds-pl__fl,.ds-thr__dot,.ds-node__ring,.ds-ar__pkt,.ds-b9__drop){overflow-anchor:none}
/* signal-stage architecture stack variant (dark full-bleed stage) */
.ds-planes--arch{--pl-line:#6bb68f;--pl-fill:#0d4240;--pl-fo:.72;--pl-text:#f6f4ef;--pl-weave:.28;--pl-halo:#062329;--pl-top:#9fb0e8;--pl-topfill:#24356b;overflow:visible}
.ds-planes--arch :is(.ds-pl__face,.ds-pl__edge,.ds-pl__weave){vector-effect:non-scaling-stroke}
.ds-planes--arch .ds-pl--2 .ds-pl__face{fill-opacity:.76}
.ds-planes--ghost .ds-pl__face{fill:none;stroke-dasharray:6 6;stroke:#a8d8bd;opacity:.28}
.ds-planes--ghost .ds-pl__weave,.ds-planes--ghost .ds-pl__edge{opacity:.12}

/* lives (on screen only, one list per element) */
:root[data-m-go] [data-m-live~=ds-float][data-m-on]{animation-name:ds-float;animation-duration:var(--ds-per,10s);animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;animation-delay:var(--ds-neg,0s)}
@keyframes ds-float{from{transform:translateY(-4px)}to{transform:translateY(5px)}}
:root[data-m-go] .ds-node[data-ready="true"] [data-m-live~=ds-ping][data-m-on]{animation-name:ds-ping;animation-duration:2.8s;animation-timing-function:ease-out;animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-ping{0%{transform:scale(.8);opacity:.9}70%,100%{transform:scale(1.7);opacity:0}}
:root[data-m-go] [data-m-live~=ds-scan][data-m-on]{animation-name:ds-scan;animation-duration:5.2s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal;animation-delay:var(--ds-neg,0s)}
@keyframes ds-scan{from{transform:translateX(0)}to{transform:translateX(520px)}}
:root[data-m-go] [data-m-live~=ds-rise][data-m-on]{animation-name:ds-rise;animation-duration:4s;animation-timing-function:cubic-bezier(.45,0,.55,1);animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-rise{0%{transform:translateY(0);opacity:0}12%{opacity:1}88%{opacity:1}100%{transform:translateY(-360px);opacity:0}}
:root[data-m-go] .ds-ar__pkt--b[data-m-on]{animation-delay:-2s}

/* ===================== 1. splash (night) ===================== */
.ds-dock{position:relative;background-color:var(--ds-night);background-image:repeating-linear-gradient(90deg,transparent 0 41px,#6bb68f14 41px 42px)}
.ds-splash{--sh:max(660px,calc(86svh - 80px));--hw:min(48vw,calc((var(--sh) - 220px) * 1.5238));min-height:var(--sh);justify-content:flex-start;z-index:1}
.ds-warpfield{position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,transparent 0 41px,#6bb68f17 41px 42px)}
.ds-splash .gft-splash__ground{background:radial-gradient(ellipse at 76% 38%,#0e4d4a 0%,#072d2b 62%)}
.ds-splash .ds-splash__structure{inset:0;overflow:visible;display:block}
.ds-splash__structure::after{display:none}
.ds-splash__content{padding-top:44px;padding-bottom:20px;pointer-events:none}
.ds-splash__content :is(a,button,h1,p){pointer-events:auto}
.ds-splash h1{font-size:clamp(3.2rem,min(5.9vw,9.6svh),6.2rem);max-width:none;margin-top:22px}
.ds-splash h1 .gft-serif{color:var(--ds-sage)}
.ds-splash .gft-splash__lede{max-width:min(31em,42vw);color:#deece4}
.ds-capline{position:absolute;left:-26px;top:54px;height:calc(var(--sh) - 54px - 64px);width:2px;background:linear-gradient(180deg,var(--ds-ochre),#c98a2b99);pointer-events:none}
.ds-splash__bottom{position:relative;z-index:2;height:64px;padding-block:0;border-top:2px solid #c98a2bb3}
.ds-splash__bottom .gft-splash__caption{font-size:13px;color:var(--ds-mute-d)}
.ds-hero__actions{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.ds-status{font:13px/1.65 var(--gft-font-mono);color:var(--ds-mute-d);border-left:1px solid #6bb68f80;padding-left:18px}
.ds-hero{position:absolute;inset:0;pointer-events:none;--ds-px:0px;--ds-py:0px}
.ds-hero__box{position:absolute;right:3vw;top:24px;width:var(--hw);aspect-ratio:640/420}
.ds-hero__dock,.ds-hero__tilt{width:100%;height:100%}
.ds-hero__dock{transform-origin:0 0}
.ds-hero__tilt :is(.ds-pl__hit){pointer-events:all}
.ds-hero__drop{position:absolute;left:calc(100% - 3vw - var(--hw) + var(--hw) * .0531 - 1px);top:calc(24px + var(--hw) / 1.5238 * .9714);height:calc(var(--sh) - 64px - 24px - var(--hw) / 1.5238 * .9714);width:2px;background:var(--ds-ochre)}
.ds-hero__pickwrap{position:absolute;right:3vw;width:var(--hw);top:calc(24px + var(--hw) / 1.5238 + 6px);display:grid;gap:8px;padding-left:calc(var(--hw) * .06)}
.ds-hero__pick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.ds-hero__chip{pointer-events:auto;display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:8px 12px;border:1.5px solid #bfe4cfb3;background:#072d2be6;color:var(--ds-paper);font:650 15px/1.2 var(--gft-font-sans);cursor:pointer;transition:background-color 220ms,color 220ms,border-color 220ms,transform 220ms}
.ds-hero__chip b{font:700 13px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-hero__chip:hover,.ds-hero__chip:focus-visible,.ds-hero__chip[aria-pressed="true"]{background:var(--ds-ochre);border-color:var(--ds-ochre-lt);color:var(--ds-night)}
.ds-hero__chip:hover b,.ds-hero__chip:focus-visible b,.ds-hero__chip[aria-pressed="true"] b{color:var(--ds-night)}
.ds-hero__chip:focus-visible{outline:3px solid var(--ds-ochre-lt);outline-offset:2px}
.ds-hero__live{pointer-events:auto;display:grid;background:#052220f2;border:1px solid #c98a2b99;border-left:4px solid var(--ds-ochre);padding:10px 14px}
.ds-hero__cap{grid-area:1/1;margin:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 14px;opacity:0;visibility:hidden;transition:opacity 280ms}
.ds-hero[data-hl="0"] .ds-hero__cap--0,.ds-hero[data-hl="1"] .ds-hero__cap--1,.ds-hero[data-hl="2"] .ds-hero__cap--2{opacity:1;visibility:visible}
.ds-hero__tag{font:700 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ds-ochre-lt)}
.ds-hero__captext{font-size:14px;line-height:1.4;color:#eaf4ee;flex:1 1 240px}
.ds-hero__badge{font:600 13px var(--gft-font-mono);color:var(--ds-sage-lt);background:#0e4d4a99;padding:3px 8px;border:1px solid #6bb68f66}
.ds-planes--hero .ds-pl__st{transform:translate(calc(var(--ds-px) * (var(--ds-i) + 1)),calc(var(--ds-py) * (var(--ds-i) + 1) + var(--ds-lift,0px)))}
.ds-hero[data-hl] .ds-pl__face,.ds-hero[data-hl] .ds-pl__weave{opacity:.42}
.ds-hero:is([data-hl="0"]) .ds-pl--0 :is(.ds-pl__face,.ds-pl__weave),.ds-hero:is([data-hl="1"]) .ds-pl--1 :is(.ds-pl__face,.ds-pl__weave),.ds-hero:is([data-hl="2"]) .ds-pl--2 :is(.ds-pl__face,.ds-pl__weave){opacity:1;stroke:var(--ds-ochre-lt);stroke-width:2.8;fill:#16635e;fill-opacity:.82}
.ds-hero[data-hl="0"] .ds-pl--0 .ds-pl__st,.ds-hero[data-hl="1"] .ds-pl--1 .ds-pl__st,.ds-hero[data-hl="2"] .ds-pl--2 .ds-pl__st{--ds-lift:-14px}
/* the planes beat up top plane first, 120 ms apart, settled by about 850 ms */
:root[data-m-go] .ds-planes--hero .ds-pl__in{animation-name:ds-beat;animation-duration:680ms;animation-timing-function:var(--ds-out);animation-delay:calc(var(--ds-o) * 110ms + 40ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-beat{from{opacity:.1;transform:translateY(-58px)}to{opacity:1;transform:none}}
:root[data-ds-hidden] :is(.ds-sec,.ds-dock) [data-m-live],.ds-dock[data-docked] .ds-hero [data-m-live],.ds-dock[data-docked] .gft-splash__mesh{animation-play-state:paused}
@media(min-width:1001px){.ds-splash__content{width:min(1440px,calc(100% - 96px))}.ds-splash__content>*{max-width:45vw}}

/* ===================== 2. readiness instrument (night, directly under the splash) ===================== */
.ds-b2{position:relative;z-index:2;padding:28px 0 88px;background:var(--ds-night);view-timeline-name:--ds-dock;view-timeline-axis:block}
.ds-b2__grid{display:grid;grid-template-columns:minmax(0,560px) minmax(0,1fr);gap:32px 56px;align-items:start}
.ds-b2__col{align-self:stretch}
.ds-b2__stage{position:sticky;top:24px;display:grid;gap:14px}
.ds-b2__head{display:grid;gap:10px;margin:0}
.ds-b2__head .gft-eyebrow{margin:0}
.ds-b2__head h2{font-size:clamp(2rem,3.1vw,3.1rem);line-height:1.04;margin:0}
.ds-b2__head .ds-lede{font-size:15px;line-height:1.62;color:#deece4;margin:0}
.ds-b2__stack{position:relative}
.ds-b2__ghost{position:absolute;inset:0}
.ds-b2__note{margin-top:4px}
.ds-b2__ctl{display:grid;gap:18px;min-width:0}
.ds-read{display:grid}
.ds-read__item{grid-area:1/1;visibility:hidden;border-left:3px solid var(--ds-ochre);background:#0b3a3780;padding:12px 18px}
.ds-read__item h3{font-size:clamp(1.25rem,1.65vw,1.55rem);margin:6px 0 8px}
.ds-read__item p:last-child{font-size:15px;line-height:1.62;color:#e2eee8;margin:0}
.ds-read__item .ds-signal{color:var(--ds-ochre-lt)}
.ds-b2:has(input[name=ds-tier][value="0"]:checked) .ds-read__item--0,.ds-b2:has(input[name=ds-tier][value="1"]:checked) .ds-read__item--1,.ds-b2:has(input[name=ds-tier][value="2"]:checked) .ds-read__item--2{visibility:visible}
.ds-b2:has(input[name=ds-tier][value="0"]:checked) .ds-planes--inst .ds-pl--0 .ds-pl__st,.ds-b2:has(input[name=ds-tier][value="1"]:checked) .ds-planes--inst .ds-pl--1 .ds-pl__st,.ds-b2:has(input[name=ds-tier][value="2"]:checked) .ds-planes--inst .ds-pl--2 .ds-pl__st{transform:translateY(-12px)}
.ds-b2:has(input[name=ds-tier][value="0"]:checked) .ds-planes--inst .ds-pl--0 .ds-pl__face,.ds-b2:has(input[name=ds-tier][value="1"]:checked) .ds-planes--inst .ds-pl--1 .ds-pl__face,.ds-b2:has(input[name=ds-tier][value="2"]:checked) .ds-planes--inst .ds-pl--2 .ds-pl__face{stroke:var(--ds-ochre-lt);stroke-width:2.8}
.ds-tally-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px 24px;border-top:1px solid #a8d8bd4d;padding-top:14px}
.ds-tally{display:flex;align-items:baseline;gap:12px;margin:0;font-size:16px;color:#e2eee8;white-space:nowrap}
.ds-tally b{font-size:clamp(2.3rem,3.4vw,3.1rem);font-weight:850;line-height:1;letter-spacing:-.05em;color:var(--ds-ochre-lt);min-width:1.1ch}
.ds-uc-readout{margin:0;display:grid;gap:2px;padding:8px 14px;background:#0e4d4a99;border:1px solid #c98a2b99;border-left:3px solid var(--ds-ochre);min-width:0}
.ds-uc-readout .ds-signal{color:var(--ds-ochre-lt);font-size:13px;white-space:nowrap}
.ds-uc-readout strong{font-size:15px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-uc-readout span:last-child{font:13px/1.38 var(--gft-font-mono);color:var(--ds-mute-d);min-height:2.76em}
.ds-chips{border:0;margin:0;padding:0;min-width:0}
.ds-chips legend{display:flex;flex-wrap:wrap;gap:6px 16px;font:600 13px/1.5 var(--gft-font-mono);letter-spacing:.09em;text-transform:uppercase;margin-bottom:10px;padding:0;color:var(--ds-sage-lt)}
.ds-chips legend span{color:var(--ds-ochre-lt);letter-spacing:.04em}
.ds-chips__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ds-chip{position:relative;display:block;cursor:pointer}
.ds-chip input{position:absolute;top:14px;left:12px;width:18px;height:18px;margin:0;accent-color:var(--ds-ochre)}
.ds-chip>span{display:grid;gap:3px;min-height:60px;padding:10px 12px 10px 42px;border:1px solid #a8d8bd73;background:#06262499;transition:border-color 220ms,background-color 220ms,box-shadow 220ms}
.ds-chip b{font-size:15px;font-weight:650;line-height:1.3;color:#f6f4ef}
.ds-chip small{font-size:13px;line-height:1.45;color:var(--ds-mute-d)}
.ds-chip:has(input:checked)>span{border-color:var(--ds-ochre);background:#c98a2b29}
.ds-chip[data-need-hl="true"]>span{border-color:var(--ds-ochre-lt);box-shadow:inset 3px 0 0 var(--ds-ochre-lt);background:#c98a2b36}
.ds-chip:has(input:focus-visible)>span{outline:3px solid var(--ds-ochre);outline-offset:2px}
.ds-uc{list-style:none;margin:0;padding:0;border-top:1px solid #a8d8bd4d}
.ds-uc__item{position:relative;display:grid;grid-template-columns:72px minmax(0,1fr) minmax(0,1.15fr);gap:6px 16px;align-items:baseline;padding:13px 12px 17px;cursor:pointer;transition:background-color 200ms}
.ds-uc__item:hover,.ds-uc__item:focus-visible,.ds-uc__item[data-row-active="true"]{background:#0e4d4ab3;outline:none}
.ds-uc__item[data-row-active="true"]::before,.ds-uc__item:hover::before,.ds-uc__item:focus-visible::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ds-ochre-lt)}
.ds-uc__tier{font:600 13px var(--gft-font-mono);letter-spacing:.06em;color:var(--ds-sage-lt)}
.ds-uc__item strong{font-size:15px;line-height:1.35;color:#fff}
.ds-uc__state{font-size:13px;line-height:1.45;color:var(--ds-mute-d)}
.ds-uc__item[data-ready="true"] .ds-uc__state{color:var(--ds-ochre-lt);font-weight:650}
.ds-uc__warp{position:absolute;left:12px;right:12px;bottom:5px;height:2px;background:#a8d8bd33}
.ds-uc__warp i{position:absolute;inset:0;background:var(--ds-sage);transform-origin:0 50%;transform:scaleX(var(--f,0));transition:transform 600ms var(--ds-out)}
.ds-uc__item[data-ready="true"] .ds-uc__warp i{background:var(--ds-ochre)}
/* row-to-plane link on the readiness stack */
.ds-uc-link{opacity:0;transition:opacity 240ms;pointer-events:none}
.ds-uc-link__line{stroke:var(--ds-ochre-lt);stroke-width:2.2;stroke-dasharray:5 4;fill:none}
.ds-uc-link__dot{fill:var(--ds-ochre-lt);stroke:var(--ds-night);stroke-width:2}
.ds-uc-link__tag{font:700 13px var(--gft-font-mono);letter-spacing:.08em;fill:var(--ds-ochre-lt);stroke:var(--ds-night);stroke-width:5;paint-order:stroke}
.ds-b2[data-active-uc="inspection"] .ds-uc-link[data-uc-link="inspection"],
.ds-b2[data-active-uc="forecast"] .ds-uc-link[data-uc-link="forecast"],
.ds-b2[data-active-uc="inventory"] .ds-uc-link[data-uc-link="inventory"],
.ds-b2[data-active-uc="printing"] .ds-uc-link[data-uc-link="printing"],
.ds-b2[data-active-uc="design"] .ds-uc-link[data-uc-link="design"],
.ds-b2[data-active-uc="physics"] .ds-uc-link[data-uc-link="physics"]{opacity:1}
.ds-b2[data-active-uc="inspection"] .ds-planes--inst .ds-node[data-uc="inspection"] .ds-node__target,
.ds-b2[data-active-uc="forecast"] .ds-planes--inst .ds-node[data-uc="forecast"] .ds-node__target,
.ds-b2[data-active-uc="inventory"] .ds-planes--inst .ds-node[data-uc="inventory"] .ds-node__target,
.ds-b2[data-active-uc="printing"] .ds-planes--inst .ds-node[data-uc="printing"] .ds-node__target,
.ds-b2[data-active-uc="design"] .ds-planes--inst .ds-node[data-uc="design"] .ds-node__target,
.ds-b2[data-active-uc="physics"] .ds-planes--inst .ds-node[data-uc="physics"] .ds-node__target{opacity:1;transform:scale(1.12)}
/* entrance: stack planes draw/lift in sequence, checklist rows tick in, use-case rows comb in */
:root[data-m-go] .ds-b2__stack:not([data-ds-in]) .ds-planes--inst .ds-pl__in{animation-name:none!important;opacity:.14;transform:translateY(52px) scale(.92)}
:root[data-m-go] .ds-b2__stack[data-ds-in] .ds-planes--inst .ds-pl__in{animation-name:ds-plane-seq;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--ds-i) * 90ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-plane-seq{from{opacity:.14;transform:translateY(52px) scale(.92)}to{opacity:1;transform:none}}
:root[data-m-go] .ds-chips:not([data-ds-in]) .ds-chip{animation-name:none!important;opacity:.14;transform:translateX(42px)}
:root[data-m-go] .ds-chips[data-ds-in] .ds-chip{animation-name:ds-chip-tick;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--chip-i,0) * 35ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-chip-tick{from{opacity:.14;transform:translateX(42px)}to{opacity:1;transform:none}}
:root[data-m-go] .ds-uc:not([data-ds-in]) .ds-uc__item{animation-name:none!important;opacity:.14;transform:translateX(46px)}
:root[data-m-go] .ds-uc[data-ds-in] .ds-uc__item{animation-name:ds-uc-row;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--uc-i,0) * 42ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-uc-row{from{opacity:.14;transform:translateX(46px)}to{opacity:1;transform:none}}

/* ===================== 3. cold start (deep night): the loom ===================== */
.ds-b3{background:var(--ds-deep);padding:0 0 104px;view-timeline-name:--ds-cold;view-timeline-axis:block}
.ds-b3__floor{position:relative;height:56px;margin:0 var(--ds-gut) 48px;background-color:#0e4d4a8c;background-image:repeating-linear-gradient(90deg,#a8d8bd40 0 2px,transparent 2px 9px),repeating-linear-gradient(0deg,#6bb68f2e 0 1px,transparent 1px 8px);border-bottom:1px solid #a8d8bd66}
.ds-b3__floorthread{position:absolute;left:30px;top:-48px;bottom:-48px;width:2px;background:var(--ds-ochre)}
.ds-b3__floorweave{position:absolute;inset:0;background:linear-gradient(90deg,#04201e 0,#04201e00 12%,#04201e00 88%,#04201e 100%)}
.ds-tabs{border:0;margin:0 0 26px;padding:0;min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.ds-tabs legend{font:600 13px/1.5 var(--gft-font-mono);letter-spacing:.09em;text-transform:uppercase;margin-bottom:10px;padding:0;color:var(--ds-sage-lt)}
.ds-tab{position:relative;display:flex;align-items:center;gap:14px;min-height:70px;padding:12px 20px;border:1px solid #a8d8bd73;margin-left:-1px;cursor:pointer;transition:background-color 240ms,border-color 240ms}
.ds-tab input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.ds-tab__n{font:700 13px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-tab__t{font-size:clamp(16px,1.35vw,20px);font-weight:750;letter-spacing:-.02em;line-height:1.2}
.ds-tab::before{content:'';position:absolute;left:-1px;right:-1px;top:-1px;height:4px;background:var(--ds-ochre);transform:scaleX(0);transform-origin:0 50%;transition:transform 380ms var(--ds-out)}
.ds-tab:has(input:checked){background:#0e4d4a;border-color:var(--ds-ochre)}
.ds-tab:has(input:checked)::before{transform:scaleX(1)}
.ds-tab:has(input:focus-visible){outline:3px solid var(--ds-ochre);outline-offset:3px}
.ds-loom{border:1px solid #a8d8bd59;background:#072d2b;padding:28px 32px 26px}
.ds-loom__top{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px 48px;align-items:end;margin-bottom:26px}
.ds-tabtext{display:grid}
.ds-tabtext__i{grid-area:1/1;visibility:hidden;font-size:15px;line-height:1.68;color:#e2eee8;max-width:60ch}
.ds-tabtext__i .ds-signal{display:block;color:var(--ds-ochre-lt);margin-bottom:6px}
.ds-b3:has(input[name=ds-cold][value="0"]:checked) .ds-tabtext__i--0,.ds-b3:has(input[name=ds-cold][value="1"]:checked) .ds-tabtext__i--1,.ds-b3:has(input[name=ds-cold][value="2"]:checked) .ds-tabtext__i--2{visibility:visible}
.ds-loom__now{display:grid;gap:6px;justify-items:end;text-align:right;margin:0;max-width:none}
.ds-loom__now .ds-signal{color:var(--ds-sage-lt)}
.ds-loom__big{font-size:clamp(1.8rem,2.6vw,2.6rem);font-weight:850;letter-spacing:-.04em;line-height:1.05}
.ds-loom__big b{color:var(--ds-ochre-lt)}
.ds-loom__count{font-size:15px;color:#e2eee8}.ds-loom__count b{font-size:1.6em;color:var(--ds-ochre-lt);font-weight:850}
.ds-loom__frame{position:relative;--nm:236px;--st:148px;--gp:20px}
.ds-lanes{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ds-lane{display:grid;grid-template-columns:var(--nm) minmax(0,1fr) var(--st);gap:var(--gp);align-items:center}
.ds-lane__name{font-size:15px;font-weight:650;line-height:1.3;transition:color 260ms}
.ds-lane__state{font:600 13px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-mute-d)}
.ds-lane[data-ready="true"] .ds-lane__state{color:var(--ds-ochre-lt)}
.ds-lane__track{position:relative;height:36px;background:repeating-linear-gradient(0deg,#a8d8bd2b 0 1px,transparent 1px 6px)}
.ds-lane__warp{position:absolute;left:0;right:0;top:50%;height:1px;background:#a8d8bd66}
.ds-lane__cloth,.ds-lane__glint{position:absolute;inset:0;clip-path:inset(0 calc((100 - var(--p)) * 1%) 0 calc(var(--s) * 1%));transition:clip-path 520ms var(--ds-out)}
.ds-lane__cloth{background-color:#3f8f6b99;background-image:repeating-linear-gradient(90deg,#d6eedf8c 0 2px,transparent 2px 7px),repeating-linear-gradient(0deg,#072d2b59 0 1px,transparent 1px 6px)}
.ds-lane[data-ready="true"] .ds-lane__cloth{background-color:#6bb68fc4}
.ds-lane__glint{background:linear-gradient(90deg,transparent 0,#fff3dc66 50%,transparent 100%) no-repeat;background-size:18% 100%}
.ds-lane__gate{position:absolute;top:-4px;bottom:-4px;left:calc(var(--at) * 1%);width:2px;background:var(--ds-ochre-lt);opacity:.85}
.ds-lane--release .ds-lane__warp{height:5px;margin-top:-2px;background:var(--ds-ochre)}
.ds-lane--release .ds-lane__name{color:var(--ds-ochre-lt)}
.ds-b3:has(input[name=ds-cold][value="0"]:checked) .ds-lane[data-tabs~="0"] .ds-lane__name,.ds-b3:has(input[name=ds-cold][value="1"]:checked) .ds-lane[data-tabs~="1"] .ds-lane__name,.ds-b3:has(input[name=ds-cold][value="2"]:checked) .ds-lane[data-tabs~="2"] .ds-lane__name{color:var(--ds-ochre-lt)}
.ds-b3:has(input[name=ds-cold][value="0"]:checked) .ds-lane[data-tabs~="0"] .ds-lane__track,.ds-b3:has(input[name=ds-cold][value="1"]:checked) .ds-lane[data-tabs~="1"] .ds-lane__track,.ds-b3:has(input[name=ds-cold][value="2"]:checked) .ds-lane[data-tabs~="2"] .ds-lane__track{outline:1px solid var(--ds-ochre-lt);outline-offset:3px}
.ds-reedbox{position:absolute;top:-12px;bottom:-12px;left:calc(var(--nm) + var(--gp));right:calc(var(--st) + var(--gp));container-type:inline-size;pointer-events:none}
.ds-reed{position:absolute;top:0;bottom:0;left:-2px;width:4px;background:var(--ds-ochre);transform:translateX(calc(var(--p) * 1cqw));transition:transform 520ms var(--ds-out)}
.ds-reed__beat{position:absolute;left:-5px;right:-5px;top:-6px;height:12px;background:var(--ds-ochre-lt);border-radius:2px}
.ds-reed__edge{position:absolute;right:4px;top:0;bottom:0;width:36px;background:linear-gradient(90deg,transparent,#e8bf8659);opacity:.4}
.ds-loom__axis{position:relative;height:32px;margin:18px calc(var(--st) + var(--gp)) 0 calc(var(--nm) + var(--gp));border-top:1px solid #a8d8bd66}
.ds-loom__axis span{position:absolute;top:8px;left:calc(var(--x) * 1%);transform:translateX(-50%);font:600 13px var(--gft-font-mono);color:var(--ds-mute-d);white-space:nowrap}
.ds-loom__axis span:first-child{transform:none}.ds-loom__axis span:last-child{transform:translateX(-100%)}
.ds-b3 .ds-scrub{margin:14px calc(var(--st) + 20px) 0 calc(236px + 20px);color:var(--ds-sage-lt)}
.ds-loom__foot{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px 48px;margin-top:20px;padding-top:18px;border-top:1px solid #a8d8bd40}
.ds-tabnote{display:grid}
.ds-tabnote__i{grid-area:1/1;visibility:hidden;font-size:15px;line-height:1.62;color:#e2eee8}
.ds-tabnote__i strong{color:var(--ds-ochre-lt)}
.ds-b3:has(input[name=ds-cold][value="0"]:checked) .ds-tabnote__i--0,.ds-b3:has(input[name=ds-cold][value="1"]:checked) .ds-tabnote__i--1,.ds-b3:has(input[name=ds-cold][value="2"]:checked) .ds-tabnote__i--2{visibility:visible}
.ds-loom__foot .ds-signal{color:var(--ds-ochre-lt)}
/* entrance: tabs slide in; timeline bars wipe left to right */
:root[data-m-go] .ds-tabs:not([data-ds-in]) .ds-tab{animation-name:none!important;opacity:.14;transform:translateX(-48px)}
:root[data-m-go] .ds-tabs[data-ds-in] .ds-tab{animation-name:ds-tab-in;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--tab-i,0) * 85ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-tab-in{from{opacity:.14;transform:translateX(-48px)}to{opacity:1;transform:none}}
:root[data-m-go] .ds-loom__frame:not([data-ds-in]) .ds-lane__track{animation-name:none!important;opacity:.14;clip-path:inset(0 100% 0 0)}
:root[data-m-go] .ds-loom__frame[data-ds-in] .ds-lane__track{animation-name:ds-bar-wipe;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--k,0) * 55ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-bar-wipe{from{opacity:.14;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
/* lives: the reed beats, the woven edge shimmers, the lanes glint */
:root[data-m-go] [data-m-live~=ds-beat][data-m-on]{animation-name:ds-beat-reed;animation-duration:1.6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-beat-reed{0%,100%{transform:translateY(0)}45%{transform:translateY(-4px) scaleX(1.25)}60%{transform:translateY(1px)}}
:root[data-m-go] [data-m-live~=ds-shimmer][data-m-on]{animation-name:ds-shimmer;animation-duration:2.4s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes ds-shimmer{from{opacity:.15}to{opacity:.85}}
:root[data-m-go] [data-m-live~=ds-glint][data-m-on]{animation-name:ds-glint;animation-duration:5.5s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:normal;animation-delay:calc(var(--k,0) * -1.1s)}
@keyframes ds-glint{from{background-position:-20% 0}to{background-position:120% 0}}

/* ===================== Act II, 4. architecture sticky (dark full-bleed signal stage) ===================== */
.ds-b4{background-color:var(--ds-signal-bg);background-image:radial-gradient(ellipse at 28% 50%,#0e4d4a59 0%,transparent 65%),repeating-linear-gradient(90deg,#6bb68f12 0 1px,transparent 1px 44px),repeating-linear-gradient(0deg,#9fb0e810 0 1px,transparent 1px 44px);color:var(--ds-paper);padding:0;border-top:2px solid #c98a2b80;border-bottom:2px solid #c98a2b80}
.ds-b4__stagewrap{position:relative}
.ds-b4__pin{position:sticky;top:0;min-height:100svh;display:flex;align-items:center;padding-block:22px;z-index:2}
.ds-b4__inner{width:min(1520px,calc(100% - 56px));margin-inline:auto;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px 48px;align-items:start}
.ds-b4__left{display:grid;gap:12px;min-width:0}
.ds-b4__head{margin:0}
.ds-b4__head .gft-eyebrow{margin-bottom:6px;color:var(--ds-ochre-lt)}
.ds-b4__head h2{font-size:clamp(1.85rem,2.8vw,2.75rem);line-height:1.05;margin:0}
.ds-b4__fig{display:grid;gap:10px;margin:0;background:#041a1f99;border:1px solid #6bb68f4d;padding:14px 18px 0}
.ds-b4__svg{width:100%;margin-inline:auto;overflow:visible}
.ds-hud{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:#031519;color:var(--ds-paper);margin-inline:-18px;border-top:1px solid #6bb68f4d}
.ds-hud__cell{display:grid;gap:4px;padding:10px 16px;border-left:1px solid #6bb68f33;min-width:0}
.ds-hud__cell:first-child{border-left:0}
.ds-hud__k{font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ds-sage-lt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-hud__v{font-size:15px;font-weight:700;line-height:1.3;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-hud__q{display:flex;gap:4px;height:10px}
.ds-hud__q i{width:12px;height:10px;border:1px solid #a8d8bd99}
.ds-hud__q i[data-occupied="true"]{background:var(--ds-ochre);border-color:var(--ds-ochre-lt)}
.ds-b4__ctl{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.ds-b4__steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;flex:1 1 460px}
.ds-b4__steps button,.ds-b4__link{min-height:46px;padding:8px 10px;border:1px solid #a8d8bd80;background:#072d2b99;font-size:14px;font-weight:650;color:var(--ds-paper);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background-color 200ms,color 200ms,border-color 200ms}
.ds-b4__steps button b{font:700 13px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-b4__steps button[aria-pressed="true"]{background:var(--ds-ochre);border-color:var(--ds-ochre-lt);color:var(--ds-night)}
.ds-b4__steps button[aria-pressed="true"] b{color:var(--ds-night)}
.ds-b4__steps button:focus-visible,.ds-b4__link:focus-visible{outline:3px solid var(--ds-ochre-lt);outline-offset:2px}
.ds-b4__link{padding-inline:14px}
.ds-b4__led{width:10px;height:10px;border-radius:50%;background:#47b881}
.ds-b4__link[aria-pressed="true"]{border-color:var(--ds-ochre-lt);background:#c98a2b33}
.ds-b4__link[aria-pressed="true"] .ds-b4__led{background:var(--ds-ochre-lt)}
/* right column: pinned prose card + stage scene + live ticker */
.ds-b4__right{display:grid;gap:16px;min-width:0}
.ds-b4__cards{display:grid;align-items:start;background:#072d2be6;border:1px solid #6bb68f66;border-left:4px solid var(--ds-ochre);padding:22px 24px}
.ds-step__card{grid-area:1/1;visibility:hidden;opacity:0;pointer-events:none;display:grid;gap:12px}
.ds-b4__pin[data-state="0"] .ds-step__card--0,
.ds-b4__pin[data-state="1"] .ds-step__card--1,
.ds-b4__pin[data-state="2"] .ds-step__card--2,
.ds-b4__pin[data-state="3"] .ds-step__card--3,
.ds-b4__pin[data-state="4"] .ds-step__card--4{visibility:visible;opacity:1;pointer-events:auto;animation-name:ds-stage-card;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-iteration-count:1;animation-direction:normal;animation-fill-mode:both}
@keyframes ds-stage-card{from{opacity:.14;transform:translateY(36px)}to{opacity:1;transform:none}}
.ds-step__top{display:flex;align-items:center;gap:18px}
.ds-step__num{font:800 clamp(2.6rem,3.6vw,3.6rem)/1 var(--gft-font-mono);color:var(--ds-ochre-lt);letter-spacing:-.04em;padding-right:16px;border-right:1px solid #a8d8bd4d}
.ds-step__top .ds-signal{color:var(--ds-ochre-lt);margin:0 0 4px}
.ds-step__card h3{font-size:clamp(1.4rem,2vw,1.9rem);line-height:1.15;margin:0;color:#fff}
.ds-step__body{font-size:15px;line-height:1.68;color:#e2eee8;margin:0}
/* stage-specific scene sub-panel */
.ds-b4__scenes{display:grid;align-items:start;background:#041a1fcc;border:1px solid #6bb68f59;padding:16px 20px}
.ds-scene{grid-area:1/1;visibility:hidden;opacity:0;pointer-events:none;display:grid;gap:12px}
.ds-b4__pin[data-state="0"] .ds-scene--0,
.ds-b4__pin[data-state="1"] .ds-scene--1,
.ds-b4__pin[data-state="2"] .ds-scene--2,
.ds-b4__pin[data-state="3"] .ds-scene--3,
.ds-b4__pin[data-state="4"] .ds-scene--4{visibility:visible;opacity:1;pointer-events:auto;animation-name:ds-stage-scene;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-delay:60ms;animation-iteration-count:1;animation-direction:normal;animation-fill-mode:both}
@keyframes ds-stage-scene{from{opacity:.14;transform:translateX(38px)}to{opacity:1;transform:none}}
.ds-scene__head{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid #6bb68f33;padding-bottom:8px;font:600 13px var(--gft-font-mono);color:var(--ds-mute-d)}
.ds-scene__head .ds-signal{color:var(--ds-sage-lt)}
.ds-scene__bus{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:8px;align-items:center}
.ds-scene__bus span{display:grid;gap:3px;padding:10px 12px;background:#072d2b;border:1px solid #6bb68f66;font-size:13px;color:var(--ds-mute-d)}
.ds-scene__bus b{font:700 13px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-scene__bus i{font-style:normal;color:var(--ds-ochre-lt);font-weight:700}
.ds-scene__bars{display:grid;gap:8px}
.ds-scene__bars div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;background:#072d2b;border-left:3px solid var(--ds-ochre);font-size:14px}
.ds-scene__bars b{font:600 13px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-scene__pkts{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px 12px;background:#072d2b;border:1px solid #c98a2b99}
.ds-scene__pktnode,.ds-scene__pktq{font:700 13px var(--gft-font-mono);padding:6px 10px;background:#0e4d4a;color:#fff}
.ds-scene__pktq{background:#c98a2b33;border:1px solid var(--ds-ochre-lt);color:var(--ds-ochre-lt)}
.ds-scene__pkttrack{position:relative;height:32px;display:grid;place-items:center;background:#261606;border:1px dashed var(--ds-ochre-lt);overflow:hidden}
.ds-scene__pkttrack i{position:absolute;inset:0;background:linear-gradient(90deg,transparent,#c98a2b66,transparent) no-repeat;background-size:25% 100%}
.ds-scene__pkttrack b{position:relative;font:700 13px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-scene__clocks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ds-scene__clocks div{display:grid;gap:3px;padding:10px 12px;background:#072d2b;border:1px solid #6bb68f66}
.ds-scene__clocks small{font:700 13px var(--gft-font-mono);color:var(--ds-sage-lt)}
.ds-scene__clocks strong{font:800 18px var(--gft-font-mono);color:var(--ds-ochre-lt)}
.ds-scene__clocks span{font-size:13px;color:var(--ds-mute-d)}
.ds-ledger{width:100%;border-collapse:collapse;font:13px/1.4 var(--gft-font-mono)}
.ds-ledger th{text-align:left;padding:6px 8px;border-bottom:1px solid #6bb68f66;color:var(--ds-sage-lt);font-weight:700}
.ds-ledger td{padding:7px 8px;border-bottom:1px solid #6bb68f26;color:#e2eee8}
.ds-ledger td b{color:var(--ds-ochre-lt)}
/* live event ticker & sparkline */
.ds-ticker{background:#031519;border:1px solid #6bb68f59;padding:12px 16px;display:grid;gap:8px}
.ds-ticker__head{display:grid;gap:3px;min-width:0}
.ds-ticker__head .ds-signal{color:var(--ds-sage-lt);white-space:nowrap}
.ds-ticker__code{font:700 13px/1.5 var(--gft-font-mono);color:var(--ds-ochre-lt);white-space:normal;overflow-wrap:anywhere;min-height:3em}
.ds-ticker__spark{width:100%;height:44px;display:block}
.ds-ticker__grid{stroke:#6bb68f29;stroke-width:1;fill:none}
.ds-ticker__line{stroke:var(--ds-ochre-lt);stroke-width:2.4;fill:none;transition:d 420ms}
/* scroll sentinels behind the sticky stage */
.ds-b4__track{position:relative;margin-top:-100svh;pointer-events:none}
.ds-step{height:78svh}
/* SVG states: camera, lit plane, packets, cut, queue, reconcile, return loop */
.ds-cam{transition:transform 860ms var(--ds-glide)}
.ds-b4__pin[data-state="1"] .ds-cam{transform-origin:300px 320px;transform:scale(1.06)}
.ds-b4__pin[data-state="2"] .ds-cam{transform-origin:240px 300px;transform:scale(1.05)}
.ds-b4__pin[data-state="3"] .ds-cam{transform-origin:300px 215px;transform:scale(1.06)}
.ds-b4__pin[data-state="4"] .ds-cam{transform-origin:330px 110px;transform:scale(1.05)}
.ds-b4__pin[data-state="0"] .ds-thr__line{stroke-width:3.4}
.ds-b4__pin:is([data-state="1"],[data-state="2"]) .ds-pl--0 .ds-pl__face,.ds-b4__pin[data-state="3"] .ds-pl--1 .ds-pl__face,.ds-b4__pin[data-state="4"] .ds-pl--2 .ds-pl__face{stroke:var(--ds-ochre-lt);stroke-width:2.8;fill:#1b5c55;fill-opacity:.9}
.ds-b4__pin:is([data-state="1"],[data-state="2"]) :is(.ds-pl--1,.ds-pl--2) .ds-pl__st,.ds-b4__pin[data-state="3"] :is(.ds-pl--0,.ds-pl--2) .ds-pl__st,.ds-b4__pin[data-state="4"] :is(.ds-pl--0,.ds-pl--1) .ds-pl__st{opacity:.42}
.ds-ar{visibility:hidden;opacity:0;transition:opacity 780ms var(--ds-glide);pointer-events:none}
.ds-ar__pill{fill:#041a1ff2;stroke:var(--ds-ochre-lt);stroke-width:1.6}
.ds-ar__pill--warn{fill:#2b1409f2;stroke:#f4a261}
.ds-ar__leader{stroke:var(--ds-ochre-lt);stroke-width:1.8;stroke-dasharray:3 3;fill:none}
.ds-ar__tag{font:700 13px var(--gft-font-mono);letter-spacing:.08em;fill:var(--ds-ochre-lt);stroke:#041a1f;stroke-width:4;stroke-linejoin:round;paint-order:stroke}
.ds-ar__pkt{fill:var(--ds-ochre-lt)}
.ds-ar__scanbox{fill:#c98a2b2e;stroke:var(--ds-ochre-lt);stroke-width:2;stroke-dasharray:5 3}
.ds-ar__cutmark{stroke:#f48c64;stroke-width:3.2;stroke-linecap:round;fill:none}
.ds-ar__divert,.ds-ar__drainpath{stroke:var(--ds-ochre-lt);stroke-width:2.4;fill:none}
.ds-ar__cell{fill:none;stroke:var(--ds-ochre-lt);stroke-width:1.4;transform-box:fill-box;transition:transform 780ms var(--ds-glide) calc(var(--q,0) * 75ms),opacity 520ms var(--ds-glide) calc(var(--q,0) * 75ms)}
.ds-ar__queue .ds-ar__cell[data-occupied="true"],.ds-ar__cell--dup,.ds-ar__cell--dup2{fill:var(--ds-ochre)}
.ds-ar__looppath{stroke:var(--ds-ochre-lt);stroke-width:3;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 860ms var(--ds-glide);fill:none}
.ds-ar__loophead{stroke:var(--ds-ochre-lt);stroke-width:3;stroke-linecap:round;fill:none}
.ds-ar__gate{fill:var(--ds-ochre);stroke:var(--ds-ochre-lt);stroke-width:2}
/* show only one transient tag group per step */
.ds-b4__pin:is([data-state="0"],[data-state="1"],[data-state="3"]) .ds-ar__pkts{visibility:visible;opacity:1}
.ds-b4__pin[data-state="1"]:not([data-link="down"]) .ds-ar__s1{visibility:visible;opacity:1}
.ds-b4__pin:is([data-state="2"],[data-link="down"]) :is(.ds-ar__cut,.ds-ar__queue){visibility:visible;opacity:1}
.ds-b4__pin[data-state="3"]:not([data-link="down"]) :is(.ds-ar__queue,.ds-ar__s3){visibility:visible;opacity:1}
.ds-b4__pin[data-state="4"]:not([data-link="down"]) .ds-ar__loop{visibility:visible;opacity:1}
.ds-b4__pin:not([data-state="2"]):not([data-link="down"]) .ds-ar__queue .ds-ar__cell[data-occupied="true"]{transform:translateY(-10px);opacity:0}
.ds-b4__pin[data-state="3"]:not([data-link="down"]) .ds-ar__queue .ds-ar__cell[data-occupied="true"]{transform:translate(calc(16px - var(--q) * 14px),-106px);opacity:.75}
.ds-b4__pin[data-state="4"] .ds-ar__looppath{stroke-dashoffset:0}
/* labels: the tiers split-flap into the architecture's layers once step 1 is read (opacity only, no layout shift) */
.ds-b4__pin .ds-pl__label--a{opacity:0}
:root[data-m-go] .ds-b4__pin:not([data-flip]) .ds-pl__label--a{opacity:1}
:root[data-m-go] .ds-b4__pin:not([data-flip]) .ds-pl__label--b{opacity:0}
:root[data-m-go] .ds-b4__pin[data-flip] .ds-pl__label--b{transform-box:fill-box;transform-origin:50% 50%;animation-name:ds-flap;animation-duration:540ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--ds-o,0) * 90ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
.ds-pl--0 .ds-pl__label--b{--ds-o:0}.ds-pl--1 .ds-pl__label--b{--ds-o:1}.ds-pl--2 .ds-pl__label--b{--ds-o:2}
@keyframes ds-flap{0%{transform:scaleY(.2);opacity:.2}55%{transform:scaleY(1.12)}100%{transform:scaleY(1);opacity:1}}
/* entrance: drop the three planes in from above */
:root[data-m-go] .ds-b4__svg:not([data-ds-in]) .ds-planes--arch .ds-pl__in{animation-name:none!important;opacity:.14;transform:translateY(-68px) scale(.94)}
:root[data-m-go] .ds-b4__svg[data-ds-in] .ds-planes--arch .ds-pl__in{animation-name:ds-drop-planes;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--ds-o) * 95ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-drop-planes{from{opacity:.14;transform:translateY(-68px) scale(.94)}to{opacity:1;transform:none}}

/* ===================== 5. published ranges (paper) ===================== */
.ds-b5{background:var(--ds-paper);color:var(--ds-ink);padding:56px 0 0}
.ds-seg--rng{margin-bottom:8px}
.ds-rails{position:relative;padding:28px var(--ds-gut) 8px;--fc:300px;--rh:96px}
.ds-rails__axis,.ds-rail{display:grid;grid-template-columns:var(--fc) minmax(0,1fr);gap:28px}
.ds-rails__axis{height:44px;align-items:end}
.ds-rails__ticks{position:relative;height:24px;border-bottom:1px solid #13211f40}
.ds-rails__ticks i{position:absolute;bottom:4px;left:calc(var(--x) * 1%);transform:translateX(-50%);font:600 13px var(--gft-font-mono);font-style:normal;color:var(--ds-mute-l)}
.ds-rails__ticks i:first-child{transform:none}.ds-rails__ticks i:last-child{transform:translateX(-100%)}
.ds-rail{height:var(--rh);align-items:center;border-bottom:1px solid #13211f1a}
.ds-rail__fig strong{display:block;font-size:clamp(2.4rem,3.6vw,3.6rem);font-weight:850;letter-spacing:-.055em;line-height:1;transition:opacity 400ms}
.ds-rail__fig > span{display:block;font-size:14px;font-weight:650;margin-top:6px;color:#2c3d37}
.ds-rail__fig .m-odo{max-width:100%;height:1lh;overflow:hidden}
.ds-rail--manual .ds-rail__fig strong{color:var(--ds-ochre-ink)}.ds-rail--vision .ds-rail__fig strong{color:var(--ds-indigo)}.ds-rail--forecast .ds-rail__fig strong{color:#1f573f}
.ds-rail__track{position:relative;height:100%;background:repeating-linear-gradient(90deg,#13211f1a 0 1px,transparent 1px 25%)}
.ds-rail__line{position:absolute;left:0;right:0;top:50%;height:2px;background:#13211f;transform-origin:0 50%}
.ds-rail__lead{position:absolute;left:0;top:50%;margin-top:-1px;width:calc(var(--lo) * 1%);border-top:2px dashed #6b460eb3;transform-origin:0 50%}
.ds-rail--vision .ds-rail__lead{border-color:#2c3e7ab3}.ds-rail--forecast .ds-rail__lead{border-color:#1f573fb3}
.ds-bar{position:absolute;top:50%;left:calc(var(--lo) * 1%);width:calc((var(--hi) - var(--lo)) * 1%);height:44px;margin-top:-22px;padding:0;border:0;background:transparent;cursor:pointer;overflow:hidden}
.ds-bar__fill{position:absolute;inset:6px 0;transform-origin:0 50%;transition:transform 520ms var(--ds-out),opacity 400ms}
.ds-bar--manual .ds-bar__fill{background:var(--ds-ochre)}.ds-bar--vision .ds-bar__fill{background:var(--ds-indigo)}.ds-bar--forecast .ds-bar__fill{background:#3f8f6b}
.ds-bar__sheen{position:absolute;inset:6px 0;background:linear-gradient(90deg,transparent,#ffffff66,transparent) no-repeat;background-size:40% 100%;background-position:-60% 0}
.ds-bar:focus-visible{outline:3px solid var(--ds-ochre);outline-offset:3px}
.ds-b5[data-active="manual"] .ds-bar--manual,.ds-b5[data-active="vision"] .ds-bar--vision,.ds-b5[data-active="forecast"] .ds-bar--forecast{box-shadow:0 0 0 2px var(--ds-night)}
.ds-b5:has(input[name=ds-rng][value="manual"]:checked) .ds-bar--vision .ds-bar__fill,.ds-b5:has(input[name=ds-rng][value="vision"]:checked) .ds-bar--manual .ds-bar__fill{transform:scaleX(.05);opacity:.5}
.ds-b5:has(input[name=ds-rng][value="manual"]:checked) .ds-rail--vision .ds-rail__fig strong,.ds-b5:has(input[name=ds-rng][value="vision"]:checked) .ds-rail--manual .ds-rail__fig strong{opacity:.3}
.ds-mk{position:absolute;top:16px;left:calc(var(--ds-gut) + var(--fc) + 28px);right:var(--ds-gut);height:calc(56px + var(--rh) * 2)}
.ds-mk__lane{position:relative;height:100%;container-type:inline-size}
.ds-mk__line{position:absolute;top:22px;bottom:0;left:0;width:2px;margin-left:-1px;background:var(--ds-night);transform:translateX(calc(12px + var(--mk) * (100cqw - 24px) / 100));pointer-events:none}
.ds-mk__breath{position:absolute;inset:0 -3px;background:#c98a2b59}
.ds-mk input{position:absolute;top:0;left:0;width:100%;height:44px;margin:0;background:transparent;-webkit-appearance:none;appearance:none;cursor:ew-resize}
.ds-mk input::-webkit-slider-runnable-track{height:44px;background:transparent}
.ds-mk input::-moz-range-track{height:44px;background:transparent}
.ds-mk input::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:4px;border-radius:50%;background:var(--ds-night);border:3px solid var(--ds-ochre)}
.ds-mk input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--ds-night);border:3px solid var(--ds-ochre)}
.ds-mk input:focus-visible{outline:3px solid var(--ds-ochre);outline-offset:2px}
.ds-rails__gap{margin:10px 0 0 calc(var(--fc) + 28px);font:13px/1.6 var(--gft-font-mono);color:var(--ds-mute-l)}
.ds-b5__foot{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px 56px;padding-top:28px}
.ds-rd{display:grid}
.ds-rd__item{grid-area:1/1;visibility:hidden;border-top:3px solid var(--ds-night);padding-top:16px}
.ds-rd__item h3{font-size:1.5rem;margin:6px 0 10px}
.ds-rd__item p{font-size:15px;line-height:1.6;color:#2c3d37}
.ds-rd__item .ds-signal{color:var(--ds-ochre-ink)}
.ds-rd__cond{margin-top:8px;font-style:italic}
.ds-rd__cite{display:flex;align-items:center;gap:10px;margin-top:8px;font:600 13px var(--gft-font-mono)}
.ds-b5[data-active="manual"] .ds-rd__item--manual,.ds-b5[data-active="vision"] .ds-rd__item--vision,.ds-b5[data-active="forecast"] .ds-rd__item--forecast{visibility:visible}
.ds-mkread{border-top:3px solid var(--ds-ochre);padding-top:16px}
.ds-mkread .ds-signal{color:var(--ds-ochre-ink)}
.ds-mkread__v{font-size:clamp(1.15rem,1.6vw,1.45rem);font-weight:650;line-height:1.4;margin:8px 0 10px;min-height:2.8em}
.ds-rd__hint{font:13px/1.6 var(--gft-font-mono);color:var(--ds-mute-l)}
/* entrance: rails draw from the left selvedge, bars grow from zero, figures blank-roll */
:root[data-m-go] .ds-rails:not([data-ds-in]) :is(.ds-rail__line,.ds-rail__lead,.ds-bar__fill){animation-name:none!important;transform:scaleX(0)}
:root[data-m-go] .ds-rails[data-ds-in] :is(.ds-rail__line,.ds-rail__lead){animation-name:ds-draw;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--i) * 80ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .ds-rails[data-ds-in] .ds-bar__fill{animation-name:ds-draw;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--i) * 80ms + 110ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-draw{from{transform:scaleX(0)}}
:root[data-m-go] [data-m-live~=ds-sheen][data-m-on]{animation-name:ds-sheen;animation-duration:4.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-sheen{0%,30%{background-position:-60% 0}100%{background-position:160% 0}}
:root[data-m-go] [data-m-live~=ds-breathe][data-m-on]{animation-name:ds-breathe;animation-duration:2.6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes ds-breathe{from{opacity:.15;transform:scaleX(1)}to{opacity:1;transform:scaleX(2.4)}}
/* the rails converge into one ochre thread at the right edge */
.ds-b5__converge{position:relative;height:200px;margin-top:24px;view-timeline-name:--ds-cv;view-timeline-axis:block}
.ds-b5__converge svg{position:absolute;inset:0;width:100%;height:100%}
.ds-cv{transform-box:view-box;transform-origin:0 0}
.ds-cv__rail{fill:none;stroke:#13211f;stroke-width:2;vector-effect:non-scaling-stroke}
.ds-cv__rail--f{stroke:var(--ds-ochre);stroke-width:3}

/* ===================== Act III, 6. interlude (night, full bleed) ===================== */
.ds-b6{position:relative;z-index:1;margin-top:-140px;padding:230px 0 136px;background:var(--ds-night);clip-path:polygon(0 140px,100% 0,100% 100%,0 100%);overflow:clip}
.ds-b6__plane{position:absolute;inset:0;pointer-events:none}
.ds-b6__para{position:absolute;left:-30vw;right:-30vw;top:12%}
.ds-planes--inter{opacity:.55;--pl-weave:.34}
.ds-b6__warps i{position:absolute;top:0;bottom:0;left:calc(var(--k) * 7.2% + 3%);width:1px;background:#a8d8bd24;transform-origin:50% 0}
.ds-b6__thread{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.ds-b6__thread path{fill:none;stroke:var(--ds-ochre);stroke-width:3;vector-effect:non-scaling-stroke}
.ds-b6__inner{position:relative;display:grid;gap:36px}
.ds-b6__head h2{font-size:clamp(3rem,6.4vw,6.8rem);line-height:.98;max-width:11ch;margin-top:16px}
.ds-acc{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;max-width:1120px}
.ds-seg--acc{max-width:880px}
.ds-acc__read{display:grid}
.ds-acc__i{grid-area:1/1;visibility:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 56px;background:#072d2be6;border:1px solid #a8d8bd59;padding:28px 30px}
.ds-b6:has(input[name=ds-gate][value="0"]:checked) .ds-acc__i--0,.ds-b6:has(input[name=ds-gate][value="1"]:checked) .ds-acc__i--1,.ds-b6:has(input[name=ds-gate][value="2"]:checked) .ds-acc__i--2{visibility:visible}
.ds-acc__shows .ds-signal,.ds-acc__needs .ds-signal{color:var(--ds-sage-lt)}
.ds-acc__big{font:italic 400 clamp(1.7rem,2.6vw,2.6rem)/1.2 var(--gft-font-serif);margin:10px 0 14px}
.ds-acc__verdict{font-weight:750;color:var(--ds-ochre-lt)}
.ds-acc__needs ol{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:12px}
.ds-acc__needs li{position:relative;padding:4px 0 10px 18px;font-size:15px;line-height:1.5}
.ds-acc__needs li::before{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--ds-ochre);transform-origin:0 50%}
.ds-acc__needs li::after{content:'';position:absolute;left:0;top:12px;width:8px;height:8px;background:var(--ds-ochre)}
.ds-b6__copy{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px 56px;align-items:start}
.ds-b6__lede{font-size:clamp(16px,1.25vw,19px);line-height:1.7;color:#e6f0ea}
/* entrance: warp threads draw down the band, then the headline */
:root[data-m-go] .ds-b6:not([data-ds-in]) .ds-b6__warps i{animation-name:none!important;transform:scaleY(0)}
:root[data-m-go] .ds-b6[data-ds-in] .ds-b6__warps i{animation-name:ds-warpdown;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--k) * 18ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-warpdown{from{transform:scaleY(0)}}
:root[data-m-go] .ds-b6 .ds-acc__i li::before{animation-name:ds-weftx;animation-duration:720ms;animation-timing-function:var(--ds-glide);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .ds-b6 .ds-acc__i li:nth-child(2)::before{animation-delay:90ms}
:root[data-m-go] .ds-b6 .ds-acc__i li:nth-child(3)::before{animation-delay:180ms}
:root[data-m-go] .ds-b6:has(input[name=ds-gate][value="0"]:checked) .ds-acc__i--0 li::before,:root[data-m-go] .ds-b6:has(input[name=ds-gate][value="1"]:checked) .ds-acc__i--1 li::before,:root[data-m-go] .ds-b6:has(input[name=ds-gate][value="2"]:checked) .ds-acc__i--2 li::before{animation-name:ds-weftx2}
@keyframes ds-weftx{from{transform:scaleX(0)}}
@keyframes ds-weftx2{from{transform:scaleX(0)}}
.ds-b6:not([data-scan]) .ds-pl__scan{animation-play-state:paused}

/* ===================== 7. gates (forest) ===================== */
.ds-b7{background:var(--ds-forest);padding:0 0 68px;view-timeline-name:--ds-gates;view-timeline-axis:block}
.ds-gtrack{padding:32px var(--ds-gut) 4px}
.ds-gtrack__in{position:relative;height:112px;container-type:inline-size}
.ds-gtrack__line{position:absolute;left:0;right:0;top:22px;height:12px;background:#ffffff2e;border-radius:6px;overflow:hidden}
.ds-gtrack__fill{position:absolute;inset:0;background:var(--ds-ochre);transform-origin:0 50%;transform:scaleX(var(--g));transition:transform 650ms var(--ds-out)}
.ds-gtrack__shuttle{position:absolute;top:0;bottom:0;left:0;width:40px;background:linear-gradient(90deg,transparent,#fff3dcb3,transparent)}
.ds-gnode{position:absolute;top:0;left:calc(var(--at) * 1%);transform:translateX(calc(var(--at) * -1%));display:grid;justify-items:center;gap:8px;padding:0;border:0;background:transparent;color:var(--ds-paper);text-align:center;min-width:44px;cursor:pointer}
.ds-gnode__disc{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--ds-forest);border:3px solid #d8efe2;font:700 15px var(--gft-font-mono);transition:background-color 300ms,color 300ms,border-color 300ms}
.ds-gnode__name{font-size:14px;font-weight:650;line-height:1.3;max-width:20ch}
.ds-gnode[aria-pressed="true"] .ds-gnode__disc{background:var(--ds-ochre);border-color:var(--ds-ochre-lt);color:var(--ds-night)}
.ds-gnode:focus-visible{outline:3px solid var(--ds-ochre);outline-offset:4px}
.ds-b7 .ds-head{margin-top:32px}
.ds-scrub--dark{color:#d8efe2;margin-bottom:26px}
.ds-gt{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:24px 56px;align-items:center;padding-bottom:32px}
.ds-gt__stage{view-timeline-name:--ds-gtst;view-timeline-axis:block}
.ds-planes--gate{--pl-line:#d8efe2;--pl-fill:#072d2b;--pl-fo:.82;--pl-text:#f6f4ef;--pl-halo:#0d4744;--pl-top:#c3cff2;--pl-weave:.32}
.ds-b7[data-gate="0"] .ds-planes--gate :is(.ds-pl--1,.ds-pl--2) .ds-pl__face,.ds-b7[data-gate="1"] .ds-planes--gate .ds-pl--2 .ds-pl__face{fill:none;stroke-dasharray:7 7}
.ds-b7[data-gate="0"] .ds-planes--gate :is(.ds-pl--1,.ds-pl--2) :is(.ds-pl__weave,.ds-pl__edge),.ds-b7[data-gate="1"] .ds-planes--gate .ds-pl--2 :is(.ds-pl__weave,.ds-pl__edge){opacity:0}
.ds-b7[data-gate="0"] .ds-planes--gate :is(.ds-pl--1,.ds-pl--2) .ds-pl__st,.ds-b7[data-gate="1"] .ds-planes--gate .ds-pl--2 .ds-pl__st{transform:translateY(-26px);opacity:.6}
.ds-b7[data-gate="0"] .ds-planes--gate .ds-pl--0 .ds-pl__face,.ds-b7[data-gate="1"] .ds-planes--gate .ds-pl--1 .ds-pl__face,.ds-b7[data-gate="2"] .ds-planes--gate .ds-pl--2 .ds-pl__face{stroke:var(--ds-ochre-lt);stroke-width:2.8}
.ds-gt__cards{display:grid;gap:16px}
.ds-gt__read{font-size:clamp(1.05rem,1.4vw,1.3rem);font-weight:650;line-height:1.45;max-width:none;border-left:3px solid var(--ds-ochre);padding-left:16px}
.ds-gt__read b{color:var(--ds-ochre-lt);font-size:1.25em}
.ds-gt__read .ds-signal{color:#d8efe2}
.ds-gt__panels{display:grid}
.ds-gp{grid-area:1/1;visibility:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px 32px;background:#072d2b;padding:24px 26px;border:1px solid #d8efe259}
.ds-b7[data-gate="0"] .ds-gp--0,.ds-b7[data-gate="1"] .ds-gp--1,.ds-b7[data-gate="2"] .ds-gp--2{visibility:visible}
.ds-gp .ds-signal{color:var(--ds-sage-lt)}
.ds-gp h3{font-size:1.45rem;margin:8px 0 10px}
.ds-gp p{font-size:15px;line-height:1.62;color:#e2eee8}
.ds-gp ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:10px}
.ds-gp li{position:relative;padding-left:28px;font-size:14px;line-height:1.48;color:#e8f2ec}
.ds-gp li::before{content:'✓';position:absolute;left:0;top:0;width:18px;height:18px;display:grid;place-items:center;background:var(--ds-ochre);color:var(--ds-night);font-size:12px;font-weight:800;transform-origin:50% 50%}
:root[data-m-go] .ds-b7[data-gate="0"] .ds-gp--0 li::before,:root[data-m-go] .ds-b7[data-gate="1"] .ds-gp--1 li::before,:root[data-m-go] .ds-b7[data-gate="2"] .ds-gp--2 li::before{animation-name:ds-tick;animation-duration:520ms;animation-timing-function:var(--ds-glide);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
.ds-gp li:nth-child(2)::before{animation-delay:70ms}.ds-gp li:nth-child(3)::before{animation-delay:140ms}.ds-gp li:nth-child(4)::before{animation-delay:210ms}
@keyframes ds-tick{from{transform:scale(.2);opacity:.2}60%{transform:scale(1.25)}to{transform:none;opacity:1}}
/* entrance: the track draws left to right, nodes knot on arrival */
:root[data-m-go] .ds-b7:not([data-ds-in]) .ds-gtrack__line{animation-name:none!important;transform:scaleX(0)}
:root[data-m-go] .ds-b7:not([data-ds-in]) .ds-gnode__disc{animation-name:none!important;transform:scale(.25);opacity:.15}
:root[data-m-go] .ds-b7[data-ds-in] .ds-gtrack__line{transform-origin:0 50%;animation-name:ds-draw;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .ds-b7[data-ds-in] .ds-gnode__disc{animation-name:ds-knot;animation-duration:760ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--at) * 4ms + 80ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-knot{from{transform:scale(.25);opacity:.15}65%{transform:scale(1.15)}to{transform:none;opacity:1}}

/* ===================== 8. monitor (deep) ===================== */
.ds-b8{background:var(--ds-deep);padding:64px 0 84px}
.ds-b8__band{margin-bottom:26px}
.ds-ch{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.ds-ch__i{display:grid;grid-template-rows:auto auto auto auto 1fr;gap:12px;min-width:0;border-top:1px solid #a8d8bd59;padding-top:14px}
.ds-ch__plane{width:62%}
.ds-planes--mon{--pl-line:#a8d8bd;--pl-fill:#0e4d4a;--pl-fo:.72;--pl-weave:.34;--pl-top:#c3cff2}
.ds-ch__trace{position:relative;height:120px;margin-top:-26px;border:1px solid #a8d8bd73;background:repeating-linear-gradient(90deg,#a8d8bd14 0 1px,transparent 1px 10%),#072d2b;overflow:hidden;container-type:inline-size}
.ds-ch__band{position:absolute;left:0;right:0;top:24%;bottom:24%;border-block:1px dashed #a8d8bd80}
.ds-ch__drift,.ds-ch__unroll,.ds-ch__wind{position:absolute;inset:0;transition:transform 900ms var(--ds-out)}
.ds-ch__wind{transform-origin:0 50%}
.ds-ch__trace svg{position:absolute;inset:10% 0;width:200%;height:80%;overflow:visible}
.ds-trace path{stroke:var(--ds-sage-lt);stroke-width:2.2;vector-effect:non-scaling-stroke}
.ds-ch__i--1 .ds-trace path{stroke:var(--ds-indigo-lt)}.ds-ch__i--2 .ds-trace path{stroke:var(--ds-ochre-lt)}
.ds-ch__gap{position:absolute;top:0;bottom:0;left:42%;width:22%;background:repeating-linear-gradient(135deg,#04201e 0 6px,#2a1b05 6px 9px);opacity:0;transition:opacity 400ms}
.ds-ch__cursor{position:absolute;top:0;bottom:0;left:0;width:2px;background:#fff3dccc}
.ds-ch__queue{position:absolute;right:10px;bottom:8px;display:flex;gap:4px}
.ds-ch__queue i{width:12px;height:12px;border:1px solid var(--ds-ochre-lt);opacity:.55;transition:background-color 220ms calc(var(--q) * 90ms),opacity 220ms calc(var(--q) * 90ms)}
.ds-b8:has(input[name=ds-cond][value="drift"]:checked) .ds-ch__i--0 .ds-ch__drift{transform:translateY(-30px)}
.ds-b8:has(input[name=ds-cond][value="drift"]:checked) .ds-ch__i--0 .ds-ch__band{border-color:var(--ds-ochre)}
.ds-b8:has(input[name=ds-cond][value="interrupt"]:checked) .ds-ch__i--2 .ds-ch__gap{opacity:1}
.ds-b8:has(input[name=ds-cond][value="interrupt"]:checked) .ds-ch__queue i{background:var(--ds-ochre);opacity:1}
.ds-ch__title{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.ds-ch__title h3{font-size:clamp(1.25rem,1.6vw,1.6rem)}
.ds-ch__chip{display:grid}
.ds-ch__chip .ds-st{grid-area:1/1;font:700 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;border:1px solid var(--ds-ochre-lt);color:var(--ds-ochre-lt);justify-self:end}
.ds-ch__live{display:grid;font-size:15px;line-height:1.58;color:#e6f0ea}
.ds-ch__live .ds-st{grid-area:1/1}
.ds-st{visibility:hidden}
.ds-b8:has(input[name=ds-cond][value="steady"]:checked) .ds-st--steady,.ds-b8:has(input[name=ds-cond][value="drift"]:checked) .ds-st--drift,.ds-b8:has(input[name=ds-cond][value="interrupt"]:checked) .ds-st--interrupt{visibility:visible}
.ds-more summary{min-height:44px;display:flex;align-items:center;font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ds-sage-lt);cursor:pointer}
.ds-more p{font-size:14px;line-height:1.62;color:#e2eee8;padding-bottom:8px}
.ds-b8__cap{margin-top:22px}
:root[data-m-go] [data-m-live~=ds-trace][data-m-on]{animation-name:ds-trace;animation-duration:var(--ds-per,8s);animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-trace{from{transform:translateX(0)}to{transform:translateX(-600px)}}
:root[data-m-go] [data-m-live~=ds-cursor][data-m-on]{animation-name:ds-cursor;animation-duration:5.2s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-cursor{from{transform:translateX(0)}to{transform:translateX(100cqw)}}
/* entrance: traces unroll out of their planes, left to right */
:root[data-m-go] .ds-ch:not([data-ds-in]) .ds-ch__unroll{animation-name:none!important;clip-path:inset(0 100% 0 0)}
:root[data-m-go] .ds-ch:not([data-ds-in]) .ds-ch__i{animation-name:none!important;opacity:.14;transform:translateY(36px)}
:root[data-m-go] .ds-ch[data-ds-in] .ds-ch__unroll{animation-name:ds-unroll;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .ds-ch[data-ds-in] .ds-ch__i{animation-name:ds-card-rise;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .ds-ch[data-ds-in] .ds-ch__i--1 :is(.ds-ch__unroll),.ds-ch[data-ds-in] .ds-ch__i--1{animation-delay:85ms}
:root[data-m-go] .ds-ch[data-ds-in] .ds-ch__i--2 :is(.ds-ch__unroll),.ds-ch[data-ds-in] .ds-ch__i--2{animation-delay:170ms}
@keyframes ds-unroll{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}

/* ===================== 9. closing instrument (full-bleed dark scene into jagged-tear footer break) ===================== */
.ds-b9{position:relative;view-timeline-name:--ds-close;view-timeline-axis:block;padding:72px 0 92px;background-color:var(--ds-night);background-image:radial-gradient(ellipse at 22% 42%,#0e4d4a66 0%,transparent 62%),repeating-linear-gradient(90deg,transparent 0 41px,#6bb68f14 41px 42px);overflow:clip}
.ds-b9__grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.15fr);gap:32px 56px;align-items:start}
.ds-b9__stagecol{display:grid;gap:18px}
.ds-b9__stage{position:relative;background:#04201ecc;border:1px solid #6bb68f59;padding:18px 18px 10px}
.ds-planes--close{--pl-weave:.32}
.ds-b9[data-pick="0"] .ds-planes--close .ds-pl--0 .ds-pl__st,.ds-b9[data-pick="1"] .ds-planes--close .ds-pl--1 .ds-pl__st,.ds-b9[data-pick="2"] .ds-planes--close .ds-pl--2 .ds-pl__st{transform:translateY(-28px)}
.ds-b9:not([data-pick="0"]) .ds-planes--close .ds-pl--0 .ds-pl__st,.ds-b9:not([data-pick="1"]) .ds-planes--close .ds-pl--1 .ds-pl__st,.ds-b9:not([data-pick="2"]) .ds-planes--close .ds-pl--2 .ds-pl__st{opacity:.34}
.ds-b9[data-pick="0"] .ds-planes--close .ds-pl--0 .ds-pl__face,.ds-b9[data-pick="1"] .ds-planes--close .ds-pl--1 .ds-pl__face,.ds-b9[data-pick="2"] .ds-planes--close .ds-pl--2 .ds-pl__face{stroke:var(--ds-ochre-lt);stroke-width:3;fill:#1b635d;fill-opacity:.88}
.ds-thr__run--down{stroke-width:2.4}
:root[data-m-go] [data-m-live~=ds-drop][data-m-on]{animation-name:ds-dropdot;animation-duration:3.8s;animation-timing-function:cubic-bezier(.45,0,.55,1);animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-dropdot{0%{transform:translateY(0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateY(560px);opacity:0}}
.ds-weave{position:relative;display:grid;gap:0;margin-left:calc(100% * 34 / 640 + 14px)}
/* Clear the thread and bead even during the nav's 48px left entrance. */
.ds-warp{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'k go' 't go' 'r go';gap:3px 16px;align-items:center;padding:12px 0 14px 64px;text-decoration:none;color:var(--ds-paper);min-height:44px}
.ds-warp .ds-signal{grid-area:k;color:var(--ds-sage-lt)}
.ds-warp strong{grid-area:t;font-size:clamp(1.08rem,1.4vw,1.3rem);line-height:1.25}
.ds-warp__rec{grid-area:r;font:600 13px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ds-ochre-lt);visibility:hidden}
.ds-warp i{grid-area:go;font-style:normal;font-size:20px;color:var(--ds-sage-lt)}
.ds-warp__line{position:absolute;left:0;right:0;bottom:0;height:2px;background:#a8d8bd40}
.ds-b9[data-rec="0"] .ds-warp[data-i="0"],.ds-b9[data-rec="1"] .ds-warp[data-i="1"],.ds-b9[data-rec="2"] .ds-warp[data-i="2"]{color:#fff}
.ds-b9[data-rec="0"] .ds-warp[data-i="0"] .ds-warp__line,.ds-b9[data-rec="1"] .ds-warp[data-i="1"] .ds-warp__line,.ds-b9[data-rec="2"] .ds-warp[data-i="2"] .ds-warp__line{background:var(--ds-ochre);height:3px}
.ds-b9[data-rec="0"] .ds-warp[data-i="0"] .ds-warp__rec,.ds-b9[data-rec="1"] .ds-warp[data-i="1"] .ds-warp__rec,.ds-b9[data-rec="2"] .ds-warp[data-i="2"] .ds-warp__rec{visibility:visible}
.ds-warp:hover strong,.ds-warp:focus-visible strong{text-decoration:underline;text-underline-offset:.2em}
.ds-weave__weft{position:absolute;left:-12px;top:0;bottom:0;width:4px;pointer-events:none}
.ds-weave__weft i{position:absolute;left:0;top:0;width:4px;height:33.3%;background:var(--ds-ochre-lt);opacity:0}
:root[data-m-go] [data-m-live~=ds-weft][data-m-on] i{animation-name:ds-weftsweep;animation-duration:3.6s;animation-timing-function:var(--ds-out);animation-iteration-count:infinite;animation-direction:normal}
@keyframes ds-weftsweep{0%{transform:translateY(0);opacity:0}15%{opacity:1}60%,80%{transform:translateY(calc(var(--rec,2) * 100%));opacity:1}100%{transform:translateY(calc(var(--rec,2) * 100%));opacity:0}}
.ds-b9[data-rec="0"]{--rec:0}.ds-b9[data-rec="1"]{--rec:1}.ds-b9[data-rec="2"]{--rec:2}
.ds-b9__copy{display:grid;gap:18px;min-width:0}
.ds-b9__head{display:grid;gap:10px}
.ds-b9__head .gft-eyebrow{margin:0}
.ds-b9__head h2{font-size:clamp(2.2rem,3.6vw,3.7rem);line-height:1.04;margin:0}
.ds-b9__head .ds-lede{font-size:15px;margin:0}
.ds-b9__read{display:grid;gap:6px;margin:0;font-size:15px;line-height:1.5;color:#e6f0ea;max-width:none;border-left:3px solid var(--ds-ochre);background:#04201e99;padding:10px 16px;min-height:4.8em}
.ds-b9__read .ds-signal{color:var(--ds-sage-lt);margin-right:6px}
.ds-b9__read b{font-weight:650;color:#fff}
.ds-po{display:grid}
.ds-po__i{grid-area:1/1;visibility:hidden;opacity:0;pointer-events:none;display:grid;gap:14px}
.ds-b9:has(input[name=ds-pick][value="0"]:checked) .ds-po__i--0,.ds-b9:has(input[name=ds-pick][value="1"]:checked) .ds-po__i--1,.ds-b9:has(input[name=ds-pick][value="2"]:checked) .ds-po__i--2{visibility:visible;opacity:1;pointer-events:auto;animation-name:ds-study-morph;animation-duration:520ms;animation-timing-function:var(--ds-out);animation-iteration-count:1;animation-direction:normal;animation-fill-mode:both}
@keyframes ds-study-morph{from{opacity:.15;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
/* one large morphing recommended study card */
.ds-study-hero{display:grid;gap:12px;padding:20px 24px;border:2px solid var(--ds-ochre);background:linear-gradient(135deg,#c98a2b33 0%,#0e4d4ab3 100%);color:var(--ds-paper);text-decoration:none;transition:border-color 220ms,transform 220ms}
.ds-study-hero:hover,.ds-study-hero:focus-visible{border-color:var(--ds-ochre-lt);transform:translateY(-2px)}
.ds-study-hero__meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;border-bottom:1px solid #c98a2b66;padding-bottom:10px}
.ds-study-hero__meta .ds-signal{color:var(--ds-ochre-lt)}
.ds-study-hero__pill{font:600 13px var(--gft-font-mono);color:var(--ds-sage-lt);background:#072d2bcc;padding:4px 10px;border:1px solid #6bb68f66}
.ds-study-hero__main{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:14px 24px}
.ds-study-hero__main strong{display:block;font-size:clamp(1.5rem,2.2vw,2rem);line-height:1.15;color:#fff;margin-bottom:6px}
.ds-study-hero__main p{font-size:15px;line-height:1.55;color:#e6f0ea;margin:0;max-width:52ch}
.ds-study-hero__cta{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:var(--ds-ochre);color:var(--ds-night);font:700 14px var(--gft-font-sans);white-space:nowrap}
.ds-study-hero__cta i{font-style:normal}
/* single row of three cards with >=14px text */
/* Reserve the card rise (48px) plus its tier wrapper's morph (14px). */
.ds-po__row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding-bottom:64px}
.ds-card{position:relative;display:grid;grid-template-rows:auto 1fr auto;gap:8px;padding:16px 18px;border:1px solid #a8d8bd73;background:#0e4d4a99;color:var(--ds-paper);text-decoration:none;min-height:124px;transition:border-color 220ms,background-color 220ms,transform 220ms}
.ds-card__type{font:600 13px/1.35 var(--gft-font-mono);color:var(--ds-sage-lt)}
.ds-card strong{font-size:16px;font-weight:700;line-height:1.35;color:#fff}
.ds-card__go{font-size:14px;font-weight:650;color:var(--ds-ochre-lt);display:inline-flex;align-items:center;gap:6px}
.ds-card__go i{font-style:normal}
.ds-card:hover,.ds-card:focus-visible{border-color:var(--ds-ochre-lt);background:#0e4d4ae6;transform:translateY(-2px)}
.ds-card--off{opacity:.85;background:#072d2b99}
.ds-card--off .ds-card__go{color:var(--ds-mute-d)}
.ds-po__note{font-size:14px;line-height:1.55;color:var(--ds-mute-d);margin:0}
.ds-legal{font:13px/1.6 var(--gft-font-mono);color:var(--ds-mute-d);margin:0}
/* jagged tear section break before 'The cotton base' footer thread */
.ds-b9__tear{position:absolute;left:0;right:0;bottom:0;height:36px;pointer-events:none;z-index:3}
.ds-b9__tear svg{width:100%;height:100%;display:block}
.ds-b9__tear-fill{fill:#04201e}
.ds-b9__tear-line{fill:none;stroke:var(--ds-ochre);stroke-width:2.5;vector-effect:non-scaling-stroke}
/* entrance: rise the study card and the 3 row cards with a stagger */
:root[data-m-go] .ds-po:not([data-ds-in]) :is(.ds-study-hero,.ds-card){animation-name:none!important;opacity:.14;transform:translateY(48px)}
:root[data-m-go] .ds-po[data-ds-in] .ds-study-hero{animation-name:ds-card-rise;animation-duration:840ms;animation-timing-function:var(--ds-glide);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .ds-po[data-ds-in] .ds-card{animation-name:ds-card-rise;animation-duration:860ms;animation-timing-function:var(--ds-glide);animation-delay:calc(var(--card-k,0) * 75ms + 70ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes ds-card-rise{from{opacity:.14;transform:translateY(48px)}to{opacity:1;transform:none}}

/* ===================== scroll-linked hand-overs (supporting engines only) ===================== */
@supports (animation-timeline:view()){
 /* 1 to 2: stack dock. Once the reader scrolls past the opening viewport, the hero stack glides towards the instrument */
 @media(min-width:1001px) and (min-height:640px){
  .ds-dock{timeline-scope:--ds-dock}
  :root[data-m-go] .ds-hero__dock{animation-name:ds-dock;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-dock;animation-range-start:entry 32%;animation-range-end:entry 88%}
  :root[data-m-go] :is(.ds-splash__content,.ds-splash__bottom,.ds-capline,.ds-hero__drop,.ds-hero__pickwrap){animation-name:ds-fadeout;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-dock;animation-range-start:entry 32%;animation-range-end:entry 68%}
 }
 /* 2 to 3: plane peel. The bottom plane detaches and lies flat as the loom's floor */
 :root[data-m-go] .ds-planes--inst .ds-pl--0{animation-name:ds-peel;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-dock;animation-range-start:exit 4%;animation-range-end:exit 46%}
 /* 3 to 4: the woven cloth lifts off the loom floor and folds into the three stacked planes of the pinned stage */
 :root[data-m-go] .ds-planes--arch .ds-pl__fl{animation-name:ds-fold;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-cold;animation-range-start:exit 0%;animation-range-end:exit 85%}
 /* 5 to 6: the rails draw on and bend into one thread */
 :root[data-m-go] .ds-cv{animation-name:ds-cvdraw;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-cv;animation-range-start:entry 0%;animation-range-end:cover 50%}
 /* 7: the shuttle travels the track as the section is read */
 :root[data-m-go] .ds-gtrack__shuttle{animation-name:ds-shuttle;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-gates;animation-range-start:cover 10%;animation-range-end:cover 90%}
 /* 7 to 8: the laid planes lift and slide apart sideways towards the monitor's three screens */
 :root[data-m-go] .ds-planes--gate .ds-pl{animation-name:ds-apart;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-gtst;animation-range-start:exit 0%;animation-range-end:exit 100%}
 /* 8 to 9: the traces wind back into their planes; the planes slide together into the closing's stack */
 :root[data-m-go] .ds-ch__wind{animation-name:ds-windback;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-close;animation-range-start:entry 0%;animation-range-end:entry 60%}
 :root[data-m-go] .ds-planes--close .ds-pl{animation-name:ds-together;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;animation-direction:normal;animation-timeline:--ds-close;animation-range-start:entry 15%;animation-range-end:entry 75%}
}
@keyframes ds-dock{0%{transform:none;opacity:1}86%{opacity:1}100%{transform:translate(var(--ds-dx,0px),var(--ds-dy,0px)) scale(var(--ds-k,.82));opacity:0}}
@keyframes ds-fadeout{from{opacity:1}to{opacity:0}}
@keyframes ds-fadein{from{opacity:0}to{opacity:1}}
@keyframes ds-peel{from{transform:none;opacity:1}to{transform:translateY(150px) scale(1.18,.22);opacity:.9}}
@keyframes ds-fold{from{transform:translate(var(--fx),var(--fy)) scale(.62,.14)}to{transform:none}}
.ds-planes--arch .ds-pl--0 .ds-pl__fl{--fx:-196px;--fy:70px;transform-origin:320px 312px}.ds-planes--arch .ds-pl--1 .ds-pl__fl{--fx:0px;--fy:185px;transform-origin:320px 197px}.ds-planes--arch .ds-pl--2 .ds-pl__fl{--fx:196px;--fy:300px;transform-origin:320px 82px}
@keyframes ds-cvdraw{from{transform:scaleX(.08)}to{transform:none}}
@keyframes ds-shuttle{from{transform:translateX(0)}to{transform:translateX(calc(100cqw - 40px))}}
@keyframes ds-apart{to{transform:translate(var(--ax),var(--ay)) scale(.62)}}
:is(.ds-planes--gate,.ds-planes--close) .ds-pl--0{--ax:-330px;--ay:-112px}:is(.ds-planes--gate,.ds-planes--close) .ds-pl--1{--ax:0px;--ay:0px}:is(.ds-planes--gate,.ds-planes--close) .ds-pl--2{--ax:330px;--ay:115px}
@keyframes ds-windback{from{transform:none}to{transform:scaleX(.06)}}
@keyframes ds-together{from{transform:translate(var(--ax),var(--ay)) scale(.62)}to{transform:none}}
@media(prefers-reduced-motion:reduce){.ds-sec *,.ds-dock *{animation-name:none!important;animation-timeline:auto!important}}

/* ===================== tablet and phone ===================== */
@media(max-width:1200px){.ds-planes--hero .ds-pl__label{visibility:hidden}}
@media(max-width:1000px){
 .ds-pl__label,.ds-ar__tag,.ds-uc-links{visibility:hidden}
 .ds-head{grid-template-columns:1fr;gap:16px;margin-bottom:24px}
 .ds-splash{--sh:auto;display:flex;flex-direction:column;min-height:0;overflow:clip}
 .ds-splash__content{order:1;padding-top:52px;padding-bottom:18px;min-height:min(44svh,400px)}
 .ds-splash__structure{order:2;position:relative;inset:auto;z-index:0}
 .ds-splash__bottom{order:3;margin-top:20px}
 .ds-splash .gft-splash__lede{max-width:40ch}
 .ds-capline{left:-14px;top:54px;height:auto;bottom:-2000px}
 .ds-hero{position:relative;inset:auto;display:grid;gap:12px;justify-items:center;padding-inline:var(--ds-gut)}
 .ds-hero__box{position:relative;right:auto;top:auto;width:min(88vw,620px)}
 .ds-hero__drop{display:none}
 .ds-hero__pickwrap{position:relative;right:auto;top:auto;width:min(88vw,620px);padding-left:0}
 .ds-hero__pick{gap:6px}
 .ds-hero__chip{min-height:46px;padding:6px 8px;gap:6px;font-size:13px}
 .ds-b2{padding:36px 0 64px}
 .ds-b2__grid{grid-template-columns:1fr;gap:20px}
 .ds-b2__stage{position:relative;top:auto}
 .ds-b2__stack{width:min(78vw,460px);margin-inline:auto}
 .ds-seg__opt>span{min-height:46px;padding:6px 8px;font-size:13px;gap:6px}
 .ds-seg__opt b{display:none}
 .ds-tabs{grid-template-columns:1fr}
 .ds-tab{margin-left:0;margin-top:-1px;min-height:56px}
 .ds-loom{padding:20px 16px}
 .ds-loom__top,.ds-loom__foot{grid-template-columns:1fr}
 .ds-loom__now{justify-items:start;text-align:left}
 .ds-b4__pin{position:sticky;top:0;min-height:auto;padding-block:12px}
 .ds-b4__inner{width:calc(100% - 40px);grid-template-columns:1fr;gap:14px}
 .ds-b4__head h2{font-size:1.6rem}
 .ds-b4__svg{width:min(100%,360px)}
 .ds-hud__cell{padding:8px 10px}
 .ds-hud__v{font-size:13px}
 .ds-hud__q{display:none}
 .ds-b4__steps{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;flex-basis:100%}
 .ds-b4__steps button{min-height:44px;font-size:13px;padding:4px}
 .ds-b4__steps button b{display:none}
 .ds-b4__scenes{display:none}
 .ds-step{height:48svh}
 .ds-rails{--fc:1fr;--rh:auto;padding-top:20px}
 .ds-rails__axis{grid-template-columns:1fr}
 .ds-rails__axis>span:first-child{display:none}
 .ds-rail{grid-template-columns:1fr;gap:6px;padding-block:14px}
 .ds-rail__track{height:52px}
 .ds-mk{position:relative;top:auto;left:auto;right:auto;height:56px;margin-top:6px}
 .ds-mk__line{top:0;height:44px}
 .ds-rails__gap{margin-left:0}
 .ds-b5__foot{grid-template-columns:1fr}
 .ds-b6{margin-top:-90px;padding:150px 0 110px;clip-path:polygon(0 90px,100% 0,100% 100%,0 100%)}
 .ds-b6__head h2{font-size:clamp(2.4rem,10vw,4.2rem)}
 .ds-acc__i,.ds-b6__copy{grid-template-columns:1fr;padding:20px}
 .ds-b6__copy{padding:0}
 .ds-b6__para{left:-80vw;right:-80vw;top:auto;bottom:0}
 .ds-gt{grid-template-columns:1fr}
 .ds-gt__stage{width:min(68vw,420px);margin-inline:auto}
 .ds-gp{grid-template-columns:1fr}
 .ds-ch{grid-template-columns:1fr;gap:20px}
 .ds-ch__i{grid-template-columns:96px minmax(0,1fr);grid-template-rows:auto;align-items:center}
 .ds-ch__plane{width:96px;grid-row:1}
 .ds-ch__title{grid-column:2;grid-row:1}
 .ds-ch__trace{grid-column:1/-1;margin-top:0;height:96px}
 .ds-ch__live,.ds-more{grid-column:1/-1}
 .ds-b9__grid{grid-template-columns:1fr}
 .ds-b9__stage{width:min(82vw,520px);margin-inline:auto}
 .ds-weave{margin-left:22px}
 .ds-warp{padding-left:16px}
 .ds-po__row{grid-template-columns:1fr}
 .ds-thr__run--down,.ds-b9__drop{display:none}
}
@media(max-width:640px){
 .ds-splash h1{font-size:clamp(2.6rem,11.5vw,3.8rem);margin-top:18px}
 .ds-splash .gft-splash__lede{font-size:15px}
 .ds-hero__actions{gap:14px}
 .ds-hero__actions .gft-button{font-size:13px;padding:10px 14px;gap:14px}
 .ds-splash__bottom{height:auto;padding-block:12px}
 .ds-tally-row{grid-template-columns:1fr;justify-items:start}
 .ds-uc-readout{justify-self:stretch}
 .ds-chips__grid{grid-template-columns:1fr}
 .ds-uc__item{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px 12px}
 .ds-uc__tier{grid-column:1/-1}
 /* the loom turns into a vertical cloth on phone */
 .ds-loom__frame{--nm:0px;--st:0px;--gp:0px}
 .ds-lanes{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
 .ds-lane{grid-template-columns:1fr;grid-template-rows:150px 220px 104px;gap:6px;align-items:start;justify-items:center}
 .ds-lane__name,.ds-lane__state{writing-mode:vertical-rl;transform:rotate(180deg);max-height:100%;font-size:13px;line-height:1.25}
 .ds-lane__name{align-self:end;text-align:left}
 .ds-lane__state{align-self:start;text-align:right;letter-spacing:.04em}
 .ds-lane__track{justify-self:stretch;height:220px;background:repeating-linear-gradient(90deg,#a8d8bd2b 0 1px,transparent 1px 6px)}
 .ds-lane__warp{left:50%;right:auto;top:0;bottom:0;width:1px;height:auto}
 .ds-lane--release .ds-lane__warp{width:5px;height:auto;margin:0 0 0 -2px}
 .ds-lane__cloth,.ds-lane__glint{clip-path:inset(calc(var(--s) * 1%) 0 calc((100 - var(--p)) * 1%) 0)}
 .ds-lane__cloth{background-image:repeating-linear-gradient(0deg,#d6eedf8c 0 2px,transparent 2px 7px),repeating-linear-gradient(90deg,#072d2b59 0 1px,transparent 1px 6px)}
 .ds-lane__gate{left:-4px;right:-4px;top:calc(var(--at) * 1%);bottom:auto;width:auto;height:2px}
 .ds-reedbox{left:-4px;right:-4px;top:156px;bottom:auto;height:220px;container-type:size}
 .ds-reed{left:0;right:0;top:-2px;bottom:auto;width:auto;height:4px;transform:translateY(calc(var(--p) * 1cqh))}
 .ds-reed__beat{left:-6px;right:auto;top:-5px;width:12px;height:14px}
 .ds-reed__edge{left:0;right:0;top:auto;bottom:4px;width:auto;height:30px;background:linear-gradient(180deg,transparent,#e8bf8659)}
 .ds-loom__axis{display:none}
 .ds-b3 .ds-scrub{margin-inline:0}
 .ds-b3__floor{margin-inline:var(--ds-gut)}
 .ds-b3__floorthread{left:16px}
 .ds-seg--wide .ds-seg__opt>span{min-height:48px;font-size:14px}
 .ds-gtrack__in{height:128px}
 .ds-gnode__name{font-size:13px;max-width:12ch}
 .ds-gnode__disc{width:46px;height:46px;font-size:13px}
}
