/* Base controls of the supervisor pipeline instrument. Every selector is confined to .sp-* (this route only). */
.sp-sec{--sp-night:#072d2b;--sp-deep:#05302d;--sp-forest:#0e4d4a;--sp-paper:#f6f4ef;--sp-sage:#6bb68f;--sp-ochre:#c98a2b;--sp-ochre-t:#e6b25f;--sp-leaf:#3f8f6b;--sp-ink:#072d2b;--sp-mute:#34514b;--sp-dmute:#d3e3da;--sp-cream:#e9dfc4;--sp-indigo:#aab8f2;--sp-ease:cubic-bezier(.16,1,.3,1);position:relative;font-variant-numeric:tabular-nums;min-width:0;font-size:17px}
.sp-sec [hidden]{display:none!important}
.sp-sec input,.sp-sec select,.sp-sec textarea,.sp-sec button,.sp-sec summary{font:inherit}
.sp-sec button,.sp-sec summary,.sp-sec select{cursor:pointer}
.sp-sec :is(input,button,summary,select,textarea,a,[tabindex]):focus-visible{outline:3px solid var(--sp-ochre);outline-offset:3px}
.sp-sec button:disabled{opacity:.45;cursor:not-allowed}
.sp-sec h2{font-weight:850;letter-spacing:-.05em;line-height:1.04}
.sp-sec .gft-eyebrow{font:600 13px var(--gft-font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}
.sp-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sp-note{font-size:15px;line-height:1.6;color:var(--sp-mute)}
.sp-chip{display:inline-block;font:600 13px var(--gft-font-mono);letter-spacing:.08em;background:#e2ebe6;color:var(--sp-ink);padding:8px 10px}
.sp-noscript{padding:24px;background:#ece8df;color:#072d2b;margin:24px}
/* segmented radios */
.sp-seg{display:inline-flex;flex-wrap:wrap;border:1px solid #6bb68f99;margin:0;padding:0;min-width:0}
.sp-seg legend{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.sp-seg label{position:relative;cursor:pointer}
.sp-seg input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.sp-seg span{display:flex;align-items:center;min-height:44px;padding:0 16px;font:600 14px var(--gft-font-mono);letter-spacing:.04em;transition:background-color .25s,color .25s}
.sp-seg--dark span{color:#e2ebe6}
.sp-seg--dark input:checked+span{background:var(--sp-sage);color:var(--sp-ink)}
.sp-seg--paper{border-color:#0e4d4a88}
.sp-seg--paper span{color:var(--sp-ink)}
.sp-seg--paper input:checked+span{background:var(--sp-forest);color:var(--sp-paper)}
.sp-seg input:focus-visible+span{outline:3px solid var(--sp-ochre);outline-offset:-3px}
/* range scrubbers */
.sp-scrub{display:grid;gap:4px;font:600 13px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase}
.sp-scrub input{width:100%;min-height:44px;accent-color:var(--sp-sage);cursor:ew-resize}
.sp-scrub--paper input{accent-color:var(--sp-forest)}
.sp-switch{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:15px;cursor:pointer}
.sp-switch input{width:20px;height:20px;accent-color:var(--sp-sage)}
.sp-switch--paper input{accent-color:var(--sp-forest)}
.sp-table-scroll{max-width:100%;overflow-x:auto}
.sp-sec table{border-collapse:collapse;width:100%;line-height:1.5}
.sp-sec caption{text-align:left;font:13px/1.6 var(--gft-font-mono);padding:0 0 12px}
.sp-sec th,.sp-sec td{padding:10px 14px;text-align:right;vertical-align:top}
.sp-sec th:first-child,.sp-sec td:first-child{text-align:left}
.sp-sec th small{display:block;font-size:13px;font-weight:400}
/* The film of /tools/supervisor-pipeline/: one staffing stair carried through nine scenes (S0 to S8).
   Every selector is confined to .sp-* or this page's own splash. Pre-states live only under :root[data-m-go]
   (and, for the page-owned entrances, only once film.ts has armed <main>). */

/* ================= S0 splash: the stair, full bleed ================= */
.gft-splash[data-splash=supervisor-pipeline]{min-height:calc(100svh - 88px - 96px);justify-content:flex-start}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__structure{inset:0;height:auto;display:block}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__structure::after{display:none}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__content{padding-top:20px;padding-bottom:0}
.gft-splash[data-splash=supervisor-pipeline] h1{font-size:clamp(3.4rem,min(5.7vw,9.4svh),5.4rem);max-width:none;margin-top:22px}
.gft-splash[data-splash=supervisor-pipeline] h1 .gft-serif{display:inline-block}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__lede{font-size:18px;line-height:1.6;max-width:40ch;margin-top:22px;color:#dbe7e0}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__actions{margin-top:24px}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__data{display:none}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__caption{font-size:13px}
.gft-splash[data-splash=supervisor-pipeline] .gft-splash__cue{font-size:14px}
:root[data-m-go] .gft-splash[data-splash=supervisor-pipeline] h1[data-m-in]{animation-name:sp-h1-rise;animation-duration:620ms}
:root[data-m-go] .gft-splash[data-splash=supervisor-pipeline] h1[data-m-in] .gft-serif{animation-name:sp-h1-rise;animation-duration:700ms;animation-delay:200ms;animation-timing-function:var(--sp-ease,cubic-bezier(.16,1,.3,1));animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-h1-rise{from{opacity:0;transform:translateY(.4em)}}
.sp-hero{position:absolute;inset:0}
.sp-hero__scrim{position:absolute;left:0;top:0;width:46%;height:72%;background:linear-gradient(90deg,#072d2bf0 0%,#072d2bc4 62%,#072d2b00 100%);z-index:1;pointer-events:none}
.sp-hero__plot{position:absolute;left:0;right:0;bottom:var(--splash-strip-h,72px);aspect-ratio:1440/560;container-type:size;transform-origin:50% 100%}
.sp-hero__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.sp-hero__svg path{vector-effect:non-scaling-stroke}
.sp-hero__tick{stroke:#6bb68f;stroke-opacity:.14}
.sp-hero__base{stroke:#9fc4b2;stroke-opacity:.6;stroke-width:1.5}
.sp-hero__launch{stroke:#c98a2b;stroke-width:1.5;stroke-dasharray:5 6;stroke-opacity:.8}
.sp-hero__m{fill:#b9d0c3;font:15px var(--gft-font-mono)}
.sp-hero__lbl{fill:#e6b25f;font:600 13px var(--gft-font-mono);letter-spacing:.1em}
.sp-hero__gap{fill:#c98a2b;fill-opacity:.55}
.sp-hero__glow{stroke:#6bb68f;stroke-width:10;stroke-opacity:.22;stroke-linejoin:round}
.sp-hero__req{stroke:#8fe0b3;stroke-width:3;stroke-linejoin:round}
.sp-hero__have{stroke:#f6f4ef;stroke-width:2;stroke-opacity:.8;stroke-dasharray:7 5}
.sp-hero__bar{fill:#6bb68f}
.sp-hero__th--technician .sp-hero__bar{fill:#e9dfc4}
.sp-hero__svc{stroke:#6bb68f;stroke-opacity:.45}
.sp-hero__th--technician .sp-hero__svc{stroke:#e9dfc4}
.sp-hero__ring{fill:#072d2b;stroke:#f6f4ef;stroke-width:1.6}
.sp-hero__mote{fill:#c9f2da;opacity:0}
.sp-hero__pre path{stroke:#6bb68f;stroke-width:5;stroke-dasharray:3 5;stroke-opacity:.85}
.sp-hero__pre.sp-hero__th--technician path{stroke:#e9dfc4}
.sp-hero__warp{stroke:#6bb68f;stroke-width:2;stroke-dasharray:2 4}
.sp-hero__cursor{transition:transform .7s var(--gft-ease-out,ease)}
.sp-hero__cline{stroke:#c98a2b;stroke-width:1.6;stroke-dasharray:4 5}
.sp-hero__dot{fill:#8fe0b3;stroke:#072d2b;stroke-width:2.5;transition:transform .7s var(--gft-ease-out,ease)}
.sp-hero__dot--have{fill:#f6f4ef}
.sp-hero__months{display:none}
.sp-hero__flag{position:absolute;left:0;top:0;z-index:2;transform:translate(calc(var(--fx) * 1cqw + var(--fo,14px)),calc(var(--fy) * 1cqh)) translate(var(--fa),-100%);transition:transform .7s var(--gft-ease-out,ease);padding:12px 16px 12px;background:#072d2be6;border-top:2px solid #c98a2b;min-width:360px}
.sp-hero__flag dl{display:grid;grid-template-columns:repeat(4,auto);gap:4px 22px;margin:0}
.sp-hero__flag dt{font:600 13px var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#b9d0c3}
.sp-hero__flag dd{margin:0;font:700 40px/1 var(--gft-font-display);letter-spacing:-.04em;color:#f6f4ef}
.sp-hero__flag .sp-hero__g dd{color:#e6b25f}
.sp-hero__tag{display:grid;gap:3px;margin-top:10px;font:600 13px var(--gft-font-mono);letter-spacing:.08em}
.sp-hero__tag b{color:#c9f2da}
.sp-hero__tag span{color:#b9d0c3;font-weight:400;letter-spacing:.02em}
.sp-hero__actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.sp-hero__scrub{display:grid;gap:4px;font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#cfe0d6;min-width:220px}
.sp-hero__scrub output{color:#8fe0b3}
.sp-hero__scrub input{accent-color:#6bb68f;min-height:44px;width:100%}
/* draw order: ticks, threads, stair, trace, wedge (within 900 ms; partial pre-state) */
:root[data-m-go] .sp-hd{animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .sp-hd--grid{animation-name:sp-hd-fade;animation-duration:260ms}
:root[data-m-go] .sp-hd--threads{animation-name:sp-hd-wipe;animation-duration:320ms;animation-delay:100ms}
:root[data-m-go] .sp-hd--stair{animation-name:sp-hd-wipe;animation-duration:450ms;animation-delay:200ms}
:root[data-m-go] .sp-hd--trace{animation-name:sp-hd-wipe;animation-duration:400ms;animation-delay:350ms}
:root[data-m-go] .sp-hd--wedge{animation-name:sp-hd-fill;animation-duration:300ms;animation-delay:600ms}
@keyframes sp-hd-fade{from{opacity:.2}}
@keyframes sp-hd-wipe{from{opacity:.4;clip-path:inset(0 76% 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes sp-hd-fill{from{clip-path:inset(0 90% 0 0)}to{clip-path:inset(0 0 0 0)}}
/* alive: motes run along the service threads while the splash is on screen */
:root[data-m-go] .sp-hero[data-m-on] .sp-hero__mote{animation-name:sp-mote;animation-duration:var(--d,3s);animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes sp-mote{0%{transform:translateX(0);opacity:0}12%{opacity:1}88%{opacity:1}100%{transform:translateX(var(--len));opacity:0}}
/* hand-over 1 to 2: the stage compresses and drops toward the bench (transform only, longhands) */
@supports (animation-timeline:view()){
 :root[data-m-go] .sp-hero__plot{animation-name:sp-hero-drop;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--gft-splash;animation-range-start:exit 0%;animation-range-end:exit 100%}
}
@keyframes sp-hero-drop{to{transform:scale(.9);opacity:.75}}

/* persistent warp-thread spine carried across section boundaries */
.sp-spine{position:absolute;left:calc(1014 / 1440 * 100%);bottom:-48px;width:2px;height:96px;background:linear-gradient(180deg,#6bb68f 0%,#c98a2b 100%);z-index:4;pointer-events:none}
.sp-spine i{position:absolute;left:-5px;bottom:-5px;width:12px;height:12px;border-radius:50%;background:#c98a2b;box-shadow:0 0 0 4px #c98a2b44}

/* ================= S1 bench (deep) ================= */
.sp-bench{background:#05302d;color:#f6f4ef;padding:0}
.sp-bench .gft-eyebrow{color:#a9d6bd}
.sp-bench__warp{position:absolute;left:calc(1014 / 1440 * 100%);top:-170px;width:2px;height:236px;background:linear-gradient(180deg,#6bb68f00 0%,#6bb68f 40%,#6bb68f 100%);z-index:4;pointer-events:none}
.sp-bench__warp i{position:absolute;left:-6px;bottom:-6px;width:14px;height:14px;border-radius:50%;background:#c98a2b;box-shadow:0 0 0 5px #c98a2b44}
.sp-bench__grid{display:grid;grid-template-columns:minmax(0,35fr) minmax(0,63fr);grid-template-areas:'intro panel' 'ctl panel';grid-template-rows:auto 1fr;column-gap:2%;padding-inline:clamp(16px,3.3vw,48px);align-items:start}
.sp-bench__intro{grid-area:intro;padding-top:28px;min-width:0}
.sp-bench__intro h2{font-size:clamp(2rem,2.9vw,2.6rem);color:#f6f4ef}
.sp-bench__ctl{grid-area:ctl;padding-block:0 72px;min-width:0}
.sp-bench__lead{font-size:18px;line-height:1.55;color:#e2ece6;margin-top:18px;max-width:34ch}
.sp-bench__chip{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:16px;font-size:15px;color:#cfe0d6}
.sp-form{margin-top:22px}
.sp-preset{display:grid;gap:8px;font:600 13px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#cfe0d6}
.sp-preset select{width:100%;min-height:44px;padding:0 12px;background:#0a3e3a;border:1px solid #6bb68f;color:#f6f4ef;font:16px inherit}
.sp-fold{border-top:1px solid #6bb68f55;margin-top:14px}
.sp-fold summary{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;gap:12px;min-height:56px;padding:14px 0 10px;list-style:none;position:relative;padding-right:40px}
.sp-fold summary::-webkit-details-marker{display:none}
.sp-fold summary::after{content:'+';position:absolute;right:4px;top:12px;font:24px var(--gft-font-mono);color:#8fe0b3}
.sp-fold[open] summary::after{content:'\2212'}
.sp-fold__n{font:600 13px var(--gft-font-mono);color:#e6b25f;letter-spacing:.1em}
.sp-fold summary b{font-size:22px;letter-spacing:-.03em}
.sp-fold__sub{grid-column:2/4;font-size:15px;color:#cfe0d6;margin-top:-6px}
.sp-bench .sp-note{color:#cfe0d6}
.sp-fields{display:grid;grid-template-columns:1fr 1fr;gap:4px 20px;margin-top:10px}
.sp-field{padding:10px 0;min-width:0}
.sp-field>label{display:block;font-size:15px;font-weight:650;line-height:1.35;min-height:2.7em;color:#f6f4ef}
.sp-field small{display:block;font:13px/1.5 var(--gft-font-mono);letter-spacing:.04em;font-weight:400;color:#b9d0c3;margin-top:2px}
.sp-pair{display:grid;grid-template-columns:minmax(0,1fr) 76px;gap:10px;align-items:center;margin-top:6px}
.sp-pair input[type=range]{accent-color:#6bb68f;min-height:44px;width:100%}
.sp-sec input[type=number],.sp-sec input[type=text],.sp-sec textarea{min-height:44px;background:#0a3e3a;border:1px solid #6bb68f;color:#f6f4ef;padding:8px 8px;font:15px var(--gft-font-mono);text-align:right;width:100%}
.sp-sec textarea{text-align:left;min-height:100px;resize:vertical}
.sp-sec input[aria-invalid=true]{border-color:#e6b25f;outline:2px solid #c98a2b}
.sp-priority{border:0;padding:12px 0;margin:6px 0}
.sp-priority legend{font-size:15px;font-weight:650;margin-bottom:6px}
.sp-priority label{display:inline-flex;gap:8px;align-items:center;font-size:15px;min-height:44px;padding-right:18px;cursor:pointer}
.sp-priority input{width:18px;height:18px;accent-color:#6bb68f}
.sp-sub{font-size:16px;font-weight:700;margin:14px 0 4px}
.sp-month-inputs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}
.sp-month-inputs label{display:grid;gap:4px;font:13px var(--gft-font-mono);color:#cfe0d6}
.sp-import label{display:grid;gap:8px;font-size:15px;margin-top:12px}
.sp-import input[type=file]{font-size:14px;color:#f6f4ef;min-height:44px}
.sp-import a{display:inline-flex;align-items:center;min-height:44px;font-size:15px;color:#a9e4c3;text-decoration:underline}
.sp-bench button{min-height:44px;padding:0 16px;background:transparent;border:1px solid #6bb68f;color:#f6f4ef;font:600 14px var(--gft-font-mono);letter-spacing:.04em}
.sp-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid #6bb68f55}
.sp-bench .sp-actions [data-sp-save]{background:#6bb68f;color:#072d2b}
.sp-message{font:14px/1.6 var(--gft-font-mono);min-height:2.4em;margin-top:10px;color:#a9e4c3}
.sp-share-fallback label{display:grid;gap:8px;font-size:15px}
.sp-lift{display:grid;grid-template-columns:180px 1fr;gap:16px;align-items:center;margin-top:18px;padding:14px;border:1px dashed #d6c7a3aa}
.sp-lift svg{width:100%;height:auto}
.sp-lift__ghost{stroke:#e9dfc4;stroke-width:2.5;stroke-dasharray:7 6}
.sp-lift__arrow{stroke:#e6b25f;stroke-width:2}
.sp-lift p{font-size:15px;line-height:1.5;color:#e2ece6}
.sp-bench__panel{grid-area:panel;position:sticky;top:0;height:100svh;min-height:640px;display:flex;flex-direction:column;padding-block:18px 14px;min-width:0}
.sp-bp{display:flex;flex-direction:column;flex:1;min-height:0}
.sp-bp__head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:12px;border-bottom:1px solid #6bb68f55}
.sp-bp__total{display:grid;grid-template-columns:auto 1fr;grid-template-areas:'lbl lbl' 'fig split';align-items:end;column-gap:18px}
.sp-bp__lbl{grid-area:lbl;font:600 13px var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#cfe0d6}
.sp-total{grid-area:fig;display:block;font-size:72px;font-weight:850;letter-spacing:-.06em;line-height:1;color:#f6f4ef}
.sp-role-totals{grid-area:split;display:grid;gap:2px;font-size:17px;color:#e2ece6;padding-bottom:8px}
.sp-role-totals output{font-weight:800;color:#8fe0b3}
.sp-bp__kpis{display:flex;gap:32px}
.sp-bp__kpis div{display:grid;gap:2px}
.sp-bp__kpis span,.sp-bp__kpis small{font:13px var(--gft-font-mono);letter-spacing:.06em;color:#cfe0d6}
.sp-bp__kpis span{text-transform:uppercase}
.sp-bp__kpis output{font-size:32px;font-weight:800;letter-spacing:-.03em;color:#e6b25f;line-height:1.1}
.sp-bp__bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding-top:12px}
.sp-bp__call{display:none}
.sp-flag{font:600 16px var(--gft-font-mono);color:#f6f4ef;background:#0a3e3a;border-left:3px solid #c98a2b;padding:10px 14px}
.sp-chartwrap{position:relative;flex:1;min-height:220px;cursor:crosshair;margin-top:6px}
.sp-chart{position:absolute;inset:0}
.sp-chart svg{display:block;width:100%;height:100%}
.sp-b-pre{fill:#6bb68f;fill-opacity:.06}
.sp-b-t{fill:#cfe0d6;font:15px var(--gft-font-mono)}
.sp-b-m--pre{fill:#b9d0c3}
.sp-b-grid{stroke:#6bb68f;stroke-opacity:.18}
.sp-b-launch{stroke:#c98a2b;stroke-width:1.5;stroke-dasharray:4 5}
.sp-b-wedge path{fill:#c98a2b;fill-opacity:.55}
.sp-b-ghost{stroke:#e9dfc4;stroke-width:2;stroke-dasharray:7 6}
.sp-b-need{stroke:#dff5e8;stroke-width:3;stroke-linejoin:round}
.sp-b-have{stroke:#8fe0b3;stroke-width:2.2;stroke-dasharray:6 4}
.sp-b-base{stroke:#9fc4b2;stroke-width:1.2}
.sp-b-th rect{fill:#6bb68f;opacity:.35}
.sp-b-th path{stroke:#6bb68f;stroke-opacity:.25}
.sp-b-th circle{fill:#05302d;stroke:#9fc4b2;stroke-width:1.2;opacity:.5}
.sp-b-th--technician rect{fill:#e9dfc4}
.sp-b-th--technician path{stroke:#e9dfc4}
.sp-b-th.is-seed rect{fill:#aab8f2}
.sp-b-th.is-on rect,.sp-b-th.is-on circle{opacity:1}
.sp-b-th.is-on path{stroke-opacity:.6}
.sp-b-preth path{stroke:#6bb68f;stroke-width:5;stroke-dasharray:3 5}
.sp-b-preth.sp-b-th--technician path{stroke:#e9dfc4}
.sp-b-preth text{font-size:14px;fill:#e2ece6}
.sp-b-call path{stroke:#e6b25f;stroke-width:1.4}
.sp-b-call circle{fill:#e6b25f}
.sp-b-ct{fill:#f6f4ef;font:600 17px var(--gft-font-display);paint-order:stroke;stroke:#05302d;stroke-width:6px;stroke-linejoin:round}
.sp-b-cursor{transform-box:view-box}
.sp-b-cursor path{stroke:#c98a2b;stroke-width:1.6;stroke-dasharray:4 4}
.sp-b-cursor circle{fill:#8fe0b3;stroke:#05302d;stroke-width:2.5}
.sp-bp__foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 20px;align-items:end;margin-top:6px}
.sp-bp__foot .sp-scrub{color:#cfe0d6}
.sp-bp__foot .sp-scrub output{color:#8fe0b3}
.sp-sweep[aria-pressed=true]::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:#6bb68f;margin-right:8px}
.sp-legend{grid-column:1/-1;display:flex;gap:18px;flex-wrap:wrap;font:13px var(--gft-font-mono);color:#cfe0d6}
.sp-k::before{content:'';display:inline-block;vertical-align:middle;width:16px;height:4px;margin-right:7px;background:#dff5e8}
.sp-k--have::before{background:#8fe0b3}
.sp-k--gap::before{background:#c98a2b;height:10px}
.sp-k--th::before{background:#e9dfc4;height:6px}
.sp-k--a::before{background:repeating-linear-gradient(90deg,#e9dfc4 0 5px,transparent 5px 9px)}
.sp-interp{font-size:17px;line-height:1.5;color:#e2ece6;margin-top:10px;max-width:72ch}
.sp-note--dark{color:#cfe0d6;font-size:14px}
.sp-error{border:1px solid #c98a2b;padding:16px;font-size:16px;background:#422b08;color:#f6f4ef;margin-top:12px}
.sp-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

/* ================= S2 record: stacked area envelope (forest) ================= */
.sp-record{background:#0e4d4a;color:#f6f4ef;padding:clamp(36px,4.5svh,56px) clamp(16px,3.3vw,48px)}
.sp-record .gft-eyebrow{color:#bfe6cf}
.sp-record__grid{display:grid;grid-template-columns:minmax(0,58fr) minmax(0,42fr);gap:clamp(24px,3.2vw,48px);align-items:center}
.sp-rc{margin:0;min-width:0;background:#093b38;border:1px solid #6bb68f44;padding:16px 20px}
.sp-rc__top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid #6bb68f33}
.sp-rc__badge{font:600 13px var(--gft-font-mono);letter-spacing:.08em;color:#e6b25f}
.sp-rc__loop{min-height:44px;padding:0 14px;background:#0e4d4a;border:1px solid #6bb68f88;color:#f6f4ef;font:600 13px var(--gft-font-mono)}
.sp-rc__loop[aria-pressed=true]::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:#8fe0b3;margin-right:8px}
.sp-rc__plot svg{display:block;width:100%;height:auto;max-height:54svh}
.sp-rc figcaption{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;margin-top:12px}
.sp-rc__read{font-size:15px;color:#d3e3da;max-width:46ch}
.sp-r-grid{stroke:#d3e3da;stroke-opacity:.18}
.sp-r-vgrid{stroke:#6bb68f;stroke-opacity:.1;stroke-dasharray:2 4}
.sp-r-t{fill:#d3e3da;font:15px var(--gft-font-mono)}
.sp-r-ax{font-size:13px;letter-spacing:.08em}
.sp-r-lens rect{fill:#f6f4ef;opacity:0;transition:opacity .35s}
.sp-r-lens rect.is-lit{opacity:.12}
.sp-r-env{transition:opacity .35s}
.sp-r-wedge path{fill:#c98a2b;fill-opacity:.5}
.sp-r-diff{stroke:#e6b25f;stroke-width:1.4;stroke-opacity:.8}
.sp-r-hl{stroke:#e6b25f;stroke-width:2.2}
.sp-r-ghost{stroke:#e9dfc4;stroke-width:2.4;stroke-dasharray:8 6}
.sp-r-have{stroke:#8fe0b3;stroke-width:2.2;stroke-dasharray:6 4}
.sp-r-need{stroke:#f6f4ef;stroke-width:3.4;stroke-linejoin:round}
.sp-r-base{stroke:#d3e3da;stroke-opacity:.6}
.sp-r-dtag text{fill:#f3cf8f;font:700 14px var(--gft-font-mono);paint-order:stroke;stroke:#093b38;stroke-width:5px}
.sp-r-chip path{stroke:#e6b25f;stroke-width:1.5;stroke-dasharray:4 4}
.sp-r-chip circle{fill:#e6b25f;stroke:#093b38;stroke-width:2.5}
.sp-r-chip__g{fill:#e9dfc4!important}
.sp-r-chip text{fill:#f6f4ef;font:600 16px var(--gft-font-mono);paint-order:stroke;stroke:#093b38;stroke-width:7px;stroke-linejoin:round}
.sp-r-pulse{pointer-events:none;overflow-anchor:none}
.sp-r-pulse circle{fill:none;stroke:#e6b25f;stroke-width:2;opacity:.75}
:root[data-m-go] .sp-rc[data-m-on] .sp-r-pulse circle:first-child,:root[data-m-go] .sp-rc[data-pulse] .sp-r-pulse circle:first-child{animation-name:sp-rpulse;animation-duration:2.2s;animation-timing-function:ease-out;animation-iteration-count:infinite}
@keyframes sp-rpulse{0%{transform:scale(.4);opacity:.9}100%{transform:scale(1.9);opacity:0}}
.sp-r-walk{overflow-anchor:none}
.sp-r-walk path{stroke:#f6f4ef;stroke-opacity:.45;stroke-width:1.5;stroke-dasharray:2 5}
:root[data-m-go] .sp-rc[data-m-on] .sp-r-walk{animation-name:sp-walk;animation-duration:9.6s;animation-timing-function:steps(1,end);animation-iteration-count:infinite;animation-play-state:running}
@keyframes sp-walk{0%{transform:translateX(0)}8.3%{transform:translateX(64px)}16.6%{transform:translateX(128px)}25%{transform:translateX(192px)}33.3%{transform:translateX(256px)}41.6%{transform:translateX(320px)}50%{transform:translateX(384px)}58.3%{transform:translateX(448px)}66.6%{transform:translateX(512px)}75%{transform:translateX(576px)}83.3%{transform:translateX(640px)}91.6%{transform:translateX(704px)}100%{transform:translateX(0)}}
.sp-rc[data-view=default] .sp-r-need,.sp-rc[data-view=default] .sp-r-have,.sp-rc[data-view=default] .sp-r-wedge,.sp-rc[data-view=default] .sp-r-diff{opacity:.08}
.sp-rc[data-view=yours] .sp-r-ghost,.sp-rc[data-view=yours] .sp-r-diff,.sp-rc[data-view=yours] .sp-r-env{opacity:.08}
:root[data-m-go] .sp-rc[data-m-on][data-changed] .sp-r-diff{animation-name:sp-shimmer;animation-duration:3.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes sp-shimmer{from{opacity:.65}to{opacity:1}}
.sp-record__side{min-width:0}
.sp-record__side h2{font-size:clamp(2rem,3vw,2.75rem);color:#f6f4ef;max-width:16ch}
.sp-record__help{font-size:16px;line-height:1.5;color:#e2ece6;margin-top:12px;max-width:44ch}
.sp-delta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 0}
.sp-delta div{display:grid;gap:4px;background:#093b38;border-top:2px solid #e6b25f;padding:12px 14px}
.sp-delta dt{font:600 13px var(--gft-font-mono);letter-spacing:.04em;text-transform:uppercase;color:#d3e3da}
.sp-delta dd{margin:0;display:grid;gap:4px}
.sp-delta output{font-size:44px;font-weight:850;line-height:1;letter-spacing:-.05em;color:#f3cf8f}
.sp-delta small{font:13px var(--gft-font-mono);color:#cfe0d6}
.sp-delta__same{font:600 14px var(--gft-font-mono);color:#e6b25f;margin-top:12px}
.sp-record__btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.sp-record button{min-height:44px;padding:0 16px;background:transparent;border:1px solid #bfe6cf;color:#f6f4ef;font:600 14px var(--gft-font-mono)}
.sp-record [data-sp-save-proxy]{background:#f6f4ef;color:#0e4d4a}
.sp-comparison{margin-top:14px}
.sp-comparison caption{color:#d3e3da}
.sp-comparison th,.sp-comparison td{border-bottom:1px solid #d3e3da44;font-size:15px}
.sp-comparison th small{color:#d3e3da}

/* ================= S2.5 dark full-bleed warp-to-weft interlude (night) ================= */
.sp-bridge{background:#072d2b;color:#f6f4ef;padding:clamp(44px,6svh,72px) clamp(16px,3.3vw,48px);border-top:1px solid #6bb68f33;border-bottom:1px solid #c98a2b55;overflow:clip}
.sp-bridge .gft-eyebrow{color:#e6b25f}
.sp-bridge__inner{display:grid;gap:20px}
.sp-bridge__head{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:28px;align-items:end}
.sp-bridge__copy h2{font-size:clamp(2.1rem,3.3vw,3rem);color:#f6f4ef;max-width:22ch}
.sp-bridge__lede{font-size:17px;line-height:1.55;color:#dbe7e0;margin-top:12px;max-width:52ch}
.sp-bridge__kpis{display:flex;flex-wrap:wrap;gap:20px 28px;align-items:flex-end;justify-content:flex-end;background:#0a3e3a;border-left:3px solid #c98a2b;padding:16px 20px}
.sp-bridge__big{display:grid;gap:2px}
.sp-bridge__big output{font-size:64px;font-weight:850;line-height:.95;letter-spacing:-.05em;color:#8fe0b3}
.sp-bridge__big span{font:600 13px var(--gft-font-mono);text-transform:uppercase;letter-spacing:.08em;color:#cfe0d6}
.sp-bridge__meta{display:grid;gap:10px}
.sp-bridge__meta p{font:16px var(--gft-font-mono);color:#f6f4ef;margin:0}
.sp-bridge__meta b{color:#e6b25f}
.sp-bridge__stage{position:relative;background:#052523;border:1px solid #6bb68f33;padding:8px 0}
.sp-bridge__stage svg{display:block;width:100%;height:auto;max-height:46svh}
.sp-br-wline{stroke:#6bb68f;stroke-opacity:.2;stroke-dasharray:3 5}
.sp-br-wbar{fill:#0e4d4a;stroke:#6bb68f;stroke-width:1.5;transition:opacity .3s,transform .3s}
.sp-br-wt{fill:#b9d0c3;font:600 14px var(--gft-font-mono)}
.sp-br-wv{fill:#8fe0b3;font:700 15px var(--gft-font-mono)}
.sp-br-curve{stroke-width:2.2;fill:none;opacity:.78;transition:opacity .3s}
.sp-br-cband{fill:#3f8f6b;fill-opacity:.85;stroke:#8fe0b3;stroke-width:1}
.sp-br-thread--technician .sp-br-cband{fill:#c98a2b;stroke:#f3cf8f}
.sp-br-node{fill:#072d2b;stroke:#e6b25f;stroke-width:2.5}
.sp-br-ct{fill:#f6f4ef;font:600 14px var(--gft-font-mono);paint-order:stroke;stroke:#052523;stroke-width:5px}
.sp-br-wcol,.sp-br-thread{cursor:pointer}
.sp-br-wcol:hover .sp-br-wbar{stroke:#e6b25f;stroke-width:2.5}
.sp-br-thread:hover .sp-br-curve{opacity:1;stroke-width:3.4}
.sp-bridge[data-bmode=warp] .sp-br-thread{opacity:.15}
.sp-bridge[data-bmode=weft] .sp-br-wcol{opacity:.18}
.sp-bridge__foot{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.sp-bridge__read{font:600 15px var(--gft-font-mono);color:#f3cf8f;background:#0a3e3a;padding:10px 14px;border-left:3px solid #e6b25f;margin:0}
.sp-bridge__cue{font:600 14px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#8fe0b3}

/* ================= S3 cohorts swimlane (paper, act II) ================= */
.sp-cohorts{background:#f6f4ef;color:#072d2b;padding:clamp(32px,4.5svh,52px) 0 clamp(36px,5svh,56px)}
.sp-unweave{position:absolute;left:0;top:calc(-100 / 1440 * 100vw);width:100%;height:auto;aspect-ratio:1440/814;z-index:3;pointer-events:none;overflow:visible}
.sp-unweave__t{stroke:#c98a2b;stroke-width:2.4;opacity:0;vector-effect:non-scaling-stroke}
.sp-unweave__t--technician{stroke:#b58a3a}
.sp-cohorts__top{display:flex;justify-content:space-between;align-items:flex-end;gap:20px 32px;flex-wrap:wrap;padding:0 clamp(16px,3.3vw,48px) 16px}
.sp-cohorts__head{min-width:260px;max-width:520px}
.sp-cohorts__head .gft-eyebrow{color:#3d5a52}
.sp-cohorts__head h2{font-size:clamp(2rem,2.9vw,2.7rem);color:#072d2b}
.sp-cohorts__bar{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px}
.sp-cohorts__key{display:flex;flex-wrap:wrap;gap:6px 14px;font:600 14px var(--gft-font-mono);color:#072d2b;margin:0}
.sp-k--s::before{background:#3f8f6b;height:10px}
.sp-k--t::before{background:#efe6cf;height:10px;outline:1px solid #072d2b}
.sp-k--c::before{background:#2c3e7a;height:10px}
.sp-cohorts__bar .sp-scrub{min-width:220px;color:#072d2b}
.sp-cohorts__stage{position:relative;padding:0 clamp(16px,3.3vw,48px)}
.sp-cohorts__callout{position:static;width:min(100%,720px);margin-bottom:16px;z-index:2;background:#f6f4eff2;border:1px solid #0e4d4a55;border-left:4px solid #c98a2b;padding:12px 16px;box-shadow:0 8px 24px #072d2b12}
.sp-cohorts__ck{font:700 13px var(--gft-font-mono);letter-spacing:.08em;color:#6b4409;margin:0 0 4px}
.sp-thread-read{font:700 16px/1.4 var(--gft-font-mono);color:#072d2b;margin:0}
.sp-cohorts__callout .sp-note{font-size:15px;line-height:1.45;color:#1e3b36;margin-top:6px}
.sp-cohort-ledger{margin-top:6px}
.sp-cohort-ledger summary,.sp-ledger__more summary{min-height:44px;display:inline-flex;align-items:center;font-weight:700;font-size:15px;color:#072d2b;text-decoration:underline;text-underline-offset:4px}
.sp-cohort-ledger[open]{background:#ece8df;padding:8px 12px;margin-top:8px}
.sp-cohort-ledger th,.sp-cohort-ledger td{border-bottom:1px solid #b4c5c3;font-size:14px;padding:6px 8px}
.sp-gantt-scroll{overflow-x:auto;border:1px solid #072d2b22;background:#fbfaf7}
.sp-gantt svg{display:block;width:100%;height:auto}
.sp-g-preband{fill:#ece8df;fill-opacity:.7}
.sp-g-prelbl{fill:#34514b;font-weight:600;font-size:13px;letter-spacing:.06em}
.sp-g-t{fill:#1e3b36;font:15px var(--gft-font-mono)}
.sp-g-lt{fill:#6b4409;font-weight:700;letter-spacing:.08em}
.sp-g-launch{stroke:#c98a2b;stroke-width:2;stroke-dasharray:5 5}
.sp-g-grid{stroke:#072d2b;stroke-opacity:.08}
.sp-g-stairArea{fill:#3f8f6b;fill-opacity:.1}
.sp-g-stair{stroke:#0e4d4a;stroke-width:2.6;stroke-opacity:.8;stroke-linejoin:round}
.sp-g-sbase{stroke:#072d2b;stroke-opacity:.25}
.sp-g-st{font-size:13px;font-weight:700;letter-spacing:.08em;fill:#0e4d4a}
.sp-g-lane{fill:#f3efe6}
.sp-g-lane--alt{fill:#eae4d7}
.sp-g-laneid{font-weight:700;fill:#072d2b;font-size:15px}
.sp-g-gradtag{font-weight:600;fill:#1e3b36;font-size:13px}
.sp-g-hit{fill:transparent}
.sp-g-leader{stroke:#0e4d4a;stroke-width:1.4;stroke-dasharray:3 4;opacity:.65}
.sp-g-notch{fill:#0e4d4a}
.sp-g-bar{fill:#3f8f6b}
.sp-g-row--technician .sp-g-bar{fill:#d9c89e;stroke:#072d2b;stroke-width:1.4}
.sp-g-row--seed .sp-g-bar{fill:#2c3e7a}
.sp-g-svc{stroke:#3f8f6b;stroke-width:1.8;opacity:.75}
.sp-g-row--technician .sp-g-svc{stroke:#6b5a32}
.sp-g-ring{fill:#f6f4ef;stroke:#072d2b;stroke-width:2.2}
.sp-g-mote{fill:#c98a2b;opacity:0;pointer-events:none}
:root[data-m-go] .sp-cohorts[data-m-on] .sp-g-mote{animation-name:sp-gmote;animation-duration:var(--d,2.6s);animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes sp-gmote{0%{transform:translateX(0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateX(var(--bw,180px));opacity:0}}
.sp-g-scan{pointer-events:none;overflow-anchor:none}
.sp-g-scan path{stroke:#c98a2b;stroke-width:2;stroke-opacity:.55}
.sp-g-scan circle{fill:#c98a2b}
:root[data-m-go] .sp-cohorts[data-m-on] .sp-g-scan{animation-name:sp-gscan;animation-duration:8s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes sp-gscan{from{transform:translateX(0)}to{transform:translateX(860px)}}
.sp-g-row{cursor:pointer;outline:none}
.sp-g-row:focus-visible .sp-g-hit{stroke:#c98a2b;stroke-width:3}
.sp-g-row.is-train .sp-g-bar{filter:drop-shadow(0 0 6px #c98a2b)}
.sp-g-row.is-train .sp-g-laneid{fill:#6b4409}
.sp-g-row.is-hover .sp-g-leader{opacity:1;stroke-dasharray:none;stroke-width:2.2}
.sp-g-row.is-hover .sp-g-lane{fill:#e3decb}
.sp-g-cursor{transition:transform .5s var(--gft-ease-out,ease)}
.sp-g-cursor path{stroke:#6b4409;stroke-width:1.8;stroke-dasharray:4 4}
.sp-g-cursor circle{fill:#c98a2b;stroke:#f6f4ef;stroke-width:2}
[data-filter=supervisor] .sp-g-row--technician,[data-filter=technician] .sp-g-row--supervisor{opacity:.16}

/* ================= S4 ledger (paper) ================= */
.sp-ledger{background:#f6f4ef;color:#072d2b;padding:clamp(36px,5svh,64px) clamp(16px,3.3vw,48px) clamp(48px,7svh,88px);border-top:1px solid #072d2b18}
.sp-ledger__head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.sp-ledger__head .gft-eyebrow{color:#3d5a52}
.sp-ledger__head h2{font-size:clamp(2.1rem,3.3vw,3.1rem);max-width:20ch}
.sp-seg--big span{font:750 clamp(1.1rem,1.6vw,1.45rem) var(--gft-font-display);letter-spacing:-.02em;min-height:52px;padding:0 22px;color:#072d2b}
.sp-seg--big{border-color:#0e4d4a}
.sp-seg--big input:checked+span{background:#0e4d4a;color:#f6f4ef}
.sp-ledger__stage{display:grid;grid-template-columns:minmax(220px,250px) minmax(0,1fr);gap:24px;margin-top:18px;align-items:stretch}
.sp-gauge{display:flex;flex-direction:column;justify-content:space-between;gap:14px;background:#072d2b;color:#f6f4ef;padding:18px}
.sp-gauge__m{font:600 14px var(--gft-font-mono);letter-spacing:.06em;color:#cfe0d6;text-transform:uppercase}
.sp-gauge__m output{color:#f6f4ef}
.sp-bars{display:grid;gap:12px;margin:0}
.sp-bars div{display:grid;gap:4px}
.sp-bars dt{font:13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#cfe0d6}
.sp-bars dd{margin:0;display:grid;gap:6px}
.sp-bars output{font-size:30px;font-weight:800;letter-spacing:-.03em;line-height:1}
.sp-bars i{display:block;height:6px;background:#ffffff1f;position:relative;overflow:hidden}
.sp-bars i::after{content:'';position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(var(--v,0));transition:transform .5s var(--gft-ease-out,ease)}
.sp-bars__req::after{background:#f6f4ef}
.sp-bars__av::after{background:#6bb68f}
.sp-bars__gap::after{background:#c98a2b}
.sp-gauge .sp-scrub{color:#cfe0d6}
.sp-ledger__chart{min-width:0;align-self:center}
.sp-ledger__chart svg{display:block;width:100%;height:auto;max-height:42svh}
.sp-l-wv0{fill:#cfe6d8}.sp-l-wv1{stroke:#3f8f6b;stroke-width:1.4}.sp-l-wv2{stroke:#6bb68f;stroke-width:1}
.sp-l-t{fill:#34514b;font:15px var(--gft-font-mono)}
.sp-l-m{font-size:16px;font-weight:700;fill:#072d2b}
.sp-l-grid{stroke:#072d2b;stroke-opacity:.1}
.sp-l-base{stroke:#072d2b;stroke-opacity:.5}
.sp-l-hit{fill:transparent}
.sp-l-hold{fill:#c98a2b;opacity:0;transition:opacity .3s}
.sp-l-col[aria-current=true] .sp-l-hold{opacity:.14}
.sp-l-other{fill:none;stroke:#072d2b;stroke-opacity:.18;stroke-dasharray:3 3}
.sp-l-req{fill:none;stroke:#072d2b;stroke-width:2}
.sp-l-gap{fill:#c98a2b}
.sp-l-sur{stroke:#3f8f6b;stroke-width:3}
.sp-l-grad circle{fill:#f6f4ef;stroke:#072d2b;stroke-width:2}
.sp-l-grad text{font-weight:700;fill:#072d2b}
.sp-l-trace{stroke:#0e4d4a;stroke-width:2.4;stroke-dasharray:6 4}
.sp-l-col{cursor:pointer}
[data-lens=Required] .sp-l-av,[data-lens=Required] .sp-l-gap{opacity:.18}
[data-lens=Available] .sp-l-req,[data-lens=Available] .sp-l-gap{opacity:.18}
[data-lens=Gap] .sp-l-req,[data-lens=Gap] .sp-l-av{opacity:.18}

/* 12-month interactive heat strip */
.sp-heatwrap{margin-top:18px;background:#ece8df;border:1px solid #0e4d4a33;padding:12px 14px}
.sp-heatwrap__top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.sp-heatwrap__lbl{font:700 13px var(--gft-font-mono);letter-spacing:.06em;color:#072d2b}
.sp-heatwrap__key{font:600 13px var(--gft-font-mono);color:#1e3b36}
.sp-heatstrip{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px}
.sp-hcell{min-height:56px;padding:6px 4px;display:grid;gap:4px;justify-items:center;align-content:space-between;background:#f6f4ef;border:1px solid #0e4d4a44;color:#072d2b;font:600 13px var(--gft-font-mono)}
.sp-hcell--gap{background:rgb(201 138 43 / calc(.14 + var(--h,0) * .28));border-color:#8a5a12}
.sp-hcell--surplus{background:#dcece3}
.sp-hcell[aria-pressed=true]{background:#0e4d4a!important;color:#f6f4ef!important;border-color:#072d2b}
.sp-hcell__m{font-weight:700}
.sp-hcell__bars{display:flex;gap:3px;align-items:flex-end;height:14px;width:20px}
.sp-hcell__rq,.sp-hcell__av{flex:1;background:#072d2b;height:100%;transform-origin:50% 100%}
.sp-hcell__rq{transform:scaleY(var(--rq,.5));opacity:.45}
.sp-hcell__av{transform:scaleY(var(--av,.5));background:#3f8f6b}
.sp-hcell[aria-pressed=true] .sp-hcell__rq{background:#cfe0d6;opacity:.7}
.sp-hcell[aria-pressed=true] .sp-hcell__av{background:#8fe0b3}
.sp-hcell__v{font-size:13px}

.sp-ledger__tools{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;margin-top:16px}
.sp-ledger__expand{min-height:44px;padding:0 16px;background:#0e4d4a;border:1px solid #072d2b;color:#f6f4ef;font:600 13px var(--gft-font-mono)}
.sp-cellread{flex:1;min-width:280px;min-height:3.4em;line-height:1.4;display:flex;align-items:center;font:600 15px var(--gft-font-mono);background:#ece8df;border-left:3px solid #c98a2b;padding:10px 14px;margin:0}
.sp-ledger__table{margin-top:14px;overflow:visible}
.sp-ledger__table caption{color:#1e3b36;font-size:14px}
.sp-ledger__table th,.sp-ledger__table td{font-size:15px;padding:8px 12px;border-bottom:1px solid #c9d5d2}
.sp-ledger__table thead th{position:sticky;top:0;background:#f6f4ef;font:700 13px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#0e4d4a;border-bottom:2px solid #0e4d4a;z-index:1}
.sp-ledger__table tbody tr{cursor:pointer}
.sp-ledger__table tr[aria-current]{background:#dce8e2;box-shadow:inset 4px 0 #0e4d4a}
.sp-ledger__table td[data-c=Gap]{background:rgb(201 138 43 / calc(var(--h,0) * .32))}
/* collapse steady-state rows 9 to 11 until expanded */
[data-sp-ltable]:not([data-all-months]) tbody tr:nth-child(n+10){display:none}
.sp-tcell{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;min-width:88px}
.sp-tbar{display:inline-block;width:36px;height:6px;background:#072d2b1a;position:relative;overflow:hidden}
.sp-tbar::after{content:'';position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(var(--w,0))}
.sp-tbar--req::after{background:#072d2b}
.sp-tbar--av::after{background:#3f8f6b}
.sp-tbar--gap::after{background:#c98a2b}
.sp-tbar--sur::after{background:#2c3e7a}
[data-sp-ltable]:not([data-flows]) :is(th,td):nth-child(4),[data-sp-ltable]:not([data-flows]) :is(th,td):nth-child(5){display:none}
[data-sp-ltable][data-lens=Required] :is(td,th)[data-c=Required],[data-sp-ltable][data-lens=Available] :is(td,th)[data-c=Available],[data-sp-ltable][data-lens=Gap] :is(td,th)[data-c=Gap]{outline:2px solid #0e4d4a;outline-offset:-2px}
.sp-ledger__more{margin-top:12px;max-width:80ch}
.sp-ledger__more p{font-size:15px;line-height:1.55;color:#1e3b36}

/* hand-over 5 to 6: the qualified trace band with visible scrubber */
.sp-l-lift{transform-box:view-box;transform-origin:0 200px}
@supports (animation-timeline:view()){
 :root[data-m-go] .sp-ledger__chart{view-timeline-name:--sp-ledger;view-timeline-axis:block}
 :root[data-m-go] .sp-l-lift{animation-name:sp-lift;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--sp-ledger;animation-range-start:exit 10%;animation-range-end:exit 90%}
}
@keyframes sp-lift{to{transform:translateY(-60px) scaleY(.05)}}
.sp-ledger__lift{position:relative;margin:20px 0 0;padding:16px 20px 28px;background:#ece8df;border:1px solid #0e4d4a44;border-top:3px solid #0e4d4a;z-index:3}
.sp-ledger__liftbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.sp-ledger__lifttitle{font:700 14px var(--gft-font-mono);letter-spacing:.06em;color:#072d2b}
.sp-ledger__lifttitle b{color:#0e4d4a}
.sp-ledger__liftscrub{min-width:240px;color:#072d2b}
.sp-ledger__lift svg{display:block;width:100%;height:96px;overflow:visible;transform-origin:50% 100%}
.sp-ledger__lift path{stroke:#0e4d4a;stroke-width:3.5;stroke-dasharray:8 5;vector-effect:non-scaling-stroke}
.sp-ledger__drop{position:absolute;left:63%;bottom:-76px;width:3px;height:110px;background:linear-gradient(180deg,#0e4d4a 0%,#6bb68f 45%,#8fe0b3 100%);z-index:4;pointer-events:none}
.sp-ledger__drop::after{content:'';position:absolute;left:-6px;bottom:-6px;width:15px;height:15px;border-radius:50%;background:#8fe0b3;box-shadow:0 0 0 6px #6bb68f44}
@supports (animation-timeline:view()){
 :root[data-m-go] .sp-ledger__lift svg{animation-name:sp-straighten;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range-start:cover 25%;animation-range-end:cover 70%}
}
@keyframes sp-straighten{to{transform:scaleY(.08)}}

/* ================= S5 interlude: competence tension sphere & dial (night, pinned, 3 states) ================= */
.sp-il{background:#072d2b;color:#f6f4ef;padding:0}
.sp-il__frame{position:sticky;top:0;height:100svh;min-height:620px;overflow:clip}
.sp-il__marks{margin-top:-100svh}
.sp-il__mark{height:66svh}
.sp-il__mark:last-child{height:92svh}
.sp-il__grid{position:absolute;inset:-40px;background-image:linear-gradient(#6bb68f12 1px,transparent 1px),linear-gradient(90deg,#6bb68f12 1px,transparent 1px);background-size:48px 48px;overflow-anchor:none;pointer-events:none}
.sp-il__dust{position:absolute;inset:0;--m-particle:159,212,186;pointer-events:none;overflow-anchor:none}
.sp-il__dust canvas{position:absolute;inset:0;width:100%;height:100%}
.sp-il__disc{position:absolute;width:88svh;height:88svh;left:calc(46% - 44svh);top:6svh;border-radius:50%;background:radial-gradient(circle,#115e59 0%,#0c4743 52%,#0a3d3a 68%,#072d2b00 72%);box-shadow:0 0 0 2px #6bb68f44,inset 0 0 80px #6bb68f22;pointer-events:none;transition:transform .7s cubic-bezier(.16,1,.3,1),filter .6s}
.sp-il[data-state="1"] .sp-il__disc{background:radial-gradient(circle,#52350c 0%,#3a2609 50%,#1f2f2b 68%,#072d2b00 72%);box-shadow:0 0 0 2px #e6b25f66,inset 0 0 90px #c98a2b33;transform:scale(.94)}
.sp-il[data-state="2"] .sp-il__disc{background:radial-gradient(circle,#145863 0%,#0f4850 52%,#0a3a3d 68%,#072d2b00 72%);box-shadow:0 0 0 3px #8fe0b388,inset 0 0 100px #8fe0b333;transform:scale(1.04)}
.sp-il__head{position:absolute;left:clamp(16px,3.3vw,48px);top:4.5svh;width:min(54%,740px);z-index:2}
.sp-il__head .gft-eyebrow{color:#a9d6bd}
.sp-il__head h2{font-size:clamp(2.4rem,4vw,3.6rem);color:#f6f4ef}
.sp-il__lede{font-size:17px;line-height:1.5;color:#dbe7e0;margin-top:12px;max-width:44ch}
.sp-il__read{position:absolute;right:clamp(16px,3.3vw,48px);top:4.5svh;width:min(38%,500px);z-index:2;background:#072d2be8;padding:14px 18px;border-top:3px solid #c98a2b;border:1px solid #6bb68f44}
.sp-il__dialwrap{display:grid;grid-template-columns:108px 1fr;gap:16px;align-items:center}
.sp-il__dial{width:108px;height:108px;display:block}
.sp-il__dial-bg{fill:#052220;stroke:#6bb68f33;stroke-width:8}
.sp-il__dial-arc{fill:none;stroke:#8fe0b3;stroke-width:8;stroke-linecap:round;transform:rotate(-90deg);transform-origin:60px 60px;transition:stroke-dashoffset .6s cubic-bezier(.16,1,.3,1)}
.sp-il[data-state="1"] .sp-il__dial-arc{stroke:#e6b25f}
.sp-il__dial-num{fill:#f6f4ef;font:800 26px var(--gft-font-display)}
.sp-il__dial-sub{fill:#e6b25f;font:700 11px var(--gft-font-mono);letter-spacing:.08em}
.sp-il__read dl{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}
.sp-il__read dt{font:600 13px var(--gft-font-mono);letter-spacing:.05em;text-transform:uppercase;color:#cfe0d6}
.sp-il__read dd{margin:0;display:flex;align-items:baseline;gap:6px}
.sp-il__read output{font-size:42px;font-weight:850;letter-spacing:-.05em;line-height:1}
.sp-il__read [data-sp-lobs]{color:#e6b25f}
.sp-il__read small{font-size:14px;color:#cfe0d6}
.sp-il__state{font-size:19px;font-weight:750;margin-top:8px;color:#f6f4ef;line-height:1.25}
.sp-il__note{font-size:14px;line-height:1.45;color:#cfe0d6;margin-top:4px}
.sp-il__ctl{position:absolute;right:clamp(16px,3.3vw,48px);top:calc(4.5svh + 218px);width:min(38%,500px);z-index:2;display:grid;gap:6px}
.sp-il__ctl label{display:flex;justify-content:space-between;gap:12px;font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#cfe0d6}
.sp-il__ctl output{color:#8fe0b3;text-transform:none;letter-spacing:0;white-space:nowrap}
.sp-il__ctl input{accent-color:#c98a2b;min-height:44px;width:100%}
.sp-il__chips{display:flex;gap:8px}
.sp-il__chips button{flex:1;min-height:44px;background:#0a3d3a;border:1px solid #6bb68f88;color:#f6f4ef;font:600 14px var(--gft-font-mono)}
.sp-il__chips button[aria-pressed=true]{background:#6bb68f;color:#072d2b}
.sp-il__stage{position:absolute;inset:0;pointer-events:none}
.sp-il__line{position:absolute;inset:0;transition:transform .8s cubic-bezier(.16,1,.3,1)}
.sp-il__svg{position:absolute;inset:0;width:100%;height:100%}
.sp-il__svg path{vector-effect:non-scaling-stroke}
.sp-il__arc{stroke:#6bb68f;stroke-opacity:.22;stroke-width:1.5;stroke-dasharray:6 8;transition:opacity .5s,transform .6s}
.sp-il__seg{stroke:#8fe0b3;stroke-width:3.8;transition:opacity .5s}
.sp-il__sag{opacity:0;stroke:#e6b25f;stroke-width:4}
.sp-il__woven{stroke:#c98a2b;stroke-width:3.8;stroke-dasharray:10 14;opacity:0;transition:opacity .6s .2s}
.sp-il__retie-weft{stroke:#8fe0b3;stroke-width:2.2;stroke-dasharray:4 6;opacity:0;transition:opacity .6s .15s}
.sp-il__knot{position:absolute;left:calc(var(--x) * 1%);top:54.44%;width:32px;height:32px;margin:-16px 0 0 -16px;transition:transform .7s cubic-bezier(.16,1,.3,1)}
.sp-il__knot b{position:absolute;inset:0;border-radius:50%;background:#072d2b;border:3px solid #8fe0b3;box-shadow:0 0 0 6px #6bb68f2e}
.sp-il__knot span{position:absolute;left:50%;top:-24px;transform:translateX(-50%);font:700 13px var(--gft-font-mono);color:#cfe0d6}
.sp-il__pulse{position:absolute;left:0;top:54.44%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#c9f2da;box-shadow:0 0 14px 4px #8fe0b388;opacity:0}
:root[data-m-go] .sp-il__frame:has(.sp-il__dust[data-m-on]) .sp-il__pulse{animation-name:sp-pulse-run;animation-duration:4s;animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes sp-pulse-run{0%{transform:translateX(0);opacity:0}8%{opacity:1}92%{opacity:1}100%{transform:translateX(100vw);opacity:0}}
:root[data-m-go] .sp-il__frame:has(.sp-il__dust[data-m-on]) .sp-il__svg{animation-name:sp-hum;animation-duration:2.6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes sp-hum{from{transform:translateY(-2px)}to{transform:translateY(2px)}}
.sp-il__weight{position:absolute;left:50%;top:54.44%;width:38px;height:44px;margin-left:-19px;background:#c98a2b;clip-path:polygon(30% 0,70% 0,100% 100%,0 100%);opacity:0;transform:translateY(-22svh);transition:transform .6s cubic-bezier(.3,1.4,.5,1),opacity .3s}
.sp-il__axis{list-style:none;margin:0;padding:0;position:absolute;inset:0;opacity:0;transition:opacity .5s .3s}
.sp-il__axis li{position:absolute;left:calc(var(--x) * 1%);top:calc(54.44% + 24px);font:15px var(--gft-font-mono);color:#cfe0d6;transform:translateX(-50%)}
.sp-il__cards{position:absolute;inset:0;pointer-events:none;z-index:2}
.sp-il__card{position:absolute;left:clamp(16px,3.3vw,48px);bottom:7svh;width:min(48%,640px);padding:20px 24px;background:#0a3d3af5;border:1px solid #6bb68f88;border-left:4px solid #e6b25f;opacity:0;transform:translateY(16px);transition:opacity .25s,transform .35s cubic-bezier(.16,1,.3,1);pointer-events:none}
.sp-il__card--1{left:calc(50% - min(24%,320px));border-left-color:#c98a2b;background:#2d200cf5}
.sp-il__card--2{left:auto;right:clamp(16px,3.3vw,48px);border-left-color:#8fe0b3;background:#0b3940f5}
.sp-il__cardtop{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.sp-il__pbadges{display:flex;gap:6px;list-style:none;margin:0;padding:0}
.sp-il__pbadge{font:700 13px var(--gft-font-mono);padding:3px 8px;border-radius:3px;background:#0e4d4a;color:#cfe0d6;border:1px solid #6bb68f66}
.sp-il__pbadge--fail{background:#5a3a0e;color:#f3cf8f;border-color:#e6b25f}
.sp-il__pbadge--retied{background:#1d5a3f;color:#c9f2da;border-color:#8fe0b3}
.sp-il__leader{display:none}
.sp-il__k{font:700 13px var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#e6b25f;margin:0}
.sp-il__card h3{font-size:26px;letter-spacing:-.03em;margin:4px 0 8px;color:#f6f4ef}
.sp-il__card p:last-child{font-size:17px;line-height:1.5;color:#e2ece6;margin:0}
.sp-il[data-state="0"] .sp-il__card--0,.sp-il[data-state="1"] .sp-il__card--1,.sp-il[data-state="2"] .sp-il__card--2{opacity:1;transform:none;transition-duration:.36s,.5s;transition-delay:.08s;pointer-events:auto}
.sp-il[data-state="1"] .sp-il__seg--mid{opacity:0}
.sp-il[data-state="1"] .sp-il__sag{opacity:1}
.sp-il[data-state="1"] .sp-il__knot--slip{transform:translateY(14svh)}
.sp-il[data-state="1"] .sp-il__knot--slip b{border-color:#e6b25f;background:#5a3a0e}
.sp-il[data-state="1"] .sp-il__weight{opacity:1;transform:translateY(15svh)}
.sp-il[data-state="2"] .sp-il__line{transform:translateY(-4svh)}
.sp-il[data-state="2"] .sp-il__woven,.sp-il[data-state="2"] .sp-il__retie-weft{opacity:1}
.sp-il[data-state="2"] .sp-il__axis{opacity:1}
.sp-il[data-state="2"] .sp-il__knot--slip b{border-color:#e6b25f}

/* ================= S6 method (forest, pinned, 5 steps) ================= */
.sp-method{background:#0e4d4a;color:#f6f4ef;padding:0}
.sp-method__frame{position:sticky;top:0;height:100svh;min-height:640px;overflow:clip}
.sp-method__marks{margin-top:-100svh}
.sp-method__mark{height:76svh}
.sp-method__mark:last-child{height:108svh}
.sp-method__head{position:absolute;left:clamp(16px,3.3vw,48px);top:3.6svh;max-width:60%}
.sp-method__head .gft-eyebrow{color:#bfe6cf;margin-bottom:6px}
.sp-method__head h2{font-size:clamp(1.7rem,2.4vw,2.25rem);letter-spacing:-.04em}
.sp-rail{position:absolute;right:clamp(16px,3.3vw,48px);top:3.6svh;display:flex;align-items:center;gap:8px}
.sp-rail ol{display:flex;gap:6px;list-style:none;margin:0;padding:0}
.sp-rail button{width:44px;height:44px;border-radius:50%;border:1px solid #bfe6cf88;background:transparent;color:#f6f4ef;font:700 15px var(--gft-font-mono)}
.sp-rail button[aria-current=step]{background:#e6b25f;color:#072d2b;border-color:#e6b25f}
.sp-rail__pn{border-radius:0!important}
.sp-rail__n{font:600 14px var(--gft-font-mono);color:#d3e3da;margin-left:8px;min-width:4.5em}
.sp-method__eqs{position:absolute;left:clamp(16px,3.3vw,48px);right:clamp(16px,3.3vw,48px);top:calc(3.6svh + 92px);height:74px}
.sp-eq{position:absolute;inset:0;max-width:none;display:grid;gap:4px;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .3s}
.sp-eq__tag{font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#e6b25f}
.sp-eq__v{font:700 clamp(1.4rem,2.1vw,1.9rem)/1.15 var(--gft-font-mono);letter-spacing:-.02em;color:#f6f4ef}
.sp-method[data-step="0"] [data-sp-eq="0"],.sp-method[data-step="1"] [data-sp-eq="1"],.sp-method[data-step="2"] [data-sp-eq="2"],.sp-method[data-step="3"] [data-sp-eq="3"],.sp-method[data-step="4"] [data-sp-eq="4"]{opacity:1;transform:none;transition-duration:.36s,.5s;transition-delay:.06s}
.sp-method__stage{position:absolute;left:0;right:0;top:calc(3.6svh + 172px);bottom:0}
.sp-method__svg,.sp-method__svg svg{position:absolute;inset:0;width:100%;height:100%}
.sp-m-svg text{paint-order:stroke;stroke:#0e4d4a;stroke-width:6px;stroke-linejoin:round}
.sp-m-grid{stroke:#d3e3da;stroke-opacity:.12}
.sp-m-launch{stroke:#e6b25f;stroke-opacity:.8;stroke-dasharray:4 5}
.sp-m-base{stroke:#d3e3da;stroke-opacity:.7}
.sp-m-tick{fill:#d3e3da;font:15px var(--gft-font-mono)}
.sp-m-v{fill:#f6f4ef;font:700 17px var(--gft-font-mono)}
.sp-m-n{fill:#bfe6cf;font:600 14px var(--gft-font-mono);letter-spacing:.1em}
.sp-m-n--o{fill:#e6b25f}
.sp-m-bar{fill:#6bb68f}
.sp-m-round{fill:#c98a2b}
.sp-m-raw{stroke:#f6f4ef;stroke-width:2;stroke-dasharray:2 5}
.sp-m-whole{stroke:#f6f4ef;stroke-width:3.4;stroke-linejoin:round}
.sp-m-course{fill:#6bb68f}
.sp-m-ring{fill:#0e4d4a;stroke:#f6f4ef;stroke-width:2.2}
.sp-m-drop{stroke:#bfe6cf;stroke-width:1.4;stroke-dasharray:3 4}
.sp-m-have{stroke:#8fe0b3;stroke-width:3;stroke-dasharray:7 4}
.sp-m-exit{fill:#c98a2b}
.sp-m-gap{fill:#c98a2b;fill-opacity:.6}
.sp-m-brk{stroke:#e6b25f;stroke-width:2}
.sp-m-a,.sp-m-b{transition:transform .8s cubic-bezier(.16,1,.3,1),opacity .3s}
.sp-m-b{opacity:0}
.sp-method[data-step="2"] .sp-m-a{transform:translateX(480px)}
.sp-method[data-step="3"] .sp-m-a,.sp-method[data-step="4"] .sp-m-a{opacity:0}
.sp-method[data-step="3"] .sp-m-b,.sp-method[data-step="4"] .sp-m-b{opacity:1;transition-delay:.06s}
.sp-st{opacity:0;transform:translateY(14px);transition:opacity .2s,transform .3s}
.sp-method[data-step="0"] .sp-st--0,.sp-method[data-step="1"] .sp-st--1,.sp-method[data-step="2"] .sp-st--2,.sp-method[data-step="3"] .sp-st--3,.sp-method[data-step="4"] .sp-st--4{opacity:1;transform:none;transition-duration:.36s,.5s;transition-delay:.08s}
:root[data-m-go] .sp-method[data-step="3"] .sp-m-drips{animation-name:sp-drip;animation-duration:3s;animation-timing-function:ease-in;animation-iteration-count:infinite}
@keyframes sp-drip{0%,60%{transform:translateY(0);opacity:1}85%{transform:translateY(16px);opacity:.2}100%{transform:translateY(0);opacity:1}}
.sp-method__cards{position:absolute;inset:0;pointer-events:none}
.sp-mcard{position:absolute;width:min(31%,440px);padding:18px 22px;background:#0a3e3bf2;border-top:3px solid #e6b25f;opacity:0;transform:translateY(18px);transition:opacity .2s,transform .3s cubic-bezier(.16,1,.3,1);pointer-events:none}
.sp-mcard--0,.sp-mcard--1{right:clamp(16px,3.3vw,48px);top:calc(3.6svh + 196px)}
.sp-mcard--2{left:clamp(16px,3.3vw,48px);top:calc(3.6svh + 196px)}
.sp-mcard--3,.sp-mcard--4{left:clamp(16px,3.3vw,48px);right:clamp(16px,3.3vw,48px);bottom:2.4svh;width:auto;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);column-gap:36px}
.sp-mcard--3>*,.sp-mcard--4>*{grid-column:1}
.sp-mcard--3 .sp-mcard__note,.sp-mcard--3 .sp-mcard__cap,.sp-mcard--4 .sp-mcard__note,.sp-mcard--4 .sp-mcard__cap{grid-column:2}
.sp-mcard--3 .sp-mcard__note,.sp-mcard--4 .sp-mcard__note{grid-row:1/3;align-self:start}
.sp-mcard--3 .sp-mcard__cap,.sp-mcard--4 .sp-mcard__cap{grid-row:3/5}
.sp-method[data-step="0"] .sp-mcard--0,.sp-method[data-step="1"] .sp-mcard--1,.sp-method[data-step="2"] .sp-mcard--2,.sp-method[data-step="3"] .sp-mcard--3,.sp-method[data-step="4"] .sp-mcard--4{opacity:1;transform:none;transition-duration:.36s,.5s;transition-delay:.1s;pointer-events:auto}
.sp-mcard__no{font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#e6b25f}
.sp-mcard h3{font-size:24px;letter-spacing:-.03em;margin:4px 0 8px}
.sp-mcard p{font-size:17px;line-height:1.5;color:#eef4f0}
.sp-mcard__note{margin-top:8px;font-size:15px!important;color:#d3e3da!important}
.sp-mcard__cap{margin-top:8px;font-size:15px!important;color:#d3e3da!important}
.sp-mcard__eq{display:block;font:14px/1.6 var(--gft-font-mono);color:#f6f4ef;margin-top:4px;overflow-wrap:anywhere}

/* ================= S7 assumptions: 60/40 split, hairline register (deep) ================= */
.sp-assume{background:#05302d;color:#f6f4ef;padding:clamp(36px,5svh,64px) clamp(16px,3.3vw,48px)}
.sp-assume__grid{display:grid;grid-template-columns:minmax(0,60fr) minmax(0,40fr);gap:clamp(28px,3.2vw,48px);align-items:start}
.sp-assume__left{min-width:0;align-self:stretch}
.sp-assume__pin{position:sticky;top:16px;display:flex;flex-direction:column;gap:14px}
.sp-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:0}
.sp-mini div{border-top:2px solid #6bb68f;padding-top:8px}
.sp-mini dt{font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#cfe0d6}
.sp-mini dd{margin:4px 0 0;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.sp-mini output{font-size:44px;font-weight:850;letter-spacing:-.05em;line-height:1}
.sp-dchip{font:600 14px var(--gft-font-mono);padding:4px 8px;background:#0a3e3a;color:#cfe0d6}
.sp-dchip[data-sign=up]{background:#5a3a0e;color:#f3cf8f}
.sp-dchip[data-sign=down]{background:#1d5a3f;color:#c9f2da}
.sp-rc--assume{padding:12px 16px}
.sp-r-readout{margin:0 0 8px;min-height:2.8em;font:600 13px/1.4 var(--gft-font-mono);color:#f6f4ef;overflow-wrap:anywhere}
.sp-rc--assume figcaption{font-size:15px;color:#cfe0d6;display:block;min-height:2.4em;margin-top:8px}
.sp-rc--assume .sp-r-need{stroke:#dff5e8}
.sp-rc--assume .sp-r-chip text{stroke:#05302d}
.sp-rc--assume .sp-r-t{fill:#cfe0d6}
.sp-lenses{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.sp-lensbtn{display:grid!important;align-content:start;gap:4px;text-align:left;padding:10px 12px!important;min-height:44px;background:#093835!important;border:1px solid #6bb68f55!important;color:#f6f4ef;font:14px/1.4 var(--gft-font-display)!important;letter-spacing:0!important}
.sp-lensbtn b{font-size:15px;color:#e6b25f}
.sp-lensbtn span{color:#e2ece6}
.sp-lensbtn[aria-pressed=true]{background:#0e4d4a!important;border-color:#e6b25f!important}
.sp-assume__right{min-width:0}
.sp-assume__right .gft-eyebrow{color:#a9d6bd}
.sp-assume__right h2{font-size:clamp(2rem,3.1vw,2.8rem)}
.sp-assume__intro{font-size:16px;line-height:1.5;color:#e2ece6;margin-top:10px;max-width:48ch}
.sp-assume__ctl{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;margin-top:14px}
.sp-assume__n{font:700 15px var(--gft-font-mono);color:#e6b25f;min-width:8.5em}
.sp-assume button{min-height:44px;padding:0 14px;background:transparent;border:1px solid #6bb68f;color:#f6f4ef;font:600 14px var(--gft-font-mono)}
.sp-tabs{display:flex;margin-top:16px;border-bottom:2px solid #6bb68f55}
.sp-tabs button{border:0!important;border-bottom:3px solid transparent!important;flex:1;font:700 16px var(--gft-font-display)!important;letter-spacing:-.01em}
.sp-tabs button[aria-selected=true]{border-bottom-color:#e6b25f!important;background:#0a3e3a!important}
.sp-panels{min-height:0}
.sp-panel{display:grid;gap:0}
/* clean hairline rows: no cards inside cards */
.sp-arow{padding:14px 0;background:transparent;border-bottom:1px solid #6bb68f38}
.sp-arow[data-changed]{border-bottom-color:#e6b25f}
.sp-arow h3{font-size:18px;letter-spacing:-.02em;color:#f6f4ef}
.sp-arow__name p{font-size:15px;color:#cfe0d6;margin-top:2px}
.sp-arow__vals{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:6px;font-size:15px;color:#cfe0d6}
.sp-arow__vals b,.sp-arow__vals output{color:#f6f4ef;font-weight:650}
.sp-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.sp-chipbtn{min-height:44px!important;padding:0 14px!important;font-size:14px!important}
.sp-chipbtn[aria-pressed=true]{background:#6bb68f!important;color:#072d2b!important}
.sp-panel__cap{font-size:15px;color:#cfe0d6;padding-top:10px}

/* ================= S8 closing instrument + selvedge coda (night) ================= */
.sp-close{background:#072d2b;color:#f6f4ef;padding:0;z-index:2}
.sp-close__frame{min-height:92svh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:'copy count' 'hed hed' 'stair stair';grid-template-rows:auto auto 1fr;column-gap:clamp(24px,4vw,64px);padding:clamp(32px,4.8svh,52px) clamp(16px,3.3vw,48px) 24px}
.sp-close__copy{grid-area:copy}
.sp-close__copy .gft-eyebrow{color:#a9d6bd}
.sp-close__copy h2{font-size:clamp(2.1rem,3.2vw,2.9rem);max-width:18ch}
.sp-close__lede{font-size:17px;line-height:1.55;color:#dbe7e0;margin-top:12px;max-width:52ch}
.sp-close__count{grid-area:count;display:grid;align-content:start;justify-items:end;text-align:right}
.sp-close__lbl{font:600 13px var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#cfe0d6}
.sp-close__fig{font-size:72px;font-weight:850;letter-spacing:-.06em;line-height:1}
.sp-close__fig span{font-size:32px;letter-spacing:-.03em;color:#cfe0d6}
.sp-close__fig b{color:#f6f4ef}
.sp-verdict{font-size:18px;font-weight:650;color:#e6b25f;margin-top:6px;max-width:30ch}
.sp-close[data-state=all] .sp-verdict{color:#8fe0b3}
.sp-close__btns{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end;margin-top:12px}
.sp-switch-btn{display:inline-flex;align-items:center;gap:12px;min-height:48px;padding:6px 14px;background:transparent;border:1px solid #6bb68f;color:#f6f4ef;text-align:left}
.sp-switch-btn b{display:block;font-size:15px}
.sp-switch-btn small{display:block;font-size:13px;color:#cfe0d6}
.sp-switch-btn__track{width:40px;height:22px;border-radius:11px;background:#0a3e3a;border:1px solid #6bb68f;position:relative;flex:none}
.sp-switch-btn__track i{position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:#c98a2b;transition:transform .3s}
.sp-switch-btn[aria-checked=true] .sp-switch-btn__track i{transform:translateX(18px);background:#6bb68f}
.sp-back{display:inline-flex;align-items:center;min-height:48px;padding:0 14px;border:1px solid #f6f4ef88;color:#f6f4ef;text-decoration:none;font:600 14px var(--gft-font-mono)}
.sp-heddles{grid-area:hed;list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}
.sp-vrow{position:relative;overflow:hidden;width:100%;min-height:56px;display:grid;align-content:center;gap:2px;padding:6px 10px;background:#0a3e3a;border:1px solid #c98a2b88;color:#f6f4ef;text-align:left}
.sp-vrow__label{font:700 16px var(--gft-font-mono)}
.sp-vrow__state{font-size:13px;color:#f3cf8f}
.sp-vrow__s1{display:none}
.sp-vrow[aria-pressed=true]{background:#1d5a3f;border-color:#8fe0b3}
.sp-vrow[aria-pressed=true] .sp-vrow__state{color:#c9f2da}
.sp-vrow[aria-pressed=true] .sp-vrow__s0{display:none}
.sp-vrow[aria-pressed=true] .sp-vrow__s1{display:inline}
.sp-vrow__shuttle{position:absolute;left:-30px;bottom:6px;width:26px;height:4px;border-radius:2px;background:#e6b25f;opacity:0}
:root[data-m-go] .sp-close[data-m-on] .sp-vrow.is-next .sp-vrow__shuttle{animation-name:sp-shuttle;animation-duration:5s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
@keyframes sp-shuttle{0%,70%{transform:translateX(0);opacity:0}74%{opacity:1}96%{opacity:1}100%{transform:translateX(220px);opacity:0}}
.sp-close__stair{grid-area:stair;position:relative;margin-inline:calc(-1 * clamp(16px,3.3vw,48px));min-height:360px;display:flex;align-items:flex-end;margin-top:16px}
.sp-close__plot{width:100%}
.sp-close__plot svg{display:block;width:100%;height:auto;max-height:48svh}
.sp-close__plot path{vector-effect:non-scaling-stroke}
.sp-v-grid{stroke:#6bb68f;stroke-opacity:.12}
.sp-v-t{fill:#cfe0d6;font:15px var(--gft-font-mono)}
.sp-v-rl{font-weight:700;fill:#072d2b;font-size:16px}
.sp-v-band--technician{fill:#d39a3c;fill-opacity:.82}
.sp-v-band--supervisor{fill:#c98a2b;fill-opacity:.58}
.sp-v-sage--supervisor{fill:#6bb68f}
.sp-v-sage--technician{fill:#3f8f6b}
.sp-v-piece{opacity:0;transform-box:view-box;transform-origin:0 300px;transform:scaleY(.2);transition:opacity .5s,transform .7s cubic-bezier(.16,1,.3,1)}
.sp-v-piece.is-on{opacity:1;transform:none}
.sp-v-split{stroke:#072d2b;stroke-width:2;stroke-opacity:.7}
.sp-v-top{stroke:#f6f4ef;stroke-width:3;stroke-linejoin:round}
.sp-v-run{stroke:#f6f4ef;stroke-width:3;stroke-dasharray:6 8;stroke-opacity:.35}
.sp-close[data-state=all] .sp-v-run{stroke:#8fe0b3;stroke-opacity:1;stroke-dasharray:none}
.sp-close[data-state=all] .sp-v-top{stroke:#c9f2da}
.sp-v-base{stroke:#9fc4b2;stroke-opacity:.6}
.sp-v-lead path{stroke:#e6b25f;stroke-width:1.5}
.sp-v-lead circle{fill:#e6b25f}
.sp-close__call{position:absolute;left:clamp(16px,3.3vw,48px);top:6%;width:calc(330 / 1440 * 100% - 12px);min-width:240px;padding:14px 16px;border-left:3px solid #e6b25f;background:#072d2bf0}
.sp-close__call h3{font-size:19px;letter-spacing:-.02em;color:#f6f4ef}
.sp-close__call p{font-size:15px;line-height:1.5;color:#dbe7e0;margin-top:4px}

/* separate closing coda band: warp/weft selvedge convergence + hover-reveal paper cards + comms planner CTA */
.sp-coda{background:#052523;border-top:1px solid #6bb68f44;padding:clamp(32px,4.5svh,52px) clamp(16px,3.3vw,48px) 36px;position:relative}
.sp-coda__loom{background:#072d2b;border:1px solid #6bb68f44;padding:18px 22px}
.sp-coda__head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.sp-coda__head .gft-eyebrow{color:#e6b25f;margin-bottom:4px}
.sp-coda__title{font-size:clamp(1.25rem,1.9vw,1.65rem);color:#f6f4ef;margin:0}
.sp-coda__taut{min-height:44px;padding:0 18px;background:#0e4d4a;border:1px solid #8fe0b3;color:#f6f4ef;font:600 14px var(--gft-font-mono)}
.sp-coda__taut[aria-pressed=true]{background:#6bb68f;color:#072d2b}
.sp-coda__ground{opacity:.35}
.sp-coda__trace{opacity:1}
.sp-coda__svg{display:block;width:100%;height:96px;margin-top:10px}
.sp-coda__warp{stroke:#6bb68f;stroke-opacity:.45;stroke-width:1.5;transition:transform .6s cubic-bezier(.16,1,.3,1)}
.sp-coda__weft{stroke:#e6b25f;stroke-opacity:.5;stroke-width:1.6;transition:transform .6s cubic-bezier(.16,1,.3,1)}
.sp-coda__cord{stroke:#8fe0b3;stroke-width:3.5;stroke-dasharray:10 6}
.sp-coda__node{fill:#072d2b;stroke:#e6b25f;stroke-width:2.2}
.sp-close[data-taut] .sp-coda__weft,.sp-close[data-state=all] .sp-coda__weft{transform:scaleY(.08);transform-origin:50% 60px}
.sp-close[data-taut] .sp-coda__cord,.sp-close[data-state=all] .sp-coda__cord{stroke:#f3cf8f;stroke-dasharray:none}

.sp-selvedge{position:relative;margin-top:24px}
.sp-selvedge__eyebrow{font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#a9d6bd;margin-bottom:12px}
.sp-selvedge__knots{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.sp-knot{display:grid;align-content:start;gap:6px;padding:16px;background:#093835;border:1px solid #6bb68f44;border-top:3px solid #c98a2b;text-decoration:none;color:#f6f4ef;position:relative;min-height:118px;transition:transform .25s}
.sp-knot:hover,.sp-knot:focus-visible{transform:translateY(-3px);background:#0e4d4a}
.sp-knot__dot{width:10px;height:10px;border-radius:50%;background:#c98a2b;display:inline-block}
.sp-knot__k{font:600 13px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#e6b25f}
.sp-knot b{font-size:17px;letter-spacing:-.01em;color:#f6f4ef}
.sp-knot__d{font-size:15px;color:#d3e3da;line-height:1.4;opacity:.85;transition:opacity .25s}
.sp-knot:hover .sp-knot__d,.sp-knot:focus-visible .sp-knot__d{opacity:1}
.sp-selvedge li{--i:0}

.sp-coda__cta{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:24px;align-items:center;margin-top:20px;padding-top:20px;border-top:1px solid #6bb68f33}
.sp-coda__next{display:grid;gap:4px;padding:18px 22px;background:#0e4d4a;border:1px solid #8fe0b3;border-left:5px solid #e6b25f;text-decoration:none;color:#f6f4ef;transition:transform .25s}
.sp-coda__next:hover,.sp-coda__next:focus-visible{transform:translateX(4px)}
.sp-coda__next-k{font:700 13px var(--gft-font-mono);letter-spacing:.08em;color:#e6b25f}
.sp-coda__next-t{font:800 22px/1.2 var(--gft-font-display);letter-spacing:-.02em;color:#f6f4ef}
.sp-coda__next-d{font-size:15px;color:#dbe7e0}

.sp-selvedge__more{position:relative}
.sp-selvedge__more summary{min-height:44px;display:inline-flex;align-items:center;font:600 14px var(--gft-font-mono);color:#cfe0d6;text-decoration:underline;text-underline-offset:4px}
.sp-selvedge__pop{position:absolute;right:0;bottom:100%;width:min(760px,92vw);max-height:60svh;overflow:auto;background:#0a3e3a;border:1px solid #6bb68f;padding:18px 20px;display:grid;gap:10px;z-index:5}
.sp-selvedge__pop p{font-size:15px;line-height:1.55;color:#e2ece6}
.sp-selvedge__drop{position:absolute;right:0;bottom:-36px;width:2px;height:72px;background:linear-gradient(180deg,#c98a2b 0%,#8fe0b3 100%);pointer-events:none}

/* ================= page-owned staged entrances (lesson 10) ================= */
:root[data-m-go] main[data-sp-armed] [data-sp-in=comb]:not([data-sp-on]) :is(.sp-preset,.sp-fold,.sp-actions){opacity:.25;transform:translateX(-36px)}
:root[data-m-go] [data-sp-in=comb][data-sp-on]:not([data-sp-done]) :is(.sp-preset,.sp-fold,.sp-actions){animation-name:sp-in-comb;animation-duration:620ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=comb][data-sp-on]:not([data-sp-done]) .sp-bench__chip{animation-delay:60ms}
:root[data-m-go] [data-sp-in=comb][data-sp-on]:not([data-sp-done]) .sp-preset{animation-delay:120ms}
:root[data-m-go] [data-sp-in=comb][data-sp-on]:not([data-sp-done]) .sp-fold{animation-delay:calc(160ms + var(--i) * 40ms)}
:root[data-m-go] [data-sp-in=comb][data-sp-on]:not([data-sp-done]) .sp-actions{animation-delay:280ms}
@keyframes sp-in-comb{from{opacity:.25;transform:translateX(-36px)}}

:root[data-m-go] main[data-sp-armed] [data-sp-in=bench]:not([data-sp-on]) .sp-chartwrap{opacity:.3;clip-path:inset(0 64% 0 0)}
:root[data-m-go] main[data-sp-armed] [data-sp-in=bench]:not([data-sp-on]) :is(.sp-bp__kpis,.sp-bp__bar){opacity:.3;transform:translateY(14px)}
:root[data-m-go] [data-sp-in=bench][data-sp-on]:not([data-sp-done]) :is(.sp-bp__kpis,.sp-bp__bar){animation-name:sp-in-rise;animation-duration:460ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=bench][data-sp-on]:not([data-sp-done]) .sp-bp__bar{animation-delay:80ms}
:root[data-m-go] [data-sp-in=bench][data-sp-on]:not([data-sp-done]) .sp-chartwrap{animation-name:sp-in-draw;animation-duration:620ms;animation-delay:220ms;animation-timing-function:cubic-bezier(.65,0,.35,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-rise{from{opacity:.3;transform:translateY(14px)}}
@keyframes sp-in-draw{from{opacity:.3;clip-path:inset(0 64% 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}

:root[data-m-go] main[data-sp-armed] [data-sp-in=float]:not([data-sp-on]) .sp-rc__plot{opacity:.3;transform:translateY(-28px)}
:root[data-m-go] [data-sp-in=float][data-sp-on]:not([data-sp-done]) .sp-rc__plot{animation-name:sp-in-float;animation-duration:760ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-float{0%{opacity:.3;transform:translateY(-28px)}100%{opacity:1;transform:translateY(0)}}
:root[data-m-go] main[data-sp-armed] [data-sp-in=lines]:not([data-sp-on]) div{transform:translateY(18px)}
:root[data-m-go] [data-sp-in=lines][data-sp-on]:not([data-sp-done]) div{animation-name:sp-in-rise18;animation-duration:600ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=lines][data-sp-on]:not([data-sp-done]) div:nth-child(2){animation-delay:110ms}
:root[data-m-go] [data-sp-in=lines][data-sp-on]:not([data-sp-done]) div:nth-child(3){animation-delay:220ms}
@keyframes sp-in-rise18{from{transform:translateY(18px)}}

:root[data-m-go] main[data-sp-armed] [data-sp-in=shed]:not([data-sp-on]) .sp-bridge__stage{opacity:.3;clip-path:inset(0 58% 0 0)}
:root[data-m-go] [data-sp-in=shed][data-sp-on]:not([data-sp-done]) .sp-bridge__stage{animation-name:sp-in-draw;animation-duration:680ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}

:root[data-m-go] main[data-sp-armed] [data-sp-in=unweave]:not([data-sp-on]) .sp-unweave__t{clip-path:inset(0 0 100% 0)}
:root[data-m-go] [data-sp-in=unweave][data-sp-on]:not([data-sp-done]) .sp-unweave__t{animation-name:sp-in-fall;animation-duration:900ms;animation-delay:calc(var(--i) * 30ms);animation-timing-function:cubic-bezier(.45,0,.2,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-fall{0%{clip-path:inset(0 0 100% 0);opacity:1}62%{clip-path:inset(0 0 0 0);opacity:1}100%{clip-path:inset(0 0 0 0);opacity:0}}

:root[data-m-go] main[data-sp-armed] [data-sp-in=unspool]:not([data-sp-on]) .sp-g-bar{clip-path:inset(0 100% 0 0)}
:root[data-m-go] main[data-sp-armed] [data-sp-in=unspool]:not([data-sp-on]) :is(.sp-g-svc,.sp-g-leader){opacity:0}
:root[data-m-go] main[data-sp-armed] [data-sp-in=unspool]:not([data-sp-on]) .sp-g-stair{opacity:.15}
:root[data-m-go] [data-sp-in=unspool][data-sp-on]:not([data-sp-done]) .sp-g-stair{animation-name:sp-in-fade;animation-duration:380ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=unspool][data-sp-on]:not([data-sp-done]) .sp-g-bar{animation-name:sp-in-unspool;animation-duration:460ms;animation-delay:calc(200ms + var(--i) * 25ms);animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
.sp-g-row{--i:0}
:root[data-m-go] [data-sp-in=unspool][data-sp-on]:not([data-sp-done]) :is(.sp-g-svc,.sp-g-leader){animation-name:sp-in-fade;animation-duration:300ms;animation-delay:calc(480ms + var(--i) * 25ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=unspool][data-sp-on]:not([data-sp-done]) .sp-g-ring{transform-box:fill-box;transform-origin:center;animation-name:sp-in-knot;animation-duration:320ms;animation-delay:calc(560ms + var(--i) * 25ms);animation-timing-function:cubic-bezier(.3,1.6,.5,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-fade{from{opacity:0}}
@keyframes sp-in-unspool{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes sp-in-knot{from{transform:scale(0)}}

.sp-l-col{transform-box:view-box;transform-origin:0 330px}
:root[data-m-go] main[data-sp-armed] [data-sp-in=reed]:not([data-sp-on]) .sp-l-col{transform:scaleY(.12)}
:root[data-m-go] main[data-sp-armed] [data-sp-in=reed]:not([data-sp-on]) .sp-gauge{opacity:.3;transform:translateX(-24px)}
:root[data-m-go] [data-sp-in=reed][data-sp-on]:not([data-sp-done]) .sp-gauge{animation-name:sp-in-gauge;animation-duration:420ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=reed][data-sp-on]:not([data-sp-done]) .sp-l-col{animation-name:sp-in-reed;animation-duration:420ms;animation-delay:calc(160ms + var(--i) * 20ms);animation-timing-function:cubic-bezier(.3,1.3,.5,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=reed][data-sp-on]:not([data-sp-done]) .sp-l-grad{animation-name:sp-in-drop;animation-duration:380ms;animation-delay:560ms;animation-timing-function:cubic-bezier(.3,1.4,.5,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-gauge{from{opacity:.3;transform:translateX(-24px)}}
@keyframes sp-in-reed{from{transform:scaleY(.12)}}
@keyframes sp-in-drop{from{transform:translateY(-110px);opacity:0}}

:root[data-m-go] main[data-sp-armed] [data-sp-in=thread]:not([data-sp-on]){clip-path:inset(0 82% 0 0)}
:root[data-m-go] [data-sp-in=thread][data-sp-on]:not([data-sp-done]){animation-name:sp-in-thread;animation-duration:700ms;animation-timing-function:cubic-bezier(.65,0,.35,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=thread][data-sp-on]:not([data-sp-done]) .sp-il__knot b{animation-name:sp-in-knot;animation-duration:320ms;animation-delay:calc(380ms + var(--k,0) * 60ms);animation-timing-function:cubic-bezier(.3,1.6,.5,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-thread{from{clip-path:inset(0 82% 0 0)}to{clip-path:inset(0 0 0 0)}}

.sp-m-bar{transform-box:view-box;transform-origin:0 560px}
:root[data-m-go] main[data-sp-armed] [data-sp-in=heddle]:not([data-sp-on]) .sp-m-a .sp-m-skel{opacity:.25;transform:translateY(-30px)}
:root[data-m-go] main[data-sp-armed] [data-sp-in=heddle]:not([data-sp-on]) .sp-m-bar{transform:scaleY(.1)}
:root[data-m-go] [data-sp-in=heddle][data-sp-on]:not([data-sp-done]) .sp-m-a .sp-m-skel{animation-name:sp-in-heddle;animation-duration:420ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=heddle][data-sp-on]:not([data-sp-done]) .sp-m-bar{animation-name:sp-in-bar;animation-duration:480ms;animation-delay:340ms;animation-timing-function:cubic-bezier(.3,1.2,.5,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-heddle{from{opacity:.25;transform:translateY(-30px)}}
@keyframes sp-in-bar{from{transform:scaleY(.1)}}

:root[data-m-go] main[data-sp-armed] [data-sp-in=twill]:not([data-sp-on]) :is(.sp-mini div,.sp-rc--assume){opacity:.25;transform:translate(-22px,16px)}
:root[data-m-go] [data-sp-in=twill][data-sp-on]:not([data-sp-done]) .sp-mini div{animation-name:sp-in-twill;animation-duration:520ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-sp-in=twill][data-sp-on]:not([data-sp-done]) .sp-mini div:nth-child(2){animation-delay:70ms}
:root[data-m-go] [data-sp-in=twill][data-sp-on]:not([data-sp-done]) .sp-mini div:nth-child(3){animation-delay:140ms}
:root[data-m-go] [data-sp-in=twill][data-sp-on]:not([data-sp-done]) .sp-rc--assume{animation-name:sp-in-twill;animation-duration:620ms;animation-delay:240ms;animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-twill{from{opacity:.25;transform:translate(-22px,16px)}}

:root[data-m-go] main[data-sp-armed] .sp-heddles[data-sp-in]:not([data-sp-on]) li{opacity:.25;transform:translateX(30px)}
:root[data-m-go] .sp-heddles[data-sp-on]:not([data-sp-done]) li{animation-name:sp-in-wind;animation-duration:520ms;animation-delay:calc(var(--i) * 30ms);animation-timing-function:cubic-bezier(.16,1,.3,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-wind{from{opacity:.25;transform:translateX(30px) rotate(2deg)}}
:root[data-m-go] main[data-sp-armed] .sp-close__stair[data-sp-in]:not([data-sp-on]) .sp-close__plot{clip-path:inset(0 52% 0 0)}
:root[data-m-go] .sp-close__stair[data-sp-on]:not([data-sp-done]) .sp-close__plot{animation-name:sp-in-windup;animation-duration:720ms;animation-delay:100ms;animation-timing-function:steps(8,end);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes sp-in-windup{from{clip-path:inset(0 52% 0 0)}to{clip-path:inset(0 0 0 0)}}
:root[data-m-go] main[data-sp-armed] .sp-coda[data-sp-in]:not([data-sp-on]) .sp-coda__trace{clip-path:inset(0 100% 0 0)}
:root[data-m-go] .sp-coda[data-sp-on]:not([data-sp-done]) .sp-coda__trace{animation-name:sp-in-thread;animation-duration:600ms;animation-delay:200ms;animation-timing-function:cubic-bezier(.65,0,.35,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}

/* ================= reduced motion & calm: every scroll-driven rule and transition off ================= */
@media (prefers-reduced-motion:reduce){
 .sp-hero__plot,.sp-l-lift,.sp-ledger__lift svg{animation-name:none;animation-timeline:auto}
 .sp-hero__cursor,.sp-hero__dot,.sp-hero__flag,.sp-il__line,.sp-il__knot,.sp-il__weight,.sp-il__disc,.sp-il__dial-arc,.sp-m-a,.sp-m-b,.sp-st,.sp-mcard,.sp-il__card,.sp-eq,.sp-coda__warp,.sp-coda__weft{transition:none}
}
:root[data-motion=calm] :is(.sp-hero__cursor,.sp-hero__dot,.sp-hero__flag,.sp-il__line,.sp-il__knot,.sp-il__weight,.sp-il__disc,.sp-il__dial-arc,.sp-m-a,.sp-m-b,.sp-st,.sp-mcard,.sp-il__card,.sp-eq,.sp-coda__warp,.sp-coda__weft){transition:none}

/* ================= tablet and phone ================= */
@media (max-width:1100px){
 .sp-fields{grid-template-columns:1fr}
 .sp-mini output{font-size:36px}
 .sp-lenses{grid-template-columns:1fr}
 .sp-heddles{grid-template-columns:repeat(4,minmax(0,1fr))}
 .sp-bridge__head{grid-template-columns:1fr}
 .sp-coda__cta{grid-template-columns:1fr}
}
@media (max-width:899px){
 .gft-splash[data-splash=supervisor-pipeline]{min-height:calc(100svh - 76px)}
 .gft-splash[data-splash=supervisor-pipeline] .gft-splash__content{padding-bottom:calc(34svh + 120px)}
 .gft-splash[data-splash=supervisor-pipeline] h1{font-size:44px;line-height:1.05}
 .gft-splash[data-splash=supervisor-pipeline] .gft-splash__lede{font-size:17px}
 .sp-hero__scrim{display:none}
 .sp-hero__plot{aspect-ratio:auto;height:34svh;bottom:calc(var(--splash-strip-h,72px) + 8px);container-type:normal;clip-path:inset(-320px 0 0 0)}
 .sp-hero__svg{left:calc(-520 / 920 * 100%);width:calc(1440 / 920 * 100%);max-width:none}
 .sp-hero__flag dd{font-size:28px}
 .sp-hero__tag span{display:none}
 .sp-hero__flag{padding:8px 12px}
 .sp-hero__svg text,.sp-hero__dot,.sp-hero__ring,.sp-hero__mote{display:none}
 .sp-hero__months{display:block;list-style:none;margin:0;padding:0;position:absolute;inset:auto 0 calc(100% * 116 / 560) 0;height:0}
 .sp-hero__months li{position:absolute;left:calc((var(--x) * 14.4 - 520) / 920 * 100%);transform:translateX(-50%);font:13px var(--gft-font-mono);color:#b9d0c3;top:-4px}
 .sp-hero__months li:nth-child(even){display:none}
 .sp-hero__flag{transform:none;left:0;right:0;top:-10px;translate:0 -100%;min-width:0;transition:none;padding:10px 12px}
 .sp-hero__flag dl{gap:2px 14px}
 .sp-hero__actions{flex-direction:column;align-items:stretch;gap:12px}
 .sp-bench__warp,.sp-spine{left:calc(50% - 1px)}
 .sp-bench__grid{grid-template-columns:1fr;grid-template-areas:'intro' 'panel' 'ctl';grid-template-rows:none;padding-inline:16px}
 .sp-bench__intro{padding-top:40px;padding-bottom:16px}
 .sp-bench__panel{position:sticky;top:0;height:auto;min-height:0;z-index:3;background:#05302d;padding-block:10px 8px;border-bottom:1px solid #6bb68f66}
 .sp-bp__head{gap:10px;padding-bottom:6px;align-items:center}
 .sp-bp__lbl{font-size:13px;letter-spacing:.04em}
 .sp-bp__total{grid-template-columns:auto auto}
 .sp-total{font-size:48px}
 .sp-role-totals{font-size:14px;padding-bottom:2px}
 .sp-bp__kpis{gap:12px}
 .sp-bp__kpis output{font-size:24px}
 .sp-bp__kpis span,.sp-bp__kpis small{font-size:13px;letter-spacing:0}
 .sp-bp__kpis small{display:none}
 .sp-chartwrap{position:relative;flex:none;height:22svh;min-height:170px;margin-top:2px}
 .sp-b-t{font-size:32px}
 .sp-b-m--odd,.sp-b-preth text,.sp-b-call text,.sp-b-t:not(.sp-b-m){display:none}
 .sp-bp__bar{padding-top:6px}
 .sp-bp__bar .sp-seg{display:none}
 .sp-bp__call{display:block;font-size:14px;font-weight:650;color:#f3cf8f;margin-top:4px;min-height:2.6em;line-height:1.3}
 .sp-flag{white-space:nowrap;overflow:hidden;text-overflow:clip;font-size:13px;padding:6px 10px;width:100%}
 .sp-cellread{min-height:4.5em}
 .sp-il__state{font-size:17px}
 .sp-legend,.sp-interp,.sp-note--dark,.sp-bp__foot{display:none}
 .sp-bench__ctl{padding-block:12px 48px}
 .sp-fields{grid-template-columns:1fr}
 .sp-actions{position:static;background:#05302d;grid-template-columns:repeat(3,1fr);padding-bottom:10px}
 .sp-actions [type=reset]{grid-column:1/-1}
 .sp-lift{grid-template-columns:1fr}
 .sp-record{padding-inline:16px}
 .sp-record__grid{grid-template-columns:1fr}
 .sp-record__side{grid-row:1}
 .sp-delta{grid-template-columns:1fr;gap:8px}
 .sp-delta output{font-size:34px}
 .sp-r-t{font-size:34px}
 .sp-r-ax,.sp-r-chip text,.sp-r-dtag{display:none}
 .sp-r-m--odd{display:none}
 .sp-comparison{overflow-x:auto}
 .sp-bridge{padding-inline:16px}
 .sp-bridge__kpis{justify-content:flex-start}
 .sp-bridge__stage{overflow:hidden}
 .sp-bridge__stage svg{min-width:0}
 .sp-br-ct,.sp-br-wcol:nth-of-type(even) .sp-br-wt{display:none}
 .sp-unweave{display:none}
 .sp-cohorts{padding-top:24px}
 .sp-cohorts__top{padding:0 16px 12px}
 .sp-cohorts__stage{padding:0 16px;display:grid;gap:12px}
 .sp-cohorts__callout{position:static;width:auto;margin-bottom:0}
 .sp-gantt{width:1280px}
 .sp-gantt-scroll{scroll-snap-type:x proximity}
 .sp-g-stair,.sp-g-stairArea,.sp-g-sbase,.sp-g-st,.sp-g-leader,.sp-g-notch{display:none}
 .sp-ledger{padding-inline:16px}
 .sp-ledger__stage{grid-template-columns:1fr}
 .sp-gauge{order:2}
 .sp-heatstrip{grid-template-columns:repeat(6,minmax(0,1fr))}
 .sp-l-t{display:none}
 .sp-l-m{display:block;font-size:42px}
 g.sp-l-col:nth-of-type(even) .sp-l-m{display:none}
 .sp-ledger__table caption{display:block}
 .sp-ledger__head .sp-seg--big,.sp-ledger__tools .sp-seg{width:100%}
 .sp-ledger__head .sp-seg--big label,.sp-ledger__tools .sp-seg label{flex:1}
 .sp-ledger__head .sp-seg span{justify-content:center}
 .sp-ledger__table thead,.sp-tbar{display:none}
 .sp-ledger__table table,.sp-ledger__table tbody{display:block}
 .sp-ledger__table tbody{display:grid;grid-template-columns:1fr 1fr;gap:8px}
 .sp-ledger__table tr{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;padding:10px;background:#ece8df}
 .sp-ledger__table :is(th,td){display:block;border:0;padding:0;text-align:left;font-size:15px}
 .sp-ledger__table :is(th,td)[data-c]::before{content:attr(data-c) ' ';display:block;font:13px var(--gft-font-mono);color:#34514b}
 .sp-ledger__table :is(th,td):is([data-c="Active lines"],[data-c=Surplus]),[data-sp-ltable] :is(th,td):nth-child(4),[data-sp-ltable] :is(th,td):nth-child(5){display:none}
 .sp-ledger__lift{padding:12px 14px 20px}
 .sp-ledger__lift svg{height:64px}
 .sp-ledger__drop{left:50%}
 .sp-il__frame{position:static;height:auto;min-height:0;overflow:visible;display:flex;flex-direction:column}
 .sp-il__grid,.sp-il__dust,.sp-il__disc{position:absolute}
 .sp-il__head{position:static;width:auto;padding:28px 16px 12px}
 .sp-il__head h2{font-size:34px}
 .sp-il__read{position:sticky;top:0;width:auto;z-index:4;margin:0;order:3;background:#072d2b;padding:8px 16px}
 .sp-il__dialwrap{grid-template-columns:56px 1fr;gap:10px}
 .sp-il__dial{width:56px;height:56px}
 .sp-il__read output{font-size:28px}
 .sp-il__state{font-size:15px;margin-top:4px}
 .sp-il__note{display:none}
 .sp-il__stage{position:sticky;top:114px;bottom:auto;height:26svh;order:4;z-index:3;background:#072d2b;overflow:clip}
 .sp-il__line{transform:translateY(-6svh)}
 .sp-il__ctl{position:static;width:auto;padding:0 16px 12px;order:2}
 .sp-il__ctl label{display:grid;gap:2px}
 .sp-il__ctl output{white-space:nowrap}
 .sp-il__cards{position:static;order:5;display:grid;gap:0;padding:0 16px}
 .sp-il__card{position:relative;inset:auto;width:auto;min-height:54svh;opacity:1;transform:none;display:flex;flex-direction:column;justify-content:center;background:transparent;border:0;border-top:1px solid #6bb68f55}
 .sp-il__card:last-child{min-height:68svh;justify-content:flex-start;padding-top:10svh}
 .sp-il__marks{display:none}
 .sp-il[data-state="2"] .sp-il__line{transform:translateY(2svh)}
 .sp-il__axis li:nth-child(even){display:none}
 .sp-il__axis li{top:calc(54.44% + 12px);font-size:13px}
 .sp-method__frame{position:static;height:auto;min-height:0;overflow:visible;display:flex;flex-direction:column}
 .sp-method__head{position:static;max-width:none;padding:28px 16px 8px}
 .sp-rail{position:static;padding:0 16px 10px;flex-wrap:wrap}
 .sp-rail__pn{display:none}
 .sp-method__eqs{position:sticky;top:0;z-index:3;height:76px;background:#0e4d4a;margin:0;left:auto;right:auto;padding:0 16px}
 .sp-eq{inset:0 16px}
 .sp-eq__v{font-size:17px}
 .sp-method__stage{position:sticky;top:76px;bottom:auto;height:30svh;z-index:3;background:#0e4d4a;border-bottom:1px solid #bfe6cf55;overflow:clip}
 .sp-m-svg text{display:none}
 .sp-m-svg{transform-origin:0 0;transition:transform .5s}
 .sp-method:is([data-step="0"],[data-step="1"],[data-step="2"]) .sp-m-svg{transform:scale(1.6)}
 .sp-method[data-step="2"] .sp-m-a{transform:none}
 .sp-method__cards{position:static;padding:0 16px}
 .sp-mcard{position:relative;inset:auto!important;width:auto;min-height:66svh;opacity:1;transform:none;display:block!important;background:transparent;border-top:1px solid #bfe6cf55;padding-top:24px}
 .sp-mcard:last-child{min-height:74svh}
 .sp-method__marks{display:none}
 .sp-assume{padding-inline:16px}
 .sp-assume__grid{grid-template-columns:1fr}
 .sp-assume__left{display:contents}
 .sp-assume__pin{height:auto;min-height:0;position:sticky;top:0;z-index:3;background:#05302d;padding-block:10px;gap:6px}
 .sp-mini{gap:8px}
 .sp-mini output{font-size:28px}
 .sp-dchip{font-size:13px}
 .sp-rc--assume .sp-rc__plot{height:22svh;display:flex;flex-direction:column}
 .sp-rc--assume .sp-rc__plot svg{flex:1;min-height:0;height:0;width:100%}
 .sp-rc--assume figcaption,.sp-assume__pin .sp-lenses{display:none}
 .sp-assume__right{padding-block:20px 48px}
 .sp-close__frame{grid-template-columns:1fr;grid-template-areas:'copy' 'count' 'stair' 'hed';grid-template-rows:none;padding-inline:16px;min-height:0}
 .sp-close__count{justify-items:start;text-align:left;margin-top:16px}
 .sp-close__btns{justify-content:flex-start}
 .sp-close__fig{font-size:56px}
 .sp-close__stair{display:block;margin-top:12px;min-height:0}
 .sp-close__plot{overflow:clip}
 .sp-close__plot svg{max-height:none;max-width:none;height:34svh;width:calc(1440 / 920 * 100%);margin-left:calc(-520 / 920 * 100%)}
 .sp-close__plot svg text,.sp-v-lead{display:none}
 .sp-v-t{font-size:28px}
 .sp-close__call{position:static;width:auto;margin:12px 16px 0}
 .sp-heddles{grid-template-columns:1fr;gap:8px}
 .sp-vrow{min-height:56px}
 .sp-coda{padding-inline:16px}
 .sp-selvedge__knots{grid-template-columns:1fr;gap:10px}
 .sp-knot{min-height:0;padding:14px}
 .sp-selvedge__pop{position:static;width:auto}
}

.sp-sec h2[data-m=split]{line-height:1.08}
