/* /tools/trace-a-garment/ : the whole film. Classes are prefixed tg- (page) and trace- (instrument, tool.css).
   Motion here is transform, opacity and clip-path only. The scroll-linked line is one longhand timeline on its own
   element, under :root[data-m-go], killed for reduced motion. */
.tg-wrap{width:min(1440px,calc(100% - 96px));margin-inline:auto}
@media(max-width:1000px){.tg-wrap{width:calc(100% - 56px)}}
@media(max-width:640px){.tg-wrap{width:calc(100% - 40px)}}
.tg-bench,.tg-chain,.tg-led,.tg-roles,.tg-src,.tg-tie{font-variant-numeric:tabular-nums lining-nums;translate:0 0!important;transform:none!important;opacity:1!important}
.tg-bench :is(h2,h3),.tg-chain :is(h2,h3),.tg-led :is(h2,h3),.tg-roles :is(h2,h3),.tg-src :is(h2,h3),.tg-tie :is(h2,h3){text-wrap:balance}

/* ---------- splash: the thread at stage scale ---------- */
[data-splash=trace-a-garment] .gft-splash__structure{inset:0 -2% 0 6%}
[data-splash=trace-a-garment] .gft-splash__structure::after{background:linear-gradient(90deg,#072d2b 0%,#072d2bb8 18%,#072d2b00 44%)}
[data-splash=trace-a-garment] .gft-splash__cue{font-size:14px;font-weight:650;letter-spacing:.02em}
.tg-sp{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:flex-end}
.tg-sp__svg{width:100%;height:100%;min-height:540px;overflow:visible}
.tg-sp g[data-m-live]{transform-box:fill-box;transform-origin:center}
.tg-sp__glow{stroke:#6bb68f;stroke-width:12;stroke-opacity:.22}
.tg-sp__thread{stroke:#b2f2ce;stroke-width:4.4}
.tg-sp__beyond{stroke:#8fb0a0;stroke-width:2.4;stroke-dasharray:5 9;opacity:.9}
.tg-sp__stub{stroke:#f1c77a;stroke-width:4.4;stroke-dasharray:8 6}
.tg-sp__stub--beyond{stroke-width:3;opacity:.9}
.tg-sp__halo{fill:none;stroke:#b9decb;stroke-opacity:.42;stroke-width:1.6}
.tg-sp__disc{fill:#072d2b;stroke:#8fb0a0;stroke-width:2.2}
.tg-sp__node--reached .tg-sp__disc{fill:#6bb68f;stroke:#e5faee;stroke-width:2.4}
.tg-sp__icon{stroke:#9ab8a8;fill:none;stroke-width:1.8}
.tg-sp__node--reached .tg-sp__icon{stroke:#072d2b;stroke-width:2}
.tg-sp__lab{fill:#f6f4ef;font:700 22px var(--gft-font-mono)}
.tg-sp__sub{fill:#cbe3d5;font:600 15px var(--gft-font-mono);letter-spacing:.08em}
.tg-sp__break-ring{fill:#e5b26429;stroke:#f1c77a;stroke-width:2.4}
.tg-sp__break-box{fill:#1c1303d9;stroke:#e5b264;stroke-width:1.5}
.tg-sp__break-label{fill:#ffe2a8;font:700 16px var(--gft-font-mono);letter-spacing:.09em}
.tg-sp__signal{opacity:1}
.tg-sp__signal-halo{fill:#97d9b6;fill-opacity:.34}
.tg-sp__signal-core{fill:#ffffff}
.tg-sp-actions{display:grid;gap:18px;max-width:48ch}
.tg-sp-actions__btns{display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.tg-sp-actions__link{display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;border:1px solid #8fb0a0;background:#072d2b99;color:#e8f2ec;font:600 13px/1.4 var(--gft-font-mono);text-decoration:none;letter-spacing:.04em}
.tg-sp-actions__link:hover{background:#0e4d4a;border-color:#97d9b6;color:#f6f4ef}
.tg-sp-meta{display:grid;gap:4px;padding:12px 16px;background:#0a3d3ab3;border:1px solid #ffffff29;border-left:3px solid var(--gft-ochre)}
.tg-sp-meta__kicker{font:600 12px/1.4 var(--gft-font-mono);letter-spacing:.08em;color:#f1d9a7}
.tg-sp-meta__val{font:13px/1.5 var(--gft-font-mono);color:#e2eee7}
.tg-sp-meta__val b{color:#f6f4ef;font-weight:700}
@media(max-width:1000px){[data-splash=trace-a-garment] .gft-splash__structure{inset:12% -10% 0 0}}
@media(max-width:640px){
 [data-splash=trace-a-garment] .gft-splash__structure{inset:auto 0 52px 0;height:400px}
 [data-splash=trace-a-garment] .gft-splash__structure::after{display:none}
 [data-splash=trace-a-garment] .gft-splash__content{padding-bottom:400px}
 .tg-sp{justify-content:flex-start;overflow:clip;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 16%);mask-image:linear-gradient(180deg,transparent 0,#000 16%)}
 .tg-sp__svg{flex:none;max-width:none;width:165%;height:auto;min-height:0;margin-left:-58%;margin-top:0}
 .tg-sp__lab{font-size:23px}.tg-sp__sub{font-size:23px}.tg-sp__break-label{font-size:20px}
}

/* ---------- reading thread: sticky tape under the splash ---------- */
.tg-mini{--tgm-off:#7a9b8b;--tgm-on:#6bb68f;--tgm-ring:#d2f3e0;--tgm-text:#c4dcd0;--tgm-bg:#072d2b;--tgm-warn:#e5b264;--tgm-here:#f6f4ef;min-width:0}
.tg-mini__row{display:flex;align-items:flex-start;width:100%}
.tg-mini__stn{display:grid;justify-items:center;gap:6px;flex:none;position:relative}
.tg-mini__dot{display:block;width:12px;height:12px;border-radius:50%;border:2px solid var(--tgm-off);background:var(--tgm-bg);transition:background-color .45s,border-color .45s,transform .45s var(--gft-ease-out),box-shadow .45s}
.tg-mini__dot[data-s=reached]{background:var(--tgm-on);border-color:var(--tgm-ring)}
.tg-mini__dot[data-here]{transform:scale(1.4);box-shadow:0 0 0 3px color-mix(in srgb,var(--tgm-here) 45%,transparent)}
.tg-mini__dot[data-rule-hot]{background:#e5b264!important;border-color:#fff3d6!important;transform:scale(1.45);box-shadow:0 0 0 5px #e5b26455}
.tg-mini__name{font:12px/1 var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--tgm-text);white-space:nowrap}
.tg-mini__link{flex:1;position:relative;height:2px;margin:5px 6px 0;min-width:10px;background:color-mix(in srgb,var(--tgm-off) 45%,transparent)}
.tg-mini__seg{position:absolute;inset:0}
.tg-mini__seg::before,.tg-mini__seg::after{content:'';position:absolute;inset:-1px 0}
.tg-mini__seg::before{background:var(--tgm-ring);transform:scaleX(0);transform-origin:0 50%;transition:transform .6s var(--gft-ease-out)}
.tg-mini__seg::after{background:repeating-linear-gradient(90deg,var(--tgm-warn) 0 6px,transparent 6px 11px);opacity:0;transition:opacity .4s}
.tg-mini__seg[data-s=ok]::before{transform:scaleX(1)}
.tg-mini__seg[data-s=broken]::after{opacity:1}
.tg-mini__seg[data-rule-hot]{box-shadow:0 0 0 3px #e5b26466;background:#e5b264}
.tg-mini--readout,.tg-mini--ledger,.tg-mini--model{margin:16px 0 22px}
.tg-mini--ledger{--tgm-text:#cfe3d7}
.tg-mini--model{--tgm-text:#dcebe3}
.tg-mini--model .tg-mini__dot{width:16px;height:16px}
.tg-mini--model .tg-mini__link{margin-top:7px;height:3px}

.tg-tape{position:sticky;top:0;z-index:35;background:#072d2b;color:#dcebe3;border-bottom:1px solid #ffffff26}
.tg-tape__in{width:min(1440px,calc(100% - 96px));margin-inline:auto;display:grid;grid-template-columns:auto minmax(280px,560px) minmax(0,1fr) auto;gap:30px;align-items:center;min-height:56px}
.tg-tape__tag{font:12px/1 var(--gft-font-mono);letter-spacing:.16em;text-transform:uppercase;color:#6bb68f}
.tg-tape__read{font:13px/1.5 var(--gft-font-mono);color:#dcebe3;max-width:none}
.tg-tape__read b{color:#f6f4ef;font-weight:600}
.tg-tape__sec{display:flex;align-items:center;gap:8px;font:12px/1 var(--gft-font-mono);letter-spacing:.1em;text-transform:uppercase;color:#f6f4ef;width:15ch;flex:none;justify-content:flex-end;white-space:nowrap}
.tg-tape__sec i{width:6px;height:6px;border-radius:50%;background:#e5b264;flex:none}
.tg-tape__track{position:absolute;inset:auto 0 -1px 0;height:2px;background:#ffffff14;overflow:hidden}
.tg-tape__fill{display:block;width:100%;height:100%;background:linear-gradient(90deg,#6bb68f,#e5b264);transform-origin:0 50%;opacity:.3}
@supports(animation-timeline:scroll()){
 :root[data-m-go] .tg-tape__fill{opacity:1;transform:scaleX(0);animation-name:tg-fill;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root block)}
 @keyframes tg-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
}
@media(max-width:1000px){.tg-tape__in{width:calc(100% - 56px);grid-template-columns:minmax(0,1fr) 15ch;gap:16px}.tg-tape__tag,.tg-tape__read{display:none}}
@media(max-width:640px){.tg-tape__in{width:calc(100% - 40px);min-height:50px;gap:10px;grid-template-columns:minmax(0,1fr) 14.5ch}.tg-tape .tg-mini__name{display:none}.tg-tape .tg-mini__link{margin-top:5px}.tg-tape__sec{width:14.5ch;font-size:12px;letter-spacing:.08em}}

/* ---------- bench: dark full-bleed instrument ---------- */
.tg-bench{scroll-margin-top:56px}
.tg-bench__dark{position:relative;isolation:isolate;overflow:clip;background:radial-gradient(ellipse 70% 90% at 82% 0,#0e4d4a 0,#072d2b 64%);color:var(--gft-paper);padding-block:clamp(44px,5vw,80px)}
.tg-bench__dark::before{content:'';position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#b4d4c50a 1px,transparent 1px),linear-gradient(90deg,#b4d4c50a 1px,transparent 1px);background-size:44px 44px;pointer-events:none}
.tg-bench__head{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:end;margin-bottom:clamp(24px,3vw,40px)}
.tg-bench__dark .trace-kicker{color:#b8d8c7}
.tg-bench__ask h2{font-size:clamp(2.1rem,4.3vw,4.4rem);max-width:15ch;margin:10px 0 0}
.tg-bench__strap{font-size:1.35rem;color:#6bb68f;margin:16px 0 10px}
.tg-bench__ask>p:last-child{max-width:58ch;color:#d6e5dc;font-size:14px}
.tg-bench__ctrl{display:grid;gap:22px;justify-items:start}
.tg-bench__dark .trace-presets legend{color:#dcebe3;font-size:14px;letter-spacing:.02em}
.tg-bench__dark .trace-presets button{font-size:15px;min-height:54px;padding:12px 16px;font-weight:650}
.tg-bench__dark .trace-presets .trace-actions{gap:10px}
.tg-bench__dark .trace-actions button{color:#e3ede7;border-color:#7a9d8b;background:#072d2b80}
.tg-bench__dark .trace-actions button:is(:hover,[aria-pressed=true]){background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night)}
.tg-bench__dark :is(button,input,a,summary):focus-visible{outline-color:#f6f4ef}
.tg-bench__dark .trace-stamp{color:#d6e7dd;border-color:#7a9d8b;font-size:12px}
.tg-bench__dark .trace-diagram{margin:0;padding:0;background:none;overflow:visible}
.tg-bench__dark .trace-diagram figcaption{align-items:flex-end}
.tg-bench__dark .trace-diagram h3{font-size:clamp(2.2rem,4.5vw,4.4rem);line-height:1.02;letter-spacing:-.05em;max-width:14ch}
.tg-bench__big{display:flex;align-items:center;gap:14px;margin-left:auto;margin-right:clamp(0px,2vw,32px);color:var(--gft-paper)}
.tg-bench__big b{font-size:clamp(4.6rem,8.5vw,8.5rem);font-weight:850;letter-spacing:-.08em;line-height:.9;color:#97d9b6}
.tg-bench__big span{font:14px/1.6 var(--gft-font-mono);color:#d3e5da}
.tg-bench__dark .trace-thread{margin-top:clamp(18px,2.8vw,36px)}
.tg-bench__dark .trace-thread__label{font-size:15px}
.tg-bench__dark .trace-thread__link{stroke-width:2.8}
.tg-bench__dark .trace-progress{margin-top:26px}
.trace-thread__halo[data-m-live]{transform-box:fill-box;transform-origin:center}
:root[data-m-go] .trace-thread__node--reached .trace-thread__halo[data-m-live]{animation-name:none}
.tg-bench-pulse{fill:#effff5;stroke:#97d9b6;stroke-width:5;stroke-opacity:.35;opacity:0}

.tg-bench__lower{position:relative;isolation:isolate;overflow:clip;color:var(--gft-paper);background:linear-gradient(180deg,#072d2b 0,#0a3d3a 42%,#093a37 78%,#072d2b 100%);padding-block:clamp(32px,4vw,56px) clamp(28px,3.5vw,44px);--trace-line:#ffffff2e;--trace-muted:#cbe0d3}
.tg-bench__lower::before{content:'';position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#b4d4c50a 1px,transparent 1px),linear-gradient(90deg,#b4d4c50a 1px,transparent 1px);background-size:44px 44px;pointer-events:none}
.tg-bench__lower .trace-workbench{margin-top:0;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(28px,4.5vw,68px);align-items:start}
.tg-bench__lower .trace-kicker{color:#b8d8c7}
.tg-bench__lower .trace-readout{position:sticky;top:72px;background:#ffffff0e;border:1px solid #ffffff30;color:var(--gft-paper);padding:clamp(22px,2.4vw,34px)}
.tg-bench__lower .trace-inspector h3{font-size:clamp(1.85rem,3vw,2.8rem);color:var(--gft-paper)}
.tg-bench__lower .trace-readout h3{font-size:clamp(1.45rem,2.1vw,2rem)}
.tg-bench__live{margin:4px 0 22px;padding:16px 18px 12px;border:1px solid #ffffff26;background:#072d2b99}
.tg-bench__live p{font:13px/1.6 var(--gft-font-mono);color:#cbe0d3;margin:10px 0 0;max-width:none}
.tg-mini--bench{--tgm-text:#dcebe3}
.tg-mini--bench .tg-mini__dot{width:18px;height:18px}
.tg-mini--bench .tg-mini__link{margin-top:10px;height:3px}
.tg-mini--bench .tg-mini__name{font-size:12px;letter-spacing:.04em}
.tg-bench__lower .trace-stage-picker legend,.tg-bench__lower .trace-position>label{font-size:14px;color:var(--gft-paper)}
.tg-bench__lower .trace-position>label span{font-size:13px;color:#cbe0d3}
.tg-bench__lower .trace-stage-picker{gap:8px}
.tg-bench__lower .trace-stage-picker label{min-height:50px;font-size:14px;border-color:#7a9d8b;padding:10px 12px;gap:10px;color:#e6f0ea;transition:background-color .3s,color .3s}
.tg-bench__lower .trace-stage-picker input{accent-color:#6bb68f;width:20px;height:20px}
.tg-bench__lower .trace-stage-picker label:has(:checked){background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night);font-weight:700}
.tg-bench__lower .trace-position input[type=range]{accent-color:#6bb68f}
.tg-bench__lower .trace-position input[type=number],.tg-bench__lower .trace-edit input{background:#ffffff12;color:var(--gft-paper);border-color:#8fb0a0;font-size:15px}
.tg-bench__lower .trace-position p{font-size:13px;color:#cbe0d3}
.tg-bench__lower .trace-record{position:relative}
.tg-bench__lower .trace-record legend{font-size:18px;color:var(--gft-paper)}
.tg-bench__lower .trace-tool .trace-small,.tg-bench__lower .trace-small{font-size:14px;color:#cbe0d3}
.tg-bench__lower .trace-field{position:relative;min-height:74px;gap:18px;padding:10px 0 10px 8px;border-bottom:0}
.tg-bench__lower .trace-field::before{content:'';position:absolute;left:19px;top:0;bottom:0;width:2px;background:#97d9b6;transition:background-color .4s}
.tg-bench__lower .trace-field:has(input:not(:checked):not(:disabled))::before{background:repeating-linear-gradient(180deg,#e5b264 0 7px,transparent 7px 12px);width:3px;left:18.5px}
.tg-bench__lower .trace-field input{appearance:none;-webkit-appearance:none;position:relative;z-index:1;width:24px;height:24px;border-radius:50%;border:2px solid #97d9b6;background:#072d2b;display:grid;place-content:center;margin:0 6px 0 0;cursor:pointer;transition:background-color .3s,border-color .3s}
.tg-bench__lower .trace-field input::after{content:'';width:10px;height:6px;border-left:2.5px solid #072d2b;border-bottom:2.5px solid #072d2b;rotate:-45deg;translate:0 -1px;opacity:0}
.tg-bench__lower .trace-field input:checked{background:#6bb68f;border-color:#d2f3e0}
.tg-bench__lower .trace-field input:checked::after{opacity:1}
.tg-bench__lower .trace-field input:not(:checked){border-color:#e5b264;border-style:dashed}
.tg-bench__lower .trace-field strong{font-size:15px;color:var(--gft-paper)}
.tg-bench__lower .trace-field code{font-size:13px;color:#d6e8dd}
.tg-bench__lower .trace-field:has(input:not(:checked):not(:disabled)) code{color:#f1d9a7}
.tg-bench__lower .trace-edit{border-bottom-color:#ffffff2e}
.tg-bench__lower .trace-edit summary{color:#97d9b6;font-size:14px}
.tg-bench__lower .trace-edit label{font-size:14px;color:#e6f0ea}
.tg-bench__lower .trace-facts>div{border-top-color:#ffffff2e;font-size:14px;padding:12px 0}
.tg-bench__lower .trace-facts dd{font-size:15px;color:var(--gft-paper)}
.tg-bench__lower .trace-metric{margin:16px 0 20px}
.tg-bench__lower .trace-metric span{font-size:14px;color:#dcebe3}
.tg-bench__lower .trace-metric output{color:var(--gft-paper);font-size:clamp(4.2rem,6.5vw,6.2rem)}
.tg-bench__lower .trace-recommendation{background:#e5b2641f;border-left:3px solid var(--gft-ochre);color:#f1ece0;margin-top:20px;padding:18px}
.tg-bench__lower .trace-recommendation .trace-kicker{color:#f1d9a7}
.tg-bench__lower .trace-rule{background:#6bb68f;opacity:.5}
.tg-bench__lower .trace-compare{padding-top:14px}
.tg-bench__lower .trace-compare p[role=status]{font-size:13px;color:#97d9b6;min-height:2.4em;margin-top:10px}
.tg-bench__lower .trace-compare h4{color:var(--gft-paper);margin:8px 0}
/* Export strip inside the bench panel so Step 5 has no dead gap */
.tg-bench__lower .trace-export{display:grid;grid-template-columns:1fr;gap:14px;border-top:1px solid #ffffff2e;border-bottom:0;padding:18px 0 0;margin:16px 0 0}
.tg-bench__lower .trace-export h3{font-size:1.25rem;color:var(--gft-paper);margin:0 0 6px}
.tg-bench__lower .trace-export p{font-size:13px;color:#cbe0d3;line-height:1.6}
.tg-bench__lower .trace-export>.trace-actions{justify-content:start}
.tg-bench__lower .trace-export>[role=status]{font-size:13px;color:#97d9b6;min-height:0}
.tg-bench__lower .trace-share-fallback{font-size:13px;color:#e6f0ea}
.tg-bench__lower .trace-share-fallback input{background:#ffffff12;color:var(--gft-paper);border-color:#8fb0a0;font-size:13px}
.tg-bench__lower .trace-actions button{color:#e6f0ea;border-color:#8fb0a0;background:#072d2b80;font-size:13px;min-height:46px;padding:10px 14px}
.tg-bench__lower .trace-actions button:is(:hover,[aria-pressed=true]){background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night)}
.tg-bench__lower .trace-actions button:disabled{opacity:.5}
.tg-bench__lower .trace-actions--big button{min-height:46px;font-size:13px;position:relative;overflow:hidden;border-width:1.5px;padding:10px 16px}
.tg-bench__lower :is(button,input,a,summary):focus-visible{outline:3px solid #f6f4ef;outline-offset:3px}
.trace-tool button[data-done]::after{content:'Done ✓';position:absolute;inset:0;display:grid;place-items:center;background:var(--gft-forest);color:var(--gft-paper);animation:tg-done 1.7s both}
@keyframes tg-done{0%{clip-path:inset(0 100% 0 0)}18%,78%{clip-path:inset(0)}100%{clip-path:inset(0 0 0 100%)}}
@media(max-width:1000px){.tg-bench__head{grid-template-columns:1fr}.tg-bench__big{display:none}.tg-bench__dark .trace-diagram h3{font-size:clamp(2rem,8vw,3rem)}.tg-bench__lower .trace-readout{position:static}.tg-bench__lower .trace-workbench{grid-template-columns:1fr}}
@media(max-width:640px){.tg-bench__ask h2{font-size:2.3rem}.tg-bench__strap{font-size:1.15rem}.tg-bench__live{padding-inline:12px}.tg-bench__live .tg-mini__name{display:none}.tg-mini--bench .tg-mini__dot{width:14px;height:14px}.tg-mini--bench .tg-mini__link{margin-top:8px}}

/* ---------- method interlude: compact single-screen head + multi-state sticky stage ---------- */
.tg-chain{--tg-tape:56px;--tg-stage-h:calc(100svh - var(--tg-tape));position:relative;background:var(--gft-night);color:var(--gft-paper);padding-block:clamp(32px,4vw,56px) clamp(24px,3vw,44px);--rule:#bcdccd30}
.tg-chain::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 50% at 0 40%,#0e4d4a99,transparent 70%);pointer-events:none}
.tg-chain__seam{position:absolute;inset:0 auto auto calc(50% - min(720px,50% - 48px));height:clamp(32px,4vw,56px);width:14px;z-index:1;pointer-events:none}
.tg-chain__seam i{position:absolute;left:6px;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#6bb68f,#6bb68f)}
.tg-chain__seam b{position:absolute;left:0;bottom:-7px;width:14px;height:14px;border-radius:50%;background:#6bb68f;box-shadow:0 0 0 5px #6bb68f33}
.tg-chain .trace-kicker{color:#b8d8c7}
.tg-chain__head{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,5.8fr) minmax(0,6.2fr);gap:clamp(20px,4vw,56px);align-items:center;padding-block:12px 18px;border-bottom:1px solid #ffffff24}
.tg-chain__title{font-size:clamp(2.4rem,4.8vw,4.8rem);line-height:1.02;max-width:14ch;margin:10px 0 0}
.tg-chain__title .gft-serif{color:#6bb68f}
.tg-chain__lead{font-size:16px;line-height:1.65;color:#dcebe3;max-width:44ch;margin:14px 0 0}
.tg-chain__bridge{width:100%;height:auto;overflow:visible;max-height:260px;justify-self:end}
.tg-br__link{stroke-width:3.4}
.tg-br__link--ok{stroke:#97d9b6}.tg-br__link--broken{stroke:#e5b264;stroke-dasharray:7 6}.tg-br__link--beyond{stroke:#8fb0a0;stroke-dasharray:4 8}
.tg-br__disc{fill:#072d2b;stroke:#8fb0a0;stroke-width:2}
.tg-br__node--r .tg-br__disc{fill:#6bb68f;stroke:#d2f3e0}
.tg-br__ic{fill:none;stroke:#8fb0a0;stroke-width:1.8}.tg-br__node--r .tg-br__ic{stroke:#072d2b}
.tg-br__lab{fill:#f1f7f3;font:600 16px var(--gft-font-mono)}
.tg-br__ring{fill:none;stroke:#e5b264;stroke-width:2.4}
.tg-br__brk{transform-box:fill-box;transform-origin:center}
.tg-br__brk-t{fill:#ffe09e;font:600 15px var(--gft-font-mono);letter-spacing:.06em}
@media(max-width:1000px){.tg-chain__head{grid-template-columns:1fr;align-items:start}.tg-chain__bridge{max-width:540px;justify-self:start;max-height:none}}
@media(max-width:640px){.tg-br__lab,.tg-br__brk-t{display:none}.tg-chain__bridge{max-width:300px}.tg-chain__lead{font-size:15px}}

.tg-chain .tg-chain__grid{display:block;margin-top:clamp(16px,2.4vw,32px);position:relative}
.tg-chain .tg-chain__stage{position:relative;min-height:0;display:block;z-index:2}
.tg-chain__film{display:grid;grid-template-columns:minmax(0,6.2fr) minmax(0,5.8fr);gap:clamp(24px,4vw,64px);align-items:center}
.tg-chain__read{position:relative;display:grid;align-content:center;min-width:0;isolation:isolate}
.tg-step{position:relative;padding:0 0 28px}
.tg-step__num{position:absolute;right:0;top:-.46em;z-index:-1;font-size:clamp(7.5rem,14vw,13.5rem);font-weight:850;letter-spacing:-.06em;line-height:1;color:transparent;-webkit-text-stroke:1.8px #6bb68f66;pointer-events:none;user-select:none;transition:transform .48s var(--gft-ease-out),opacity .18s var(--gft-ease-out)}
.tg-step__rule{display:block;height:2px;width:72px;background:linear-gradient(90deg,#6bb68f,#e5b264);margin:10px 0 12px;transform-origin:0 50%;transition:transform .48s var(--gft-ease-out) .02s}
.tg-step h3{font-size:clamp(1.85rem,3vw,3.1rem);line-height:1.06;margin:0 0 14px;letter-spacing:-.04em;transition:transform .46s var(--gft-ease-out) .02s,opacity .16s var(--gft-ease-out) .02s,clip-path .46s var(--gft-ease-out) .02s}
.tg-step p:not(.trace-kicker){font-size:16px;line-height:1.7;color:#e6f0ea;max-width:48ch;margin:0;transition:transform .46s var(--gft-ease-out) .04s,opacity .18s var(--gft-ease-out) .03s}
.tg-chain__count{margin:14px 0 0;font:14px/1 var(--gft-font-mono);color:#b8d8c7;letter-spacing:.08em}
.tg-chain__count b{color:var(--gft-paper);font-weight:600}

/* pinned only once the widget is ready; fast 60ms exit + immediate per-step arrival so 250ms mid frames are vivid */
.tg-chain .mw-steps[data-mw-ready] .tg-chain__stage{position:sticky;top:var(--tg-tape);height:var(--tg-stage-h);display:grid;align-items:center}
.tg-chain .mw-steps[data-mw-ready] .tg-step{grid-area:1/1;padding:0;translate:0 0;scale:1}
.tg-chain .mw-steps[data-mw-ready] .tg-chain__count{grid-area:2/1}
.tg-chain .tg-chain__track{display:none}
.tg-chain .mw-steps[data-mw-ready] .tg-chain__track{display:block;position:relative;margin-top:calc(-1 * var(--tg-stage-h));pointer-events:none}
.tg-chain .mw-steps[data-mw-ready] .tg-chain__track>*{min-height:78svh;padding:0}
.tg-chain .mw-steps[data-mw-ready] .tg-chain__track>:last-child{min-height:112svh}
.tg-chain .tg-chain__track>*::before,.tg-chain .tg-chain__track>*::after{display:none}

.tg-chain .mw-steps[data-mw-ready] .tg-step:not([data-shown]),:root[data-m-go] .tg-chain .mw-steps[data-mw-ready] .tg-chain__stage .tg-step:not([data-shown]){opacity:0;translate:0 0;scale:1;visibility:hidden;transition:opacity .06s linear,visibility 0s linear .06s;pointer-events:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-shown],:root[data-m-go] .tg-chain .mw-steps[data-mw-ready] .tg-chain__stage .tg-step[data-shown]{opacity:1;translate:0 0;scale:1;visibility:visible;transition:opacity .16s var(--gft-ease-out) .01s,visibility 0s}

/* Distinct authored entrance per method step (0..7) so neighbours differ and 250ms mid frames show clear action */
.tg-chain .mw-steps[data-mw-ready] .tg-step:not([data-shown]) .tg-step__rule{transform:scaleX(0);transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="0"]:not([data-shown]) h3{transform:translateX(28px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="1"]:not([data-shown]) h3{transform:translateY(24px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="1"]:not([data-shown]) .tg-step__num{transform:scale(1.18);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="2"]:not([data-shown]) h3{clip-path:inset(-20px 65% -20px -20px);transform:translateX(-14px);transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="2"][data-shown] h3{clip-path:inset(-20px -20px -20px -20px)}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="3"]:not([data-shown]) h3{transform:translateY(-20px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="4"]:not([data-shown]) h3{transform:translateX(-28px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="5"]:not([data-shown]) h3{transform:scale(.92) translateY(16px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="6"]:not([data-shown]) h3{transform:translate(22px,-14px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="7"]:not([data-shown]) h3{transform:translateY(26px);opacity:0;transition:none}
.tg-chain .mw-steps[data-mw-ready] .tg-step[data-step-i="7"]:not([data-shown]) .tg-step__num{transform:translateX(30px);opacity:0;transition:none}

.tg-chain .mw-steps[data-mw-ready] .tg-ch__cl:not([data-shown]),:root[data-m-go] .tg-chain .mw-steps[data-mw-ready] .tg-chain__stage .tg-ch__cl:not([data-shown]){opacity:0;translate:0 0;visibility:hidden;transition:opacity .08s linear,visibility 0s linear .08s}
.tg-chain .mw-steps[data-mw-ready] .tg-ch__cl[data-shown],:root[data-m-go] .tg-chain .mw-steps[data-mw-ready] .tg-chain__stage .tg-ch__cl[data-shown]{opacity:1;translate:0 0;visibility:visible;transition:opacity .28s linear .06s,visibility 0s}
.tg-chain .mw-steps:not([data-mw-ready]) .tg-ch__cl{opacity:1}

.tg-ch{background:#0a3d3a;border:1px solid #ffffff2a;padding:clamp(18px,2.2vw,30px);position:relative}
.tg-ch::before{content:'';position:absolute;inset:0;background-image:linear-gradient(#b4d4c50d 1px,transparent 1px),linear-gradient(90deg,#b4d4c50d 1px,transparent 1px);background-size:24px 24px;pointer-events:none}
.tg-ch__rows{list-style:none;margin:0;padding:0;position:relative}
.tg-ch__row{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;min-height:clamp(44px,6.5svh,60px);isolation:isolate}
.tg-ch__row::before{content:'';position:absolute;inset:0 -10px;z-index:-1;background:linear-gradient(90deg,#6bb68f40,transparent 80%);opacity:0;transition:opacity .4s}
.tg-ch__row[data-hot]::before{opacity:1}
.tg-ch__node{grid-row:1/3;justify-self:center;width:22px;height:22px;border-radius:50%;border:2px solid #8fb0a0;background:#072d2b;transition:background-color .4s,border-color .4s,opacity .4s}
.tg-ch__node[data-lit].tg-ch__node--r{background:#6bb68f;border-color:#d2f3e0}
.tg-ch__node[data-lit].tg-ch__node--b{opacity:.65;border-style:dashed}
.tg-ch__row[data-hot] .tg-ch__node{outline:2px solid #e5b264;outline-offset:4px}
.tg-ch__name{font-weight:700;font-size:clamp(16px,1.3vw,19px);letter-spacing:-.015em;grid-column:2;color:#f3f8f5}
.tg-ch__id{grid-column:2;font:12px/1.4 var(--gft-font-mono);color:#c2dbd0;overflow-wrap:anywhere}
.tg-ch__time,.tg-ch__pips,.tg-ch__tag{grid-area:1/3/3/4;align-self:center;justify-self:end;opacity:0;transform:translateX(10px);transition:opacity .35s,transform .45s var(--gft-ease-out);pointer-events:none}
.tg-ch__time[data-lit],.tg-ch__pips[data-lit],.tg-ch__tag[data-lit]{opacity:1;transform:none}
.tg-ch__time{font:14px var(--gft-font-mono);color:#f1d9a7}
.tg-ch__pips{display:flex;gap:5px}
.tg-ch__pips b{font:600 12px/1 var(--gft-font-mono);letter-spacing:.02em;color:#072d2b;background:#97d9b6;padding:6px 8px}
.tg-ch__pips--review b{background:#f1d9a7}
.tg-ch__tag{font:600 12px/1.3 var(--gft-font-mono);letter-spacing:.04em;text-transform:uppercase;color:#f1d9a7;border:1px solid #e5b264;padding:7px 10px;text-align:center}
.tg-ch__tag--warn{background:#e5b264;color:#2a1b04}
.tg-ch__link{position:relative;height:clamp(12px,2.4svh,24px);list-style:none}
.tg-ch__link i{position:absolute;left:22px;top:0;bottom:0;width:2px;translate:-1px 0;background:#ffffff30}
.tg-ch__link i::before{content:'';position:absolute;inset:0;transform:scaleY(0);transform-origin:50% 0;transition:transform .6s var(--gft-ease-out)}
.tg-ch__link[data-lit] i::before{transform:scaleY(1)}
.tg-ch__link--ok i::before{background:#97d9b6}
.tg-ch__link--broken i::before{background:repeating-linear-gradient(180deg,#e5b264 0 6px,transparent 6px 10px);width:4px;left:-1px}
.tg-ch__link--beyond i::before{background:repeating-linear-gradient(180deg,#8fb0a0 0 3px,transparent 3px 8px)}
.tg-ch__link i::after{content:'';position:absolute;inset:0 -7px;background:#e5b2644d;opacity:0;transition:opacity .4s}
.tg-ch__link[data-hot] i::after{opacity:1}
.tg-ch__console{position:relative;display:grid;margin-top:16px;padding-top:12px;border-top:1px solid #ffffff2e}
.tg-ch__console-k{grid-area:1/1;font:600 12px/1 var(--gft-font-mono);letter-spacing:.14em;text-transform:uppercase;color:#6bb68f;margin-bottom:8px}
.tg-ch__cl{grid-area:2/1;display:grid;gap:3px;align-content:start;min-height:4.8em}
.tg-ch__cl code{font:13px/1.6 var(--gft-font-mono);color:#e6f2ec;overflow-wrap:anywhere}

/* ---------- steps 6-13: tall operable instrument card on the right of every method step ---------- */
.tg-viz{margin-top:18px;width:100%;transition:transform .46s var(--gft-ease-out) .04s,opacity .18s var(--gft-ease-out) .03s}
.tg-chain .mw-steps[data-mw-ready] .tg-step:not([data-shown]) .tg-viz{transform:translateY(16px) scale(.97);opacity:0;transition:none}
.tg-viz__box{background:#0a3d3a;border:1px solid #ffffff2e;border-left:3px solid #6bb68f;padding:18px 20px;display:grid;gap:14px}
.tg-viz__head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid #ffffff22}
.tg-viz__head>span{font:600 12px/1.3 var(--gft-font-mono);letter-spacing:.08em;color:#b8d8c7;text-transform:uppercase}
.tg-viz__head>b{font:600 13px/1.3 var(--gft-font-mono);color:#f1d9a7;background:#072d2b;padding:4px 10px;border:1px solid #e5b26466}
.tg-viz__head>b[data-warn]{background:#e5b264;color:#1c1303}
.tg-viz__readout{font:13px/1.55 var(--gft-font-mono)!important;color:#eaf3ee!important;background:#072d2b99;padding:10px 12px;border-left:2px solid #e5b264;margin:0!important;max-width:none!important}
.tg-viz__strand{display:flex;align-items:center;min-width:0;gap:2px}
.tg-viz__stn-btn{background:transparent;border:1px solid transparent;padding:6px 4px;min-height:44px;cursor:pointer;display:grid;justify-items:center;gap:6px;color:#dcebe3;border-radius:4px}
.tg-viz__stn-btn:is(:hover,[data-active]){background:#ffffff14;border-color:#97d9b6}
.tg-viz__stn-lbl{font:600 12px/1 var(--gft-font-mono);color:#dcebe3}
.tg-viz__dot{flex:none;width:16px;height:16px;border-radius:50%;background:#6bb68f;border:2px solid #d2f3e0;display:block}
.tg-viz__dot--edge{background:#072d2b;border-color:#e5b264;box-shadow:0 0 0 4px #e5b26440}
.tg-viz__join{flex:1;height:2px;background:#97d9b6;transform-origin:0 50%;min-width:6px}
.tg-viz__bgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tg-viz__bopt{min-height:44px;padding:8px 12px;background:#072d2b;border:1px solid #7a9d8b;color:#dcebe3;font:600 13px/1.3 var(--gft-font-mono);cursor:pointer;text-align:left}
.tg-viz__bopt[data-active]{background:#6bb68f;border-color:#d2f3e0;color:#072d2b}
.tg-viz__wall{flex:none;width:3px;height:30px;background:#e5b264;margin-left:10px;transform-origin:50% 100%}
.tg-viz__beyond{flex:none;margin-left:10px;font:600 13px/1.2 var(--gft-font-mono);color:#f1d9a7;border-bottom:2px dashed #e5b264;padding-bottom:4px;white-space:nowrap}
.tg-viz__fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.tg-viz__field{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;font:600 13px/1 var(--gft-font-mono);color:#f1f7f3;background:#072d2b;border:1px solid #97d9b6;padding:8px 10px;cursor:pointer}
.tg-viz__field[aria-pressed=false]{opacity:.55;border-style:dashed;border-color:#e5b264}
.tg-viz__field i{width:14px;height:14px;border-radius:50%;background:#6bb68f;position:relative;flex:none}
.tg-viz__field[aria-pressed=false] i{background:transparent;border:2px solid #e5b264}
.tg-viz__field[aria-pressed=true] i::after{content:'';position:absolute;left:3px;top:3px;width:7px;height:4px;border-left:2px solid #072d2b;border-bottom:2px solid #072d2b;rotate:-45deg}
.tg-viz__ubar{height:6px;background:#ffffff1a;overflow:hidden}
.tg-viz__ubar span{display:block;height:100%;background:#6bb68f;transform-origin:0 50%;transition:transform .35s var(--gft-ease-out)}
.tg-viz__mini-tabs{display:flex;gap:6px}
.tg-viz__mini-tabs button{min-height:44px;padding:6px 12px;font:600 12px/1 var(--gft-font-mono);background:#072d2b;color:#dcebe3;border:1px solid #7a9d8b;cursor:pointer}
.tg-viz__mini-tabs button[data-active]{background:#6bb68f;color:#072d2b;border-color:#d2f3e0}
.tg-viz__pointer{display:grid;grid-template-columns:minmax(0,1fr) minmax(40px,.45fr) minmax(0,1fr);align-items:center;gap:8px}
.tg-viz__card{display:grid;gap:4px;background:#072d2b;border:1px solid #ffffff30;padding:10px 12px;min-width:0}
.tg-viz__card small{font:600 12px/1.2 var(--gft-font-mono);color:#b8d8c7;text-transform:uppercase;letter-spacing:.06em}
.tg-viz__card code{font:600 13px/1.3 var(--gft-font-mono);color:#97d9b6}
.tg-viz__card em{font:600 13px/1.3 var(--gft-font-mono);font-style:normal;color:#f1d9a7;overflow-wrap:anywhere}
.tg-viz__arrow{position:relative;height:14px;display:block}
.tg-viz__arrow i{position:absolute;left:0;right:0;top:6px;height:3px;background:#6bb68f;transform-origin:0 50%}
.tg-viz__arrow i[data-broken]{background:repeating-linear-gradient(90deg,#e5b264 0 6px,transparent 6px 10px)}
.tg-viz__arrow::after{content:'';position:absolute;right:0;top:1px;width:10px;height:10px;border-top:2px solid #e5b264;border-right:2px solid #e5b264;rotate:45deg}
.tg-viz__time{position:relative;height:82px;margin-top:4px}
.tg-viz__axis{position:absolute;left:0;right:0;top:32px;height:2px;background:#ffffff40}
.tg-viz__mark{position:absolute;left:var(--x);top:0;translate:-50% 0;display:flex;flex-direction:column;align-items:center;gap:6px;transition:left .25s var(--gft-ease-out)}
.tg-viz__mark::before{content:'';order:2;width:14px;height:14px;border-radius:50%;background:#6bb68f;border:2px solid #d2f3e0}
.tg-viz__mark--child::before{background:#e5b264;border-color:#fff3d6}
.tg-viz__mark b{order:1;font:600 13px/1 var(--gft-font-mono);color:#f1d9a7;white-space:nowrap}
.tg-viz__mark small{order:3;font:12px/1 var(--gft-font-mono);color:#cbe0d3;white-space:nowrap}
.tg-viz__span{position:absolute;left:28%;width:44%;top:32px;height:3px;background:#6bb68f;transform-origin:0 50%}
.tg-viz__span[data-warn]{background:#e5b264}
.tg-viz__scrub{display:grid;gap:6px;font:13px/1.4 var(--gft-font-mono);color:#dcebe3}
.tg-viz__scrub b{color:#f1d9a7}
.tg-viz__scrub input[type=range]{width:100%;min-height:44px;accent-color:#6bb68f;cursor:pointer;margin:0}
.tg-viz__pips{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.tg-viz__pip{min-height:48px;padding:6px 4px;border:1px solid #ffffff30;cursor:pointer;display:grid;justify-items:center;align-content:center;gap:3px;font:600 12px/1.1 var(--gft-font-mono);color:#072d2b}
.tg-viz__pip--ok{background:#97d9b6;color:#072d2b}
.tg-viz__pip--bad{background:#e5b264;color:#1c1303;border-color:#fff3d6}
.tg-viz__pip--off{background:#072d2b;color:#c2dbd0;border-style:dashed}
.tg-viz__pip[data-active]{outline:2px solid #f6f4ef;outline-offset:2px}
.tg-viz__review{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tg-viz__gap{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;font:600 13px/1 var(--gft-font-mono);color:#1c1303;background:#f1d9a7;border:1px solid #e5b264;padding:10px 12px;cursor:pointer}
.tg-viz__gap[aria-pressed=true]{background:#97d9b6;border-color:#d2f3e0;color:#072d2b}
.tg-viz__gap i{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;flex:none}
.tg-viz__keep-row{display:grid;gap:6px;font:13px/1.3 var(--gft-font-mono);color:#dcebe3}
.tg-viz__keep-row b{color:#97d9b6}
.tg-viz__keep{display:block;height:4px;background:#97d9b6;transform-origin:0 50%}
.tg-viz__bal{display:grid;gap:12px}
.tg-viz__bal-row{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;font:13px/1.3 var(--gft-font-mono);color:#cbe0d3}
.tg-viz__bal-row b{font-size:13px;color:#f6f4ef;white-space:nowrap}
.tg-viz__bar{display:flex;gap:3px;height:18px;background:#072d2b;padding:2px;border:1px solid #ffffff26}
.tg-viz__seg{display:block;min-width:6px;transform-origin:0 50%;transition:flex .25s var(--gft-ease-out)}
.tg-viz__seg--ok{background:#6bb68f}.tg-viz__seg--gap{background:#e5b264}

.tg-chain__handover{margin-top:clamp(18px,2.5vw,32px)}
.tg-handover-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;background:#0a3d3a;border:1px solid #ffffff26;border-left:4px solid #6bb68f}
.tg-handover-bar__tag{font:600 12px/1.4 var(--gft-font-mono);letter-spacing:.08em;color:#d6e8dd}
.tg-handover-bar__svg{width:min(420px,100%);height:34px;flex-shrink:0}

@media(max-width:1000px){
 .tg-chain__film{grid-template-columns:1fr;gap:14px;align-items:start}
 .tg-chain .mw-steps[data-mw-ready] .tg-chain__stage{align-items:start;padding-top:8px}
 .tg-ch{padding:12px 16px}
 .tg-ch__row{min-height:34px;grid-template-columns:30px minmax(0,1fr) auto}
 .tg-ch__node{grid-row:1;width:16px;height:16px}
 .tg-ch__name{font-size:14px;grid-row:1}.tg-ch__id{display:none}
 .tg-ch__time,.tg-ch__pips,.tg-ch__tag{grid-row:1}
 .tg-ch__pips{gap:3px}.tg-ch__pips b{padding:4px 5px}.tg-ch__tag{padding:4px 6px}
 .tg-ch__link{height:9px}.tg-ch__link i{left:15px}
 .tg-ch__console{margin-top:8px;padding-top:8px}.tg-ch__console-k{margin-bottom:6px}.tg-ch__cl{min-height:4.2em}.tg-ch__cl code{font-size:12px;line-height:1.5}
 .tg-step h3{font-size:clamp(1.45rem,5vw,2.1rem);margin:4px 0 8px}
 .tg-step p:not(.trace-kicker){font-size:14px;line-height:1.55;max-width:60ch}
 .tg-step__num{font-size:7rem;top:-.25em}
 .tg-viz{margin-top:10px}.tg-viz__box{padding:12px 14px;gap:10px}
 .tg-chain .mw-steps[data-mw-ready] .tg-chain__track>*{min-height:68svh}
 .tg-chain .mw-steps[data-mw-ready] .tg-chain__track>:last-child{min-height:126svh}
 .tg-chain__handover{margin-top:96px}
 .tg-handover-bar{flex-direction:column;align-items:flex-start}
}
@media(max-width:1000px) and (max-height:800px){.tg-ch__console{display:none}}
@media(max-width:640px){.tg-chain{--tg-tape:52px}.tg-chain__seam{inset-inline-start:20px}.tg-ch__tag{display:none}.tg-ch__time{font-size:12px}.tg-ch__pips b{font-size:12px;padding:3px 4px}.tg-viz__beyond{display:none}.tg-viz__fields{grid-template-columns:1fr 1fr}.tg-viz__bgrid,.tg-viz__review{grid-template-columns:1fr}}

/* ---------- ledger: collapsible groups, per-row thread tie glyph, status bar glyph ---------- */
.tg-led{background:var(--gft-paper);padding-block:clamp(44px,5.5vw,84px);position:relative}
.tg-led__bridge-in,.tg-led__bridge-out{display:flex;align-items:center;gap:16px;padding:10px 18px;background:#e6ebe4;border:1px solid #b8c9be;border-left:4px solid var(--gft-forest);margin-bottom:28px}
.tg-led__bridge-out{margin-top:32px;margin-bottom:0;border-left-color:var(--gft-ochre)}
.tg-led__bridge-line{width:36px;height:3px;background:var(--gft-forest);flex:none}
.tg-led__bridge-tag{font:600 12px/1.4 var(--gft-font-mono);letter-spacing:.08em;color:#1d3d38}
.tg-led__grid{display:grid;grid-template-columns:minmax(320px,3.8fr) minmax(0,8.2fr);gap:clamp(28px,4.2vw,64px);align-items:start}
.tg-led__monitor{position:sticky;top:74px}
.tg-led__card{background:var(--gft-night);color:var(--gft-paper);padding:clamp(20px,2.4vw,30px);position:relative}
.tg-led__card::after{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gft-sage)}
.tg-led__card .trace-kicker{color:#b8d8c7}
.tg-led__state{display:flex;flex-wrap:wrap;gap:6px 22px;font:13px/1.5 var(--gft-font-mono);color:#b8d8c7;margin:6px 0 0;padding-bottom:6px}
.tg-led__state b{color:var(--gft-paper);font-weight:600}
.tg-led__card h3{font-size:clamp(1.45rem,2.1vw,2rem);margin:0 0 12px}
.tg-led__count{display:flex;align-items:center;gap:16px;max-width:none}
.tg-led__count b{font-size:5rem;font-weight:850;letter-spacing:-.07em;line-height:1}
.tg-led__count span{font:13px/1.75 var(--gft-font-mono);color:#d3e5da}
.tg-led__reading{margin-top:18px;padding-top:14px;border-top:1px solid #ffffff2e}
.tg-led__rulename{font-size:clamp(1.3rem,1.8vw,1.8rem);font-weight:850;letter-spacing:-.04em;line-height:1.1;color:#f1d9a7;margin:8px 0 6px}
.tg-led__reading p:last-child{font-size:15px;line-height:1.65;color:#f1f6f3;margin-top:6px;min-height:6.2em}
.tg-led__note{font:13px/1.7 var(--gft-font-mono);color:#c3d9cb;margin-top:12px}

.tg-led__main h2{font-size:clamp(2.2rem,4.4vw,4.4rem);margin:10px 0 22px}
.tg-led__main h2 .gft-serif{color:#2c6f53}
.tg-led__main>.trace-kicker{color:#354c44;font-size:12px}
.tg-led__toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.tg-led__chips{display:flex;gap:8px;flex-wrap:wrap}
.tg-led__chips button,.tg-led__expandall{min-height:46px;padding:8px 16px;border:1px solid #7d9588;background:transparent;font:600 13px var(--gft-font-mono);color:var(--gft-night);cursor:pointer;transition:background-color .3s,color .3s}
.tg-led__chips button span{display:inline-block;min-width:1.8em;margin-left:8px;padding:2px 6px;background:#0e4d4a1a;border-radius:99px}
.tg-led__chips button[aria-pressed=true]{background:var(--gft-forest);color:var(--gft-paper);border-color:var(--gft-forest);box-shadow:0 4px 0 var(--gft-ochre)}
.tg-led__chips button[aria-pressed=true] span{background:#f6f4ef33}
.tg-led__expandall{background:#e6ebe4;border-color:var(--gft-forest);color:var(--gft-forest)}
.tg-led__expandall:hover,.tg-led__expandall[aria-pressed=true]{background:var(--gft-forest);color:var(--gft-paper)}

.tg-led__wrap{position:relative}
.tg-led__flow{position:absolute;left:-22px;top:0;bottom:0;width:8px;pointer-events:none}
.tg-led__flow svg{display:block;width:100%;height:100%;overflow:visible}
.tg-led__wrap table{width:100%;border-collapse:collapse;text-align:left;font-size:15px;line-height:1.6}
.tg-led__wrap caption{text-align:left;font:13px/1.7 var(--gft-font-mono);margin-bottom:12px;color:#354c44}
.tg-led__wrap thead{background:#dfe7e1}
.tg-led__wrap thead th{font:600 12px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;padding:12px 16px;color:#102a27}

/* Group drawer rows */
.tg-led__grow td{padding:0!important;border-top:2px solid #8fa89a!important}
.tg-led__gtoggle{width:100%;min-height:54px;padding:12px 16px;background:#e8efe9;border:0;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:14px;text-align:left;cursor:pointer;color:var(--gft-night);transition:background-color .3s}
.tg-led__gtoggle:hover{background:#dce7df}
.tg-led__gnum{font:700 14px/1 var(--gft-font-mono);color:var(--gft-forest);background:#fff;border:1px solid #8fa89a;padding:7px 8px;text-align:center}
.tg-led__gtitle{display:grid;gap:2px}
.tg-led__gtitle strong{font-size:15px;font-weight:750;color:#0b2523}
.tg-led__gtitle small{font:12px/1.4 var(--gft-font-mono);color:#354c44}
.tg-led__gpill{font:600 12px/1 var(--gft-font-mono);padding:8px 12px;border:1px solid var(--gft-forest);background:#fff;color:var(--gft-forest);white-space:nowrap}
.tg-led__tbody[data-open=true] .tg-led__gpill{background:var(--gft-forest);color:var(--gft-paper)}
.tg-led__tbody[data-open=false] tr.tg-led__item{display:none}

.tg-led__item{cursor:pointer;transition:background-color .3s}
.tg-led__item :is(td,th){padding:16px 16px;border-top:1px solid #bacbc0;vertical-align:top}
.tg-led__item th{width:23%;font-weight:700}
.tg-led__rname{display:block;font-size:15px;color:#0b2523;margin-bottom:8px}
.tg-led__tie{display:flex;align-items:center;gap:8px;font:600 12px/1.2 var(--gft-font-mono);color:#2e4a43}
.tg-led__tieline{width:14px;height:2px;background:var(--gft-forest);flex:none}
.tg-led__tiedots{display:inline-flex;gap:3px;align-items:center}
.tg-led__tiedots b{width:7px;height:7px;border-radius:50%;background:#bacbc0;display:inline-block}
.tg-led__tiedots b.is-hot{background:var(--gft-ochre);transform:scale(1.3);box-shadow:0 0 0 2px #c98a2b44}
.tg-led__item td:nth-child(2){width:41%}
.tg-led__basis{display:block;color:#142e2b}
.tg-led__fail{display:block;margin-top:6px;padding:6px 10px;background:#e6ebe4;border-left:3px solid var(--gft-forest);font-size:13.5px;font-style:normal;color:#1d3d38}
.tg-led__item:is([data-reading],[data-pinned],:hover,:focus-within) .tg-led__fail{background:#d4e3da;border-left-color:var(--gft-ochre)}
.tg-led__item[data-reading]{background:#dce8e0}
.tg-led__item[data-pinned]{background:#d2e2d8;box-shadow:inset 0 0 0 2px var(--gft-forest)}
.tg-led__item[data-pinned] th{box-shadow:inset 8px 0 0 var(--gft-forest);padding-left:22px}
.tg-led__item[data-perturbed]{background:#f5ead6}
.tg-led__item[data-perturbed] th{box-shadow:inset 5px 0 0 var(--gft-ochre)}
.tg-st{display:inline-block;font:600 12px/1.4 var(--gft-font-mono);padding:4px 10px;border:1px solid currentColor}
.tg-st--illustrative{color:#6d470a}.tg-st--rule{color:var(--gft-indigo)}.tg-st--sourced{color:var(--gft-forest)}.tg-st--open{color:#354c44;border-style:dashed}
.tg-st a{text-decoration:none;color:inherit}
.tg-led__bars{display:flex;gap:4px;margin-top:8px}
.tg-led__bars i{width:16px;height:5px;background:#c8d6cd;display:block}
.tg-led__bars i.is-on{background:var(--gft-forest)}
.tg-perturb{min-height:44px;padding:8px 14px;border:1px solid #7d9588;background:#fff;font:600 12px/1.35 var(--gft-font-mono);color:var(--gft-night);text-align:left;cursor:pointer;transition:background-color .3s}
.tg-perturb:hover{background:#e6ebe4}
.tg-perturb[aria-pressed=true]{background:var(--gft-ochre);border-color:var(--gft-ochre);color:#1c1303}
.tg-perturb[aria-pressed=true]::before{content:'● '}
.tg-perturb:focus-visible,.tg-led__chips button:focus-visible,.tg-led__expandall:focus-visible,.tg-led__gtoggle:focus-visible,.tg-led__item:focus-visible{outline:3px solid var(--gft-indigo);outline-offset:2px}
.tg-led__na{font:13px var(--gft-font-mono);color:#3e544c}
.tg-mini--ledger .tg-mini__dot[data-fail]{background:#e5b264;border-color:#f1d9a7;box-shadow:0 0 0 5px #e5b26455;transform:scale(1.35)}
.tg-mini--ledger .tg-mini__name{font-size:12px}
.tg-mini--ledger .tg-mini__link{margin-inline:3px;min-width:6px}
@media(max-width:1000px){.tg-led__grid{grid-template-columns:1fr}.tg-led__monitor{position:sticky;top:50px;z-index:5;order:-1}.tg-led__card{padding:14px 18px}.tg-led__card .tg-mini,.tg-led__note,.tg-led__reading,.tg-led__flow{display:none}.tg-led__count b{font-size:2.6rem}.tg-led__card h3{font-size:1.1rem;margin-bottom:6px}.tg-led__card .trace-kicker{display:none}}
@media(max-width:760px){
 .tg-led__wrap thead{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}
 .tg-led__wrap :is(table,tbody,tr,th,td){display:block;width:auto!important}
 .tg-led__item{border:1px solid #bacbc0;margin-bottom:12px;padding:6px 0}
 .tg-led__item :is(td,th){border:0;padding:8px 16px}
 .tg-led__item td::before{content:attr(data-label);display:block;font:600 12px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#354c44;margin-bottom:4px}
 .tg-led__gtoggle{grid-template-columns:34px minmax(0,1fr)}
 .tg-led__gpill{grid-column:2;justify-self:start}
}

/* ---------- readers: dark full-bleed interlude; the reader re-skins the chain ---------- */
.tg-roles{--tg-rc:#e5b264;background:var(--gft-night);color:var(--gft-paper);padding-block:clamp(64px,7vw,112px) clamp(36px,4vw,56px);position:relative;isolation:isolate;overflow-x:clip}
.tg-roles::before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 55% 60% at 12% 30%,#0e4d4acc,transparent 72%),linear-gradient(#b4d4c508 1px,transparent 1px) 0 0/100% 44px;pointer-events:none}
.tg-roles:has(#tg-role-investor:checked){--tg-rc:#97d9b6}
.tg-roles:has(#tg-role-engineer:checked){--tg-rc:#c9d6ff}
.tg-roles__grid{display:grid;grid-template-columns:minmax(0,4.8fr) minmax(0,7.2fr);gap:clamp(28px,5vw,80px);padding-left:max(48px,calc((100% - 1440px)/2));align-items:center}
.tg-roles__left .trace-kicker{color:#b8d8c7}
.tg-roles__left h2{font-size:clamp(2.2rem,4.4vw,4.6rem);margin:12px 0 32px}
.tg-roles__left h2 .gft-serif{color:#6bb68f}
.tg-roles__pick{border:0;margin:0;padding:0;min-width:0}
.tg-roles__pick legend{font:13px/1.6 var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#cbe0d3;margin-bottom:12px;padding:0}
.tg-role{position:relative;display:grid;grid-template-columns:56px minmax(0,1fr);grid-template-areas:"n name" "n t";column-gap:10px;padding:24px 0;border-top:1px solid #ffffff30;cursor:pointer;min-height:64px;transition:padding-left .5s var(--gft-ease-out)}
.tg-role:last-child{border-bottom:1px solid #ffffff30}
.tg-role input{position:absolute;opacity:0;width:1px;height:1px}
.tg-role__n{grid-area:n;font:14px var(--gft-font-mono);color:#b8d8c7;align-self:center}
.tg-role__name{grid-area:name;font-size:clamp(1.8rem,3.2vw,3.2rem);font-weight:850;letter-spacing:-.045em;line-height:1.05;color:#adc6b9;transition:color .4s}
.tg-role__t{grid-area:t;font-size:15px;color:#cbe0d3;margin-top:6px}
.tg-role__bar{position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--tg-rc);transform:scaleX(0);transform-origin:0 50%;transition:transform .7s var(--gft-ease-out)}
.tg-role:has(:checked){padding-left:14px}
.tg-role:has(:checked) .tg-role__bar{transform:scaleX(1)}
.tg-role:has(:checked) .tg-role__name{color:var(--gft-paper)}
.tg-role:has(:checked) .tg-role__n{color:var(--tg-rc)}
.tg-role:has(:focus-visible){outline:3px solid #f6f4ef;outline-offset:4px}
.tg-roles__stage{background:#0a3d3a;color:var(--gft-paper);padding:clamp(24px,3.4vw,52px) 0 clamp(24px,3.4vw,52px) clamp(24px,3.4vw,52px);display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:clamp(20px,3vw,48px);align-items:center;position:relative;isolation:isolate;overflow:clip;border:1px solid #ffffff2a;border-right:0}
.tg-roles__stage::before{content:'';position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#b4d4c50d 1px,transparent 1px),linear-gradient(90deg,#b4d4c50d 1px,transparent 1px);background-size:28px 28px}
.tg-roles__svg{width:100%;height:auto;overflow:visible}
.tg-rl__link{stroke-width:2.8;stroke-linecap:round}
.tg-rl__link--ok{stroke:#97d9b6}.tg-rl__link--broken{stroke:#e5b264;stroke-dasharray:6 6}.tg-rl__link--beyond{stroke:#8fb0a0;stroke-dasharray:3 8}
.tg-rl__disc{fill:#072d2b;stroke:#8fb0a0;stroke-width:1.8}
.tg-rl__node--r .tg-rl__disc{fill:#6bb68f;stroke:#d2f3e0}
.tg-rl__ic{fill:none;stroke:#8fb0a0;stroke-width:1.6}.tg-rl__node--r .tg-rl__ic{stroke:#072d2b}
.tg-rl__lab{fill:#f3f8f5;font:600 15px var(--gft-font-mono)}
.tg-rl__sub{fill:#c2dbd0;font:14px var(--gft-font-mono)}
.tg-rl{opacity:0;transform:translateY(10px);transition:opacity .25s,transform .25s}
.tg-rl__ring{fill:none;stroke:#e5b264;stroke-width:2.6}.tg-rl__brace{stroke:#e5b264;stroke-width:3;fill:none}
.tg-rl__tag{fill:#e5b264;font:600 14px var(--gft-font-mono);letter-spacing:.08em}.tg-rl__tag2{fill:#f1d9a7;font:14px var(--gft-font-mono)}
.tg-rl__chip{fill:#072d2b99;stroke:#97d9b6;stroke-width:1.3}.tg-rl__lead{stroke:#97d9b6;stroke-width:1.3;stroke-dasharray:2 3}.tg-rl__chip-t{fill:#d2f3e0;font:600 14px var(--gft-font-mono);letter-spacing:.02em}
.tg-rl[data-for=engineer] .tg-rl__tag{fill:#c9d6ff}
.tg-rl__fan{fill:none;stroke:#c9d6ff;stroke-width:1.7;stroke-dasharray:5 5}.tg-rl__fan circle{fill:#0e4d4a;stroke-dasharray:none}
.tg-roles:has(#tg-role-manager:checked) .tg-rl[data-for=manager],.tg-roles:has(#tg-role-investor:checked) .tg-rl[data-for=investor],.tg-roles:has(#tg-role-engineer:checked) .tg-rl[data-for=engineer]{opacity:1;transform:none;transition:opacity .5s .28s,transform .7s var(--gft-ease-out) .28s}
.tg-roles__cards{position:relative;display:grid;isolation:isolate;padding:0 clamp(28px,4vw,56px) 30px 0;align-self:center}
.tg-roles__cards::before,.tg-roles__cards::after{content:'';position:absolute;z-index:-1;left:0;right:clamp(28px,4vw,56px);top:0;bottom:30px;border:1px solid #ffffff30;background:#0e4d4a}
.tg-roles__cards::before{translate:16px 14px}.tg-roles__cards::after{translate:32px 28px;background:#072d2b}
.tg-rc{grid-area:1/1;background:var(--gft-paper);color:var(--gft-night);padding:clamp(22px,2.6vw,38px);visibility:hidden;opacity:0;translate:26px 16px;transition:opacity .3s,translate .3s,visibility 0s linear .3s;border-top:4px solid var(--tg-rc)}
.tg-rc .trace-kicker{color:#354c44;font-size:12px}
.tg-rc h3{font-size:clamp(1.5rem,2.3vw,2.2rem);margin:8px 0 14px}
.tg-rc p{font-size:14.5px;line-height:1.75}
.tg-rc .tg-rc__recover{font:600 13px/1.6 var(--gft-font-mono);color:#6d470a;border-left:3px solid var(--gft-ochre);padding-left:12px;margin:0 0 14px}
.tg-roles:has(#tg-role-manager:checked) .tg-rc[data-role=manager],.tg-roles:has(#tg-role-investor:checked) .tg-rc[data-role=investor],.tg-roles:has(#tg-role-engineer:checked) .tg-rc[data-role=engineer]{visibility:visible;opacity:1;translate:0 0;transition:opacity .5s .3s,translate .8s var(--gft-ease-out) .3s,visibility 0s}

/* High-contrast limitations box (contrast > 13:1, padded away from seams) */
.tg-roles__limit-wrap{margin-top:clamp(36px,4.5vw,56px);padding-top:24px}
.tg-roles__limit{background:#0b3d3a;border:1px solid #6bb68f66;border-left:4px solid var(--gft-ochre);padding:24px 28px;display:grid;gap:8px}
.tg-roles__limit-k{font:600 12px/1.4 var(--gft-font-mono);letter-spacing:.08em;color:#f1d9a7;text-transform:uppercase}
.tg-roles__limit p{font-size:15px;line-height:1.75;color:#f6f4ef;margin:0;max-width:none}
@media(max-width:1000px){.tg-roles__grid{grid-template-columns:1fr;padding-left:0;width:calc(100% - 56px);margin-inline:auto}.tg-roles__stage{margin-right:-28px}}
@media(max-width:700px){.tg-roles__grid{width:calc(100% - 40px)}.tg-roles__stage{grid-template-columns:1fr;margin-right:-20px;padding-right:0}.tg-roles__svg{max-width:340px}.tg-roles__cards{padding-right:34px}}

/* ---------- sources: continuous dark film with #roles above and #tie-off below ---------- */
.tg-src{background:var(--gft-night);color:var(--gft-paper);padding-block:clamp(48px,6vw,88px);position:relative;isolation:isolate;border-top:1px solid #ffffff22;--tg-src-c:#6bb68f}
.tg-src::before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 65% 55% at 88% 20%,rgba(14,77,74,.32),transparent 70%);pointer-events:none}
.tg-src[data-active=ec]{--tg-src-c:#f1d9a7}
.tg-src[data-active=gft]{--tg-src-c:#c9d6ff}
.tg-src__head .trace-kicker{color:#b8d8c7}
.tg-src__head h2{font-size:clamp(2.2rem,4.5vw,4.6rem);margin:12px 0 clamp(28px,3.5vw,48px);color:var(--gft-paper)}
.tg-src__head h2 .gft-serif{color:#6bb68f}
.tg-src__split{display:grid;grid-template-columns:minmax(0,4.8fr) minmax(0,7.2fr);gap:clamp(24px,4.5vw,68px);align-items:start}
.tg-src__cards{border:0;margin:0;padding:0;min-width:0;display:grid;gap:14px}
.tg-src__cards legend{font:600 13px/1.6 var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#cbe0d3;margin-bottom:12px;padding:0}
.tg-so{position:relative;border:1px solid #ffffff2e;padding:22px 24px 20px;background:#0c403d;color:var(--gft-paper);transition:translate .5s var(--gft-ease-out),background-color .4s,border-color .4s}
.tg-so label{display:grid;gap:6px;cursor:pointer;min-height:44px}
.tg-so input{position:absolute;opacity:0;width:1px;height:1px}
.tg-so__k{font:600 12px/1.5 var(--gft-font-mono);letter-spacing:.05em;text-transform:uppercase;color:#b8d8c7}
.tg-so__n{font-size:1.3rem;font-weight:800;letter-spacing:-.03em;line-height:1.2;color:#f6f4ef}
.tg-so p{font-size:14.5px;line-height:1.7;margin-top:8px;color:#e2eee7}
.tg-so a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:650;color:#97d9b6}
.tg-so:has(:focus-visible){outline:3px solid #f6f4ef;outline-offset:4px}
.tg-src[data-active=gs1] .tg-so[data-tg-opt=gs1],.tg-src[data-active=ec] .tg-so[data-tg-opt=ec],.tg-src[data-active=gft] .tg-so[data-tg-opt=gft]{background:#11524e;border-color:#97d9b6;translate:12px 0;box-shadow:inset 5px 0 0 var(--tg-src-c)}

.tg-src__right{display:grid;gap:24px;min-width:0}
.tg-fm{margin:0;background:#052422;color:var(--gft-paper);padding:clamp(18px,2.2vw,28px);border:1px solid #ffffff29;position:relative;isolation:isolate}
.tg-fm::before{content:'';position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#b4d4c50d 1px,transparent 1px),linear-gradient(90deg,#b4d4c50d 1px,transparent 1px);background-size:24px 24px}
.tg-fm figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.tg-fm .trace-kicker{color:#b8d8c7;font-size:12px}
.tg-fm__n{font:13px var(--gft-font-mono);color:#d3e5da}
.tg-fm__n b{display:none;color:var(--gft-paper);font-size:18px;font-weight:600}
.tg-src[data-active=gs1] .tg-fm__n b[data-for=gs1],.tg-src[data-active=ec] .tg-fm__n b[data-for=ec],.tg-src[data-active=gft] .tg-fm__n b[data-for=gft]{display:inline}
.tg-fm__grid{display:grid;gap:0}
.tg-fm__row{display:grid;grid-template-columns:minmax(92px,1.5fr) repeat(7,minmax(0,1fr));align-items:center;min-height:clamp(38px,5.2svh,46px);border-top:1px solid #ffffff1f}
.tg-fm__row--head{border-top:0;min-height:34px;font:600 12px/1 var(--gft-font-mono);letter-spacing:.02em;color:#d3e5da;text-align:center}
.tg-fm__row--head span:first-child{text-align:left}
.tg-fm__stn{display:flex;align-items:center;gap:10px;font:600 14px/1.2 var(--gft-font-mono);color:#f3f8f5;text-align:left}
.tg-fm__stn i{flex:none;width:10px;height:10px;border-radius:50%;background:#072d2b;border:2px solid #8fb0a0}
.tg-fm__c{display:grid;place-items:center;height:100%}
.tg-fm__c b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:0;background:#ffffff14;border:1px solid #ffffff30;transition:background-color .4s,border-color .4s,transform .5s var(--gft-ease-out),box-shadow .4s}
.tg-fm__c[data-na] b{background:none;border-style:dashed;opacity:.5}
.tg-src[data-active=gs1] .tg-fm__c[data-by~=gs1] b{background:#6bb68f;border-color:#d2f3e0;transform:scale(1.15);box-shadow:0 0 0 5px #6bb68f33}
.tg-src[data-active=ec] .tg-fm__c[data-by~=ec] b{background:#f1d9a7;border-color:#fff3d6;transform:scale(1.15);box-shadow:0 0 0 5px #f1d9a733}
.tg-src[data-active=gft] .tg-fm__c[data-by~=gft] b{background:#c9d6ff;border-color:#eef2ff;transform:scale(1.15);box-shadow:0 0 0 5px #c9d6ff33}
.tg-fm__c[data-na] b{transform:none!important;box-shadow:none!important}

.tg-src__rules{list-style:none;margin:0;padding:0;display:grid;border-top:1px solid #ffffff29}
.tg-rule{display:grid;grid-template-columns:96px minmax(0,1fr) auto;grid-template-areas:"by n target" "by t t";column-gap:14px;padding:14px 12px 14px 16px;border-bottom:1px solid #ffffff29;background:#0a3b38;position:relative;transition:background-color .35s,translate .45s var(--gft-ease-out)}
.tg-rule strong{grid-area:n;font-size:15.5px;letter-spacing:-.02em;color:#f6f4ef}
.tg-rule__target{grid-area:target;font:600 12px/1.2 var(--gft-font-mono);color:#f1d9a7;align-self:center}
.tg-rule>span:last-child{grid-area:t;font-size:14px;line-height:1.6;color:#dcebe3;margin-top:4px}
.tg-rule__by{grid-area:by;display:flex;gap:4px;align-items:flex-start;flex-wrap:wrap}
.tg-rule__by b{font:600 12px/1 var(--gft-font-mono);letter-spacing:.04em;padding:5px 7px;border:1px solid currentColor}
.tg-rule__by b[data-b=gs1]{color:#97d9b6}.tg-rule__by b[data-b=ec]{color:#f1d9a7}.tg-rule__by b[data-b=gft]{color:#c9d6ff}
.tg-rule::before{content:'';position:absolute;left:0;top:8px;bottom:8px;width:3px;background:var(--tg-src-c);transform:scaleY(0);transform-origin:50% 0;transition:transform .5s var(--gft-ease-out)}
.tg-src[data-active=gs1] .tg-rule[data-by~=gs1]::before,.tg-src[data-active=ec] .tg-rule[data-by~=ec]::before,.tg-src[data-active=gft] .tg-rule[data-by~=gft]::before{transform:scaleY(1)}
.tg-src[data-active=gs1] .tg-rule:not([data-by~=gs1]),.tg-src[data-active=ec] .tg-rule:not([data-by~=ec]),.tg-src[data-active=gft] .tg-rule:not([data-by~=gft]){background:#072d2b;opacity:.72}
.tg-src[data-active=gs1] .tg-rule[data-by~=gs1],.tg-src[data-active=ec] .tg-rule[data-by~=ec],.tg-src[data-active=gft] .tg-rule[data-by~=gft]{translate:6px 0;background:#104a46}

/* ---------- step 21: Dark full-bleed band with operable 4-rule model inspector ---------- */
.tg-src__band{margin-block:clamp(44px,5.5vw,80px);padding-block:clamp(44px,5.5vw,76px);background:#041e1c;border-block:1px solid #6bb68f40;position:relative}
.tg-src__band::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 65% 70% at 80% 50%,#0e4d4a66,transparent 70%);pointer-events:none}
.tg-src__model{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:clamp(28px,4.5vw,64px);align-items:start}
.tg-src__lead .trace-kicker{color:#b8d8c7;margin-bottom:8px}
.tg-src__lead h3{font-size:clamp(2.1rem,3.8vw,3.6rem);line-height:1.04;letter-spacing:-.045em;margin:0 0 12px;color:#f6f4ef}
.tg-src__short{font-size:16px;line-height:1.65;color:#dcebe3;max-width:48ch;margin:0 0 20px}
.tg-src__mtests{display:grid;gap:10px}
.tg-mtest{width:100%;min-height:56px;padding:12px 16px;background:#0a3835;border:1px solid #ffffff2e;color:#eaf3ee;display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:14px;text-align:left;cursor:pointer;transition:background-color .3s,border-color .3s,translate .35s var(--gft-ease-out)}
.tg-mtest:hover{background:#104a46;border-color:#97d9b6}
.tg-mtest[aria-pressed=true]{background:#13544f;border-color:#e5b264;box-shadow:inset 4px 0 0 #e5b264;translate:8px 0}
.tg-mtest__num{font:700 13px/1 var(--gft-font-mono);color:#f1d9a7;background:#072d2b;border:1px solid #e5b26466;padding:7px 6px;text-align:center}
.tg-mtest__body{display:grid;gap:3px}
.tg-mtest__body strong{font-size:15px;font-weight:750;color:#f6f4ef}
.tg-mtest__body code{font:13px/1.35 var(--gft-font-mono);color:#97d9b6}

.tg-src__stage-card{display:grid;gap:20px}
.tg-src__livebox{background:#093532;border:1px solid #ffffff30;border-left:4px solid #e5b264;padding:22px 24px}
.tg-src__livebox .trace-kicker{color:#f1d9a7}
.tg-src__formula{display:block;font:600 14px/1.5 var(--gft-font-mono);color:#97d9b6;background:#052220;padding:10px 14px;border:1px solid #ffffff24;margin-bottom:12px}
.tg-src__mverdict{font-size:15px;line-height:1.65;color:#f6f4ef;margin:0;min-height:3.3em}
.tg-src__srcnote{background:#072d2b;border:1px solid #ffffff24;padding:20px 24px}
.tg-src__srcnote .trace-kicker{color:#b8d8c7;margin:14px 0 8px}
.tg-src__srcnote a{color:#97d9b6;font-weight:650}
.tg-src__more summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;font:600 14px var(--gft-font-mono);color:#97d9b6;text-decoration:underline;text-underline-offset:4px}
.tg-src__more p{font-size:14px;line-height:1.7;color:#dcebe3;margin-top:8px}
.tg-src__note{font:13px/1.7 var(--gft-font-mono);color:#cbe0d3;margin-top:10px}

/* ---------- step 22: Related-work hover/focus fan with scroll-drawn thread spine ---------- */
.tg-src__fan-wrap{position:relative}
.tg-src__fan-head{display:grid;grid-template-columns:minmax(0,5.5fr) minmax(0,6.5fr);gap:clamp(24px,4vw,56px);align-items:end;margin-bottom:28px}
.tg-src__fan-head .trace-kicker{color:#b8d8c7}
.tg-src__fan-head h3{font-size:clamp(1.9rem,3.4vw,3.1rem);line-height:1.06;margin:8px 0 0;color:#f6f4ef}
.tg-src__fan-readout{background:#052422;border:1px solid #ffffff29;border-left:4px solid #6bb68f;padding:16px 20px}
.tg-src__fan-readout .trace-kicker b{color:#f1d9a7}
.tg-src__fan-readout p{font-size:14.5px;line-height:1.65;color:#eaf3ee;margin:6px 0 0;min-height:3.2em}
.tg-src__fan-stage{display:grid;grid-template-columns:160px minmax(0,1fr);gap:16px;align-items: stretch}
.tg-fan__svg{width:100%;height:100%;max-height:420px;overflow:visible;align-self:center}
.tg-fan__spine{stroke:#6bb68f;stroke-width:2.5;stroke-dasharray:5 5;fill:none}
.tg-fan__branch{stroke:#7a9d8b;stroke-width:2;fill:none;transition:stroke .35s,stroke-width .35s}
.tg-fan__dot{fill:#072d2b;stroke:#97d9b6;stroke-width:2.2;transition:fill .35s,r .35s}
.tg-fan__tip{fill:#6bb68f}
.tg-fan__hub{fill:#0e4d4a;stroke:#e5b264;stroke-width:3}
.tg-src[data-fan="0"] .tg-fan__branch[data-fan-b="0"],.tg-src[data-fan="1"] .tg-fan__branch[data-fan-b="1"],.tg-src[data-fan="2"] .tg-fan__branch[data-fan-b="2"],.tg-src[data-fan="3"] .tg-fan__branch[data-fan-b="3"]{stroke:#e5b264;stroke-width:3.4}
.tg-src[data-fan="0"] .tg-fan__dot[data-fan-d="0"],.tg-src[data-fan="1"] .tg-fan__dot[data-fan-d="1"],.tg-src[data-fan="2"] .tg-fan__dot[data-fan-d="2"],.tg-src[data-fan="3"] .tg-fan__dot[data-fan-d="3"]{fill:#e5b264}

.tg-src__tiles{--off:clamp(0px,3vw,42px);list-style:none;margin:0;padding:0;display:grid;gap:14px;position:relative}
.tg-tile{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:clamp(16px,2.5vw,32px);align-items:center;margin-left:calc(var(--k) * var(--off));padding:18px 24px;background:#0b3d3a;border:1px solid #ffffff2e;box-shadow:8px 8px 0 #041e1c;cursor:pointer;transform-origin:0 50%;transition:transform .45s var(--gft-ease-out),background-color .35s,border-color .35s,box-shadow .45s var(--gft-ease-out)}
.tg-tile:is(:hover,:focus-within,[data-active]){transform:translateX(14px) rotate(-.35deg);background:#12504c;border-color:#e5b264;box-shadow:14px 12px 0 #041e1c}
.tg-tile__no{font:800 clamp(2rem,3.6vw,3.2rem)/1 var(--gft-font-sans,inherit);letter-spacing:-.06em;color:#6bb68f}
.tg-tile:is(:hover,:focus-within,[data-active]) .tg-tile__no{color:#f1d9a7}
.tg-tile__body{display:grid;gap:4px;min-width:0}
.tg-tile__badge{font:600 12px/1.2 var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase;color:#f1d9a7}
.tg-tile a,.tg-tile strong{display:inline-flex;align-items:center;min-height:44px;font-size:clamp(1.15rem,1.7vw,1.5rem);font-weight:800;letter-spacing:-.03em;line-height:1.2;color:#f6f4ef;text-decoration:none}
.tg-tile a:hover{text-decoration:underline}
.tg-tile a:focus-visible,.tg-tile:focus-visible,.tg-mtest:focus-visible{outline:3px solid #f6f4ef;outline-offset:3px}
.tg-tile strong>span{font:400 13px var(--gft-font-mono);letter-spacing:0;margin-left:8px;color:#b8d8c7}
.tg-tile p{font-size:14.5px;line-height:1.55;color:#dcebe3;margin:0}
.tg-tile__dots{display:flex;gap:5px;align-items:center}
.tg-tile__dots i{width:9px;height:9px;border-radius:50%;background:#072d2b;border:1.5px solid #7a9d8b;display:block}
.tg-tile__dots i.is-on{background:#e5b264;border-color:#fff3d6;transform:scale(1.25)}

@media(max-width:1000px){.tg-src__split,.tg-src__model,.tg-src__fan-head{grid-template-columns:1fr}.tg-src__fan-stage{grid-template-columns:1fr}.tg-fan__svg{display:none}}
@media(max-width:640px){.tg-rule{grid-template-columns:76px minmax(0,1fr);grid-template-areas:"by n" "by target" "t t"}.tg-fm__row{grid-template-columns:minmax(84px,1.5fr) repeat(7,minmax(0,1fr))}.tg-fm__row--head{font-size:12px;min-height:68px}.tg-fm__row--head span:not(:first-child){writing-mode:vertical-rl;rotate:180deg;justify-self:center;padding-block:2px}.tg-fm__stn{font-size:12px;gap:4px}.tg-fm__stn i{display:none}.tg-fm__c b{width:20px;height:20px}.tg-src__tiles{--off:0px}.tg-tile{grid-template-columns:1fr}.tg-tile__dots{display:none}}

/* ---------- closing: tie off the thread, then the thread runs on into the footer ---------- */
.tg-tie{position:relative;z-index:2;isolation:isolate;background:var(--gft-night);color:var(--gft-paper);padding-block:clamp(56px,7vw,104px) clamp(110px,11vw,164px);border-top:1px solid #ffffff24}
.tg-tie::before{content:'';position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 60% 70% at 85% 30%,rgba(14,77,74,.34),transparent 66%),linear-gradient(#b4d4c50a 1px,transparent 1px) 0 0/44px 44px,linear-gradient(90deg,#b4d4c50a 1px,transparent 1px) 0 0/44px 44px;pointer-events:none}
.tg-tie .trace-kicker{color:#b8d8c7}
.tg-tie__grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(28px,5vw,80px);align-items:center}
.tg-tie h2{font-size:clamp(2.3rem,4.6vw,4.8rem);margin:12px 0 22px}
.tg-tie__lede{font-size:16px;line-height:1.75;color:#e0ece5}
.tg-tie__copy .gft-button{margin-top:6px}
.tg-tie__stage{position:relative;min-width:0}
.tg-tie__ghost{width:100%;height:auto;overflow:visible;display:block}
.tg-tg__link{stroke:#97d9b6;stroke-width:3.2}
.tg-tg__tail{stroke:#e5b264;stroke-width:3.2;stroke-dasharray:7 8}
.tg-tg__disc{fill:#072d2b;stroke:#8fb0a0;stroke-width:2}
.tg-tg__node:not(.tg-tg__node--gin) .tg-tg__disc{fill:#6bb68f;stroke:#d2f3e0}
.tg-tg__node--gin .tg-tg__disc{stroke:#e5b264;stroke-width:3}
.tg-tg__pulse{fill:#e5b264;fill-opacity:.2;transform-box:fill-box;transform-origin:center}
.tg-tg__lab{fill:#e8f1ec;font:600 15px var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase}
.tg-tg__unv{fill:#f1c77a;font:600 15px var(--gft-font-mono);letter-spacing:.06em}
.tg-tie__note{position:relative;z-index:1;margin:16px 0 0 min(34%,200px);padding:20px 24px;background:#0b3a37;box-shadow:12px 12px 0 #ffffff10;border-left:4px solid var(--gft-ochre);align-self:end}
.tg-tie__note h3{font-size:1.3rem;margin-bottom:8px}.tg-tie__note p{font-size:15px;line-height:1.7;color:#e0ece5}
.tg-tie__tool{grid-column:1/-1;margin-top:clamp(20px,3vw,40px);padding-top:clamp(24px,3vw,40px);border-top:1px solid #ffffff2e;display:grid;gap:0;min-width:0}
.tg-tie__pick{border:0;margin:0;padding:0;min-width:0}
.tg-tie__pick legend{font:14px/1.6 var(--gft-font-mono);letter-spacing:.02em;color:#e6f0ea;margin-bottom:14px;padding:0}
.tg-tie__pick>div{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.tg-tie__pick label{position:relative;cursor:pointer}
.tg-tie__pick input{position:absolute;opacity:0;width:1px;height:1px}
.tg-tie__pick label span{display:flex;align-items:center;justify-content:center;min-height:54px;border:1px solid #8fb0a0;font:14px var(--gft-font-mono);transition:background-color .35s,color .35s}
.tg-tie__pick label:has(:checked) span{background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night);font-weight:700}
.tg-tie__pick label:has(:focus-visible) span{outline:3px solid #f6f4ef;outline-offset:3px}
.tg-tie__svg{width:100%;height:auto;min-height:min(36svh,320px);margin-top:18px;overflow:visible}
.tg-tie__slack{stroke:#8fb0a0;stroke-width:2;stroke-dasharray:2 9;fill:none}
.tg-tie__taut{stroke:#97d9b6;stroke-width:4;fill:none;transform-origin:90px 120px;transition:transform .85s var(--gft-ease-out)}
.tg-tie__halo{fill:none;stroke:#a9ceba;stroke-opacity:.3}
.tg-tie__disc{fill:#072d2b;stroke:#8fb0a0;stroke-width:2;transition:fill .5s,stroke .5s}
.tg-tie__node.is-on .tg-tie__disc{fill:#6bb68f;stroke:#d2f3e0}
.tg-tie__node text{fill:#dcebe3;font:600 15px var(--gft-font-mono);letter-spacing:.06em;text-transform:uppercase}
.tg-tie__knot{transform:translateX(calc(var(--tg-i,0) * 164px));transition:transform .85s cubic-bezier(.34,1.56,.64,1);transform-box:fill-box;transform-origin:center}
.tg-tie__loop{fill:none;stroke:#e5b264;stroke-width:4}
.tg-tie__tail{stroke:#e5b264;stroke-width:3.4;stroke-linecap:round;fill:none}
.tg-tie__read{margin-top:14px;padding:clamp(22px,2.6vw,36px);background:#ffffff10;border:1px solid #ffffff2e;border-left:4px solid var(--gft-ochre);min-height:11.5em;display:grid;align-content:start;gap:0}
.tg-tie__read .trace-kicker b{color:#f1d9a7;font-weight:600}
.tg-tie__read h3{font-size:clamp(1.8rem,3.2vw,3.2rem);margin:10px 0 12px;line-height:1.08}
.tg-tie__read p:last-child{font-size:17px;line-height:1.7;color:#eaf2ed;max-width:68ch}
.tg-tie__drop{position:absolute;left:50%;bottom:-72px;width:12px;height:96px;translate:-6px 0;z-index:3;pointer-events:none}
@media(max-width:1000px){.tg-tie__grid{grid-template-columns:1fr}.tg-tie__ghost{max-width:520px}.tg-tie__note{align-self:start;margin-left:0}}
@media(max-width:640px){.tg-tie__pick>div{grid-template-columns:repeat(3,minmax(0,1fr))}.tg-tie__node text,.tg-tg__lab,.tg-tg__unv{display:none}.tg-tie__svg{min-height:0}.tg-tie__read h3{font-size:1.6rem}.tg-tie__ghost{max-width:300px}}

/* ---------- reduced motion and Calm: no transitions, no loops, no scroll timelines ---------- */
@media(prefers-reduced-motion:reduce){
 .tg-tape__fill{animation:none!important}
 :is(.tg-tape,.tg-bench,.tg-chain,.tg-led,.tg-roles,.tg-src,.tg-tie,.tg-sp) :is(*,*::before,*::after){transition:none!important;animation:none!important}
}
:root[data-motion=calm] .tg-tape__fill{animation:none!important}
:root[data-motion=calm] :is(.tg-tape,.tg-bench,.tg-chain,.tg-led,.tg-roles,.tg-src,.tg-tie,.tg-sp) :is(*,*::before,*::after){transition:none!important}

/* splash small print: never below 12px */
[data-splash=trace-a-garment] .gft-eyebrow{font-size:12px}
[data-splash=trace-a-garment] .gft-splash__caption{font-size:12px;line-height:1.5}
