[data-splash='caps-b-digital'] .gft-splash__structure{inset:-2% -4% -2% 24%}.caps-b-stack{position:relative;width:100%;height:100%;min-height:560px;overflow-anchor:none}.caps-b-stack>svg{display:block;width:100%;height:100%}.caps-b-stack__layer,.caps-b-stack__wave{transform-box:fill-box;transform-origin:center}.caps-b-stack__signal{transform-box:fill-box;transform-origin:center}:root[data-m-go] .caps-b-stack__layer{animation-name:caps-b-stack-collapse;animation-duration:1350ms;animation-timing-function:var(--gft-ease-in-out);animation-delay:var(--caps-b-delay);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}:root[data-m-go] .caps-b-stack[data-m-on] .caps-b-stack__wave{animation-name:caps-b-stack-wave;animation-duration:2.3s;animation-timing-function:var(--gft-ease-in-out);animation-delay:calc(var(--caps-b-i) * 140ms);animation-iteration-count:infinite;animation-direction:normal}:root[data-m-go] .caps-b-stack[data-m-on] .caps-b-stack__signal{animation-name:caps-b-stack-signal;animation-duration:2.3s;animation-timing-function:var(--gft-ease-in-out);animation-iteration-count:infinite;animation-direction:normal}@keyframes caps-b-stack-collapse{0%{opacity:.42;transform:translate(var(--caps-b-x),var(--caps-b-y)) rotate(var(--caps-b-r))}35%{opacity:.68;transform:translate(calc(var(--caps-b-x) * .55),calc(var(--caps-b-y) * .55)) rotate(calc(var(--caps-b-r) * .5))}100%{opacity:1;transform:translate(0,0) rotate(0)}}@keyframes caps-b-stack-wave{0%,100%{transform:translate(0,-12px) rotate(-1deg);opacity:.88}50%{transform:translate(10px,12px) rotate(1.2deg);opacity:1}}@keyframes caps-b-stack-signal{0%,8%{opacity:.25;transform:translateY(430px)}50%{opacity:1;transform:translateY(0)}92%,100%{opacity:.25;transform:translateY(430px)}}@media(max-width:1000px){[data-splash='caps-b-digital'] .gft-splash__structure{inset:8% -24% 0 2%}}@media(max-width:640px){[data-splash='caps-b-digital'] h1{font-size:clamp(2.8rem,11.4vw,4.5rem)}[data-splash='caps-b-digital'] .gft-splash__structure{inset:auto -32% 58px -42%;height:370px}.caps-b-stack{min-height:360px}.caps-b-stack__layer text:nth-of-type(1){font-size:25px}.caps-b-stack__layer text:nth-of-type(2){display:none}.caps-b-stack text{font-size:24px}}

[data-splash='caps-b-digital'] .gft-splash__data,[data-splash='caps-b-digital'] .gft-splash__data span,[data-splash='caps-b-digital'] .gft-splash__caption,[data-splash='caps-b-digital'] .gft-splash__position{font-size:12px;color:rgb(246 244 239/.82);opacity:1}
[data-splash='caps-b-digital'] .gft-splash__cue{font-size:13px;color:#f6f4ef;opacity:1}
.caps-b-read{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .9rem;flex:1 1 100%;max-width:34rem;margin:1.25rem 0 0;padding:.7rem .95rem;border:1px solid rgb(107 182 143/.6);background:rgb(7 45 43/.72);font:600 12px/1.4 var(--gft-font-mono);letter-spacing:.08em;text-transform:uppercase;color:#f6f4ef}
.caps-b-read__dot{flex:none;width:.6rem;height:.6rem;background:#6bb68f;transform:rotate(45deg)}
.caps-b-read__k{color:#9bd3b4}
.caps-b-read__at{display:inline-flex;gap:.5rem;align-items:baseline}
.caps-b-read__w{display:inline-grid}
.caps-b-read__w b{grid-area:1/1;font-weight:700;color:#f0c27a;opacity:0}
.caps-b-read__w b:first-child{opacity:1}
.caps-b-read__n{flex:1 1 100%;font-weight:500;letter-spacing:.06em;color:rgb(246 244 239/.78)}
:root[data-m-go] .caps-b-read[data-m-on] .caps-b-read__w b{animation-name:caps-b-read-at;animation-duration:6.5s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:normal;animation-fill-mode:backwards;animation-delay:calc(.7s + var(--i) * 1.27s)}
:root[data-m-go] .caps-b-read[data-m-on] .caps-b-read__dot{animation-name:caps-b-read-dot;animation-duration:2.4s;animation-timing-function:var(--gft-ease-in-out);animation-iteration-count:infinite;animation-direction:normal}
@keyframes caps-b-read-at{0%{opacity:0}3%,17%{opacity:1}20%,100%{opacity:0}}
@keyframes caps-b-read-dot{0%,100%{transform:rotate(45deg) scale(1)}50%{transform:rotate(45deg) scale(1.35)}}
@media(prefers-reduced-motion:reduce){.caps-b-read *,.caps-b-stack *{animation-name:none!important}}
:root[data-motion='calm'] .caps-b-read *,:root[data-motion='calm'] .caps-b-stack *{animation-name:none!important}
@media(max-width:640px){.caps-b-read{display:none}}

@media(min-width:1001px){
[data-splash='caps-b-digital'] .gft-splash__structure{inset:-2% -4% 9% 24%}
[data-splash='caps-b-digital'] .caps-b-stack>svg{height:calc(100% - 34px)}
[data-splash='caps-b-digital'] .caps-b-hero-key{right:auto;left:14%;bottom:0;max-width:none}
}
[data-splash='caps-b-digital'] .caps-b-hero-key{font-size:12px;color:#e2ebe6}
@media(max-width:640px){[data-splash='caps-b-digital'] .caps-b-stack__axis{display:none}}
/* /capabilities/digital-strategy-and-architecture/ : the five-plane stack carried from splash to closing.
   Scope: .dsa-* classes and dsa-* keyframes only. Motion is transform, opacity, clip-path and filter. Loops run only
   while on screen (:root[data-m-go] .x[data-m-on]) and stop under reduced motion and Calm. */

.dsa-sec {
  --dsa-edge: max(48px, calc((100vw - 1440px) / 2));
  --font-ui: var(--gft-font-display);
  --ink: #25302e; --ground: #f6f4ef; --rule: #b8c8bd; --muted: #4b5c53;
  --dsa-sage: #6bb68f; --dsa-ochre: #c98a2b; --dsa-night: #072d2b; --dsa-paper: #f6f4ef;
  --dsa-mist: #cfdcd5;
  position: relative;
  font-variant-numeric: tabular-nums lining-nums;
}
.dsa-sec .gft-eyebrow, .dsa-sec .gft-cite { font-size: 12px; }
@media (max-width: 1000px) { .dsa-sec { --dsa-edge: 28px; } }
@media (max-width: 640px) { .dsa-sec { --dsa-edge: 20px; } }
.dsa-sec :is(h2, h3, p, strong, span) { overflow-wrap: anywhere; }
.dsa-sec p { font-size: max(16px, 1rem); }
.dsa-sec .gft-cite { min-width: 44px; min-height: 44px; }
.dsa-sec .gft-section__head .gft-lede { max-width: 52ch; }
.dsa-kicker { margin: 0 0 .5rem; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--gft-forest); }
.dsa-note { max-width: 62ch; font-size: 14px !important; line-height: 1.65; color: var(--gft-ink-2); }
.dsa-cap { margin-top: .75rem; font: 500 12.5px/1.5 var(--gft-font-mono); letter-spacing: .04em; color: #c3d3ca; }
.dsa-chip { display: inline-flex; align-items: center; margin: 0; padding: .45rem .8rem; border: 1px solid currentColor; font: 600 12px/1.3 var(--gft-font-mono) !important; letter-spacing: .08em; text-transform: uppercase; }
.dsa-chip--ochre { color: #e0a44d; }
.dsa-sec--instrument { padding-bottom: 0; }

/* ---------- the plane, shared by every set-piece ---------- */
.dsa-pl__top { fill: #072d2b; fill-opacity: .92; stroke: var(--c); stroke-width: 2; transition: stroke .6s, stroke-width .6s; }
.dsa-pl__l { fill: var(--c); fill-opacity: .1; stroke: var(--c); stroke-opacity: .55; }
.dsa-pl__r { fill: var(--c); fill-opacity: .18; stroke: var(--c); stroke-opacity: .55; }
.dsa-pl__node { fill: #072d2b; stroke: var(--c); stroke-width: 2; }
.dsa-pl__lead { stroke: var(--c); stroke-opacity: .6; }
.dsa-pl__name { fill: var(--c); font: 600 20px var(--gft-font-mono); letter-spacing: 2px; }
.dsa-pl__note { fill: #e2ebe6; font: 500 16px var(--gft-font-display); }
.dsa-pl { transition: transform .9s var(--gft-ease-out), opacity .7s, filter .6s; }
.dsa-grid path { stroke: #b4c5c3; stroke-opacity: .09; }
.dsa-thread { fill: none; stroke: #6bb68f; stroke-opacity: .38; stroke-width: 3; stroke-dasharray: 4 12; }
.dsa-thread--lit, .dsa-thread--seq, .dsa-thread--lit-static, .dsa-thread--close { stroke-opacity: 1; stroke-dasharray: none; stroke-width: 3; }
.dsa-thread--dim { stroke-opacity: .25; }
.dsa-signal { fill: #f6f4ef; opacity: .9; }
.dsa-mini { display: block; width: 110px; height: auto; flex: none; }
.dsa-mini__p { fill: #072d2b; stroke: var(--c); stroke-opacity: .4; stroke-width: 1.5; }
.dsa-mini__p.is-lit { stroke-opacity: 1; fill: color-mix(in srgb, var(--c) 22%, #072d2b); }

/* ---------- 1 instrument ---------- */
.dsa-inst { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); align-items: stretch; --dsa-travel: calc(-416px * (var(--is-0) + var(--is-1) * .8 + var(--is-2) * .5 + var(--is-3) * .9)); }
.dsa-inst__stage { display: grid; align-content: center; position: relative; overflow: clip; padding: clamp(1.5rem, 3vw, 2.75rem) clamp(1rem, 2vw, 2rem) clamp(1.5rem, 3vw, 2.5rem) var(--dsa-edge); background: radial-gradient(120% 90% at 30% 20%, #0e4d4a 0%, #072d2b 62%); color: var(--dsa-paper); }
.dsa-inst__fig svg { display: block; width: 100%; height: auto; }
.dsa-inst__fig { position: relative; }
.dsa-inst__panel { display: grid; gap: 1.5rem; align-content: start; padding: clamp(2rem, 4vw, 3.5rem) var(--dsa-edge) clamp(2.5rem, 5vw, 4.5rem) clamp(1.5rem, 4vw, 4rem); background: var(--dsa-paper); }
.dsa-seg { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.dsa-seg legend { grid-column: 1 / -1; width: 100%; margin: 0 0 .6rem; padding: 0; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--gft-forest); }
.dsa-seg__opt { position: relative; display: block; cursor: pointer; }
.dsa-seg__opt input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.dsa-seg__opt span { display: flex; align-items: center; gap: .75rem; min-height: 58px; padding: .7rem 1rem; border: 1px solid #0e4d4a55; background: #fff; font: 700 1rem var(--gft-font-display); transition: background .4s, color .4s, box-shadow .4s; }
.dsa-seg__opt i { font: 600 12px var(--gft-font-mono); font-style: normal; color: var(--gft-leaf); }
.dsa-seg__opt input:checked + span { background: var(--dsa-night); border-color: var(--dsa-night); color: var(--dsa-paper); box-shadow: inset 4px 0 0 var(--dsa-ochre); }
.dsa-seg__opt input:checked + span i { color: var(--dsa-sage); }
.dsa-seg__opt input:focus-visible + span { outline: 3px solid var(--dsa-ochre); outline-offset: 3px; }
.dsa-inst__states, .dsa-rec__det, .dsa-int__cap, .dsa-op__det, .dsa-prog__det, .dsa-close__read, .dsa-seq__count, .dsa-seq__read, .dsa-ledger__count, .dsa-stat td { display: grid; }
.dsa-state, .dsa-rec__txt, .dsa-int__c, .dsa-op__txt, .dsa-pd, .dsa-cr, .dsa-seq__c, .dsa-seq__r, .dsa-ledger__c, .dsa-sv { grid-area: 1 / 1; visibility: hidden; opacity: 0; transition: opacity .45s var(--gft-ease-out), visibility 0s linear .45s; }
.dsa-state h3 { margin: 0 0 .8rem; font-size: clamp(1.7rem, 2.6vw, 2.6rem); line-height: 1.08; max-width: 18ch; }
.dsa-state p:not(.dsa-kicker):not(.dsa-readout) { max-width: 52ch; font-size: 17px; line-height: 1.7; }
.dsa-readout { margin: 1.1rem 0 0; padding-top: .9rem; border-top: 1px solid #0e4d4a45; font: 600 13px/1.6 var(--gft-font-mono) !important; color: var(--gft-forest); letter-spacing: .02em; }
.dsa-stat { width: 100%; border-collapse: collapse; }
.dsa-stat caption { padding-bottom: .5rem; text-align: left; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--gft-forest); }
.dsa-stat tr { border-top: 1px solid #0e4d4a30; }
.dsa-stat th { width: 9.5rem; padding: .6rem .5rem .6rem 0; text-align: left; font: 600 12px var(--gft-font-mono); letter-spacing: .1em; vertical-align: middle; }
.dsa-stat th i { display: inline-block; width: .7rem; height: .7rem; margin-right: .6rem; background: var(--c); border: 1px solid #072d2b66; transform: rotate(45deg); }
.dsa-stat td { padding: .6rem 0; font-size: 15px; font-weight: 600; }
.dsa-sv { font-size: 15px; }
/* the svg states */
.dsa-inst .dsa-pl--0 { opacity: calc(1 - var(--is-1) * .2 - var(--is-2) * .62 - var(--is-3) * .12); transform: translateY(calc(var(--is-1) * -10px + var(--is-2) * -40px + var(--is-3) * -6px)); }
.dsa-inst .dsa-pl--1 { transform: translateY(calc(var(--is-1) * -6px + var(--is-2) * -26px + var(--is-3) * -3px)); opacity: calc(1 - var(--is-1) * .15 - var(--is-2) * .5 - var(--is-3) * .08); }
.dsa-inst .dsa-pl--2 .dsa-pl__top { stroke: color-mix(in srgb, #6bb68f, #c98a2b calc(var(--is-1) * 100%)); stroke: color-mix(in srgb, color-mix(in srgb, #6bb68f, #c98a2b calc(var(--is-1) * 100%)), #ffffff calc(var(--is-3) * 80%)); stroke-width: calc(2px + var(--is-3) * 1.5px); }
.dsa-inst .dsa-pl--3 .dsa-pl__top { stroke: color-mix(in srgb, #3f8f6b, #c98a2b calc(var(--is-1) * 100%)); stroke-width: calc(2px + var(--is-2) * 2px); }
.dsa-inst .dsa-pl--3 { filter: drop-shadow(0 0 calc(var(--is-2) * 14px) rgba(107, 182, 143, .75)); }
.dsa-inst .dsa-thread--lit { transform-origin: 380px 528px; transform: scaleY(calc(var(--is-0) + var(--is-1) + var(--is-2) * .5 + var(--is-3) * .8)); stroke: color-mix(in srgb, #6bb68f, #c98a2b calc(var(--is-1) * 100%)); transition: transform .9s var(--gft-ease-out), stroke .6s; }
.dsa-net text, .dsa-q text, .dsa-manual text { fill: #c3d3ca; font: 600 16px var(--gft-font-mono); letter-spacing: 1.5px; }
.dsa-net path { fill: none; stroke-width: 3; transition: opacity .5s; }
.dsa-net__solid { stroke: #6bb68f; opacity: var(--is-0); }
.dsa-net__dash { stroke: color-mix(in srgb, #c98a2b, #6bb68f calc(var(--is-3) * 100%)); stroke-dasharray: 7 7; opacity: calc(var(--is-1) + var(--is-3)); }
.dsa-net__gap { stroke: #c98a2b; opacity: var(--is-2); }
.dsa-net__x { stroke: #e0a44d; opacity: var(--is-2); }
.dsa-q rect { fill: #6bb68f; opacity: .16; transition: opacity .5s, fill .5s; }
.dsa-inst:has(input[value=intermittent]:checked) .dsa-q rect:nth-of-type(-n+4) { fill: #c98a2b; opacity: 1; }
.dsa-inst:has(input[value=offline]:checked) .dsa-q rect:nth-of-type(-n+8) { fill: #c98a2b; opacity: 1; }
.dsa-inst:has(input[value=recovery]:checked) .dsa-q rect:nth-of-type(-n+3) { fill: #6bb68f; opacity: 1; }
.dsa-manual { opacity: var(--is-2); transition: opacity .6s; }
.dsa-manual path { fill: none; stroke: #c98a2b; stroke-width: 3; stroke-dasharray: 6 6; }
.dsa-manual rect { fill: #072d2b; stroke: #c98a2b; stroke-width: 2; }
.dsa-manual text { fill: #e0a44d; }
.dsa-mode { opacity: 0; transition: opacity .6s; }
.dsa-mode__tag { fill: #e0a44d; font: 600 17px var(--gft-font-mono); letter-spacing: 2px; }
.dsa-mode__name { fill: var(--dsa-paper); font: 850 30px var(--gft-font-display); letter-spacing: -.5px; }
.dsa-mode--connected { opacity: var(--is-0); } .dsa-mode--intermittent { opacity: var(--is-1); } .dsa-mode--offline { opacity: var(--is-2); } .dsa-mode--recovery { opacity: var(--is-3); }
:root[data-m-go] .dsa-inst__fig[data-m-on] .dsa-signal { animation-name: dsa-signal; animation-duration: 2.3s; animation-timing-function: var(--gft-ease-in-out); animation-iteration-count: infinite; animation-direction: normal; }
@keyframes dsa-signal { 0%, 8% { opacity: .25; transform: translateY(0); } 50% { opacity: 1; transform: translateY(var(--dsa-travel)); } 92%, 100% { opacity: .25; transform: translateY(0); } }
:root[data-m-go] .dsa-inst__fig[data-m-on] .dsa-net__dash { animation-name: dsa-flicker; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: steps(1, end); }
@keyframes dsa-flicker { 0%, 100% { opacity: calc(var(--is-1) + var(--is-3)); } 45%, 65% { opacity: calc((var(--is-1) + var(--is-3)) * .3); } }
.dsa-inst__pl-build, .dsa-inst__pl-wave { transform-box: fill-box; transform-origin: center; }
:root[data-m-go] .dsa-inst__fig[data-m-in] .dsa-inst__pl-build { animation-name: dsa-inst-build; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc((4 - var(--k, 0)) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-inst-build { 0% { opacity: .28; transform: translateY(calc((4 - var(--k, 0)) * 46px + 32px)) scale(.82); } 45% { opacity: .62; transform: translateY(calc((4 - var(--k, 0)) * 22px + 14px)) scale(.92); } 100% { opacity: 1; transform: translateY(0) scale(1); } }
:root[data-m-go] .dsa-inst__fig[data-m-on] .dsa-inst__pl-wave { animation-name: dsa-inst-wave; animation-duration: 2.3s; animation-timing-function: var(--gft-ease-in-out); animation-delay: calc(var(--k, 0) * 110ms); animation-iteration-count: infinite; animation-direction: normal; }
@keyframes dsa-inst-wave { 0%, 100% { transform: translate(0, -10px); } 50% { transform: translate(8px, 10px); } }
:root[data-m-go] .dsa-stat[data-m-in] tr { animation-name: dsa-stat-row; animation-duration: 920ms; animation-timing-function: cubic-bezier(.5, 0, .2, 1); animation-delay: calc(var(--ri, 0) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-stat-row { 0% { opacity: .28; transform: translateX(44px); } 45% { opacity: .6; transform: translateX(20px); } 100% { opacity: 1; transform: translateX(0); } }

/* ---------- 2 record: the dark ledger column runs the full height of the section ---------- */
.dsa-sec--record { background: #e2ebe6; padding-block: 0; }
.dsa-rec { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 4vw, 4.5rem); align-items: stretch; }
.dsa-rec__ctl { display: grid; gap: 1.5rem; align-content: start; padding-block: clamp(64px, 9vw, 128px) clamp(56px, 7vw, 104px); }
.dsa-rec__head h2 { font-size: clamp(2.4rem, 4.2vw, 4.4rem); }
.dsa-rec__head .gft-eyebrow { margin-bottom: 24px; }
.dsa-rec__head .gft-lede { max-width: 44ch; margin-top: 1.25rem; }
.dsa-rows, .dsa-oprows { display: grid; min-width: 0; margin: 0; padding: 0; border: 0; border-top: 1px solid #0e4d4a45; }
.dsa-rows legend, .dsa-oprows legend { width: 100%; padding: 0 0 .7rem; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--gft-forest); }
.dsa-row, .dsa-oprow { position: relative; display: block; border-bottom: 1px solid #0e4d4a45; cursor: pointer; }
.dsa-row input, .dsa-oprow input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.dsa-row__in, .dsa-oprow__in { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); grid-template-areas: 'n l' 'n s'; column-gap: .75rem; align-items: center; min-height: 76px; padding: .8rem 1rem; transition: background .4s, color .4s, box-shadow .4s; }
.dsa-row__n, .dsa-oprow__n { grid-area: n; font: 600 13px var(--gft-font-mono); font-style: normal; letter-spacing: .08em; color: var(--gft-forest); }
.dsa-row__l, .dsa-oprow__l { grid-area: l; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--gft-forest); }
.dsa-row__in strong, .dsa-oprow__in strong { grid-area: s; font-size: 1.15rem; line-height: 1.3; letter-spacing: -.01em; }
.dsa-row input:checked + .dsa-row__in, .dsa-oprow input:checked + .dsa-oprow__in { background: var(--dsa-night); color: var(--dsa-paper); box-shadow: inset 5px 0 0 var(--dsa-ochre); }
.dsa-row input:checked + .dsa-row__in :is(.dsa-row__l, .dsa-row__n), .dsa-oprow input:checked + .dsa-oprow__in :is(.dsa-oprow__l, .dsa-oprow__n) { color: var(--dsa-sage); }
.dsa-row input:focus-visible + .dsa-row__in, .dsa-oprow input:focus-visible + .dsa-oprow__in { outline: 3px solid var(--dsa-ochre); outline-offset: -3px; }
.dsa-rec__det { min-height: 7.5rem; }
.dsa-rec__txt, .dsa-op__txt { max-width: 56ch; font-size: 17px !important; line-height: 1.7; }
.dsa-ledger { position: relative; margin-right: calc(-1 * var(--dsa-edge)); padding: clamp(56px, 7vw, 104px) var(--dsa-edge) clamp(2rem, 4vw, 3.5rem) clamp(1.75rem, 3vw, 3rem); background: radial-gradient(110% 70% at 70% 0%, #0e4d4a 0%, #072d2b 62%); color: var(--dsa-paper); overflow: clip; }
.dsa-ledger .dsa-kicker { color: var(--dsa-sage); }
.dsa-ledger__thread { position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: linear-gradient(var(--dsa-sage), #877fe6, var(--dsa-ochre)); }
.dsa-ledger__h { padding-bottom: 1rem; border-bottom: 1px solid #6bb68f40; }
.dsa-ledger__c { font: 600 clamp(1rem, 1.5vw, 1.35rem)/1.4 var(--gft-font-mono); letter-spacing: .04em; color: #f0c27a; }
.dsa-rb { display: block; width: 100%; height: auto; margin: .75rem 0 .5rem; overflow: visible; }
.dsa-rb__plane .dsa-pl { transform: none; opacity: 1; }
.dsa-rb__plane .dsa-pl__top { stroke-width: 3; }
.dsa-rb__lead { fill: none; stroke-width: 2.5; stroke-dasharray: 6 6; transition: opacity .5s, stroke .5s; }
.dsa-rb__lead--0 { opacity: calc(.3 + var(--at-0) * .7); stroke: color-mix(in srgb, #6bb68f, #e0a44d calc(var(--on-0) * 100%)); }
.dsa-rb__lead--1 { opacity: calc(.3 + var(--at-1) * .7); stroke: color-mix(in srgb, #6bb68f, #e0a44d calc(var(--on-1) * 100%)); }
.dsa-rb__lead--2 { opacity: calc(.3 + var(--at-2) * .7); stroke: color-mix(in srgb, #6bb68f, #e0a44d calc(var(--on-2) * 100%)); }
.dsa-rb__lead--3 { opacity: calc(.3 + var(--at-3) * .7); stroke: color-mix(in srgb, #6bb68f, #e0a44d calc(var(--on-3) * 100%)); }
.dsa-rb__tag text { font: 700 21px var(--gft-font-mono); letter-spacing: 2px; transition: fill .5s; }
.dsa-rb__tag--0 text { fill: color-mix(in srgb, color-mix(in srgb, #c3d3ca, #9fb7ab calc((1 - var(--at-0)) * 100%)), #f0c27a calc(var(--on-0) * 100%)); }
.dsa-rb__tag--1 text { fill: color-mix(in srgb, color-mix(in srgb, #c3d3ca, #9fb7ab calc((1 - var(--at-1)) * 100%)), #f0c27a calc(var(--on-1) * 100%)); }
.dsa-rb__tag--2 text { fill: color-mix(in srgb, color-mix(in srgb, #c3d3ca, #9fb7ab calc((1 - var(--at-2)) * 100%)), #f0c27a calc(var(--on-2) * 100%)); }
.dsa-rb__tag--3 text { fill: color-mix(in srgb, color-mix(in srgb, #c3d3ca, #9fb7ab calc((1 - var(--at-3)) * 100%)), #f0c27a calc(var(--on-3) * 100%)); }
.dsa-ledger__groups { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1rem; }
.dsa-lg { position: relative; min-width: 0; padding: 1.1rem 1.1rem 1.25rem; border: 1px dashed #6bb68f88; background: color-mix(in srgb, #6bb68f calc(var(--at) * 8%), transparent); box-shadow: 0 0 0 calc(var(--on) * 2px) var(--dsa-ochre); transition: box-shadow .5s, background .5s; }
.dsa-lg h3 { display: flex; align-items: center; gap: .65rem; margin: 0; font: 700 14px/1.4 var(--gft-font-mono); letter-spacing: .1em; text-transform: uppercase; color: #9bd3b4; }
.dsa-lg__dot { flex: none; width: .8rem; height: .8rem; border: 2px solid var(--dsa-sage); background: var(--dsa-night); transform: rotate(45deg); }
.dsa-lg ul { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.dsa-lg li { position: relative; }
.dsa-lg li span { display: block; padding: .5rem .8rem; border: 1px solid color-mix(in srgb, #6bb68f calc(40% + var(--at) * 60%), transparent); background-color: color-mix(in srgb, #6bb68f calc(var(--at) * 22%), transparent); background-image: linear-gradient(color-mix(in srgb, #e0a44d calc(var(--on) * 32%), transparent), color-mix(in srgb, #e0a44d calc(var(--on) * 32%), transparent)); color: color-mix(in srgb, var(--dsa-paper) calc(66% + var(--at) * 34%), var(--dsa-night)); font: 600 15px var(--gft-font-mono); transform: translateX(calc((1 - var(--at)) * -10px)); transition: transform .6s var(--gft-ease-out), border-color .5s, background .5s, color .5s; }
:root[data-m-go] .dsa-ledger__in[data-m-on] .dsa-lg__dot { animation-name: dsa-pulse; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-pulse { 0%, 100% { transform: rotate(45deg) scale(1); } 50% { transform: rotate(45deg) scale(calc(1.25 + var(--on) * .85)); } }
.dsa-rb__plane, .dsa-rb__lead, .dsa-rb__tag { transform-box: fill-box; transform-origin: center; }
:root[data-m-go] .dsa-ledger__in[data-m-on] .dsa-rb__plane { animation-name: dsa-rec-plane; animation-duration: 2.3s; animation-timing-function: var(--gft-ease-in-out); animation-iteration-count: infinite; animation-direction: normal; }
@keyframes dsa-rec-plane { 0%, 100% { transform: translateY(-9px) scale(.98); } 50% { transform: translateY(9px) scale(1.03); } }
:root[data-m-go] .dsa-rb[data-m-in] .dsa-rb__tag { animation-name: dsa-rec-unfold; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--gi, 0) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
:root[data-m-go] .dsa-rb[data-m-in] .dsa-rb__lead { animation-name: dsa-rec-lead; animation-duration: 920ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--gi, 0) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
:root[data-m-go] .dsa-ledger__groups[data-m-in] .dsa-lg { animation-name: dsa-rec-cell; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--gi, 0) * 60ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
:root[data-m-go] .dsa-rows[data-m-in] .dsa-row { animation-name: dsa-stat-row; animation-duration: 900ms; animation-timing-function: cubic-bezier(.5, 0, .2, 1); animation-delay: calc(var(--ri, 0) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-rec-unfold { 0% { opacity: .28; transform: translate(var(--ux, 0), var(--uy, 0)) scale(.78); } 45% { opacity: .62; transform: translate(calc(var(--ux, 0) * .45), calc(var(--uy, 0) * .45)) scale(.9); } 100% { opacity: 1; transform: translate(0, 0) scale(1); } }
/* Keep field-group borders inside their grid cells throughout the reveal. */
@keyframes dsa-rec-cell { 0% { opacity: .28; transform: scale(.78); } 45% { opacity: .62; transform: scale(.9); } 100% { opacity: 1; transform: scale(1); } }
@keyframes dsa-rec-lead { 0% { opacity: .15; transform: scale(.35); } 45% { opacity: .5; transform: scale(.68); } 100% { opacity: 1; transform: scale(1); } }

/* ---------- 3 evidence: full-width chart + integrated readout deck ---------- */
.dsa-sec--evidence { padding-bottom: clamp(32px, 4vw, 56px); }
.dsa-evg { display: grid; grid-template-columns: 1fr; gap: 1.5rem; align-items: start; }
.dsa-evg__copy { position: static; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(1.5rem, 3.5vw, 3.5rem); align-items: start; padding-bottom: .5rem; }
.dsa-evg__copy p { margin: 0; max-width: 62ch; font-size: 17px; line-height: 1.68; }
.dsa-evg__proto { padding-left: 1.25rem; border-left: 2px solid #0e4d4a55; color: var(--gft-ink-2); }
.dsa-ev { --ink: #f6f4ef; --ground: #072d2b; --rule: #6bb68f66; --muted: #d3e0d9; display: grid; gap: 1.5rem; margin-inline: calc(-1 * var(--dsa-edge)); padding: clamp(1.5rem, 3vw, 2.5rem) var(--dsa-edge); border-top: 2px solid #6bb68f66; border-bottom: 2px solid #c98a2b88; background: radial-gradient(110% 90% at 20% 10%, #0e4d4a 0%, #072d2b 62%, #051f1e 100%) #062524; color: var(--dsa-paper); min-width: 0; }
.dsa-ev__main { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: clamp(1.75rem, 3.5vw, 3.25rem); align-items: start; }
.dsa-ev__stage { display: grid; gap: 1.15rem; min-width: 0; }
.dsa-ev__deck { display: grid; gap: 1.25rem; min-width: 0; align-content: start; }
.dsa-ev__top { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; padding-bottom: 1rem; border-bottom: 1px solid #6bb68f40; }
.dsa-ev__top .mw-source__options { flex: 1 1 22rem; max-width: 34rem; }
.dsa-ev .mw-source__options label > span { font-family: var(--gft-font-display); font-size: 15px; font-weight: 650; color: var(--dsa-mist); }
.dsa-ev .mw-source__options input:checked + span { color: var(--dsa-night); }
.dsa-ev .dsa-chip { color: #e0a44d; }
.dsa-chart svg { display: block; width: 100%; height: auto; }
.dsa-chart__ticks path { stroke: #b4c5c3; stroke-opacity: .22; }
.dsa-chart__ticks .dsa-chart__axis { stroke-opacity: .75; stroke-width: 2.5; transform-box: fill-box; transform-origin: 0 50%; }
.dsa-chart__ticks text { fill: #d3e0d9; font: 600 18px var(--gft-font-mono); }
.dsa-chart__ticks .dsa-chart__unit { letter-spacing: 2px; }
.dsa-lane__t { fill: #d3e0d9; font: 600 17px var(--gft-font-mono); letter-spacing: .5px; }
.dsa-lane__s, .dsa-gap__s { display: none; }
/* chart text carries a ground-coloured halo so the cursor and gap rules never draw through a label */
.dsa-lane text, .dsa-gap__t { paint-order: stroke fill; stroke: var(--dsa-night); stroke-width: 8px; stroke-linejoin: round; }
@media (min-width: 1001px) and (max-width: 1279px) {
  .dsa-lane__t, .dsa-gap__l { display: none; }
  .dsa-lane__s, .dsa-gap__s { display: block; }
  .dsa-lane__s { fill: #d3e0d9; font: 600 24px var(--gft-font-mono); letter-spacing: .5px; }
  .dsa-lane__v { font-size: 28px; } .dsa-chart__ticks text { font-size: 22px; } .dsa-gap__t { font-size: 22px; }
}
.dsa-lane__v { fill: var(--dsa-paper); font: 800 24px var(--gft-font-display); }
.dsa-lane__bar { transform-box: fill-box; transform-origin: 0 50%; }
.dsa-lane rect { transform-box: fill-box; transform-origin: 0 50%; transition: transform .8s var(--gft-ease-out); }
.dsa-lane text, .dsa-lane path { transition: opacity .5s; }
.dsa-lane--m rect { fill: #6bb68f; transform: scaleX(calc(var(--is-m) + var(--is-b))); }
.dsa-lane--c rect { fill: #c98a2b; transform: scaleX(calc(var(--is-m) + var(--is-b))); }
.dsa-lane--v rect { fill: #a9a3f2; transform: scaleX(calc(var(--is-v) + var(--is-b))); }
.dsa-lane--v path { fill: none; stroke: #a9a3f2; stroke-width: 3; opacity: calc(var(--is-v) + var(--is-b)); }
.dsa-lane--m text, .dsa-lane--c text { opacity: calc(var(--is-m) + var(--is-b)); }
.dsa-lane--v text { opacity: calc(var(--is-v) + var(--is-b)); }
.dsa-gap { opacity: var(--is-b); transition: opacity .6s; transform-box: fill-box; transform-origin: 0 50%; }
.dsa-gap path { fill: none; stroke: #e0a44d; stroke-width: 2.5; stroke-dasharray: 6 6; }
.dsa-gap__t { fill: #f0c27a; font: 600 17px var(--gft-font-mono); letter-spacing: .5px; }
:root[data-m-go] #dsa-ev-chart[data-m-in] .dsa-chart__axis { animation-name: dsa-axis-draw; animation-duration: 900ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
:root[data-m-go] #dsa-ev-chart[data-m-in] .dsa-lane__bar { animation-name: dsa-bar-grow; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(80ms + var(--bi, 0) * 65ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
:root[data-m-go] #dsa-ev-chart[data-m-in] .dsa-gap { animation-name: dsa-bar-grow; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: 220ms; animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-axis-draw { 0% { opacity: .3; transform: scaleX(.12); } 45% { opacity: .7; transform: scaleX(.52); } 100% { opacity: 1; transform: scaleX(1); } }
@keyframes dsa-bar-grow { 0% { opacity: .28; transform: scaleX(.08) translateY(8px); } 45% { opacity: .65; transform: scaleX(.48) translateY(4px); } 100% { opacity: 1; transform: scaleX(1) translateY(0); } }
#dsa-ev-chart { --mw-p: .7; }
.dsa-cursor { transform: translateX(calc(var(--mw-p) * 680px)); }
.dsa-cursor__pulse { transform-box: fill-box; transform-origin: center; }
.dsa-cursor path { stroke: #e0a44d; stroke-width: 2.5; stroke-dasharray: 4 6; }
.dsa-cursor circle { fill: #e0a44d; stroke: var(--dsa-night); stroke-width: 3; }
:root[data-m-go] .dsa-cursor[data-m-on] .dsa-cursor__pulse { animation-name: dsa-ev-scan; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-ev-scan { 0%, 100% { transform: translateX(-16px); opacity: .78; } 50% { transform: translateX(16px); opacity: 1; } }
.dsa-scrub { display: grid; gap: .5rem; }
.dsa-scrub__l { font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: #d3e0d9; }
.dsa-scrub .mw-scrub__row { display: block; }
.dsa-scrub input[type=range] { display: block; width: calc(85% + 16px); margin: 0 0 0 calc(7.5% - 8px); accent-color: #c98a2b; background: transparent; }
.dsa-scrub input[type=range]::-webkit-slider-runnable-track { height: 4px; background: #6bb68f88; }
.dsa-scrub input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; margin-top: -6px; border: 0; border-radius: 0; background: #e0a44d; transform: rotate(45deg); }
.dsa-scrub input[type=range]::-moz-range-track { height: 4px; background: #6bb68f88; }
.dsa-scrub input[type=range]::-moz-range-thumb { width: 16px; height: 16px; border: 0; border-radius: 0; background: #e0a44d; }
.dsa-scrub .mw-scrub__out { display: block; max-width: none; min-width: 0; min-height: 3.1em; margin-top: .4rem; padding: .7rem 1rem; border: 1px solid #6bb68f66; background: #051f1e99; font: 600 15px/1.45 var(--gft-font-mono); white-space: normal; text-align: left; overflow: visible; color: var(--dsa-paper); }
.dsa-fig { gap: 1rem; padding: 1.15rem 1.35rem; border: 1px solid #6bb68f55; background: #051f1eb3; }
.dsa-fig h3 { margin: 0; font-size: 1.05rem; letter-spacing: -.01em; color: #f0c27a; }
.dsa-fig__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr)); gap: 1rem 1.15rem; }
.dsa-fig .mw-big { gap: .35rem; min-width: 0; }
.dsa-fig .mw-big__value { font-family: var(--gft-font-display); font-size: clamp(1.75rem, 2.05vw, 2.25rem); font-weight: 850; font-variation-settings: normal; font-variant-numeric: tabular-nums lining-nums; line-height: 1.06; letter-spacing: -.02em; white-space: nowrap; color: #f6f4ef; }
.dsa-fig__one--lead .mw-big__value { font-size: clamp(1.9rem, 2.25vw, 2.45rem); color: #6bb68f; }
.dsa-fig .mw-big__label { font: 650 15px/1.4 var(--gft-font-display); color: var(--dsa-paper); max-width: 28ch; }
.dsa-fig__note { max-width: 34ch; font: 500 13.5px/1.5 var(--gft-font-mono); color: #d3e0d9; }
.dsa-fig .gft-cite { justify-self: start; color: var(--dsa-paper); }
.dsa-ev-bridge { position: relative; height: 44px; margin-bottom: -44px; overflow: hidden; pointer-events: none; z-index: 2; }
.dsa-ev-bridge__thread { position: absolute; left: 58%; top: 0; bottom: 0; width: 3px; background: linear-gradient(#c98a2b, #6bb68f); box-shadow: 0 0 14px #6bb68f99; }

/* ---------- 4 dark interlude ---------- */
.dsa-sec--interlude { display: grid; align-items: center; min-height: 92svh; padding-block: clamp(72px, 8vw, 116px) clamp(56px, 6vw, 84px); overflow: clip; background: radial-gradient(95% 85% at 75% 38%, #115c58 0%, #072d2b 62%, #051f1e 100%); clip-path: polygon(0 28px, 100% 0, 100% 100%, 0 100%); margin-top: -28px; }
.dsa-int { display: grid; grid-template-columns: minmax(0, 4.2fr) minmax(0, 7.8fr); gap: clamp(2rem, 4vw, 4rem); align-items: start; }
.dsa-int .gft-eyebrow { color: var(--dsa-sage); }
.dsa-int__h { margin: 1.25rem 0 1.15rem; font-size: clamp(2.4rem, 4.4vw, 4.8rem); }
.dsa-int__lede { max-width: 34ch; margin-bottom: 1.5rem; color: var(--dsa-mist); }
.dsa-int .gft-exergue { max-width: 26ch; padding-block: 0 .5rem; font-size: clamp(2.2rem, 4.4vw, 4.2rem); line-height: 1.12; color: var(--dsa-paper); }
.dsa-int__prose { margin-top: 1.25rem; }
.dsa-int__prose p { max-width: 58ch; font-size: 17px; line-height: 1.75; color: #d6e2db; }
.dsa-int__prose p + p { margin-top: 1.1rem; }
.dsa-int__scene { position: relative; top: auto; margin-right: calc(-1 * var(--dsa-edge)); }
.dsa-int__rot { transform-origin: 50% 50%; overflow-anchor: none; }
:root[data-m-go] .dsa-int__rot { animation-name: dsa-int-tilt; animation-duration: 1ms; animation-timing-function: linear; animation-fill-mode: both; animation-timeline: view(); animation-range: entry 0% exit 100%; }
@keyframes dsa-int-tilt { 0% { transform: rotate(-3.5deg) translateY(18px) scale(.96); } 50% { transform: rotate(0deg) translateY(0) scale(1); } 100% { transform: rotate(3.5deg) translateY(-18px) scale(1.03); } }
.dsa-int__fig svg { display: block; width: 100%; height: auto; }
.dsa-int .dsa-pl__top { fill-opacity: .94; stroke-width: 2.8px; stroke-opacity: 1; }
.dsa-int .dsa-pl__l { fill-opacity: .2; stroke-opacity: .82; stroke-width: 1.6px; }
.dsa-int .dsa-pl__r { fill-opacity: .28; stroke-opacity: .85; stroke-width: 1.6px; }
.dsa-int .dsa-pl--0 { transform: translateY(-46px); opacity: .76; }
.dsa-int .dsa-pl--1 { transform: translateY(-24px); opacity: .86; }
.dsa-int .dsa-pl--3 .dsa-pl__top { stroke-width: calc(2.8px + var(--is-edge) * 2px); }
.dsa-int__pl-draw { transform-box: fill-box; transform-origin: center; }
:root[data-m-go] .dsa-int__scene[data-m-in] .dsa-int__pl-draw { animation-name: dsa-int-draw; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--k, 0) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-int-draw { 0% { opacity: .28; clip-path: inset(0 78% 0 0); transform: translateY(28px); } 45% { opacity: .68; clip-path: inset(0 38% 0 0); transform: translateY(12px); } 100% { opacity: 1; clip-path: inset(0 0% 0 0); transform: translateY(0); } }
.dsa-brk path { fill: none; stroke: #e0a44d; stroke-width: 3.2; stroke-dasharray: 7 6; }
.dsa-brk text { fill: #f0c27a; font: 700 15px var(--gft-font-mono); letter-spacing: 1.5px; }
.dsa-zone { opacity: calc(.58 + var(--is-edge) * 0); transition: opacity .5s; }
.dsa-zone--edge { opacity: calc(.58 + var(--is-edge) * .42); }
.dsa-zone--buffer { opacity: calc(.58 + var(--is-buffer) * .42); }
.dsa-zone--manual { opacity: calc(.58 + var(--is-manual) * .42); }
.dsa-zone--recon { opacity: calc(.58 + var(--is-recon) * .42); }
.dsa-zone text { fill: var(--dsa-paper); font: 600 14.5px var(--gft-font-mono); letter-spacing: 1.5px; }
.dsa-zone--buffer text { transform: translateY(4px); }
.dsa-zone--edge path { fill: none; stroke: #6bb68f; stroke-width: 3; }
.dsa-zone--manual path { fill: none; stroke: #c98a2b; stroke-width: 3; stroke-dasharray: 6 6; }
.dsa-zone--manual rect { fill: #072d2b; stroke: #c98a2b; stroke-width: 2; }
.dsa-zone--manual text { fill: #f0c27a; }
.dsa-zone--recon path { fill: none; stroke: #e0a44d; stroke-width: 3; stroke-dasharray: 5 5; }
.dsa-zone--recon text { fill: #f0c27a; }
.dsa-pk { fill: #6bb68f; opacity: .42; transform-box: fill-box; transform-origin: center bottom; }
.dsa-int:has(input[value=buffer]:checked) .dsa-pk { opacity: .95; fill: #c98a2b; }
:root[data-m-go] .dsa-int__fig[data-m-on] .dsa-pk { animation-name: dsa-packet; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); animation-delay: calc(var(--i) * 110ms); }
@keyframes dsa-packet { 0%, 100% { opacity: .3; transform: scaleY(.75); } 50% { opacity: 1; transform: scaleY(1.12); } }
:root[data-m-go] .dsa-int__fig[data-m-on] .dsa-pl--0 { animation-name: dsa-float-a; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
:root[data-m-go] .dsa-int__fig[data-m-on] .dsa-pl--1 { animation-name: dsa-float-b; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-float-a { 0%, 100% { transform: translateY(-42px); } 50% { transform: translateY(-62px); } }
@keyframes dsa-float-b { 0%, 100% { transform: translateY(-20px); } 50% { transform: translateY(-38px); } }
:root[data-m-go] .dsa-int__fig[data-m-on] .dsa-signal--local { animation-name: dsa-signal-local; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-signal-local { 0%, 8% { opacity: .28; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-208px); } 92%, 100% { opacity: .28; transform: translateY(0); } }
.dsa-chips { display: flex; flex-wrap: wrap; gap: .6rem; margin: 1.25rem 0 0; padding: 0; border: 0; min-width: 0; }
.dsa-chips legend { width: 100%; margin-bottom: .7rem; padding: 0; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--dsa-sage); }
.dsa-chip-opt { position: relative; display: block; cursor: pointer; }
.dsa-chip-opt input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.dsa-chip-opt span { display: flex; align-items: center; gap: .6rem; min-height: 48px; padding: .6rem 1rem; border: 1px solid #6bb68f88; font: 650 15px var(--gft-font-display); color: var(--dsa-paper); transition: background .4s, color .4s; }
.dsa-chip-opt i { width: .55rem; height: .55rem; border: 1px solid var(--dsa-sage); transform: rotate(45deg); }
.dsa-chip-opt input:checked + span { background: var(--dsa-paper); border-color: var(--dsa-paper); color: var(--dsa-night); }
.dsa-chip-opt input:checked + span i { background: var(--dsa-ochre); border-color: var(--dsa-ochre); }
.dsa-chip-opt input:focus-visible + span { outline: 3px solid var(--dsa-ochre); outline-offset: 3px; }
.dsa-int__cap { margin-top: 1rem; min-height: 4.4rem; }
.dsa-int__c { max-width: 52ch; font-size: 16.5px; line-height: 1.65; color: var(--dsa-mist); }
.dsa-int-bridge { position: relative; display: grid; place-items: center; height: 56px; margin-top: 1.5rem; margin-bottom: -56px; pointer-events: none; z-index: 2; }
.dsa-int-bridge__spine { width: 3px; height: 100%; background: linear-gradient(#6bb68f, #c98a2b); box-shadow: 0 0 14px #6bb68f88; }
.dsa-int-bridge__node { position: absolute; width: 14px; height: 14px; border: 2px solid #f0c27a; background: #072d2b; transform: rotate(45deg); }

/* ---------- 5 sticky sequence: full-bleed dark stage with floating glass step cards ---------- */
.dsa-sec--sequence { background: radial-gradient(120% 80% at 25% 15%, #0e4d4a 0%, #072d2b 58%, #051f1e 100%) #05201f; color: var(--dsa-paper); padding-top: clamp(48px, 6vw, 84px); }
.dsa-sec--sequence .dsa-head .gft-eyebrow { color: var(--dsa-sage); }
.dsa-sec--sequence .dsa-head h2 { color: var(--dsa-paper); }
.dsa-sec--sequence .dsa-head .gft-lede { color: #d6e2db; }
.dsa-seq { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1.05fr); gap: clamp(1.5rem, 3.2vw, 3rem); align-items: start; }
.dsa-seq__stage { position: sticky; top: 16px; z-index: 1; display: flex; flex-direction: column; gap: .75rem; height: min(calc(100svh - 32px), 820px); margin-left: calc(-1 * var(--dsa-edge)); padding: 1.5rem 2rem 1.25rem var(--dsa-edge); overflow: clip; border-right: 1px solid #6bb68f40; background: radial-gradient(120% 90% at 35% 25%, #115c58 0%, #072d2b 64%, #051f1e 100%) #062524; color: var(--dsa-paper); }
.dsa-seq__bar { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: .5rem 1.5rem; min-height: 4.4rem; padding-bottom: .5rem; border-bottom: 1px solid #6bb68f38; }
.dsa-seq__bar .dsa-kicker { color: var(--dsa-sage); }
.dsa-seq__count { font: 600 14px/1.4 var(--gft-font-mono); letter-spacing: .08em; text-transform: uppercase; color: #f0c27a; }
.dsa-seq__count .dsa-seq__c { font-size: 14px; }
.dsa-seq__read { flex: 1 1 18rem; max-width: 36rem; font-size: 18px; font-weight: 650; line-height: 1.4; color: #f6f4ef; }
.dsa-seq__fig { position: relative; flex: 1; min-height: 0; }
.dsa-seq__fig svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.dsa-seq__pl-wave { transform-box: fill-box; transform-origin: center; }
:root[data-m-go] .dsa-seq__fig[data-m-on] .dsa-seq__pl-wave { animation-name: dsa-seq-wave; animation-duration: 2.3s; animation-timing-function: var(--gft-ease-in-out); animation-delay: calc(var(--k, 0) * 110ms); animation-iteration-count: infinite; animation-direction: normal; }
@keyframes dsa-seq-wave { 0%, 100% { transform: translateY(-7px); } 50% { transform: translateY(7px); } }
.dsa-seq .dsa-thread--seq { transform-origin: 380px 528px; transform: scaleY(var(--len)); transition: transform .9s var(--gft-ease-out); }
.dsa-x { opacity: 0; transition: opacity .6s; }
.dsa-x path { stroke: #c98a2b; stroke-width: 2.5; }
.dsa-x text { fill: #f0c27a; font: 700 18px var(--gft-font-mono); letter-spacing: 1px; }
.dsa-seq--ghost, .dsa-seq .dsa-pl { transition: transform .9s var(--gft-ease-out), opacity .7s, filter .6s; }
:root[data-m-go] .dsa-seq__fig[data-m-on] .dsa-signal--seq { animation-name: dsa-signal-seq; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-signal-seq { 0%, 8% { opacity: .28; transform: translateY(0); } 50% { opacity: 1; transform: translateY(calc(var(--len) * -416px)); } 92%, 100% { opacity: .28; transform: translateY(0); } }
.dsa-seq__nav { display: flex; flex-wrap: wrap; gap: .5rem; }
.dsa-seq__n { display: flex; align-items: center; gap: .5rem; min-height: 48px; padding: .35rem .8rem .35rem .45rem; border: 1px solid #e2ebe666; color: #e2ebe6; font: 600 13px var(--gft-font-mono); text-decoration: none; transition: background .4s, color .4s; }
.dsa-seq__n span { display: grid; place-items: center; width: 2rem; height: 2rem; border: 1px solid var(--dsa-sage); font-size: 13px; }
.dsa-seq__n em { font-style: normal; letter-spacing: .06em; text-transform: uppercase; }
.dsa-seq__n:hover, .dsa-seq__n:focus-visible { border-color: var(--dsa-sage); color: var(--dsa-paper); }
.dsa-seq .dsa-seq__track > article { position: relative; display: grid; align-content: center; min-height: max(106svh, 780px); padding: 4svh 0 4svh clamp(2rem, 2.6vw, 2.75rem); }
.dsa-seq__glass { position: relative; padding: clamp(1.5rem, 2.5vw, 2.2rem); border: 1px solid #6bb68f66; background: linear-gradient(145deg, #0e4d4acc, #072d2bf2) #072d2b; box-shadow: 0 20px 44px #00000055, inset 5px 0 0 var(--step-c, #6bb68f); transition: opacity .45s, transform .6s var(--gft-ease-out), border-color .45s; }
:root[data-m-go] .dsa-seq__track > article:not([data-active]) .dsa-seq__glass { opacity: .32; transform: translateY(12px) scale(.98); }
.dsa-seq__track > article[data-active] .dsa-seq__glass { border-color: var(--step-c, #c98a2b); }
.dsa-seq__track > article::before { content: ''; position: absolute; left: 14px; top: 0; bottom: 0; width: 2px; background: #6bb68f4d; }
.dsa-seq__track > article:first-child::before { top: 50%; }
.dsa-seq__track > article:last-child::before { bottom: 50%; }
.dsa-seq__node { position: absolute; left: -2.6rem; top: 2.2rem; z-index: 1; display: grid; place-items: center; width: 32px; height: 32px; border: 2px solid var(--dsa-sage); background: var(--dsa-night); color: var(--dsa-paper); font: 700 12.5px var(--gft-font-mono); font-style: normal; transition: background .5s, color .5s, border-color .5s; }
.dsa-seq__track > article[data-active] .dsa-seq__node { background: var(--dsa-ochre); border-color: #f0c27a; color: var(--dsa-night); }
.dsa-seq__track .gft-eyebrow { color: #9bd3b4; font-size: 12.5px; }
.dsa-seq__track h3 { margin: .65rem 0 1rem; font-size: clamp(1.95rem, 2.8vw, 2.85rem); line-height: 1.08; max-width: 18ch; color: var(--dsa-paper); }
.dsa-seq__body { max-width: 54ch; font-size: 17.5px !important; line-height: 1.7; color: #e2ebe6; }
.dsa-seq__vis { margin-top: 1rem; padding-top: .75rem; border-top: 1px solid #6bb68f4d; font: 600 13.5px/1.5 var(--gft-font-mono) !important; letter-spacing: .04em; color: #f0c27a; }
.dsa-card { margin-top: 1.15rem; padding: 1.15rem 1.3rem 1.25rem; border: 1px solid #6bb68f66; background: #051f1ee6; box-shadow: inset 3px 0 0 #c98a2b; }
.dsa-card .dsa-kicker { margin-bottom: .65rem; font-size: 13px; color: #9bd3b4; }
.dsa-card__built { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.dsa-card__built li { padding: .35rem .65rem; border: 1px dashed #6bb68f88; font: 600 13px var(--gft-font-mono); letter-spacing: .08em; color: #c3d3ca; }
.dsa-card__built li.is-built { border: 1px solid #f6f4ef; background: #0e4d4a; color: var(--dsa-paper); box-shadow: inset 4px 0 0 var(--c); padding-left: .9rem; }
.dsa-card__built li.is-now { outline: 2px solid #f0c27a; outline-offset: 2px; }
.dsa-card dl { display: grid; gap: .85rem; margin: 0; }
.dsa-card dt { font: 600 13px var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: #f0c27a; }
.dsa-card dd { margin: .25rem 0 0; font-size: 16.5px; line-height: 1.58; color: #f6f4ef; }

/* ---------- 6 operating dial: dial and headline share one screen ---------- */
.dsa-sec--operating { background: #e2ebe6; padding-block: clamp(44px, 5vw, 72px); }
.dsa-op { display: grid; grid-template-columns: minmax(0, 5.8fr) minmax(0, 6.2fr); gap: clamp(2rem, 4.5vw, 4.5rem); align-items: center; }
.dsa-op__dial { position: relative; justify-self: center; width: min(100%, 620px, calc(100svh - 110px)); aspect-ratio: 1; }
.dsa-op__dial svg { width: 100%; height: 100%; }
.dsa-op__base { fill: var(--dsa-night); stroke: #0e4d4a55; }
.dsa-op__rings { transform-origin: 220px 220px; }
.dsa-op__rings circle { fill: none; stroke: var(--dsa-sage); stroke-opacity: .55; stroke-width: 2; stroke-dasharray: 6 10; }
.dsa-op__sec-w, .dsa-op__hand-w { transform-origin: 220px 220px; }
.dsa-op__sec { fill: #6bb68f29; stroke: var(--dsa-sage); stroke-opacity: .68; stroke-width: 1.5; transition: fill .5s, stroke .5s; }
.dsa-op__hand { transform-origin: 220px 220px; transform: rotate(calc(45deg + var(--sel) * 90deg)); transition: transform .9s var(--gft-ease-out); }
.dsa-op__hand path { stroke: #c98a2b; stroke-width: 3.5; fill: #c98a2b; }
.dsa-op__hand circle { fill: #c98a2b; }
.dsa-op__hand path:first-child { fill: none; }
.dsa-op__dial .dsa-op__mini { position: absolute; left: 50%; top: 38%; width: 18%; height: auto; transform: translateX(-50%); }
.dsa-op__centre { position: absolute; left: 50%; top: 53%; width: 22%; margin: 0; transform: translateX(-50%); text-align: center; font: 600 12px/1.4 var(--gft-font-mono) !important; letter-spacing: .08em; text-transform: uppercase; color: var(--dsa-mist); }
.dsa-op__lab { position: absolute; display: grid; place-items: center; min-width: 44px; min-height: 44px; transform: translate(-50%, -50%); font: 800 clamp(1.1rem, 1.8vw, 1.6rem) var(--gft-font-display); letter-spacing: -.02em; color: var(--dsa-mist); cursor: pointer; transition: color .4s; }
.dsa-op__side { display: grid; gap: 1.15rem; }
.dsa-op__head h2 { font-size: clamp(2.3rem, 3.9vw, 4.1rem); line-height: 1.04; }
.dsa-op__head .gft-eyebrow { margin-bottom: 14px; }
.dsa-op__head .gft-lede { max-width: 48ch; margin-top: .85rem; font-size: clamp(1.05rem, 1.3vw, 1.22rem); }
.dsa-oprow__in strong { font-size: 1.25rem; }
.dsa-op__det { min-height: 7.2rem; padding: 1.15rem 1.4rem; border: 1px solid #0e4d4a55; border-left: 5px solid var(--dsa-ochre); background: var(--dsa-night); color: var(--dsa-paper); }
.dsa-op__txt { color: #e2ebe6; font-size: 17px !important; }
:root[data-m-go] .dsa-op__dial[data-m-on] .dsa-op__rings { animation-name: dsa-spin; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-spin { 0%, 100% { transform: rotate(-18deg) scale(.96); } 50% { transform: rotate(24deg) scale(1.04); } }
:root[data-m-go] .dsa-op__wheel-in[data-m-in] .dsa-op__hand-w { animation-name: dsa-sweep; animation-duration: 980ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: 80ms; animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-sweep { 0% { transform: rotate(-165deg); } 45% { transform: rotate(-85deg); } 100% { transform: rotate(0deg); } }
:root[data-m-go] .dsa-op__wheel-in[data-m-in] .dsa-op__sec-w { animation-name: dsa-sector; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--k, 0) * 60ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-sector { 0% { opacity: .28; transform: rotate(calc(var(--k, 0) * -45deg - 40deg)) scale(.68); } 45% { opacity: .65; transform: rotate(calc(var(--k, 0) * -20deg - 18deg)) scale(.86); } 100% { opacity: 1; transform: rotate(0deg) scale(1); } }
:root[data-m-go] .dsa-oprows[data-m-in] .dsa-oprow { animation-name: dsa-stat-row; animation-duration: 900ms; animation-timing-function: cubic-bezier(.5, 0, .2, 1); animation-delay: calc(var(--ri, 0) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }

/* ---------- 7 programme: dark full-bleed, enlarged stack and primary gate diamonds ---------- */
.dsa-sec--programme { overflow: clip; padding-block: clamp(44px, 5vw, 72px) clamp(48px, 6vw, 88px); background: radial-gradient(100% 120% at 20% 0%, #0e4d4a 0%, #072d2b 65%); color: var(--dsa-paper); }
.dsa-sec--programme .dsa-head { margin-bottom: 1rem; align-items: end; }
.dsa-sec--programme .dsa-head h2 { font-size: clamp(2.4rem, 4.2vw, 4.4rem); }
.dsa-sec--programme .gft-lede { color: #d6e2db; }
.dsa-sec--programme .gft-eyebrow { color: var(--dsa-sage); margin-bottom: 12px; }
.dsa-prog { position: relative; display: grid; gap: 1.15rem; }
.dsa-prog__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; }
.dsa-gates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.dsa-gates legend { grid-column: 1 / -1; width: 100%; margin-bottom: .55rem; padding: 0; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--dsa-sage); }
.dsa-gate { position: relative; display: block; cursor: pointer; }
:root[data-m-go] .dsa-gates[data-m-in] .dsa-gate { animation-name: dsa-gate-card; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--gi, 0) * 65ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-gate-card { 0% { opacity: .28; transform: translateY(34px) scale(.92); } 45% { opacity: .65; transform: translateY(16px) scale(.96); } 100% { opacity: 1; transform: translateY(0) scale(1); } }
.dsa-gate input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.dsa-gate__in { display: grid; align-content: start; gap: .45rem; height: 100%; min-height: 156px; padding: 1.2rem 1.4rem; border: 1px solid #6bb68f77; background: #051f1e88; transition: background .4s, color .4s, border-color .4s; }
.dsa-gate__mark { display: block; width: 2.2rem; height: .4rem; background: var(--dsa-sage); }
.dsa-gate--1 .dsa-gate__mark { background: #a9a3f2; }
.dsa-gate--2 .dsa-gate__mark { background: var(--dsa-ochre); }
.dsa-gate__n { font: 600 12.5px var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--dsa-sage); }
.dsa-gate__in strong { font-size: clamp(1.35rem, 1.9vw, 1.75rem); line-height: 1.15; letter-spacing: -.02em; }
.dsa-gate__in > span:last-child { font-size: 16px; line-height: 1.55; color: var(--dsa-mist); }
.dsa-gate input:checked + .dsa-gate__in { background: var(--dsa-paper); border-color: var(--dsa-paper); color: var(--dsa-night); }
.dsa-gate input:checked + .dsa-gate__in .dsa-gate__n { color: var(--gft-forest); }
.dsa-gate input:checked + .dsa-gate__in > span:last-child { color: var(--gft-ink-2); }
.dsa-gate input:focus-visible + .dsa-gate__in { outline: 3px solid var(--dsa-ochre); outline-offset: 3px; }
.dsa-rel { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 1.75rem; align-items: center; margin-inline: calc(-1 * var(--dsa-edge)); padding: 1.25rem var(--dsa-edge); border-block: 1px solid #6bb68f55; background: linear-gradient(90deg, #051f1ecc 0%, #0b3a37cc 50%, #051f1ecc 100%); }
.dsa-rel__slice { position: relative; display: grid; justify-items: center; gap: .5rem; }
.dsa-rel__slice .dsa-mini { width: 256px; }
.dsa-rel__slice .dsa-mini__p { stroke-width: 2; stroke-opacity: .85; }
.dsa-rel__slice p { margin: 0; font: 600 12.5px/1.4 var(--gft-font-mono) !important; letter-spacing: .08em; text-transform: uppercase; color: #f0c27a; text-align: center; }
.dsa-rel__line { position: absolute; left: 50%; top: -8px; width: 3px; height: 158px; background: var(--dsa-ochre); box-shadow: 0 0 16px #c98a2bcc; }
.dsa-rel__svg { width: 100%; height: auto; }
.dsa-rel__grid path { stroke: #6bb68f; stroke-opacity: .12; stroke-dasharray: 3 8; }
.dsa-rel__track { fill: none; stroke: #6bb68f; stroke-opacity: .38; stroke-width: 5; }
.dsa-rel__scroll { fill: none; stroke: #6bb68f; stroke-opacity: .75; stroke-width: 7; transform-origin: 260px 118px; }
:root[data-m-go] .dsa-rel__scroll { animation-name: dsa-prog-scroll; animation-duration: 1ms; animation-timing-function: linear; animation-fill-mode: both; animation-timeline: view(); animation-range: entry 10% cover 75%; }
@keyframes dsa-prog-scroll { 0% { transform: scaleX(.08); opacity: .45; } 50% { transform: scaleX(.55); opacity: .9; } 100% { transform: scaleX(1); opacity: 1; } }
.dsa-rel__fill { fill: none; stroke: #c98a2b; stroke-width: 5; transform-origin: 260px 118px; transform: scaleX(var(--fill)); transition: transform .9s var(--gft-ease-out); }
.dsa-rel__g, .dsa-rel__pulse, .dsa-rel__d, .dsa-rel__halo, .dsa-rel__core { transform-box: fill-box; transform-origin: center; }
.dsa-rel__halo { fill: #c98a2b1f; stroke: #6bb68f; stroke-opacity: .55; stroke-width: 2; stroke-dasharray: 5 5; transition: opacity .5s, stroke .5s; }
.dsa-rel__d { fill: #072d2b; stroke: #6bb68f; stroke-width: 3.5; transition: transform .6s var(--gft-ease-out), fill .5s, stroke .5s; }
.dsa-rel__core { fill: #0e4d4a; stroke: #f0c27a; stroke-opacity: .75; stroke-width: 2; }
.dsa-rel__node { fill: #f6f4ef; }
.dsa-rel__k { fill: #9bd3b4; font: 700 14px var(--gft-font-mono); letter-spacing: 2px; }
.dsa-rel__lbl { fill: var(--dsa-paper); font: 700 18px var(--gft-font-mono); letter-spacing: 1.2px; transition: fill .5s; }
.dsa-rel__t { fill: #f0c27a !important; font: 700 15px var(--gft-font-mono) !important; letter-spacing: 1.5px; }
:root[data-m-go] .dsa-rel[data-m-in] .dsa-rel__g { animation-name: dsa-gate-diamond; animation-duration: 940ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--gi, 0) * 65ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-gate-diamond { 0% { opacity: .28; transform: scale(.45) rotate(-25deg); } 45% { opacity: .68; transform: scale(.74) rotate(-10deg); } 100% { opacity: 1; transform: scale(1) rotate(0deg); } }
:root[data-m-go] .dsa-prog[data-m-on] .dsa-rel__pulse { animation-name: dsa-gate-pulse; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); animation-delay: calc(var(--gi, 0) * 180ms); }
@keyframes dsa-gate-pulse { 0%, 100% { transform: scale(.94); } 50% { transform: scale(1.08); } }
:root[data-m-go] .dsa-prog[data-m-on] .dsa-rel__line { animation-name: dsa-slice; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-slice { 0%, 100% { transform: translateX(-64px); } 50% { transform: translateX(64px); } }
.dsa-prog__det { min-height: 8.5rem; }
.dsa-pd { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem 2.5rem; padding-top: 1.25rem; border-top: 1px solid #6bb68f55; }
.dsa-pd .dsa-kicker { color: #e0a44d; }
.dsa-pd p:not(.dsa-kicker) { font-size: 17px; line-height: 1.6; }
.dsa-prog__copy { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 4vw, 4rem); padding-top: 1.5rem; border-top: 1px solid #6bb68f40; }
.dsa-prog__copy p { max-width: 62ch; font-size: 17px; line-height: 1.7; color: #d6e2db; }
.dsa-prog__tail { margin: 0; }
.dsa-prog__tail .gft-text-link { color: var(--dsa-paper); }

/* ---------- 8 closing stack: one screen, list and navigator together ---------- */
.dsa-sec--closing { overflow: clip; padding-block: clamp(40px, 5vw, 72px) clamp(16px, 2vw, 28px); background: radial-gradient(90% 90% at 80% 60%, #0e4d4a 0%, #072d2b 60%, #051f1e 100%); }
.dsa-close { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 4vw, 4rem); align-items: center; }
.dsa-close__head { margin-bottom: 1.25rem; }
.dsa-close__head .gft-eyebrow { margin-bottom: 18px; color: var(--dsa-sage); }
.dsa-close__head h2 { font-size: clamp(2.2rem, 3.2vw, 3.4rem); }
.dsa-close__head .gft-lede { max-width: 40ch; margin-top: 1rem; font-size: 1rem; color: var(--dsa-mist); }
.dsa-close__rows { margin: 0; padding: 0; list-style: none; border-top: 1px solid #e2ebe633; }
.dsa-crow { position: relative; display: grid; grid-template-columns: 8rem minmax(0, 1fr) auto; gap: .1rem 1rem; align-items: center; min-height: 62px; padding: .5rem .75rem .5rem 1rem; border-bottom: 1px solid #e2ebe62e; color: var(--dsa-paper); text-decoration: none; transition: background .4s, box-shadow .4s; }
a.dsa-crow:hover, a.dsa-crow:focus-visible { background: #6bb68f1c; box-shadow: inset 4px 0 0 var(--c); }
a.dsa-crow:focus-visible { outline: 3px solid var(--dsa-ochre); outline-offset: -3px; }
.dsa-crow strong { font-size: clamp(1.15rem, 1.6vw, 1.5rem); line-height: 1.2; letter-spacing: -.02em; }
.dsa-crow__l { grid-row: 1 / 3; font: 600 12px/1.4 var(--gft-font-mono); letter-spacing: .12em; color: var(--c); }
.dsa-crow__k { grid-column: 2; font: 500 12px/1.4 var(--gft-font-mono); letter-spacing: .08em; text-transform: uppercase; color: #c3d3ca; }
.dsa-crow__a { grid-column: 3; grid-row: 1 / 3; font-size: 1.5rem; color: var(--c); }
.dsa-close__scene { position: relative; margin-right: calc(-1 * var(--dsa-edge)); }
.dsa-close__stack svg { display: block; width: 100%; height: auto; }
.dsa-cpl, .dsa-cthread { cursor: pointer; }
.dsa-cpl { transform-box: fill-box; transform-origin: center; }
.dsa-cpl--0 { opacity: calc(.62 + var(--on-0) * .38); } .dsa-cpl--1 { opacity: calc(.62 + var(--on-1) * .38); } .dsa-cpl--2 { opacity: calc(.62 + var(--on-2) * .38); } .dsa-cpl--3 { opacity: calc(.62 + var(--on-3) * .38); } .dsa-cpl--4 { opacity: calc(.62 + var(--on-4) * .38); }
.dsa-cpl .dsa-pl { filter: drop-shadow(0 0 0 transparent); }
.dsa-cpl--0 .dsa-pl { transform: translateY(calc(var(--on-0) * -10px)); } .dsa-cpl--1 .dsa-pl { transform: translateY(calc(var(--on-1) * -10px)); } .dsa-cpl--2 .dsa-pl { transform: translateY(calc(var(--on-2) * -10px)); } .dsa-cpl--3 .dsa-pl { transform: translateY(calc(var(--on-3) * -10px)); } .dsa-cpl--4 .dsa-pl { transform: translateY(calc(var(--on-4) * -10px)); }
.dsa-cpl, .dsa-cthread { transition: opacity .5s; }
.dsa-hit { fill: none; stroke: transparent; stroke-width: 36; }
.dsa-thread--close { stroke: #c98a2b; opacity: calc(.0 + var(--on-5)); transition: opacity .5s; }
.dsa-close__read { min-height: 9.5rem; margin: .75rem var(--dsa-edge) 0 1rem; padding: 1.1rem 1.4rem; border: 1px solid #6bb68f66; background: #072d2bcc; }
.dsa-cr .dsa-kicker { color: var(--dsa-sage); }
.dsa-cr h3 { margin: 0 0 .4rem; font-size: 1.5rem; }
.dsa-cr p:not(.dsa-kicker) { max-width: 52ch; font-size: 16px; line-height: 1.55; color: var(--dsa-mist); }
.dsa-cr .dsa-cr__s { margin-top: .5rem; font: 600 12.5px/1.4 var(--gft-font-mono); letter-spacing: .06em; text-transform: uppercase; color: #e0a44d; }
:root[data-m-go] .dsa-close__stack[data-m-in] .dsa-cpl { animation-name: dsa-collapse; animation-duration: 1100ms; animation-timing-function: var(--gft-ease-in-out); animation-delay: calc(var(--k) * 55ms); animation-fill-mode: backwards; animation-iteration-count: 1; animation-direction: normal; }
@keyframes dsa-collapse { 0% { opacity: .45; transform: translate(var(--ex), var(--ey)) rotate(calc(var(--k) * 2deg - 4deg)); } 40% { opacity: .65; transform: translate(calc(var(--ex) * .5), calc(var(--ey) * .5)) rotate(calc(var(--k) * 1deg - 2deg)); } 100% { transform: translate(0, 0) rotate(0deg); } }
:root[data-m-go] .dsa-close__scene[data-m-on] .dsa-signal--close { animation-name: dsa-signal-close; animation-duration: 2.3s; animation-iteration-count: infinite; animation-direction: normal; animation-timing-function: var(--gft-ease-in-out); }
@keyframes dsa-signal-close { 0%, 8% { opacity: .28; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-416px); } 92%, 100% { opacity: .28; transform: translateY(0); } }

/* ---------- splash key (carried from the earlier edition) ---------- */
.caps-b-hero-key { position: absolute; right: 14%; bottom: 6%; display: flex; flex-wrap: wrap; gap: 1rem; max-width: 38rem; font: 600 .75rem/1.4 var(--gft-font-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--gft-mist); }
.caps-b-hero-key span { display: flex; align-items: center; gap: .5rem; }
.caps-b-hero-key i { display: inline-block; width: 1.35rem; height: .3rem; }
.caps-b-key-observed { background: var(--gft-paper); }
.caps-b-key-range { border: 1px solid var(--gft-sage); background: #6bb68f33; }
.caps-b-key-gate { background: var(--gft-ochre); }


/* ---------- tablet and phone ---------- */
@media (max-width: 1000px) {
  .dsa-inst, .dsa-rec, .dsa-evg, .dsa-evg__copy, .dsa-ev__main, .dsa-int, .dsa-op, .dsa-close, .dsa-prog__copy, .dsa-prog__rules { grid-template-columns: 1fr; }
  .dsa-inst__stage { padding-right: var(--dsa-edge); }
  .dsa-inst__panel { padding: 2rem var(--dsa-edge) 3rem; }
  .dsa-rec__ctl { padding-block: 56px 32px; }
  .dsa-ledger { margin-left: calc(-1 * var(--dsa-edge)); margin-right: calc(-1 * var(--dsa-edge)); padding: 2rem var(--dsa-edge) 2.5rem; }
  .dsa-ledger__thread { display: none; }
  .dsa-ev { margin-inline: calc(-1 * var(--dsa-edge)); padding-inline: var(--dsa-edge); }
  .dsa-int__scene { position: relative; top: auto; margin-left: calc(-1 * var(--dsa-edge)); }
  .dsa-close__scene { margin-left: calc(-1 * var(--dsa-edge)); }
  .dsa-close__read { margin-inline: var(--dsa-edge); }
  .dsa-seq { grid-template-columns: 1fr; gap: 0; }
  .dsa-seq__stage { top: 0; height: min(46svh, 440px); margin-right: calc(-1 * var(--dsa-edge)); padding: 1rem var(--dsa-edge) .75rem; border-right: 0; border-bottom: 1px solid #6bb68f40; }
  .dsa-seq__bar { min-height: 0; }
  .dsa-seq__read { font-size: 15px; flex-basis: 100%; }
  .dsa-seq .dsa-seq__track > article { min-height: 70svh; padding-left: 2.25rem; }
  .dsa-seq__n em { display: none; }
  .dsa-seq__n { padding-right: .4rem; }
  .dsa-gates { grid-template-columns: 1fr; }
  .dsa-gate__in { min-height: 0; }
  .dsa-rel { grid-template-columns: 1fr; }
  .dsa-rel__slice { display: none; }
  .dsa-pd { grid-template-columns: 1fr; }
  .dsa-prog__det { min-height: 20rem; }
  .dsa-sec--interlude { min-height: 0; }
  .dsa-op__dial { width: min(100%, 520px); }
  .dsa-ghost--ev, .dsa-ghost--prog { display: none; }
}
@media (max-width: 640px) {
  .dsa-seg { grid-template-columns: 1fr 1fr; }
  .dsa-seg__opt span { padding: .6rem .7rem; font-size: .92rem; }
  .dsa-ledger__groups { grid-template-columns: 1fr; }
  .dsa-rb__tag text { font-size: 24px; }
  .dsa-row__in, .dsa-oprow__in { grid-template-columns: 4.2rem minmax(0, 1fr); padding: .75rem; }
  .dsa-inst__fig .dsa-pl__note, .dsa-int__fig .dsa-pl__note, .dsa-close__stack .dsa-pl__note { display: none; }
  .dsa-inst .dsa-pl__name, .dsa-int .dsa-pl__name, .dsa-close .dsa-pl__name { font-size: 36px; }
  .dsa-inst .dsa-q, .dsa-inst .dsa-net text { display: none; }
  .dsa-mode__tag { font-size: 32px; } .dsa-mode__name { font-size: 42px; }
  .dsa-seq .dsa-pl__note { display: none; }
  .dsa-seq .dsa-pl__name { font-size: 38px; }
  .dsa-x, .dsa-zone text, .dsa-brk text { display: none; }
  .dsa-lane__t, .dsa-gap__l { display: none; }
  .dsa-lane__s, .dsa-gap__s { display: block; }
  .dsa-lane__s { fill: #d3e0d9; font: 600 29px var(--gft-font-mono); letter-spacing: 1px; }
  .dsa-lane__v { font-size: 34px; } .dsa-chart__ticks text { font-size: 29px; } .dsa-gap__t { font-size: 29px; } .dsa-chart__ticks .dsa-chart__unit { display: none; }
  .caps-b-hero-key { display: none; }
  .dsa-chart svg { min-height: 220px; }
  .dsa-ev { padding: 1.25rem var(--dsa-edge); }
  .dsa-evg { gap: 1.5rem; }
  .dsa-evg__copy { position: static; }
  .dsa-evg__proto { padding-left: 0; border-left: 0; }
  .dsa-op__lab { font-size: 1rem; }
  .dsa-op__centre { display: none; }
  .dsa-op__dial .dsa-op__mini { top: 42%; }
  .dsa-crow { grid-template-columns: 5.5rem minmax(0, 1fr) auto; padding-inline: .5rem; }
  .dsa-crow__l { font-size: 12px; letter-spacing: .06em; }
  .dsa-chips { gap: .45rem; }
  .dsa-chip-opt span { padding: .5rem .75rem; font-size: 14px; }
  .dsa-sec--programme { padding-bottom: 2.5rem; }
  .dsa-rel__svg text { display: none; }
  .dsa-seq__stage { height: min(48svh, 420px); }
}

/* ---------- handovers: seams, ghost stack, persistent rail ---------- */
.dsa-sec { isolation: isolate; }
.dsa-sec::before { content: ''; position: absolute; left: 0; right: 0; top: 0; z-index: -1; height: var(--dsa-seam-h, 0); background: var(--dsa-seam, none); pointer-events: none; }
.dsa-sec--instrument { --dsa-seam-h: clamp(72px, 8vw, 120px); --dsa-seam: linear-gradient(#072d2b, #072d2b00); }
.dsa-sec--evidence { --dsa-seam-h: clamp(36px, 4vw, 64px); --dsa-seam: linear-gradient(#e2ebe6, #e2ebe600); }
.dsa-sec--interlude { --dsa-seam-h: 0; --dsa-seam: none; }
.dsa-sec--sequence { --dsa-seam-h: 3px; --dsa-seam: linear-gradient(90deg, #6bb68f00, #6bb68f, #c98a2b, #6bb68f, #6bb68f00); }
.dsa-sec--operating { --dsa-seam-h: 3px; --dsa-seam: linear-gradient(90deg, #6bb68f00, #6bb68f, #c98a2b, #6bb68f, #6bb68f00); }
.dsa-sec--programme { --dsa-seam-h: 3px; --dsa-seam: linear-gradient(90deg, #6bb68f00, #6bb68f, #c98a2b, #6bb68f, #6bb68f00); }
.dsa-sec--closing { --dsa-seam-h: 3px; --dsa-seam: linear-gradient(90deg, #6bb68f00, #6bb68f, #c98a2b, #6bb68f, #6bb68f00); }
.dsa-ghost { position: absolute; z-index: -1; pointer-events: none; }
.dsa-ghost .dsa-mini { width: 100%; height: auto; }
.dsa-ghost--prog { right: -8%; top: 4%; width: min(40vw, 560px); opacity: .24; }

.dsa-rail { position: fixed; right: 7px; top: calc(50% - 112px); z-index: 20; width: 38px; height: 224px; padding: 8px 0; border: 1px solid #6bb68f55; border-radius: 19px; background: #072d2bd9; pointer-events: none; opacity: 0; transition: opacity .6s; }
.dsa-rail[data-show='1'] { opacity: .94; }
.dsa-rail svg { display: block; width: 100%; height: 100%; }
.dsa-rail__thread { stroke: #6bb68f; stroke-opacity: .45; stroke-width: 1.5; stroke-dasharray: 2 4; }
.dsa-rail__p { fill: #072d2b; stroke: var(--c); stroke-opacity: .4; stroke-width: 1.5; transition: fill .5s, stroke-opacity .5s; }
.dsa-rail__p.is-lit { fill: color-mix(in srgb, var(--c) 45%, #072d2b); stroke-opacity: 1; }
.dsa-rail__s { fill: #f6f4ef; transition: transform .6s var(--gft-ease-out); }
@media (max-width: 1099px) { .dsa-rail { display: none; } }

/* ---------- crossfades never show two texts in one place: the old one leaves, then the new one arrives ---------- */
.dsa-mode { transition: opacity .28s; }
.dsa-inst:has(input[value=connected]:checked) .dsa-mode--connected,
.dsa-inst:has(input[value=intermittent]:checked) .dsa-mode--intermittent,
.dsa-inst:has(input[value=offline]:checked) .dsa-mode--offline,
.dsa-inst:has(input[value=recovery]:checked) .dsa-mode--recovery { transition: opacity .4s ease .3s; }

/* ---------- evidence read-out and integrated Reading Now ledger ---------- */
.dsa-hov { display: grid; gap: 1rem; padding: 1.15rem 1.25rem; border: 1px solid #6bb68f66; background: #083330; }
.dsa-hov__read { display: grid; min-height: 4.5rem; padding-bottom: .85rem; border-bottom: 1px solid #6bb68f40; }
.dsa-hov__t { grid-area: 1 / 1; visibility: hidden; opacity: 0; transition: opacity .28s, visibility 0s linear .28s; }
.dsa-hov__t--d { visibility: visible; opacity: 1; align-self: center; font: 500 14.5px/1.55 var(--gft-font-mono); color: #d3e0d9; }
.dsa-hov__h { margin: 0; font: 750 1.1rem/1.3 var(--gft-font-display); color: var(--dsa-paper); }
.dsa-hov__p { margin: .35rem 0 0; font: 500 14px/1.55 var(--gft-font-mono) !important; color: #d3e0d9; }
.dsa-ev:has(.dsa-lane:is(:hover, :focus)) .dsa-hov__t--d { visibility: hidden; opacity: 0; transition: opacity .28s, visibility 0s linear .28s; }
.dsa-ev:has(.dsa-lane--m:is(:hover, :focus)) .dsa-hov__t--m,
.dsa-ev:has(.dsa-lane--c:is(:hover, :focus)) .dsa-hov__t--c,
.dsa-ev:has(.dsa-lane--v:is(:hover, :focus)) .dsa-hov__t--v,
.dsa-ev:not(:has(.dsa-lane:is(:hover, :focus))) .dsa-hov__t--d { visibility: visible; opacity: 1; transition: opacity .35s ease .3s, visibility 0s; }
.dsa-lane { cursor: crosshair; outline: none; }
.dsa-lane:is(:hover, :focus) rect { stroke: #f6f4ef; stroke-width: 3; }
.dsa-lane:focus-visible rect { stroke: #e0a44d; stroke-width: 4; }
.dsa-ev:has(input[value=manual]:checked) .dsa-lane--v, .dsa-ev:has(input[value=computer-vision]:checked) :is(.dsa-lane--m, .dsa-lane--c) { pointer-events: none; }

/* ---------- reduced motion and Calm: states stay, movement stops ---------- */
@media (prefers-reduced-motion: reduce) {
  .dsa-sec *, .dsa-sec *::before, .dsa-sec *::after, .dsa-rail, .dsa-rail * { animation-name: none !important; animation-timeline: auto !important; transition: none !important; }
}
:root[data-motion='calm'] .dsa-sec *, :root[data-motion='calm'] .dsa-sec *::before, :root[data-motion='calm'] .dsa-sec *::after, :root[data-motion='calm'] .dsa-rail, :root[data-motion='calm'] .dsa-rail * { animation-name: none !important; animation-timeline: auto !important; transition: none !important; }


/* ================= round 4+5: evidence ledger in chart deck, dark sequence rail, programme rules, closing instrument ================= */

.dsa-evg { --g-m: 0; --g-v: 0; --g-b: 0; }
.dsa-evg:has(input[value=manual]:checked) { --g-m: 1; }
.dsa-evg:has(input[value=computer-vision]:checked) { --g-v: 1; }
.dsa-evg:has(input[value=both]:checked) { --g-m: 1; --g-v: 1; --g-b: 1; }
.dsa-evl { margin: 0; padding: 0; }
.dsa-evl .dsa-kicker { color: #9bd3b4; margin-bottom: .5rem; }
.dsa-evl ol { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.dsa-evl__r { --on: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .15rem .85rem; align-items: center; padding: .7rem .95rem; border: 1px solid #6bb68f55; background: color-mix(in srgb, #0e4d4a calc(var(--on) * 100%), #051f1e); color: #f6f4ef; box-shadow: inset calc(var(--on) * 5px) 0 0 #c98a2b; transition: background .5s, color .5s, box-shadow .5s; }
.dsa-evl__r--m { --on: var(--g-m); }
.dsa-evl__r--v { --on: var(--g-v); }
.dsa-evl__r--b { --on: var(--g-b); }
.dsa-evl__k { grid-column: 1; font: 700 12px/1.35 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: #9bd3b4; }
.dsa-evl__t { grid-column: 1; font-size: 15px; line-height: 1.42; color: #f6f4ef; }
.dsa-evl__s { grid-column: 2; grid-row: 1 / 3; display: grid; justify-items: end; }
.dsa-evl__s b { grid-area: 1 / 1; font: 700 12px var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; transition: opacity .4s; }
.dsa-evl__on { color: #f0c27a; opacity: var(--on); }
.dsa-evl__off { color: #b8c8bd; opacity: calc(1 - var(--on)); }
.dsa-cap--src { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-top: .25rem; max-width: none; font-size: 12.5px; line-height: 1.55; color: #c3d3ca; }
.dsa-cap--src .gft-cite { display: inline-flex; vertical-align: middle; color: var(--dsa-paper); }

/* sequence: a five-layer rail under the headline on the dark stage */
.dsa-sr { --p: .2; position: relative; margin: 0 0 clamp(1.75rem, 3vw, 2.5rem); padding-top: 1.9rem; }
.dsa-sr__line { position: absolute; left: 0; right: 0; top: 7px; height: 4px; overflow: hidden; background: #6bb68f33; }
.dsa-sr__fill { position: absolute; inset: 0; background: linear-gradient(90deg, #6bb68f, #877fe6 60%, #c98a2b); transform-origin: 0 50%; transform: scaleX(var(--p)); transition: transform .9s var(--gft-ease-out); }
.dsa-sr__list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.dsa-sr__s { --act: 0; --done: 0; position: relative; display: grid; align-content: start; gap: .25rem; padding-right: .5rem; color: #c3d3ca; transition: color .5s; }
.dsa-sr__s::before { content: ''; position: absolute; left: 0; top: -1.9rem; width: 14px; height: 14px; border: 2px solid #f6f4ef; background: var(--c); transform: rotate(45deg) scale(calc(.85 + var(--act) * .45)); transition: transform .5s var(--gft-ease-out); }
.dsa-sr__n { display: block; margin-top: .4rem; font: 850 clamp(2.2rem, 4.4vw, 4.4rem)/1 var(--gft-font-display); letter-spacing: -.03em; color: inherit; font-variant-numeric: tabular-nums lining-nums; }
.dsa-sr__l { font: 700 13px/1.4 var(--gft-font-mono); letter-spacing: .12em; text-transform: uppercase; color: inherit; }
.dsa-sr__v { font-size: 14px; line-height: 1.45; color: inherit; }
.dsa-sec--sequence:has(.dsa-seq[data-step='0']) { --sp: .2; }
.dsa-sec--sequence:has(.dsa-seq[data-step='1']) { --sp: .4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='2']) { --sp: .6; }
.dsa-sec--sequence:has(.dsa-seq[data-step='3']) { --sp: .8; }
.dsa-sec--sequence:has(.dsa-seq[data-step='4']) { --sp: 1; }
.dsa-sr { --p: var(--sp, .2); }
:root[data-m-go] .dsa-sr[data-m-in] .dsa-sr__s { animation-name: dsa-sr-in; animation-duration: 900ms; animation-timing-function: cubic-bezier(.55, .05, .25, 1); animation-delay: calc(var(--j, 0) * 55ms); animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: backwards; }
:root[data-m-go] .dsa-sr[data-m-in] .dsa-sr__fill { animation-name: dsa-sr-draw; animation-duration: 1100ms; animation-timing-function: var(--gft-ease-in-out); animation-iteration-count: 1; animation-direction: normal; animation-fill-mode: backwards; }
@keyframes dsa-sr-in { 0% { opacity: .28; transform: translateY(24px); } 45% { opacity: .65; transform: translateY(11px); } 100% { opacity: 1; transform: translateY(0); } }
@keyframes dsa-sr-draw { 0% { transform: scaleX(0); } 100% { transform: scaleX(var(--p)); } }

/* sequence stage: labels large and bright enough to read at the pinned size */
.dsa-seq .dsa-pl__note { font-size: 19px; fill: #f6f4ef; }
.dsa-seq .dsa-pl__name { font-size: 22px; }
.dsa-x text { font-size: 18px; fill: #f0c27a; }
.dsa-seq__bar .dsa-kicker { font-size: 13px; }
.dsa-seq__count, .dsa-seq__count .dsa-seq__c { font-size: 14px; }
.dsa-seq__nav { gap: .5rem; }
.dsa-seq__n { min-height: 48px; font-size: 13px; color: #e2ebe6; border-color: #e2ebe666; }
.dsa-seq__n span { width: 2rem; height: 2rem; font-size: 13px; }

/* programme: gate cards read as the instrument; the two rules become cards, the link a button */
.dsa-prog__det { min-height: 7.5rem; }
.dsa-pd { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem 2rem; padding-top: 1rem; border-top: 1px solid #6bb68f55; }
.dsa-pd .dsa-kicker { color: #f0c27a; }
.dsa-pd p:not(.dsa-kicker) { font-size: 16.5px; line-height: 1.58; }
.dsa-prog__rules { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: stretch; }
.dsa-rule { position: relative; padding: 1.5rem 1.7rem 1.65rem 5.2rem; border: 1px solid #6bb68f55; background: linear-gradient(110deg, #0e4d4a99, #072d2b55); overflow: clip; }
.dsa-rule__n { position: absolute; left: 1.3rem; top: 1.15rem; font: 850 2.8rem/1 var(--gft-font-display); letter-spacing: -.03em; color: #e0a44d; font-variant-numeric: tabular-nums lining-nums; }
.dsa-rule__h { margin: 0 0 .5rem; font-size: 1.35rem; line-height: 1.2; color: var(--dsa-paper); }
.dsa-rule p { max-width: 58ch; font-size: 16.5px; line-height: 1.62; color: #d6e2db; }
.dsa-prog__rules .dsa-prog__tail { grid-column: 1 / -1; margin: .5rem 0 0; }
.dsa-prog__tail .gft-button { text-decoration: none; }

/* interlude: a set-piece. The stack takes two thirds, the line is a pull-quote across the foot */
.dsa-int__text { align-self: center; }
.dsa-int__quote { grid-column: 1 / -1; padding-top: clamp(1rem, 2.5vw, 2rem); border-top: 1px solid #6bb68f44; }
.dsa-int__quote .gft-exergue { max-width: 28ch; padding-block: 0 .5rem; font-size: clamp(2.2rem, 4.4vw, 4.2rem); line-height: 1.12; }

/* closing: the stack is the navigator. Rows and planes share one selected state, visible in a still */
.dsa-close { grid-template-columns: minmax(0, 9fr) minmax(0, 15fr); }
.dsa-pl__route { fill: #f6f4ef; font: 700 20px var(--gft-font-display); letter-spacing: -.01em; }
.dsa-close__stack svg { overflow: visible; }
.dsa-close .dsa-pl__note { display: none; }
.dsa-cthread__t { fill: #e0a44d; font: 600 17px var(--gft-font-mono); letter-spacing: 1px; opacity: calc(.75 + var(--on-5) * .25); }
.dsa-crow--0 { --o: var(--on-0); } .dsa-crow--1 { --o: var(--on-1); } .dsa-crow--2 { --o: var(--on-2); }
.dsa-crow--3 { --o: var(--on-3); } .dsa-crow--4 { --o: var(--on-4); } .dsa-crow--5 { --o: var(--on-5); }
.dsa-crow { background: color-mix(in srgb, var(--c) calc(var(--o, 0) * 16%), transparent); box-shadow: inset calc(var(--o, 0) * 5px) 0 0 var(--c); }
.dsa-crow__a { transform: translateX(calc(var(--o, 0) * 4px)); transition: transform .4s var(--gft-ease-out); }
.dsa-close__read { min-height: 12.5rem; margin: 1rem var(--dsa-edge) 0 1rem; padding: 1.5rem 1.8rem 1.6rem; border-color: #6bb68f99; background: #072d2be6; }
.dsa-cr h3 { margin: 0 0 .5rem; font-size: clamp(1.8rem, 2.6vw, 2.7rem); line-height: 1.1; }
.dsa-cr p:not(.dsa-kicker) { max-width: 56ch; font-size: 18px; line-height: 1.55; }
.dsa-cr p.dsa-cr__sel { display: flex; align-items: center; gap: .6rem; margin: 0 0 .85rem; font: 700 13px/1.4 var(--gft-font-mono); letter-spacing: .1em; text-transform: uppercase; color: #f0c27a; }
.dsa-cr__sel i { flex: none; width: .65rem; height: .65rem; background: #c98a2b; transform: rotate(45deg); }
.dsa-cr .dsa-kicker { font-size: 13px; }
.dsa-crow__k { font-size: 12px; }

@media (max-width: 1000px) {
  .dsa-int, .dsa-close, .dsa-prog__rules { grid-template-columns: 1fr; }
  .dsa-int__quote { grid-column: auto; }
  .dsa-int__text { align-self: start; }
  .dsa-sr__v { display: none; }
}
@media (max-width: 640px) {
  .dsa-sr__list { gap: .25rem; }
  .dsa-sr__s { padding-right: .15rem; }
  .dsa-sr__l { font: 700 11px/1.3 var(--gft-font-display); letter-spacing: 0; text-transform: none; overflow-wrap: normal; }
  .dsa-sr__n { font-size: 2rem; }
  .dsa-rule { padding: 1.4rem 1.2rem 1.5rem 4.2rem; }
  .dsa-rule__n { left: 1rem; font-size: 2.4rem; }
  .dsa-gate__in { min-height: 0; padding: 1.2rem; }
  .dsa-pl__route { display: none; }
  .dsa-cthread__t { display: none; }
  .dsa-close__read { min-height: 15rem; }
}
.dsa-seq[data-step='0'] .dsa-seq__n--0 { font-weight: 800; box-shadow: inset 0 -4px 0 #c98a2b; padding-inline: .6rem 1rem; }
.dsa-sec--sequence:has(.dsa-seq[data-step='0']) .dsa-sr__s--0 { --act: 1; color: #f0c27a; }
.dsa-seq[data-step='1'] .dsa-seq__n--1 { font-weight: 800; box-shadow: inset 0 -4px 0 #c98a2b; padding-inline: .6rem 1rem; }
.dsa-sec--sequence:has(.dsa-seq[data-step='1']) .dsa-sr__s--1 { --act: 1; color: #f0c27a; }
.dsa-sec--sequence:has(.dsa-seq[data-step='1']) .dsa-sr__s--0 { color: #9bd3b4; }
.dsa-seq[data-step='2'] .dsa-seq__n--2 { font-weight: 800; box-shadow: inset 0 -4px 0 #c98a2b; padding-inline: .6rem 1rem; }
.dsa-sec--sequence:has(.dsa-seq[data-step='2']) .dsa-sr__s--2 { --act: 1; color: #f0c27a; }
.dsa-sec--sequence:has(.dsa-seq[data-step='2']) .dsa-sr__s--0 { color: #9bd3b4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='2']) .dsa-sr__s--1 { color: #9bd3b4; }
.dsa-seq[data-step='3'] .dsa-seq__n--3 { font-weight: 800; box-shadow: inset 0 -4px 0 #c98a2b; padding-inline: .6rem 1rem; }
.dsa-sec--sequence:has(.dsa-seq[data-step='3']) .dsa-sr__s--3 { --act: 1; color: #f0c27a; }
.dsa-sec--sequence:has(.dsa-seq[data-step='3']) .dsa-sr__s--0 { color: #9bd3b4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='3']) .dsa-sr__s--1 { color: #9bd3b4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='3']) .dsa-sr__s--2 { color: #9bd3b4; }
.dsa-seq[data-step='4'] .dsa-seq__n--4 { font-weight: 800; box-shadow: inset 0 -4px 0 #c98a2b; padding-inline: .6rem 1rem; }
.dsa-sec--sequence:has(.dsa-seq[data-step='4']) .dsa-sr__s--4 { --act: 1; color: #f0c27a; }
.dsa-sec--sequence:has(.dsa-seq[data-step='4']) .dsa-sr__s--0 { color: #9bd3b4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='4']) .dsa-sr__s--1 { color: #9bd3b4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='4']) .dsa-sr__s--2 { color: #9bd3b4; }
.dsa-sec--sequence:has(.dsa-seq[data-step='4']) .dsa-sr__s--3 { color: #9bd3b4; }
/* Generated state rules for the dsa instruments (radios and data-step drive custom properties; no script). */
.dsa-inst{--is-0:0;--is-1:0;--is-2:0;--is-3:0}
.dsa-inst:has(input[value=connected]:checked){--is-0:1}
.dsa-inst:has(input[value=connected]:checked) .dsa-state--connected{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=connected]:checked) .dsa-sv--connected{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=intermittent]:checked){--is-1:1}
.dsa-inst:has(input[value=intermittent]:checked) .dsa-state--intermittent{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=intermittent]:checked) .dsa-sv--intermittent{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=offline]:checked){--is-2:1}
.dsa-inst:has(input[value=offline]:checked) .dsa-state--offline{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=offline]:checked) .dsa-sv--offline{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=recovery]:checked){--is-3:1}
.dsa-inst:has(input[value=recovery]:checked) .dsa-state--recovery{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-inst:has(input[value=recovery]:checked) .dsa-sv--recovery{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-rec{--on-0:0;--at-0:0;--on-1:0;--at-1:0;--on-2:0;--at-2:0;--on-3:0;--at-3:0}
.dsa-rec:has(input[value=g0]:checked){--on-0:1;--at-0:1}
.dsa-rec:has(input[value=g0]:checked) .dsa-rec__txt--0,.dsa-rec:has(input[value=g0]:checked) .dsa-ledger__c--0{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-rec:has(input[value=g1]:checked){--on-1:1;--at-0:1;--at-1:1}
.dsa-rec:has(input[value=g1]:checked) .dsa-rec__txt--1,.dsa-rec:has(input[value=g1]:checked) .dsa-ledger__c--1{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-rec:has(input[value=g2]:checked){--on-2:1;--at-0:1;--at-1:1;--at-2:1}
.dsa-rec:has(input[value=g2]:checked) .dsa-rec__txt--2,.dsa-rec:has(input[value=g2]:checked) .dsa-ledger__c--2{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-rec:has(input[value=g3]:checked){--on-3:1;--at-0:1;--at-1:1;--at-2:1;--at-3:1}
.dsa-rec:has(input[value=g3]:checked) .dsa-rec__txt--3,.dsa-rec:has(input[value=g3]:checked) .dsa-ledger__c--3{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-lg--0{--at:var(--at-0);--on:var(--on-0)}
.dsa-lg--1{--at:var(--at-1);--on:var(--on-1)}
.dsa-lg--2{--at:var(--at-2);--on:var(--on-2)}
.dsa-lg--3{--at:var(--at-3);--on:var(--on-3)}
.dsa-ev{--is-m:0;--is-v:0;--is-b:0}
.dsa-ev:has(input[value=manual]:checked){--is-m:1}
.dsa-ev:has(input[value=computer-vision]:checked){--is-v:1}
.dsa-ev:has(input[value=both]:checked){--is-b:1}
.dsa-int{--is-edge:0;--is-buffer:0;--is-manual:0;--is-recon:0}
.dsa-int:has(input[value=edge]:checked){--is-edge:1}
.dsa-int:has(input[value=edge]:checked) .dsa-int__c--edge{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-int:has(input[value=buffer]:checked){--is-buffer:1}
.dsa-int:has(input[value=buffer]:checked) .dsa-int__c--buffer{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-int:has(input[value=manual]:checked){--is-manual:1}
.dsa-int:has(input[value=manual]:checked) .dsa-int__c--manual{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-int:has(input[value=recon]:checked){--is-recon:1}
.dsa-int:has(input[value=recon]:checked) .dsa-int__c--recon{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-seq{--len:.03}
.dsa-seq[data-step='0']{--len:.03}
.dsa-seq[data-step='0'] .dsa-seq__c--0,.dsa-seq[data-step='0'] .dsa-seq__r--0{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-seq[data-step='0'] .dsa-x--0{opacity:1}
.dsa-seq[data-step='0'] .dsa-seq__n--0{background:#f6f4ef;color:#072d2b;border-color:#f6f4ef}
.dsa-seq[data-step='0'] .dsa-pl--4{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--c) 70%,transparent))}
.dsa-seq[data-step='0'] .dsa-pl--4 .dsa-pl__top{stroke-width:3.5px}
.dsa-seq[data-step='0'] .dsa-pl--from1{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='0'] .dsa-pl--from1 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='0'] .dsa-pl--from2{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='0'] .dsa-pl--from2 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='0'] .dsa-pl--from3{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='0'] .dsa-pl--from3 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='0'] .dsa-pl--from4{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='0'] .dsa-pl--from4 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='1']{--len:.25}
.dsa-seq[data-step='1'] .dsa-seq__c--1,.dsa-seq[data-step='1'] .dsa-seq__r--1{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-seq[data-step='1'] .dsa-x--1{opacity:1}
.dsa-seq[data-step='1'] .dsa-seq__n--1{background:#f6f4ef;color:#072d2b;border-color:#f6f4ef}
.dsa-seq[data-step='1'] .dsa-pl--3{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--c) 70%,transparent))}
.dsa-seq[data-step='1'] .dsa-pl--3 .dsa-pl__top{stroke-width:3.5px}
.dsa-seq[data-step='1'] .dsa-pl--from2{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='1'] .dsa-pl--from2 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='1'] .dsa-pl--from3{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='1'] .dsa-pl--from3 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='1'] .dsa-pl--from4{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='1'] .dsa-pl--from4 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='2']{--len:.5}
.dsa-seq[data-step='2'] .dsa-seq__c--2,.dsa-seq[data-step='2'] .dsa-seq__r--2{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-seq[data-step='2'] .dsa-x--2{opacity:1}
.dsa-seq[data-step='2'] .dsa-seq__n--2{background:#f6f4ef;color:#072d2b;border-color:#f6f4ef}
.dsa-seq[data-step='2'] .dsa-pl--2{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--c) 70%,transparent))}
.dsa-seq[data-step='2'] .dsa-pl--2 .dsa-pl__top{stroke-width:3.5px}
.dsa-seq[data-step='2'] .dsa-pl--from3{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='2'] .dsa-pl--from3 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='2'] .dsa-pl--from4{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='2'] .dsa-pl--from4 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='3']{--len:1}
.dsa-seq[data-step='3'] .dsa-seq__c--3,.dsa-seq[data-step='3'] .dsa-seq__r--3{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-seq[data-step='3'] .dsa-x--3{opacity:1}
.dsa-seq[data-step='3'] .dsa-seq__n--3{background:#f6f4ef;color:#072d2b;border-color:#f6f4ef}
.dsa-seq[data-step='3'] .dsa-pl--0{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--c) 70%,transparent))}
.dsa-seq[data-step='3'] .dsa-pl--0 .dsa-pl__top{stroke-width:3.5px}
.dsa-seq[data-step='3'] .dsa-pl--from4{opacity:.3;transform:translateY(-26px)}
.dsa-seq[data-step='3'] .dsa-pl--from4 .dsa-pl__top{stroke-dasharray:7 6}
.dsa-seq[data-step='4']{--len:1}
.dsa-seq[data-step='4'] .dsa-seq__c--4,.dsa-seq[data-step='4'] .dsa-seq__r--4{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-seq[data-step='4'] .dsa-x--4{opacity:1}
.dsa-seq[data-step='4'] .dsa-seq__n--4{background:#f6f4ef;color:#072d2b;border-color:#f6f4ef}
.dsa-seq[data-step='4'] .dsa-pl--1{filter:drop-shadow(0 0 14px color-mix(in srgb,var(--c) 70%,transparent))}
.dsa-seq[data-step='4'] .dsa-pl--1 .dsa-pl__top{stroke-width:3.5px}
.dsa-op{--sel:0}
.dsa-op:has(input[value=p0]:checked){--sel:0}
.dsa-op:has(input[value=p0]:checked) .dsa-op__txt--0{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-op:has(input[value=p0]:checked) .dsa-op__sec--0{fill:#c98a2b66;stroke:#c98a2b;stroke-opacity:1}
.dsa-op:has(input[value=p0]:checked) .dsa-op__lab--0{color:#f6f4ef;text-decoration:underline;text-decoration-color:#c98a2b;text-decoration-thickness:3px;text-underline-offset:.3em}
.dsa-op:has(input[value=p1]:checked){--sel:1}
.dsa-op:has(input[value=p1]:checked) .dsa-op__txt--1{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-op:has(input[value=p1]:checked) .dsa-op__sec--1{fill:#c98a2b66;stroke:#c98a2b;stroke-opacity:1}
.dsa-op:has(input[value=p1]:checked) .dsa-op__lab--1{color:#f6f4ef;text-decoration:underline;text-decoration-color:#c98a2b;text-decoration-thickness:3px;text-underline-offset:.3em}
.dsa-op:has(input[value=p2]:checked){--sel:2}
.dsa-op:has(input[value=p2]:checked) .dsa-op__txt--2{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-op:has(input[value=p2]:checked) .dsa-op__sec--2{fill:#c98a2b66;stroke:#c98a2b;stroke-opacity:1}
.dsa-op:has(input[value=p2]:checked) .dsa-op__lab--2{color:#f6f4ef;text-decoration:underline;text-decoration-color:#c98a2b;text-decoration-thickness:3px;text-underline-offset:.3em}
.dsa-op:has(input[value=p3]:checked){--sel:3}
.dsa-op:has(input[value=p3]:checked) .dsa-op__txt--3{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-op:has(input[value=p3]:checked) .dsa-op__sec--3{fill:#c98a2b66;stroke:#c98a2b;stroke-opacity:1}
.dsa-op:has(input[value=p3]:checked) .dsa-op__lab--3{color:#f6f4ef;text-decoration:underline;text-decoration-color:#c98a2b;text-decoration-thickness:3px;text-underline-offset:.3em}
.dsa-prog{--fill:.165}
.dsa-prog:has(input[value=gate0]:checked){--fill:.165}
.dsa-prog:has(input[value=gate0]:checked) .dsa-pd--0{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-prog:has(input[value=gate0]:checked) .dsa-rel__g--0{--now:1}
.dsa-prog:has(input[value=gate0]:checked) .dsa-rel__g--0 .dsa-rel__d{fill:#c98a2b;stroke:#f0c27a;transform:scale(1.18)}
.dsa-prog:has(input[value=gate0]:checked) .dsa-rel__g--0 .dsa-rel__halo{opacity:.95;stroke:#f0c27a}
.dsa-prog:has(input[value=gate0]:checked) .dsa-rel__g--0 text{fill:#f6f4ef}
.dsa-prog:has(input[value=gate1]:checked){--fill:.527}
.dsa-prog:has(input[value=gate1]:checked) .dsa-pd--1{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-prog:has(input[value=gate1]:checked) .dsa-rel__g--1{--now:1}
.dsa-prog:has(input[value=gate1]:checked) .dsa-rel__g--0 .dsa-rel__d{fill:#3f8f6b}
.dsa-prog:has(input[value=gate1]:checked) .dsa-rel__g--1 .dsa-rel__d{fill:#c98a2b;stroke:#f0c27a;transform:scale(1.18)}
.dsa-prog:has(input[value=gate1]:checked) .dsa-rel__g--1 .dsa-rel__halo{opacity:.95;stroke:#f0c27a}
.dsa-prog:has(input[value=gate1]:checked) .dsa-rel__g--1 text{fill:#f6f4ef}
.dsa-prog:has(input[value=gate2]:checked){--fill:.89}
.dsa-prog:has(input[value=gate2]:checked) .dsa-pd--2{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-prog:has(input[value=gate2]:checked) .dsa-rel__g--2{--now:1}
.dsa-prog:has(input[value=gate2]:checked) .dsa-rel__g--0 .dsa-rel__d{fill:#3f8f6b}
.dsa-prog:has(input[value=gate2]:checked) .dsa-rel__g--1 .dsa-rel__d{fill:#3f8f6b}
.dsa-prog:has(input[value=gate2]:checked) .dsa-rel__g--2 .dsa-rel__d{fill:#c98a2b;stroke:#f0c27a;transform:scale(1.18)}
.dsa-prog:has(input[value=gate2]:checked) .dsa-rel__g--2 .dsa-rel__halo{opacity:.95;stroke:#f0c27a}
.dsa-prog:has(input[value=gate2]:checked) .dsa-rel__g--2 text{fill:#f6f4ef}
.dsa-close{--on-0:0;--on-1:0;--on-2:0;--on-3:0;--on-4:0;--on-5:0;--on-0:1}
.dsa-close:has(.dsa-crow:is(:hover,:focus-visible),.dsa-cpl:hover,.dsa-cthread:hover){--on-0:0}
.dsa-close:has(.dsa-crow--0:is(:hover,:focus-visible),.dsa-cpl--0:hover){--on-0:1}
.dsa-close:has(.dsa-crow--0:is(:hover,:focus-visible),.dsa-cpl--0:hover) .dsa-cr--0{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-close:has(.dsa-crow--1:is(:hover,:focus-visible),.dsa-cpl--1:hover){--on-1:1}
.dsa-close:has(.dsa-crow--1:is(:hover,:focus-visible),.dsa-cpl--1:hover) .dsa-cr--1{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-close:has(.dsa-crow--2:is(:hover,:focus-visible),.dsa-cpl--2:hover){--on-2:1}
.dsa-close:has(.dsa-crow--2:is(:hover,:focus-visible),.dsa-cpl--2:hover) .dsa-cr--2{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-close:has(.dsa-crow--3:is(:hover,:focus-visible),.dsa-cpl--3:hover){--on-3:1}
.dsa-close:has(.dsa-crow--3:is(:hover,:focus-visible),.dsa-cpl--3:hover) .dsa-cr--3{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-close:has(.dsa-crow--4:is(:hover,:focus-visible),.dsa-cpl--4:hover){--on-4:1}
.dsa-close:has(.dsa-crow--4:is(:hover,:focus-visible),.dsa-cpl--4:hover) .dsa-cr--4{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-close:has(.dsa-crow--5:is(:hover,:focus-visible),.dsa-cthread:hover){--on-5:1}
.dsa-close:has(.dsa-crow--5:is(:hover,:focus-visible),.dsa-cthread:hover) .dsa-cr--5{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
.dsa-close:not(:has(.dsa-crow:is(:hover,:focus-visible),.dsa-cpl:hover,.dsa-cthread:hover)) .dsa-cr--0{visibility:visible;opacity:1;transition:opacity .4s var(--gft-ease-out) .3s,visibility 0s}
