/* /company/ only. Classes: cx- (page instruments) and company-mosaic (splash structure).
   HTML is the composed end state. Pre-states live only under :root[data-m-go]; each block's entrance starts when about
   38 percent of the screen holds it ([data-cx-in], set by the page script), runs once and settles within about 900 ms.
   Animated properties: transform, opacity, clip-path and filter. Loops run only while their host carries data-m-on.
   Scroll-linked hand-overs are longhands, alone on their element, transform and opacity only. */
@property --cx-px{syntax:'<number>';inherits:false;initial-value:0}
@property --cx-py{syntax:'<number>';inherits:false;initial-value:0}
body[data-page=company] main{overflow-x:clip}
body[data-page=company]{--cx-fw:min(560px,calc(70svh * .909))}
:root{--cx-hexclip:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);--cx-mono:var(--gft-font-mono);--cx-ink2:#33433d;--cx-on-dark:#eef4f0;--cx-on-dark2:#dfeae3;--cx-ochre-l:#f0c47e;--cx-deep:#05232a}

/* The kit's section-level textile entrance is replaced by each block's authored choreography below; the data-m names
   remain the block's entrance labels. */
:root[data-m-go] main .cx-sec[data-m],:root[data-m-go] main .cx-scard[data-m]{opacity:1;transform:none;clip-path:none;animation-name:none}

/* ---------- shared pieces ---------- */
.cx-sec{position:relative}
.cx-sec h2{font-size:clamp(2.2rem,3.9vw,3.9rem);line-height:1.04;max-width:18ch}
.cx-hw{display:inline-block}
.cx-cap{margin:0 0 10px;font:600 13px/1.4 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--gft-forest)}
.cx-lede{font-size:17px;line-height:1.65;max-width:52ch}
.cx-capline{margin-top:14px;font:13px/1.5 var(--cx-mono);letter-spacing:.04em;color:var(--cx-on-dark2)}
.cx-capline--ink{color:var(--cx-ink2)}
.cx-record>.cx-capline{margin-top:52px}
.cx-chip{display:inline-flex;padding:6px 10px;background:var(--gft-forest);color:var(--gft-paper);font:600 13px/1.3 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase}
.cx-sec .gft-eyebrow{font-size:13px;letter-spacing:.08em;margin-bottom:18px}
.cx-sec .gft-cite{font-size:13px}
.cx-step{font:600 13px/1.4 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase}
.cx-stack{display:grid}
.cx-stack>*{grid-area:1/1;min-width:0}
/* A swap fades the outgoing text out first, then brings the new text in: two texts never share a place, and every
   swapping block reserves the height of its longest state (stacked in one grid cell). */
.cx-read{grid-area:1/1;min-width:0;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity 130ms ease-in,transform 130ms ease-in,visibility 0s linear 130ms}
.cx-read[data-on]{opacity:1;visibility:visible;transform:none;transition:opacity 320ms var(--gft-ease-out) 150ms,transform 320ms var(--gft-ease-out) 150ms,visibility 0s}
input[type=radio]{accent-color:var(--gft-ochre)}
.cx-tab input,.cx-fig input,.cx-rung input,.cx-acc__row input,.cx-ctab input,.cx-seg__opt input,.cx-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
:is(.cx-tab,.cx-fig,.cx-rung,.cx-acc__row,.cx-ctab,.cx-seg__opt,.cx-switch label):has(input:focus-visible){outline:3px solid var(--gft-ochre);outline-offset:3px}
.cx-btns{display:inline-flex;gap:8px}
.cx-btns button{width:48px;height:48px;border:1px solid currentColor;background:transparent;font-size:20px}

/* Heading entrances: whole words (the spaces stay), no masks, so nothing clips mid-entrance. */
:root[data-m-go] [data-cx-enter]:not([data-cx-in]) .cx-h .cx-hw{opacity:0}
:root[data-m-go] [data-cx-in] .cx-h .cx-hw{animation-duration:620ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(min(var(--w) * 34ms, 250ms));animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=blur] .cx-hw{animation-name:cx-w-blur}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=turn] .cx-hw{animation-name:cx-w-turn;transform-origin:50% 100%}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=skew] .cx-hw{animation-name:cx-w-skew}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=drop] .cx-hw{animation-name:cx-w-drop}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=zoom] .cx-hw{animation-name:cx-w-zoom}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=swing] .cx-hw{animation-name:cx-w-swing;transform-origin:0 50%}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=rise] .cx-hw{animation-name:cx-w-rise}
:root[data-m-go] [data-cx-in] .cx-h[data-fx=track] .cx-hw{animation-name:cx-w-track;transform-origin:0 100%}
@keyframes cx-w-blur{from{opacity:0;transform:translateY(.3em);filter:blur(10px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes cx-w-turn{from{opacity:0;transform:perspective(600px) rotateX(-80deg)}to{opacity:1;transform:none}}
@keyframes cx-w-skew{from{opacity:0;transform:translateY(.55em) skewY(8deg)}to{opacity:1;transform:none}}
@keyframes cx-w-drop{from{opacity:0;transform:translateY(-.7em)}to{opacity:1;transform:none}}
@keyframes cx-w-zoom{from{opacity:0;transform:scale(.62);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes cx-w-swing{from{opacity:0;transform:perspective(700px) rotateY(62deg)}to{opacity:1;transform:none}}
@keyframes cx-w-rise{from{opacity:0;transform:translateY(.8em)}to{opacity:1;transform:none}}
@keyframes cx-w-track{from{opacity:0;transform:scaleX(.45)}to{opacity:1;transform:none}}
/* A generic second phase for copy under a heading. */
:root[data-m-go] [data-cx-enter]:not([data-cx-in]) :is(.cx-lede,.gft-eyebrow){opacity:0;transform:translateY(14px)}
:root[data-m-go] [data-cx-in] :is(.cx-lede,.gft-eyebrow){animation-name:cx-up;animation-duration:620ms;animation-timing-function:var(--gft-ease-out);animation-delay:120ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ---------- 1 splash: the mosaic assembles the mark hexagon ---------- */
[data-splash=company]{min-height:calc(84svh - 88px)}
[data-splash=company] h1{font-size:clamp(3.4rem,min(6.8vw,10.6svh),6.4rem);max-width:11ch}
[data-splash=company] .gft-splash__lede{font-size:19px;color:#dce8e1}
[data-splash=company] .gft-splash__content{pointer-events:none}
[data-splash=company] .gft-splash__content :is(a,button){pointer-events:auto}
:root[data-m-go] [data-splash=company] h1[data-m-in]{animation-name:cx-h1-wdth;animation-duration:700ms;animation-timing-function:var(--gft-ease-out);animation-delay:0ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal;transform-origin:0 100%}
@keyframes cx-h1-wdth{from{opacity:.12;transform:scaleX(.55)}to{opacity:1;transform:none}}
@media(min-width:1001px){[data-splash=company] .gft-splash__structure{inset:0 0 0 34%}}
[data-splash=company] .gft-splash__structure::after{background:linear-gradient(90deg,#072d2b 0%,#072d2b9c 10%,#072d2b00 34%)}
[data-splash=company] :is(.gft-splash__data,.gft-splash__data span,.gft-splash__caption,.gft-splash__position,.gft-splash__cue,.gft-splash__signal,.gft-splash__signal span,.gft-eyebrow){font-size:13px!important}
[data-splash=company] :is(.gft-splash__caption,.gft-splash__position,.gft-splash__data,.gft-splash__signal){color:#dbe8e0}
body[data-page=company] :is(.gft-eyebrow,.gft-calm,.gft-brand span,.gft-desktop-nav .gft-nav-group summary,.gft-nav-panel .gft-eyebrow){font-size:13px!important}
body[data-page=company] .gft-footer :is(.gft-eyebrow,.gft-footer__bottom a,.gft-footer__bottom button,.gft-footer__bottom>span,.gft-footer__next-k){font-size:13px!important}

.company-mosaic{position:relative;width:100%;height:100%;min-height:560px;overflow-anchor:none}
.company-mosaic__field{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible}
.company-mosaic__layer{translate:calc(var(--cx-px) * 1px) calc(var(--cx-py) * 1px);overflow-anchor:none}
.company-mosaic__cell{transform-box:fill-box;transform-origin:center;color:#6f938f}
.company-mosaic__cell polygon{fill:currentColor;fill-opacity:.12;stroke:currentColor;stroke-width:.9;stroke-opacity:.55}
.company-mosaic__cell path{stroke:#e2ebe6;stroke-width:.8;stroke-opacity:.28}
.company-mosaic__cell--outline{color:var(--gft-sage)}
.company-mosaic__cell--outline polygon{fill-opacity:.34;stroke-opacity:1}
.company-mosaic__cell--leaf{color:var(--gft-leaf)}
.company-mosaic__cell--leaf polygon{fill-opacity:.5;stroke:var(--gft-sage);stroke-opacity:.8}
.company-mosaic__cell--signal{color:#877fe6}
.company-mosaic__cell--signal polygon{fill:var(--gft-indigo);fill-opacity:.8;stroke:#d2d7e5;stroke-opacity:.95}
.company-mosaic__cell--signal path{stroke:#f6f4ef;stroke-opacity:.9}
.company-mosaic__group{opacity:.62;transition:opacity 480ms var(--gft-ease-out)}
.company-mosaic__group--quiet{opacity:.72}
[data-cx-state=boundary] .company-mosaic__group--outline,[data-cx-state=record] .company-mosaic__group--signal{opacity:1}
[data-cx-state=routine] .company-mosaic__group--leaf{opacity:.9}
.company-mosaic__weave{opacity:0;transition:opacity 480ms var(--gft-ease-out)}
.company-mosaic__weave path{stroke:var(--cx-ochre-l);stroke-width:2.2;stroke-linecap:round}
[data-cx-state=routine] .company-mosaic__weave{opacity:.9}
.company-mosaic__mark{color:var(--gft-sage);opacity:.42}
.company-mosaic__lift{stroke:var(--gft-sage);stroke-width:5;stroke-linejoin:round;transform-box:fill-box;transform-origin:center;opacity:.75;transition:stroke 400ms}
[data-cx-state=boundary] .company-mosaic__lift{stroke:#bfe3cf}
.company-mosaic__ping{transform-box:fill-box;transform-origin:center}
.company-mosaic__measurements circle{fill:var(--gft-ochre);stroke:var(--gft-paper);stroke-width:1.4}
.company-mosaic__measurements .company-mosaic__ring{fill:none;stroke:var(--cx-ochre-l);stroke-width:2;opacity:.6}
[data-cx-state=record] .company-mosaic__measurements .company-mosaic__ring{opacity:1;stroke-width:3}
.company-mosaic__readout{position:absolute;right:5%;bottom:17%;z-index:2;width:min(400px,40%);display:grid;gap:10px;padding:16px 18px 14px;border:1px solid #a3c8b366;background:#062826eb;color:var(--cx-on-dark);pointer-events:auto;box-shadow:0 24px 60px #0007}
.company-mosaic__k{margin:0;font:600 13px/1.4 var(--cx-mono);letter-spacing:.1em;text-transform:uppercase;color:#cfe8da}
.company-mosaic__k span{display:inline-block}
.company-mosaic__wave{display:block;width:100%;height:44px}
.company-mosaic__trace path{stroke:var(--gft-sage);stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.company-mosaic__states{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.company-mosaic__state{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:58px;padding:7px 10px;border:1px solid #a3c8b380;background:transparent;color:var(--cx-on-dark);font-size:18px;font-weight:800;letter-spacing:-.02em;text-align:left;transition:background 260ms,color 260ms}
.company-mosaic__state i{font:600 13px/1 var(--cx-mono);font-style:normal;letter-spacing:.06em;color:#cfe8da}
.company-mosaic__state[aria-pressed=true]{background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night)}
.company-mosaic__state[aria-pressed=true] i{color:var(--gft-night)}
.company-mosaic__state:focus-visible{outline:3px solid var(--gft-ochre);outline-offset:2px}
.company-mosaic__note{margin:0;font:13px/1.4 var(--cx-mono);color:#d6e6dc}
/* Entrance in three phases: (a) cells converge centre outwards, (b) the outline cells light in a running loop,
   (c) the nine signal nodes ping and the read-out label rolls in from blank. */
:root[data-m-go] .company-mosaic__cell{animation-name:company-mosaic-cell-in;animation-duration:380ms;animation-timing-function:var(--gft-ease-out);animation-delay:var(--company-cell-delay);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .company-mosaic__cell--outline polygon{animation-name:company-mosaic-run;animation-duration:240ms;animation-timing-function:ease-out;animation-delay:calc(450ms + var(--company-cell-run));animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .company-mosaic__ping{animation-name:company-mosaic-ping;animation-duration:300ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(600ms + var(--i) * 28ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .company-mosaic__readout{animation-name:company-mosaic-read-in;animation-duration:620ms;animation-timing-function:var(--gft-ease-out);animation-delay:240ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .company-mosaic__k span{animation-name:company-mosaic-roll;animation-duration:300ms;animation-timing-function:steps(14,end);animation-delay:600ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .company-mosaic__readout[data-m-on] .company-mosaic__trace{animation-name:cx-trace;animation-duration:5s;animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes company-mosaic-cell-in{from{opacity:.08;transform:translate(var(--company-cell-x),var(--company-cell-y)) scale(.6)}to{opacity:1;transform:none}}
@keyframes company-mosaic-run{from{opacity:.15}55%{opacity:1}to{opacity:1}}
@keyframes company-mosaic-ping{from{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.5)}to{opacity:1;transform:none}}
@keyframes company-mosaic-read-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes company-mosaic-roll{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes cx-trace{to{transform:translateX(-50%)}}
/* Hand-over 1 to 2: the outline lifts off the mosaic while the cells dim. */
@supports (animation-timeline:view()){
  :root[data-m-go] .company-mosaic__lift{animation-name:company-lift;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--gft-splash;animation-range-start:exit 0%;animation-range-end:exit 80%}
  :root[data-m-go] .company-mosaic__cells{animation-name:cx-dim;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--gft-splash;animation-range-start:exit 0%;animation-range-end:exit 80%}
}
@keyframes company-lift{from{opacity:.75;transform:translateY(0) scale(.94)}to{opacity:1;transform:translateY(120px) scale(1)}}
@keyframes cx-dim{from{opacity:1}to{opacity:.4}}

/* ---------- 2 the lens radar ---------- */
.cx-lens{background:var(--gft-night);color:var(--cx-on-dark);padding:0 0 clamp(40px,5vw,72px);view-timeline-name:--cx-lens;view-timeline-axis:block}
.cx-lens__panel{position:relative;margin-inline:clamp(0px,1.6vw,24px);background:var(--gft-forest);box-shadow:0 30px 80px #0008,inset 0 1px 0 #ffffff1f;overflow:clip;padding-block:clamp(16px,1.8vw,26px) clamp(40px,4.4vw,64px)}
.cx-lens__lattice,.cx-doors__lattice{position:absolute;inset:0;overflow:clip;pointer-events:none}
.cx-lens__lattice{color:var(--gft-sage);opacity:.2}
.cx-lattice{display:block;width:100%;height:100%}
.cx-lens__in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,.46fr) minmax(0,1fr);grid-template-areas:'date tabs' 'copy fig';column-gap:clamp(24px,3vw,48px);row-gap:clamp(14px,2vw,26px)}
.cx-date{grid-area:date;align-self:end;display:grid;gap:2px;margin:0}
.cx-date small{font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-on-dark2)}
.cx-date b{font:700 clamp(22px,1.8vw,27px)/1.2 var(--cx-mono);letter-spacing:-.02em;color:var(--cx-ochre-l)}
.cx-tabs{grid-area:tabs;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.cx-tabs .cx-cap{grid-column:1/-1;margin:0;color:var(--cx-on-dark2)}
.cx-tab{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:14px;align-items:center;min-height:66px;padding:10px 16px;border:1px solid #cfe8da55;background:#ffffff0d;cursor:pointer;transition:background 260ms,color 260ms,border-color 260ms}
.cx-tab__n{grid-row:1/3;font:700 22px/1 var(--cx-mono);color:var(--cx-ochre-l)}
.cx-tab__t{font-size:20px;font-weight:850;letter-spacing:-.03em;line-height:1.1}
.cx-tab__d{font:13px/1.35 var(--cx-mono);letter-spacing:.02em;color:var(--cx-on-dark2)}
.cx-tab:hover{border-color:#cfe8da}
.cx-tab[data-on]{background:var(--gft-paper);border-color:var(--gft-paper);color:var(--gft-night)}
.cx-tab[data-on] .cx-tab__n{color:#8a5a12}
.cx-tab[data-on] .cx-tab__d{color:var(--cx-ink2)}
.cx-lens__copy{grid-area:copy;align-self:start;padding-top:8px}
.cx-lens__copy h2{margin:0 0 18px;font-size:clamp(2.1rem,3.1vw,3.2rem);color:var(--gft-paper)}
.cx-lens__copy .cx-lede{color:var(--cx-on-dark)}
.cx-lens__fig{grid-area:fig;min-width:0}
.cx-hex__sink{transform-origin:60% 50%;overflow-anchor:none}
.cx-hex{position:relative;width:100%;max-width:calc((100svh - 230px) * 1.5625);margin-left:auto}
.cx-hex__box{position:relative;aspect-ratio:1000/640;container-type:inline-size}
.cx-hex__scan{position:absolute;inset:0 0 0 26%;--m-accent:#bfe3cf55}
.cx-hex__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cx-hex__fill{fill:#062826;fill-opacity:.55}
.cx-hex__edge{stroke:var(--gft-sage);stroke-width:4;stroke-linejoin:round}
.cx-hex__inner{stroke:var(--gft-paper);stroke-opacity:.3;stroke-dasharray:5 9}
.cx-hex__tri{stroke:#b8c1d6;stroke-opacity:.5;stroke-width:1.5}
.cx-hex__draw{opacity:0;transition:opacity 130ms ease-in}
.cx-hex__draw[data-on]{opacity:1;transition:opacity 360ms var(--gft-ease-out) 150ms}
.cx-hex__spoke{stroke:#b8c1d6;stroke-opacity:.8;stroke-width:2}
.cx-hex__core{fill:var(--gft-night);stroke:var(--gft-sage);stroke-width:2}
.cx-hex__ring{stroke:var(--gft-ochre);stroke-width:2.5}
.cx-hex__dot{fill:var(--gft-ochre)}
.cx-hex__mnode{fill:var(--gft-ochre);stroke:var(--gft-paper);stroke-width:2}
.cx-hex__pulse{transform-box:fill-box;transform-origin:center}
.cx-hex__label{fill:var(--gft-paper);font:600 17px var(--cx-mono);letter-spacing:.05em}
.cx-hex__label--on{fill:var(--gft-paper)}
.cx-hex__warp{stroke:var(--gft-sage);stroke-opacity:.55;stroke-width:1.6}
.cx-hex__weft{stroke:#9faac7;stroke-opacity:.75;stroke-width:1.6}
.cx-hex__route{stroke:var(--gft-ochre);stroke-width:3.5;stroke-linejoin:round}
.cx-hex__layer{fill:#0b4441;stroke:var(--gft-sage);stroke-width:1.5}
.cx-hex__layer--ml{fill:var(--gft-indigo)}
.cx-hex__leader{stroke:var(--cx-ochre-l);stroke-width:2;stroke-dasharray:4 5}
.cx-hex__aimwrap{transform-box:view-box;transform-origin:600px 320px}
.cx-hex__aim{fill:var(--gft-ochre);fill-opacity:.16;stroke:var(--cx-ochre-l);stroke-opacity:.7;stroke-width:1.5;transform-box:view-box;transform-origin:600px 320px;transform:rotate(var(--cx-aim,-120deg));transition:transform 760ms var(--gft-ease-in-out)}
.cx-lens [data-show=feasibility]{--cx-aim:-120deg}.cx-lens [data-show=performance]{--cx-aim:0deg}.cx-lens [data-show=digital]{--cx-aim:120deg}
.cx-node{position:absolute;z-index:2;width:0;height:0;cursor:pointer}
.cx-node i{position:absolute;left:0;top:0;width:68px;height:59px;translate:-50% -50%;display:grid;place-items:center;isolation:isolate;background:var(--gft-sage);clip-path:var(--cx-hexclip);font:700 18px/1 var(--cx-mono);font-style:normal;color:var(--gft-paper);transition:scale 260ms var(--gft-ease-out)}
.cx-node i::before{content:'';position:absolute;inset:3px;z-index:-1;background:var(--gft-forest);clip-path:var(--cx-hexclip);transition:background 260ms}
.cx-node:hover i{scale:1.1}
.cx-node[data-on] i::before{background:var(--gft-ochre)}
.cx-node[data-on] i{color:var(--gft-night)}
.cx-node b{position:absolute;white-space:nowrap;padding:2px 8px;background:var(--gft-night);font-size:16px;font-weight:800;letter-spacing:-.01em;color:var(--gft-paper)}
.cx-node--left b{left:42px;top:0;translate:0 -50%}
.cx-node--below b{left:0;top:38px;translate:-50% 0}
.cx-cards{position:absolute;inset:0;z-index:3;pointer-events:none}
.cx-card{position:absolute;width:34%;padding:16px 18px 14px;background:#f6f4effa;color:var(--gft-ink);border-top:5px solid var(--gft-ochre);box-shadow:0 26px 60px #0007;pointer-events:auto;opacity:0;visibility:hidden;clip-path:inset(0 0 0 100%);transition:opacity 120ms ease-in,clip-path 0s linear 140ms,visibility 0s linear 140ms}
.cx-card[data-on]{opacity:1;visibility:visible;clip-path:inset(0);transition:clip-path 280ms var(--gft-ease-out) 140ms,opacity 140ms ease-out 140ms,visibility 0s}
.cx-card h3{margin:10px 0 8px;font-size:clamp(20px,2.3cqw,24px);line-height:1.15;letter-spacing:-.02em}
.cx-card p{font-size:clamp(15px,1.75cqw,17px);line-height:1.5;color:#1f2d28}
.cx-card .cx-card__meta{margin-top:8px;font-size:15px;line-height:1.45;color:var(--cx-ink2)}
.cx-card__meta b{color:var(--gft-forest)}
.cx-card--feasibility{left:0;top:9%}
.cx-card--digital{left:0;bottom:6%}
.cx-card--performance{right:-1%;top:56%;width:38%}
/* heddle: lattice columns lift alternately, the hexagon edge draws in two halves, the aim sweeps, the card rises. */
:root[data-m-go] .cx-lens:not([data-cx-in]) .cx-lattice__a{opacity:0;transform:translateY(-16px)}
:root[data-m-go] .cx-lens:not([data-cx-in]) .cx-lattice__b{opacity:0;transform:translateY(16px)}
:root[data-m-go] .cx-lens:not([data-cx-in]) .cx-hex__edge--a{clip-path:inset(0 100% 0 0)}
:root[data-m-go] .cx-lens:not([data-cx-in]) .cx-hex__edge--b{clip-path:inset(0 0 0 100%)}
:root[data-m-go] .cx-lens:not([data-cx-in]) :is(.cx-hex__aimwrap,.cx-cards){opacity:0}
:root[data-m-go] .cx-lens[data-cx-in] :is(.cx-lattice__a,.cx-lattice__b){animation-name:cx-heddle-a;animation-duration:520ms;animation-timing-function:var(--gft-ease-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-lens[data-cx-in] .cx-lattice__b{animation-name:cx-heddle-b}
:root[data-m-go] .cx-lens[data-cx-in] .cx-hex__edge--a{animation-name:cx-draw-l;animation-duration:600ms;animation-timing-function:var(--gft-ease-in-out);animation-delay:80ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-lens[data-cx-in] .cx-hex__edge--b{animation-name:cx-draw-r;animation-duration:600ms;animation-timing-function:var(--gft-ease-in-out);animation-delay:80ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-lens[data-cx-in] .cx-hex__aimwrap{animation-name:cx-aim-in;animation-duration:600ms;animation-timing-function:var(--gft-ease-out);animation-delay:220ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-lens[data-cx-in] .cx-cards{animation-name:cx-card-in;animation-duration:480ms;animation-timing-function:var(--gft-ease-out);animation-delay:420ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-heddle-a{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:none}}
@keyframes cx-heddle-b{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes cx-draw-l{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes cx-draw-r{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}
@keyframes cx-aim-in{from{opacity:0;transform:rotate(-70deg)}to{opacity:1;transform:none}}
@keyframes cx-card-in{from{opacity:0;transform:translate(28px,26px) scale(.94)}to{opacity:1;transform:none}}
/* Hand-over 2 to 3: the lens hexagon sinks and shrinks into the size of the mill on the fibre. */
@supports (animation-timeline:view()){
  :root[data-m-go] .cx-hex__sink{animation-name:cx-sink;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-lens;animation-range-start:exit 18%;animation-range-end:exit 78%}
}
@keyframes cx-sink{from{opacity:1;transform:none}to{opacity:.3;transform:translateY(120px) scale(.32)}}

/* ---------- 3 the gap: fibre flow and mill vessel ---------- */
.cx-gap{background:var(--gft-paper);color:var(--gft-ink);padding-block:clamp(40px,5vw,72px) clamp(28px,3vw,40px);view-timeline-name:--cx-gap;view-timeline-axis:block}
.cx-gap__head,.cx-account__head,.cx-truth__head,.cx-gates__head{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(24px,4vw,64px);align-items:end;margin-bottom:clamp(14px,2vw,26px)}
.cx-gap__head h2,.cx-account__head h2,.cx-truth__head h2,.cx-gates__head h2{margin:0}
.cx-flow{position:relative;height:clamp(260px,37svh,360px);margin-block:18px 10px;container-type:size}
.cx-flow__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cx-row{transform-box:fill-box}
.cx-row path{vector-effect:non-scaling-stroke;transition:opacity 420ms var(--gft-ease-out),stroke 420ms}
.cx-row__raw{stroke:var(--gft-forest);stroke-width:1.8;opacity:.5}
.cx-row__local{stroke:#a86e15;stroke-width:2.6;opacity:0}
.cx-row.is-loc .cx-row__raw{opacity:0}
.cx-row.is-loc .cx-row__local{opacity:1}
[data-show=raw] .cx-row__raw{opacity:.9;stroke:var(--gft-forest)}
[data-show=local] .cx-row__raw{opacity:.25}
[data-show=target] .cx-row__raw{opacity:.3}
[data-show=target] .cx-row__local{stroke-dasharray:9 7}
[data-show=mid] .cx-row__raw{opacity:.45}
.cx-comets{position:absolute;inset:0;pointer-events:none;overflow:clip}
.cx-comet{position:absolute;left:0;top:var(--y);width:70px;height:3px;margin-top:-1px;background:linear-gradient(90deg,#c98a2b00,var(--gft-ochre));opacity:0}
:root[data-m-go] .cx-flow[data-m-on] .cx-comet{animation-name:cx-comet;animation-duration:6.5s;animation-timing-function:linear;animation-delay:var(--d);animation-iteration-count:infinite}
@keyframes cx-comet{0%{opacity:0;transform:translateX(-80px)}8%{opacity:1}22%{opacity:1;transform:translateX(26cqw)}30%{opacity:0;transform:translateX(30cqw)}100%{opacity:0;transform:translateX(30cqw)}}
.cx-flow__tag{position:absolute;z-index:2;padding:6px 10px;background:var(--gft-paper);border:1px solid #0e4d4a55;font:600 13px/1.3 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--gft-forest)}
.cx-flow__tag b{font-size:17px;color:var(--gft-ink)}
.cx-flow__tag--src{left:max(24px,calc((100% - min(1440px,100% - 96px)) / 2));top:0}
.cx-flow__tag--out{right:max(24px,calc((100% - min(1440px,100% - 96px)) / 2));bottom:4%}
.cx-mill{position:absolute;left:66%;top:31%;z-index:3;width:clamp(150px,13.5vw,200px);translate:-50% -50%}
.cx-mill__go{position:relative;overflow-anchor:none}
.cx-mill__vessel{position:relative;aspect-ratio:200/174}
.cx-mill__clip{position:absolute;inset:0;clip-path:var(--cx-hexclip);background:#e9eeed;container-type:size}
.cx-mill__fill{position:absolute;inset:0;background:linear-gradient(#d29a43,#a86e15);clip-path:inset(calc(100% - var(--cx-f) * 1%) 0 0 0);transition:clip-path 620ms var(--gft-ease-in-out)}
.cx-mill__level{position:absolute;left:0;right:0;bottom:0;height:3px;translate:0 calc(var(--cx-f) * -1cqh);transition:translate 620ms var(--gft-ease-in-out)}
.cx-mill__level i{display:block;height:100%;background:var(--gft-night);transform-origin:center}
:root[data-m-go] .cx-flow[data-m-on] .cx-mill__level i{animation-name:cx-breathe-x;animation-duration:3.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cx-breathe-x{from{transform:scaleX(.7)}to{transform:scaleX(1)}}
.cx-mill__edge{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cx-mill__edge path{stroke:var(--gft-forest);stroke-width:4;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.cx-mill__tag{position:absolute;left:50%;top:calc(100% + 8px);translate:-50% 0;white-space:nowrap;padding:5px 10px;background:var(--gft-forest);color:var(--gft-paper);font:600 13px/1.3 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase}
.cx-mill__tag b{font-size:17px;color:var(--cx-ochre-l)}
.cx-mill__target{position:absolute;left:50%;bottom:calc(100% + 8px);translate:-50% 0;white-space:nowrap;padding:4px 9px;border:1px dashed #8a5a12;background:var(--gft-paper);font:600 13px/1.3 var(--cx-mono);color:#6b450d;opacity:0;transition:opacity 300ms}
[data-show=target] .cx-mill__target{opacity:1}
.cx-gap__ctl{position:relative;z-index:4;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(20px,3vw,44px);align-items:end}
.cx-figs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.cx-figs .cx-cap{grid-column:1/-1;margin:0}
.cx-fig{position:relative;display:grid;align-content:start;gap:4px;min-height:44px;padding:10px 14px 12px;border:1px solid #0e4d4a66;background:#fff;cursor:pointer;transition:background 260ms,color 260ms}
.cx-fig__v{font-size:clamp(40px,3.9vw,56px);font-weight:850;line-height:1;letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.cx-fig__l{font-size:15px;line-height:1.35}
.cx-fig__s{justify-self:start;margin-top:4px;padding:3px 8px;border:1px solid currentColor;font:600 13px/1.2 var(--cx-mono);letter-spacing:.04em}
.cx-fig[data-on]{background:var(--gft-forest);color:var(--gft-paper);border-color:var(--gft-forest)}
.cx-scrub label{display:flex;justify-content:space-between;gap:16px;align-items:baseline;flex-wrap:wrap;font-size:15px}
.cx-scrub output{font:700 17px/1.3 var(--cx-mono);color:var(--gft-forest)}
.cx-scrub input{width:100%;accent-color:var(--gft-ochre)}
.cx-scrub__ends{display:flex;justify-content:space-between;gap:12px;font:13px/1.4 var(--cx-mono);color:var(--cx-ink2)}
.cx-gap__bar{display:grid;margin-top:16px;padding:14px 20px;border-left:5px solid var(--gft-ochre);background:#e9eeed}
.cx-gap__bar p{font-size:17px;line-height:1.6;max-width:96ch}
.cx-bar__state{font-weight:700}
.cx-bar__state b{font-size:22px;margin-right:6px;color:var(--gft-forest)}
.cx-gap__bar .cx-bar__src{margin-top:4px;font:13px/1.5 var(--cx-mono);color:var(--cx-ink2)}
.cx-foot{margin-top:12px;font-size:15px}
.cx-foot summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--gft-forest)}
.cx-foot p{max-width:80ch;font-size:16px;line-height:1.65}
/* pick: threads enter as alternating picks, the mill stamps, the numerals blank-roll (script). */
:root[data-m-go] .cx-gap:not([data-cx-in]) .cx-row{opacity:0}
:root[data-m-go] .cx-gap:not([data-cx-in]) :is(.cx-mill__vessel,.cx-gap__ctl,.cx-gap__bar){opacity:0}
:root[data-m-go] .cx-gap[data-cx-in] .cx-row{animation-name:cx-pick-l;animation-duration:560ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(var(--i) * 12ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-gap[data-cx-in] .cx-row:nth-child(even){animation-name:cx-pick-r}
:root[data-m-go] .cx-gap[data-cx-in] .cx-mill__vessel{animation-name:cx-stamp;animation-duration:380ms;animation-timing-function:var(--gft-ease-out);animation-delay:380ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-gap[data-cx-in] :is(.cx-gap__ctl,.cx-gap__bar){animation-name:cx-up;animation-duration:560ms;animation-timing-function:var(--gft-ease-out);animation-delay:300ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-pick-l{from{opacity:0;transform:translateX(-140px)}to{opacity:1;transform:none}}
@keyframes cx-pick-r{from{opacity:0;transform:translateX(140px)}to{opacity:1;transform:none}}
@keyframes cx-stamp{from{opacity:0;transform:scale(1.35)}to{opacity:1;transform:none}}
/* Hand-over 3 to 4: the vessel drains and moves toward the boundary ring below. */
@supports (animation-timeline:view()){
  :root[data-m-go] .cx-mill__go{animation-name:cx-mill-go;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-gap;animation-range-start:exit 30%;animation-range-end:exit 85%}
  :root[data-m-go] .cx-mill__fill{animation-name:cx-drain;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-gap;animation-range-start:exit 25%;animation-range-end:exit 60%}
}
@keyframes cx-mill-go{from{opacity:1;transform:none}to{opacity:.25;transform:translate(-100px,100px) scale(1.25)}}
@keyframes cx-drain{from{opacity:1}to{opacity:0}}

/* ---------- 4 the account: boundary ring triptych (sage breath) ---------- */
.cx-account{background:var(--gft-mist);color:var(--gft-ink);padding-block:clamp(36px,4vw,56px) clamp(28px,3vw,40px);view-timeline-name:--cx-acc;view-timeline-axis:block;background-image:linear-gradient(#0e4d4a0d 1px,transparent 1px),linear-gradient(90deg,#0e4d4a0d 1px,transparent 1px);background-size:48px 48px}
.cx-tri{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1fr) minmax(0,1.05fr);gap:clamp(20px,2.6vw,40px);align-items:start}
.cx-acc__rows{display:grid;gap:6px}
.cx-acc__row{position:relative;display:grid;gap:2px;min-height:44px;padding:9px 14px;border:1px solid #0e4d4a40;background:#f6f4efcc;cursor:pointer;transition:background 260ms,color 260ms}
.cx-acc__name{font-size:22px;font-weight:850;letter-spacing:-.03em;line-height:1.1}
.cx-acc__dec{font-size:17px;line-height:1.4}
.cx-acc__dec small{display:block;font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--cx-ink2)}
.cx-acc__row[data-on]{background:var(--gft-forest);color:var(--gft-paper);border-color:var(--gft-forest)}
.cx-acc__row[data-on] small{color:#dfeae3}
.cx-acc__detail{display:grid;margin-top:8px}
.cx-acc__detail dl{margin:0;padding:10px 14px;border-left:5px solid var(--gft-ochre);background:var(--gft-paper);display:grid;gap:2px}
.cx-acc__detail dt{font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--gft-forest)}
.cx-acc__detail dd{margin:0 0 6px;font-size:15px;line-height:1.45}
.cx-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--gft-forest)}
.cx-switch--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cx-switch label{position:relative;display:grid;place-items:center;min-height:44px;padding:6px 8px;text-align:center;font-size:15px;font-weight:650;cursor:pointer;transition:background 220ms,color 220ms}
.cx-switch label:has(input:checked){background:var(--gft-forest);color:var(--gft-paper)}
.cx-ring{margin-top:10px;overflow-anchor:none}
.cx-ring__go{transform-origin:50% 50%}
.cx-ring__svg{width:100%;height:auto;overflow:visible}
.cx-ring__edge{stroke:var(--gft-forest);stroke-width:5;stroke-linecap:round;transform-box:fill-box;transform-origin:center;transition:opacity 400ms}
.cx-ring__vert{fill:var(--gft-ochre);stroke:var(--gft-mist);stroke-width:2;transform-box:fill-box;transform-origin:center}
.cx-ring__breathe{transform-box:fill-box;transform-origin:center}
.cx-ring__hex2{stroke:var(--gft-leaf);stroke-width:2;stroke-dasharray:6 7}
.cx-ring__flow{stroke:#a86e15;stroke-width:3}
.cx-ring__head{stroke:#a86e15;stroke-width:3;stroke-linejoin:round}
.cx-ring__dot{fill:var(--gft-ochre);transform-box:fill-box}
:root[data-m-go] .cx-ring__dots[data-m-on] .cx-ring__dot{animation-name:cx-dot-run;animation-duration:1.8s;animation-timing-function:linear;animation-delay:calc(var(--i) * -.45s);animation-iteration-count:infinite}
@keyframes cx-dot-run{from{opacity:0;transform:translateX(0)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translateX(var(--d))}}
.cx-ring__stray path{stroke:#a86e15;stroke-width:3;stroke-dasharray:5 6}
.cx-ring__stray{opacity:0;transition:opacity 400ms}
.cx-ring__core{fill:var(--gft-forest)}
.cx-ring__t{fill:var(--gft-paper);font:700 19px var(--gft-font-display)}
[data-bnd=without] .cx-ring__edge{opacity:.22}
[data-bnd=without] .cx-ring__stray{opacity:1}
[data-bnd=without] .cx-ring__core{fill:#5e8280}
.cx-ring__labels{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.cx-ring__labels p{display:grid;gap:2px;font-size:15px;line-height:1.4}
.cx-ring__labels small{font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--cx-ink2)}
.cx-ring__den{grid-template-areas:'k' 'v'}
.cx-ring__den small{grid-area:k}
.cx-ring__den span{grid-area:v}
[data-cx-lens] .cx-v-without{opacity:0;visibility:hidden}
[data-bnd=without] .cx-v-without{opacity:1;visibility:visible}
[data-bnd=without] .cx-v-with,[data-per="1"] .cx-v-p2,[data-per=both] .cx-v-p1,[data-per="2"] .cx-v-p1{opacity:0;visibility:hidden}
.cx-v-with,.cx-v-without{transition:opacity 260ms,visibility 0s}
.cx-chart .cx-cap{margin-top:12px}
.cx-chart__plot{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;height:clamp(180px,24svh,230px);padding-top:26px}
.cx-chart__base{position:absolute;left:0;right:0;bottom:30px;height:2px;background:var(--gft-forest)}
.cx-cg{display:grid;grid-template-rows:1fr auto;min-width:0;transition:opacity 300ms}
.cx-cg__bars{display:grid;grid-template-columns:1fr 1fr;gap:5px;align-items:end;height:100%}
.cx-b{position:relative;height:100%;padding:0;border:0;background:transparent;cursor:pointer}
.cx-b__bar{position:absolute;inset:0;transform-origin:50% 100%;transform:scaleY(var(--h));transition:opacity 300ms}
.cx-b--a .cx-b__bar{background:var(--gft-forest)}
.cx-b--b .cx-b__bar{background:var(--gft-ochre)}
.cx-b__v{position:absolute;left:50%;bottom:calc(var(--h) * 100% + 4px);translate:-50% 0;font:700 15px/1 var(--cx-mono)}
.cx-b:focus-visible{outline:3px solid var(--gft-ochre);outline-offset:3px}
.cx-b:hover .cx-b__bar,.cx-b:focus-visible .cx-b__bar{filter:brightness(1.15)}
.cx-cg__l{min-height:30px;padding-top:6px;font-size:13px;line-height:1.25;font-weight:650}
[data-per="1"] .cx-b--b,[data-per="2"] .cx-b--a{opacity:.22}
[data-bnd=without] .cx-cg--den{opacity:.25}
.cx-chart__key{display:flex;gap:10px;align-items:center;margin-top:6px;font:13px/1.4 var(--cx-mono)}
.cx-key{display:inline-block;width:14px;height:14px}
.cx-key--a{background:var(--gft-forest)}.cx-key--b{background:var(--gft-ochre);margin-left:10px}
.cx-chart__read{display:block;min-height:44px;margin-top:6px;font-size:15px;line-height:1.4}
.cx-calc{display:grid;gap:2px;margin-top:4px}
.cx-calc small{font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--cx-ink2)}
.cx-calc .cx-stack{font:800 clamp(24px,2.3vw,32px)/1.15 var(--cx-mono);letter-spacing:-.03em;color:var(--gft-forest)}
.cx-verdict{margin-top:8px;font-size:17px;font-weight:650;line-height:1.4}
.cx-acc__note{margin-top:14px;font:13px/1.5 var(--cx-mono);color:var(--cx-ink2)}
/* knot: the ring's vertices tie in order, arrows draw to the core, rows land, bars grow from the baseline. */
:root[data-m-go] .cx-account:not([data-cx-in]) :is(.cx-ring__edge,.cx-ring__vert,.cx-acc__row,.cx-ring__ins,.cx-ring__out){opacity:0}
:root[data-m-go] .cx-account:not([data-cx-in]) .cx-b__bar{transform:scaleY(0)}
:root[data-m-go] .cx-account[data-cx-in] .cx-ring__vert{animation-name:cx-pop;animation-duration:280ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(var(--i) * 95ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-account[data-cx-in] .cx-ring__edge{animation-name:cx-tie;animation-duration:300ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(60ms + var(--i) * 95ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-account[data-cx-in] :is(.cx-ring__ins,.cx-ring__out){animation-name:cx-arrow-in;animation-duration:420ms;animation-timing-function:var(--gft-ease-out);animation-delay:480ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-account[data-cx-in] .cx-acc__row{animation-name:cx-land;animation-duration:460ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(var(--i) * 60ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-account[data-cx-in] .cx-b__bar{animation-name:cx-grow;animation-duration:560ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(300ms + var(--g) * 110ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
.cx-cg{--g:0}
@keyframes cx-pop{from{opacity:0;transform:scale(0)}to{opacity:1;transform:none}}
@keyframes cx-tie{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:none}}
@keyframes cx-arrow-in{from{opacity:0;transform:translateX(-36px)}to{opacity:1;transform:none}}
@keyframes cx-land{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
@keyframes cx-grow{from{transform:scaleY(0)}}
/* Hand-over 4 to 5: the arrows retract and the ring grows into the record frame. */
@supports (animation-timeline:view()){
  :root[data-m-go] .cx-ring__arrows{animation-name:cx-retract;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-acc;animation-range-start:exit 10%;animation-range-end:exit 40%}
  :root[data-m-go] .cx-ring__go{animation-name:cx-ring-up;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-acc;animation-range-start:exit 20%;animation-range-end:exit 80%}
}
@keyframes cx-retract{from{opacity:1;transform:none}to{opacity:0;transform:translateX(40px)}}
@keyframes cx-ring-up{from{opacity:1;transform:none}to{opacity:.15;transform:translateY(110px) scale(1.3)}}

/* ---------- 5 the record frame (paper) ---------- */
.cx-truth{min-height:100svh;background:var(--gft-paper);color:var(--gft-ink);padding-block:clamp(36px,4vw,56px) clamp(44px,4.4vw,64px);view-timeline-name:--cx-truth;view-timeline-axis:block}
.cx-truth__grid{display:grid;grid-template-columns:minmax(0,1.62fr) minmax(0,1fr);gap:clamp(24px,3vw,48px);align-items:start}
.cx-slider label{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:15px;font-weight:650}
.cx-slider output{font:700 17px/1.3 var(--cx-mono);color:var(--gft-forest)}
.cx-slider input{width:100%;accent-color:var(--gft-ochre)}
.cx-slider__ends{display:flex;justify-content:space-between;font:13px/1.4 var(--cx-mono);color:var(--cx-ink2)}
.cx-rec{position:relative;margin-top:10px;aspect-ratio:1000/520;min-height:400px}
.cx-rec__frame{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cx-rec__ground{fill:#ffffff}
.cx-rec__cut{stroke:#0e4d4a;stroke-opacity:.3;stroke-width:1;stroke-dasharray:4 6}
.cx-rec__eg{overflow-anchor:none}
.cx-rec__edge{stroke:var(--gft-forest);stroke-width:4;stroke-linecap:round;transform-box:fill-box;transform-origin:center}
.cx-strata{position:absolute;inset:0;display:grid;grid-template-rows:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none}
/* Text boxes sit inside the hexagon at every height: the outer bands keep within the narrow 25%-75% top and bottom
   edges, the middle bands within the 12.5%-87.5% chord where those bands meet the outer ones. */
.cx-stratum{display:grid;min-width:0;padding-inline:28% 30%}
.cx-stratum--2,.cx-stratum--3{padding-inline:15.5% 30%}
.cx-stratum__btn{display:grid;align-content:center;gap:2px;width:100%;padding:4px 10px;border:0;border-left:4px solid transparent;background:transparent;text-align:left;color:inherit;cursor:pointer;transition:border-color 260ms,background 260ms}
.cx-stratum[data-on] .cx-stratum__btn{border-left-color:var(--gft-ochre)}
.cx-stratum[data-on] .cx-stratum__f{color:#8a5a12}
.cx-stratum__btn:focus-visible{outline:3px solid var(--gft-ochre);outline-offset:-3px}
.cx-stratum__f{font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--gft-forest)}
.cx-stratum__open{font-size:clamp(15px,1.25vw,18px);line-height:1.38;text-wrap:balance;overflow-wrap:anywhere}
.cx-w{transition:color 220ms,background-color 220ms}
.cx-w[data-red],[data-always] .cx-w{color:transparent;background:repeating-linear-gradient(135deg,var(--gft-night) 0 5px,#24524e 5px 7px);border-radius:2px;box-decoration-break:clone}
.cx-rec__shade{position:absolute;inset:0;z-index:0;clip-path:var(--cx-hexclip);overflow:clip;pointer-events:none}
.cx-rec__shade i{position:absolute;inset:0;background:repeating-linear-gradient(135deg,#0e4d4a1f 0 2px,transparent 2px 10px),#0e4d4a0a;transform:translateX(var(--cx-pct));transition:transform 120ms linear}
.cx-strata{z-index:1}
.cx-rec__tag{position:absolute;bottom:-40px;padding:3px 8px;white-space:nowrap;font:600 13px/1.3 var(--cx-mono);font-style:normal;letter-spacing:.05em;text-transform:uppercase}
.cx-rec__tag--l{right:10px;color:var(--gft-forest)}
.cx-rec__tag--r{left:10px;background:var(--gft-night);color:var(--gft-paper)}
.cx-rec__line{position:absolute;top:-10px;bottom:-10px;left:var(--cx-pct);width:0;z-index:2;pointer-events:none;transform-origin:50% 0}
.cx-rec__line i{position:absolute;inset:0}
.cx-rec__line b{position:absolute;top:0;bottom:0;left:-2px;width:4px;background:var(--gft-ochre);box-shadow:0 0 0 2px #f6f4efcc}
:root[data-m-go] .cx-rec__line i[data-m-on] b{animation-name:cx-idle;animation-duration:3.6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cx-idle{from{transform:translateX(-2px)}to{transform:translateX(2px)}}
.cx-ctabs{display:grid;gap:6px}
.cx-ctab{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:12px;min-height:44px;padding:9px 14px;border:1px solid #0e4d4a40;background:#fff;cursor:pointer;transition:background 260ms,color 260ms}
.cx-ctab__n{grid-row:1/3;font:700 18px/1.3 var(--cx-mono);color:#8a5a12}
.cx-ctab__h{font-size:18px;font-weight:800;line-height:1.25;letter-spacing:-.02em}
.cx-ctab__s{font:13px/1.4 var(--cx-mono);letter-spacing:.04em;color:var(--cx-ink2)}
.cx-ctab[data-on]{background:var(--gft-forest);color:var(--gft-paper);border-color:var(--gft-forest)}
.cx-ctab[data-on] :is(.cx-ctab__n,.cx-ctab__s){color:#dfeae3}
.cx-claims__reads{display:grid;margin-top:12px;padding:12px 16px;border-left:5px solid var(--gft-ochre);background:#e9eeed}
.cx-claims__reads p{font-size:17px;line-height:1.55}
.cx-unroll{position:absolute;left:0;right:0;bottom:0;z-index:4;height:4px;pointer-events:none}
.cx-unroll i{display:block;height:100%;background:var(--gft-ochre);transform-origin:max(24px,calc((100% - min(1440px,100% - 96px)) / 2)) 50%;overflow-anchor:none}
/* selvedge-draw: the border draws edge by edge, strata slide in from alternating sides, the line drops into place. */
:root[data-m-go] .cx-truth:not([data-cx-in]) :is(.cx-rec__edge,.cx-stratum,.cx-rec__line){opacity:0}
:root[data-m-go] .cx-truth[data-cx-in] .cx-rec__edge{animation-name:cx-tie;animation-duration:300ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(var(--i, 0) * 70ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-truth[data-cx-in] .cx-stratum{animation-name:cx-from-l;animation-duration:520ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(200ms + var(--i) * 70ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-truth[data-cx-in] .cx-stratum:nth-child(even){animation-name:cx-from-r}
:root[data-m-go] .cx-truth[data-cx-in] .cx-rec__line{animation-name:cx-line-drop;animation-duration:420ms;animation-timing-function:var(--gft-ease-out);animation-delay:480ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-from-l{from{opacity:0;transform:translateX(-48px)}to{opacity:1;transform:none}}
@keyframes cx-from-r{from{opacity:0;transform:translateX(48px)}to{opacity:1;transform:none}}
@keyframes cx-line-drop{from{opacity:0;transform:translateY(-60px) scaleY(.3)}to{opacity:1;transform:none}}
/* Hand-over 5 to 6: the frame's edges leave one by one from its left vertex, while one thread unrolls full-bleed. */
@supports (animation-timeline:view()){
  :root[data-m-go] .cx-rec__eg{animation-name:cx-edge-out;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-truth;animation-range-start:exit calc(52% + var(--i) * 6%);animation-range-end:exit calc(60% + var(--i) * 6%)}
  :root[data-m-go] .cx-unroll i{animation-name:cx-unroll;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range-start:entry 100%;animation-range-end:cover 55%}
}
@keyframes cx-edge-out{from{opacity:1}to{opacity:.12}}
@keyframes cx-unroll{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- 6 the interlude: warp and weft (night, full bleed) ---------- */
.cx-stance{background:var(--gft-night);color:var(--cx-on-dark);padding-block:clamp(48px,6vw,92px) clamp(48px,5vw,80px);overflow:clip;view-timeline-name:--cx-stance;view-timeline-axis:block}
.cx-stance__contours{position:absolute;inset:0;pointer-events:none;overflow:clip;opacity:.28}
.cx-stance__contours svg{position:absolute;inset:-4% -6%;width:112%;height:108%}
.cx-stance__contours path{stroke:var(--gft-sage);stroke-width:1;vector-effect:non-scaling-stroke}
:root[data-m-go] .cx-stance__contours[data-m-on] svg{animation-name:cx-contour;animation-duration:16s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cx-contour{from{transform:translateX(-2%)}to{transform:translateX(2%)}}
.cx-stance__head{position:relative;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,.7fr);gap:clamp(24px,4vw,64px);align-items:end}
.cx-h--display{font-size:clamp(3rem,6.1vw,5.6rem)!important;line-height:.98!important;max-width:14ch!important;color:var(--gft-paper);margin:0}
.cx-stance__head .cx-lede{color:var(--cx-on-dark)}
.cx-weave{position:relative;height:clamp(220px,30svh,290px);margin-block:clamp(14px,2vw,28px) clamp(10px,1.4vw,18px);container-type:size}
.cx-weave__fold{position:absolute;inset:0;overflow-anchor:none}
.cx-weave__warp{position:absolute;left:0;right:0;top:50%;height:4px;margin-top:-2px;background:var(--gft-ochre)}
.cx-weave__waves{position:absolute;inset:0;width:100%;height:100%}
.cx-weave__a{stroke:var(--gft-sage);stroke-width:3}
.cx-weave__b{stroke:#e2ebe6;stroke-opacity:.6;stroke-width:2}
.cx-shuttle{position:absolute;left:0;top:50%;width:0;height:0}
.cx-shuttle i{position:absolute;left:-8px;top:-8px;width:16px;height:16px;border-radius:50%;background:var(--cx-ochre-l);box-shadow:0 0 0 5px #c98a2b40}
:root[data-m-go] .cx-weave[data-m-on] .cx-shuttle{animation-name:cx-shuttle-x;animation-duration:12s;animation-timing-function:linear;animation-iteration-count:infinite}
:root[data-m-go] .cx-weave[data-m-on] .cx-shuttle i{animation-name:cx-shuttle-y;animation-duration:3s;animation-timing-function:ease-in-out;animation-delay:-1.5s;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cx-shuttle-x{from{transform:translateX(-16.67cqw)}to{transform:translateX(116.67cqw)}}
@keyframes cx-shuttle-y{from{transform:translateY(25cqh)}to{transform:translateY(-25cqh)}}
.cx-cross{position:absolute;top:50%;z-index:2;width:0;height:0;cursor:pointer}
.cx-cross__go{position:absolute;left:0;top:0;display:block;overflow-anchor:none}
.cx-cross i{position:absolute;left:0;top:0;width:84px;height:73px;translate:-50% -50%;display:grid;place-items:center;isolation:isolate;background:var(--gft-ochre);clip-path:var(--cx-hexclip);font:700 20px/1 var(--cx-mono);font-style:normal;color:var(--gft-paper);transition:scale 260ms var(--gft-ease-out)}
.cx-cross i::before{content:'';position:absolute;inset:3px;z-index:-1;background:var(--gft-night);clip-path:var(--cx-hexclip);transition:background 260ms}
.cx-cross[data-on] i{scale:1.14}
.cx-cross[data-on] i::before{background:var(--gft-ochre)}
.cx-cross[data-on] i{color:var(--gft-night)}
.cx-cross b{position:absolute;left:0;top:46px;translate:-50% 0;white-space:nowrap;padding:3px 10px;background:var(--gft-night);font-size:15px;font-weight:800;color:var(--gft-paper)}
.cx-cross[data-on] b{background:var(--gft-paper);color:var(--gft-night)}
.cx-stance__ctl{position:relative;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(20px,3vw,48px);align-items:start}
.cx-seg{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cx-seg .cx-cap{flex-basis:100%;margin:0;color:var(--cx-on-dark2)}
.cx-seg__opt{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:8px 16px;border:1px solid #cfe8da66;font-size:17px;font-weight:750;cursor:pointer;transition:background 220ms,color 220ms}
.cx-seg__opt span{font:700 15px/1 var(--cx-mono);color:var(--cx-ochre-l)}
.cx-seg__opt[data-on]{background:var(--gft-paper);color:var(--gft-night)}
.cx-seg__opt[data-on] span{color:#8a5a12}
.cx-stance .cx-btns{color:var(--gft-paper)}
.cx-stance__panel{display:grid;padding:12px 18px;border-left:5px solid var(--gft-ochre);background:#0a3a37}
.cx-stance__panel .cx-step{color:var(--cx-ochre-l)}
.cx-stance__panel h3{margin:6px 0 8px;font-size:clamp(22px,2vw,28px);color:var(--gft-paper)}
.cx-stance__panel p{font-size:17px;line-height:1.6;color:var(--cx-on-dark)}
/* unspool: the warp is revealed left to right, the weft follows, the crossings stamp at 450, 600 and 750 ms. */
:root[data-m-go] .cx-stance:not([data-cx-in]) .cx-weave__warp{clip-path:inset(0 100% 0 0)}
:root[data-m-go] .cx-stance:not([data-cx-in]) .cx-weave__waves{clip-path:inset(0 100% 0 0)}
:root[data-m-go] .cx-stance:not([data-cx-in]) .cx-cross{opacity:0}
:root[data-m-go] .cx-stance[data-cx-in] .cx-weave__warp{animation-name:cx-draw-l;animation-duration:620ms;animation-timing-function:var(--gft-ease-in-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-stance[data-cx-in] .cx-weave__waves{animation-name:cx-draw-l;animation-duration:620ms;animation-timing-function:var(--gft-ease-in-out);animation-delay:150ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-stance[data-cx-in] .cx-cross{animation-name:cx-stamp;animation-duration:300ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(450ms + var(--i) * 150ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
/* Hand-over 6 to 7: the crossings fold toward the boundary of the film below while the warp fades. */
@supports (animation-timeline:view()){
  :root[data-m-go] .cx-cross__go{animation-name:cx-fold;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-stance;animation-range-start:exit 20%;animation-range-end:exit 75%}
  :root[data-m-go] .cx-weave__fold{animation-name:cx-fade;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-stance;animation-range-start:exit 20%;animation-range-end:exit 70%}
}
.cx-cross{--fx:0px}.cx-cross:nth-of-type(1){--fx:110px}.cx-cross:nth-of-type(3){--fx:-110px}
@keyframes cx-fold{from{transform:none}to{transform:translate(var(--fx),90px) scale(.7)}}
@keyframes cx-fade{from{opacity:1}to{opacity:.15}}

/* ---------- 7 the programme film (forest, sticky) ---------- */
.cx-film{background-color:var(--gft-forest);color:var(--cx-on-dark);background-image:linear-gradient(#ffffff0c 1px,transparent 1px),linear-gradient(90deg,#ffffff0c 1px,transparent 1px);background-size:56px 56px}
.cx-film__track{position:relative}
.cx-film__stage{position:sticky;top:0;z-index:1;height:100svh;display:grid;grid-template-columns:minmax(0,.38fr) minmax(0,.62fr);grid-template-rows:auto minmax(0,1fr) auto;column-gap:clamp(24px,3vw,48px);padding:clamp(22px,3svh,36px) max(24px,calc((100% - min(1440px,100% - 96px)) / 2)) clamp(16px,2.4svh,28px);overflow:clip}
.cx-film__head{grid-column:2;grid-row:1;position:relative;padding-right:200px}
.cx-film__head .gft-eyebrow{margin-bottom:10px}
.cx-film__head h2{margin:0;font-size:clamp(2rem,3.2vw,3.2rem);color:var(--gft-paper)}
.cx-film__hud{position:absolute;right:max(24px,calc((100% - min(1440px,100% - 96px)) / 2));top:clamp(22px,3svh,36px);display:grid;justify-items:end;gap:2px;font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-on-dark2)}
.cx-film__hud b{font:800 24px/1.1 var(--cx-mono);letter-spacing:-.01em;color:var(--cx-ochre-l);text-transform:none;justify-self:end}
.cx-film__rail{position:absolute;right:max(24px,calc((100% - min(1440px,100% - 96px)) / 2));top:calc(clamp(22px,3svh,36px) + 64px);display:flex;gap:6px}
.cx-film__rail button{min-width:48px;min-height:44px;border:1px solid #cfe8da80;background:transparent;color:var(--gft-paper);font:700 15px/1 var(--cx-mono);transition:background 260ms,color 260ms}
.cx-film__rail button[aria-pressed=true]{background:var(--cx-ochre-l);border-color:var(--cx-ochre-l);color:var(--gft-night)}
.cx-film__rail button:focus-visible{outline:3px solid var(--gft-ochre);outline-offset:2px}
.cx-film__fig{grid-column:2;grid-row:2;position:relative;min-height:0;display:grid;place-items:center;container-type:size}
.cx-film__box{position:relative;width:min(100cqw,100cqh * 7 / 6);aspect-ratio:700/600;transition:transform 780ms var(--gft-ease-in-out)}
@media(min-width:761px){[data-step="3"] .cx-film__box{transform:translateX(-24vw)}}
.cx-film__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cx-film__labels{position:absolute;inset:0}
.cx-fl{position:absolute;inset:0;transition:opacity 420ms var(--gft-ease-out)}
.cx-fl span{position:absolute;white-space:nowrap;font:700 15px/1.2 var(--gft-font-display);color:var(--gft-paper)}
.cx-fl__n--n{translate:-50% calc(-100% - 14px)}.cx-fl__n--s{translate:-50% 14px}.cx-fl__n--e{translate:16px -50%}.cx-fl__n--w{translate:calc(-100% - 16px) -50%}
.cx-fl__r{translate:24px -150%;padding:2px 8px;background:var(--gft-night);font-size:14px!important}
.cx-fl__l{left:72%;padding:2px 8px;background:#062826;font:600 14px/1.2 var(--cx-mono)!important;letter-spacing:.04em}
.cx-fl__l--0{top:75%}.cx-fl__l--1{top:60%}.cx-fl__l--2{top:45%}.cx-fl__l--3{top:30%;color:#cfd6ff!important}
.cx-fl__g{left:60%;padding:2px 8px;background:var(--gft-night);font:600 14px/1.2 var(--cx-mono)!important}
.cx-fl__g--0{top:12.5%}.cx-fl__g--1{top:37.5%}.cx-fl__g--2{top:62.5%}.cx-fl__g--3{top:87.5%}
.cx-fl__l,.cx-fl__g{translate:0 -50%}
.cx-film__plaque{grid-column:2;grid-row:3;display:grid;padding:10px 16px;border-left:5px solid var(--gft-ochre);background:#062826e6;font-size:17px;line-height:1.45;color:var(--gft-paper)}
.cx-film__read{position:absolute;left:max(24px,calc((100% - min(1440px,100% - 96px)) / 2));bottom:clamp(16px,2.4svh,28px);width:calc(38% - 40px);font:600 15px/1.4 var(--cx-mono);color:var(--cx-ochre-l)}
.cx-film__cap{position:absolute;right:max(24px,calc((100% - min(1440px,100% - 96px)) / 2));bottom:calc(clamp(16px,2.4svh,28px) + 76px);font:13px/1.4 var(--cx-mono);color:var(--cx-on-dark2)}
/* The stage SVG: one hexagon recomposed per step. */
.cx-f-thread{stroke:var(--cx-ochre-l);stroke-width:2;stroke-dasharray:4 6;opacity:0;transition:opacity 500ms}
.cx-f-layer{transform-box:view-box;transform-origin:350px 300px;transition:transform 780ms var(--gft-ease-in-out),opacity 520ms var(--gft-ease-out)}
.cx-f-ground{fill:#06282680}
.cx-f-edge{stroke:var(--gft-sage);stroke-width:4;stroke-linejoin:round;transform-box:fill-box;transform-origin:center}
.cx-f-cross{stroke:#b8c1d6;stroke-opacity:.7;stroke-width:1.6}
.cx-f-core{fill:var(--gft-night);stroke:var(--gft-sage);stroke-width:2}
.cx-f-t{fill:var(--gft-paper);font:700 17px var(--cx-mono);letter-spacing:.04em}
.cx-f-t--g{fill:var(--cx-ochre-l)}
.cx-f-node{fill:var(--gft-ochre);stroke:var(--gft-paper);stroke-width:2;transform-box:fill-box;transform-origin:center}
.cx-f-warp{stroke:var(--gft-sage);stroke-opacity:.7;stroke-width:2}
.cx-f-weft{stroke:#b8c1d6;stroke-opacity:.8;stroke-width:2}
.cx-f-path{stroke:var(--gft-ochre);stroke-width:4;stroke-linejoin:round}
.cx-f-dot{fill:var(--gft-ochre)}
.cx-f-ring{stroke:var(--cx-ochre-l);stroke-width:2}
.cx-f-slab{fill:#0b4441;stroke:var(--gft-sage);stroke-width:5}
.cx-f-slab--ml{fill:var(--gft-indigo);stroke:#b8c1d6}
.cx-f-carrier{stroke:var(--cx-ochre-l);stroke-width:3;stroke-dasharray:8 7;opacity:0;transition:opacity 500ms}
.cx-f-bound,.cx-f-weave,.cx-f-route,.cx-f-core,.cx-f-t{transition:opacity 480ms var(--gft-ease-out)}
.cx-f-weave,.cx-f-route{opacity:0}
.cx-f-layer--1,.cx-f-layer--2,.cx-f-layer--3{opacity:0}
.cx-fl--route,.cx-fl--layers,.cx-fl--gates{opacity:0}
[data-step="1"] .cx-f-bound{opacity:.5}
[data-step="1"] :is(.cx-f-weave,.cx-f-route),[data-step="2"] .cx-f-weave{opacity:1}
[data-step="1"] .cx-fl--route{opacity:1}
[data-step="1"] .cx-fl--nodes{opacity:.5}
[data-step="2"] .cx-f-layer--0{transform:translate(0px,150px) scale(.62,.27)}
[data-step="2"] .cx-f-layer--1{opacity:1;transform:translate(0px,60px) scale(.62,.27)}
[data-step="2"] .cx-f-layer--2{opacity:1;transform:translate(0px,-30px) scale(.62,.27)}
[data-step="2"] .cx-f-layer--3{opacity:1;transform:translate(0px,-120px) scale(.62,.27)}
[data-step="2"] :is(.cx-f-core,.cx-f-t,.cx-f-route),[data-step="3"] :is(.cx-f-core,.cx-f-t,.cx-f-route,.cx-f-weave){opacity:0}
[data-step="2"] .cx-f-carrier{opacity:1}
[data-step="2"] .cx-fl--layers,[data-step="3"] .cx-fl--gates{opacity:1}
[data-step="2"] .cx-fl--nodes,[data-step="3"] .cx-fl--nodes{opacity:0}
[data-step="3"] .cx-f-thread{opacity:1}
[data-step="3"] .cx-f-layer--0{transform:translate(0px,-225px) scale(.26)}
[data-step="3"] .cx-f-layer--1{opacity:1;transform:translate(0px,-75px) scale(.26)}
[data-step="3"] .cx-f-layer--2{opacity:1;transform:translate(0px,75px) scale(.26)}
[data-step="3"] .cx-f-layer--3{opacity:1;transform:translate(0px,225px) scale(.26)}
[data-step="3"] .cx-f-cross{opacity:0}
:root[data-m-go] .cx-film__fig[data-m-on] .cx-f-ring{animation-name:cx-ring-pulse;animation-duration:2.4s;animation-timing-function:ease-in-out;animation-delay:calc(var(--i) * .3s);animation-iteration-count:infinite;animation-direction:alternate;transform-box:fill-box;transform-origin:center}
@keyframes cx-ring-pulse{from{opacity:.35;transform:scale(.85)}to{opacity:1;transform:scale(1.08)}}
.cx-film__steps{position:relative;z-index:2;margin-top:-100svh;pointer-events:none}
.cx-film__step{display:flex;align-items:center;min-height:80svh;padding-inline:max(24px,calc((100% - min(1440px,100% - 96px)) / 2))}
.cx-film__step--exit{min-height:110svh}
.cx-scard{width:min(34vw,460px);padding:18px 22px 20px;background:#062826f2;border:1px solid #cfe8da40;border-left:5px solid var(--gft-ochre);box-shadow:0 30px 70px #0008;pointer-events:auto}
.cx-scard small{font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ochre-l)}
.cx-scard h3{margin:8px 0 10px;font-size:clamp(22px,2vw,28px);color:var(--gft-paper)}
.cx-scard p{font-size:17px;line-height:1.6;color:var(--cx-on-dark)}
.cx-scard__out{display:none}
/* beat-up: the stage's edge beats in and its nodes pop; each card has its own entrance (card, comb, ply). */
:root[data-m-go] .cx-film:not([data-cx-in]) :is(.cx-f-edge,.cx-f-node,.cx-film__plaque,.cx-film__labels){opacity:0}
:root[data-m-go] .cx-film[data-cx-in] .cx-film__labels{animation-name:cx-fade-in;animation-duration:400ms;animation-timing-function:var(--gft-ease-out);animation-delay:420ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-film[data-cx-in] .cx-f-edge{animation-name:cx-beat;animation-duration:620ms;animation-timing-function:var(--gft-ease-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-film[data-cx-in] .cx-f-node{animation-name:cx-pop;animation-duration:280ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(320ms + var(--i) * 70ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-film[data-cx-in] .cx-film__plaque{animation-name:cx-up;animation-duration:520ms;animation-timing-function:var(--gft-ease-out);animation-delay:300ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-beat{0%{opacity:0;transform:scale(1.18)}55%{opacity:1;transform:scale(.97)}100%{opacity:1;transform:none}}
:root[data-m-go] main .cx-scard[data-m]:not([data-cx-in]){opacity:0}
:root[data-m-go] main .cx-scard--0[data-cx-in]{animation-name:cx-card-deal;animation-duration:640ms;animation-timing-function:var(--gft-ease-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] main .cx-scard--1[data-cx-in]{animation-name:cx-comb;animation-duration:700ms;animation-timing-function:var(--gft-ease-in-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] main .cx-scard--2[data-cx-in]{animation-name:cx-ply;animation-duration:700ms;animation-timing-function:var(--gft-ease-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal;transform-origin:0 50%}
@keyframes cx-card-deal{from{opacity:0;transform:translate(-30px,60px) rotate(-4deg)}to{opacity:1;transform:none}}
@keyframes cx-comb{from{opacity:.2;clip-path:inset(0 0 100% 0);transform:translateY(-20px)}to{opacity:1;clip-path:inset(0);transform:none}}
@keyframes cx-ply{from{opacity:0;transform:perspective(900px) rotateY(-34deg) translateX(-30px)}to{opacity:1;transform:none}}

/* ---------- 8 the gates (deep night, indigo woven data grid) ---------- */
.cx-gates{background-color:var(--cx-deep);color:var(--cx-on-dark);padding-block:clamp(36px,4vw,60px);view-timeline-name:--cx-gates;view-timeline-axis:block;background-image:linear-gradient(#4a5fa838 1px,transparent 1px),linear-gradient(90deg,#4a5fa838 1px,transparent 1px);background-size:44px 44px}
.cx-gates__head h2{color:var(--gft-paper)}
.cx-gates__head .cx-lede{color:var(--cx-on-dark)}
.cx-gates__grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,.62fr) minmax(0,1.1fr);gap:clamp(20px,2.6vw,40px);height:min(540px,calc(100svh - 290px));min-height:400px}
.cx-gates__head h2{font-size:clamp(2rem,3vw,3rem);max-width:24ch}
.cx-gates__left{display:flex;flex-direction:column;gap:10px;min-height:0}
.cx-ladder{display:grid;gap:6px}
.cx-ladder .cx-cap{color:var(--cx-on-dark2);margin:0 0 4px}
.cx-rung{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:12px;min-height:56px;padding:8px 12px;border:1px solid #cfe8da40;background:#ffffff08;cursor:pointer;transition:background-color 300ms,border-color 300ms}
.cx-rung__n{font:700 20px/1 var(--cx-mono);color:var(--cx-ochre-l)}
.cx-rung b{font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--gft-paper)}
.cx-rung em{width:100px;text-align:center;padding:3px 6px;font:600 13px/1.2 var(--cx-mono);font-style:normal;letter-spacing:.04em;border:1px solid currentColor;color:var(--cx-on-dark2);white-space:nowrap}
.cx-rung[data-state=held]{background-color:#6bb68f26;border-color:var(--gft-sage)}
.cx-rung[data-state=held] em{color:#bfe3cf}
.cx-rung[data-state=test]{background-color:#2c3e7a;border-color:#9faac7}
.cx-rung[data-state=test] em{background:var(--cx-ochre-l);border-color:var(--cx-ochre-l);color:var(--gft-night)}
.cx-meter{position:relative;height:8px;margin-top:6px;background:#ffffff1a}
.cx-meter__fill{position:absolute;inset:0;background:var(--gft-sage);transform-origin:0 50%;transform:scaleX(calc((var(--cx-gi) + 1) / 4));transition:transform 600ms var(--gft-ease-in-out)}
.cx-meter__t{font:700 17px/1.3 var(--cx-mono);color:var(--gft-paper)}
.cx-auto{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.cx-auto p{font:13px/1.4 var(--cx-mono);color:var(--cx-on-dark2);max-width:30ch}
.cx-auto p[hidden]{display:none}
.cx-auto button{min-height:44px;min-width:88px;padding:6px 14px;border:1px solid var(--gft-paper);background:transparent;color:var(--gft-paper);font:600 15px/1 var(--gft-font-display)}
.cx-auto button[aria-pressed=true]{background:var(--gft-paper);color:var(--gft-night)}
.cx-gates__fig{position:relative;min-height:0}
.cx-gates__nest{position:relative;height:100%;aspect-ratio:300/600;margin-inline:auto;max-width:100%}
.cx-gates__nest svg{width:100%;height:100%;overflow:visible}
.cx-g-thread{stroke:#9faac7;stroke-width:2;stroke-dasharray:4 6}
.cx-g-thread--lit{stroke:var(--cx-ochre-l);stroke-dasharray:none;stroke-width:3;transform-box:view-box;transform-origin:150px 0;transform:scaleY(calc((var(--cx-gi) * 150 + 75) / 600));transition:transform 600ms var(--gft-ease-in-out)}
.cx-g{transform-box:view-box;transform-origin:150px calc(75px + var(--n) * 150px);overflow-anchor:none}
.cx-g__go{transform-box:fill-box;transform-origin:center}
.cx-g__hex{stroke:#cfd6ff;stroke-width:3}
.cx-g__fill{fill:var(--gft-sage);opacity:0;transition:opacity 400ms}
.cx-g__ring{stroke:var(--cx-ochre-l);stroke-width:3;opacity:0;transition:opacity 400ms}
.cx-g__t{fill:var(--gft-paper);font:700 22px var(--cx-mono)}
.cx-g[data-state=held] .cx-g__fill{opacity:1}
.cx-g[data-state=held] .cx-g__t{fill:var(--gft-night)}
.cx-g[data-state=test] .cx-g__ring{opacity:1}
.cx-g[data-state=test] .cx-g__hex{stroke:var(--cx-ochre-l);stroke-width:5}
.cx-g[data-state=test] .cx-g__fill{opacity:.35;fill:var(--gft-indigo)}
.cx-g-token{transform:translateY(calc(var(--cx-gi) * 150px));transition:transform 600ms var(--gft-ease-in-out)}
.cx-g-token circle{fill:var(--gft-ochre);stroke:var(--gft-paper);stroke-width:2}
.cx-g-lead{stroke:var(--cx-ochre-l);stroke-width:3}
.cx-g-hit{position:absolute;left:50%;width:44%;aspect-ratio:1;translate:-50% -50%;border:0;background:transparent;border-radius:50%;cursor:pointer}
.cx-g-hit:focus-visible{outline:3px solid var(--gft-ochre);outline-offset:2px}
.cx-gates__fig::before{content:'';position:absolute;inset:0 30%;background:linear-gradient(transparent,#bfe3cf33,transparent) 0 0/100% 30% no-repeat;opacity:0;pointer-events:none}
:root[data-m-go] .cx-gates__fig[data-m-on]::before{animation-name:cx-scanline;animation-duration:6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
@keyframes cx-scanline{0%{opacity:0;transform:translateY(-30%)}20%{opacity:1}80%{opacity:1}100%{opacity:0;transform:translateY(330%)}}
.cx-gates__read{position:relative;min-height:0;container-type:size}
.cx-gates__readgo{position:absolute;left:0;right:0;top:0;display:grid;translate:0 clamp(0px,calc(var(--cx-gi) * 25cqh + 12.5cqh - 120px),calc(100cqh - 270px));transition:translate 600ms var(--gft-ease-in-out)}
.cx-gates__read article{padding:14px 18px;border-left:5px solid var(--cx-ochre-l);background:#0b2f40}
.cx-gates__read small{display:flex;gap:10px;align-items:center;font:600 13px/1.4 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cx-on-dark2)}
.cx-gates__read small em{font-style:normal;padding:2px 7px;background:var(--cx-ochre-l);color:var(--gft-night)}
.cx-gates__read h3{margin:6px 0 6px;font-size:24px;color:var(--gft-paper)}
.cx-gates__read p{font-size:17px;line-height:1.55;color:var(--cx-on-dark)}
.cx-gates__read .cx-gates__q{font-weight:700;color:var(--gft-paper);margin-bottom:6px}
/* satin-float: rungs float in, hexagons unfold one by one along the thread. */
:root[data-m-go] .cx-gates:not([data-cx-in]) :is(.cx-rung,.cx-g__go,.cx-gates__readgo){opacity:0}
:root[data-m-go] .cx-gates[data-cx-in] .cx-rung{animation-name:cx-float;animation-duration:560ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(var(--i) * 70ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-gates[data-cx-in] .cx-g__go{animation-name:cx-unfold;animation-duration:420ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(160ms + var(--i) * 120ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
.cx-g:nth-of-type(1) .cx-g__go{--i:0}.cx-g:nth-of-type(2) .cx-g__go{--i:1}.cx-g:nth-of-type(3) .cx-g__go{--i:2}.cx-g:nth-of-type(4) .cx-g__go{--i:3}
:root[data-m-go] .cx-gates[data-cx-in] .cx-gates__readgo{animation-name:cx-fade-in;animation-duration:500ms;animation-timing-function:var(--gft-ease-out);animation-delay:520ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-float{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes cx-unfold{from{opacity:0;transform:scale(.3) rotate(-60deg)}to{opacity:1;transform:none}}
@keyframes cx-fade-in{from{opacity:0}to{opacity:1}}
/* Hand-over 8 to 9: the gates slide up the thread and nest toward the mark hexagon. */
@supports (animation-timeline:view()){
  :root[data-m-go] .cx-g{animation-name:cx-nest;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cx-gates;animation-range-start:exit 20%;animation-range-end:exit 75%}
}
.cx-g{--n:0}.cx-g:nth-of-type(2){--n:1}.cx-g:nth-of-type(3){--n:2}.cx-g:nth-of-type(4){--n:3}
@keyframes cx-nest{from{opacity:1;transform:none}to{opacity:.3;transform:scale(.62)}}
.cx-gates::after{content:'';position:absolute;left:0;right:0;bottom:0;height:clamp(80px,14svh,140px);background:linear-gradient(#072d2b00,#072d2b);pointer-events:none}

/* ---------- 9 the closing: the mark router (night with lattice) ---------- */
.cx-doors{background:var(--gft-night);color:var(--cx-on-dark);padding-top:clamp(56px,8svh,84px);overflow:clip;view-timeline-name:--cx-doors;view-timeline-axis:block}
.cx-doors__lattice{color:var(--gft-sage);opacity:.16;-webkit-mask-image:linear-gradient(#0000,#000 180px);mask-image:linear-gradient(#0000,#000 180px)}
.cx-doors__in{position:relative;z-index:1;display:grid;grid-template-columns:var(--cx-fw) minmax(0,1fr);gap:clamp(28px,5vw,88px);align-items:start}
.cx-doors__fig{position:relative;width:var(--cx-fw);aspect-ratio:600/660}
.cx-d-in{stroke:var(--gft-ochre);stroke-width:5;stroke-linecap:round;stroke-dasharray:10 8;transform-box:view-box;transform-origin:300px -140px}
.cx-doors__cells{position:absolute;inset:-14% -60% -10% -40%;width:200%;height:124%;opacity:.3;pointer-events:none;-webkit-mask-image:radial-gradient(closest-side,#000 55%,#0000);mask-image:radial-gradient(closest-side,#000 55%,#0000)}
.cx-dc{fill:currentColor;fill-opacity:.25;stroke:currentColor;stroke-width:1;color:#6f938f}
.cx-dc--outline{color:var(--gft-sage)}.cx-dc--signal{color:#877fe6}.cx-dc--leaf{color:var(--gft-leaf)}
.cx-doors__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.cx-d-fill{fill:#0e4d4a99}
.cx-d-edge{stroke:var(--gft-sage);stroke-width:5;stroke-linejoin:round;transform-box:fill-box;transform-origin:center}
.cx-d-spoke{stroke:var(--gft-paper);stroke-opacity:.28;stroke-width:2;transform-box:view-box;transform-origin:var(--ox) var(--oy)}
.cx-d-mark{color:var(--gft-sage);opacity:.85}
.cx-d-thread{stroke:var(--gft-ochre);stroke-width:6;stroke-linecap:round;stroke-linejoin:round;opacity:0;transition:opacity 360ms var(--gft-ease-out)}
.cx-d-thread[data-on]{opacity:1}
.cx-d-node{fill:var(--gft-ochre);stroke:var(--gft-paper);stroke-width:2.5}
.cx-d-nodes{transform-box:fill-box;transform-origin:center}
.cx-d-num{fill:var(--gft-paper);font:700 16px var(--cx-mono);opacity:0;transition:opacity 300ms}
[data-show=core] .cx-d-num{opacity:1}
.cx-choices{position:absolute;inset:0}
.cx-choice{position:absolute;translate:-50% -50%;display:grid;justify-items:center;gap:3px;min-height:46px;padding:7px 14px;border:2px solid var(--gft-sage);background:#062826f0;color:var(--gft-paper);font:800 16px/1.1 var(--gft-font-display);letter-spacing:-.01em;white-space:nowrap;transition:background 240ms,color 240ms,border-color 240ms}
.cx-choice i{font:600 13px/1.2 var(--cx-mono);font-style:normal;letter-spacing:.05em;text-transform:uppercase;color:var(--cx-on-dark2)}
.cx-choice[aria-pressed=true] i{color:var(--gft-night)}
.cx-choice--core{translate:-50% 70%}
.cx-choice[aria-pressed=true]{background:var(--cx-ochre-l);border-color:var(--cx-ochre-l);color:var(--gft-night)}
.cx-choice:hover{border-color:var(--cx-ochre-l)}
.cx-choice:focus-visible{outline:3px solid var(--gft-paper);outline-offset:3px}
.cx-doors__panel{padding-bottom:clamp(24px,4svh,48px)}
.cx-doors__panel h2{margin:0 0 20px;font-size:clamp(2.2rem,3.6vw,3.6rem);color:var(--gft-paper)}
.cx-route__reads{display:grid;padding:18px 22px;border-left:5px solid var(--gft-ochre);background:#0a3a37}
.cx-route__at{font:600 13px/1.4 var(--cx-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cx-ochre-l)}
.cx-route h3{margin:6px 0 8px;font-size:28px;color:var(--gft-paper)}
.cx-route p{font-size:17px;line-height:1.55;color:var(--cx-on-dark)}
.cx-route__paper{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;margin-top:10px;font-size:15px!important}
.cx-route__paper small{flex-basis:100%;font:600 13px/1.4 var(--cx-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--cx-on-dark2)}
.cx-route__paper b{font-size:17px;color:var(--gft-paper)}
.cx-route__paper span{font:13px/1.4 var(--cx-mono);color:var(--cx-on-dark2)}
.cx-route__six{display:grid;grid-template-columns:1fr 1fr;gap:2px 18px;margin:10px 0 0;padding-left:22px;font-size:15px;line-height:1.5;color:var(--cx-on-dark)}
.cx-route__six li::marker{font:700 13px var(--cx-mono);color:var(--cx-ochre-l)}
.cx-route__go{margin-top:16px}
/* wind: threads wind from the vertices into the core, the edge turns into place, the choices land. */
:root[data-m-go] .cx-doors:not([data-cx-in]) :is(.cx-d-spoke,.cx-d-edge,.cx-choice,.cx-d-mark){opacity:0}
:root[data-m-go] .cx-doors:not([data-cx-in]) .cx-d-in{transform:scaleY(0)}
:root[data-m-go] .cx-doors[data-cx-in] .cx-d-in{animation-name:cx-thread-in;animation-duration:520ms;animation-timing-function:var(--gft-ease-in-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-thread-in{from{transform:scaleY(0)}to{transform:none}}
:root[data-m-go] .cx-doors[data-cx-in] .cx-d-spoke{animation-name:cx-wind;animation-duration:520ms;animation-timing-function:var(--gft-ease-out);animation-delay:calc(var(--i) * 45ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-doors[data-cx-in] .cx-d-edge{animation-name:cx-turn-in;animation-duration:800ms;animation-timing-function:var(--gft-ease-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-doors[data-cx-in] .cx-d-mark{animation-name:cx-fade-in;animation-duration:500ms;animation-timing-function:var(--gft-ease-out);animation-delay:300ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cx-doors[data-cx-in] .cx-choice{animation-name:cx-fade-in;animation-duration:400ms;animation-timing-function:var(--gft-ease-out);animation-delay:500ms;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cx-wind{from{opacity:0;transform:scale(0)}to{opacity:1;transform:none}}
@keyframes cx-turn-in{from{opacity:0;transform:rotate(-30deg) scale(.82)}to{opacity:1;transform:none}}
/* The out-thread continues into the footer's bridge: the same thread, at the same x, in the same ochre. */
body[data-page=company] .gft-footer{border-top:0}
body[data-page=company] .gft-footer__next{position:relative}
body[data-page=company] .gft-footer__next::before{content:'';position:absolute;top:0;left:calc(var(--cx-fw) / 2 - 3px);width:6px;height:30px;background:var(--gft-ochre)}
body[data-page=company] .gft-footer__next-line{background:#c98a2b55}
body[data-page=company] .gft-footer__next-line i{background:var(--gft-ochre)}

/* ---------- the page rail ---------- */
.cx-rail{position:fixed;left:12px;top:50%;z-index:30;display:none;flex-direction:column;translate:0 -50%;--cx-rail:#cfe8da}
.cx-rail[data-tone=light]{--cx-rail:#0e4d4a}
@media(min-width:1180px){.cx-rail{display:flex}}
.cx-rail a{position:relative;display:flex;align-items:center;min-width:32px;min-height:44px;color:var(--cx-rail);text-decoration:none}
.cx-rail i{display:block;width:13px;height:12px;margin-left:8px;background:currentColor;opacity:.45;clip-path:var(--cx-hexclip);transition:transform 320ms var(--gft-ease-out),opacity 320ms}
.cx-rail a[data-on] i{opacity:1;transform:scale(1.7)}
.cx-rail span{position:absolute;left:34px;padding:5px 10px;background:var(--gft-night);color:var(--gft-paper);font:600 13px/1.3 var(--cx-mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;opacity:0;transform:translateX(-6px);pointer-events:none;transition:opacity 200ms,transform 200ms}
.cx-rail a:hover span,.cx-rail a:focus-visible span{opacity:1;transform:none}
.cx-rail a:focus-visible{outline:3px solid var(--gft-ochre);outline-offset:-2px}

/* ---------- tablet ---------- */
@media(max-width:1100px){
  .cx-lens__in{grid-template-columns:minmax(0,1fr);grid-template-areas:'copy' 'date' 'tabs' 'fig'}
  .cx-hex{max-width:none}
  .cx-tri{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .cx-chart{grid-column:1/-1}
  .cx-truth__grid{grid-template-columns:minmax(0,1fr)}
  .cx-gates__grid{grid-template-columns:minmax(0,1fr) minmax(0,.7fr) minmax(0,1fr)}
}
/* ---------- phone ---------- */
@media(max-width:760px){
  [data-splash=company]{min-height:auto}
  [data-splash=company] h1{font-size:clamp(2.6rem,13vw,3.3rem);margin-top:20px}
  [data-splash=company] .gft-splash__lede{font-size:17px}
  [data-splash=company] .gft-splash__content{padding-top:28px;padding-bottom:calc(46svh + 196px)}
  [data-splash=company] .gft-splash__actions .gft-button{display:flex;width:100%}
  [data-splash=company] .gft-splash__structure{inset:auto 0 104px 0;height:calc(46svh + 128px)}
  [data-splash=company] .gft-splash__data{display:none}
  [data-splash=company] .gft-splash__structure::after{background:linear-gradient(180deg,#072d2b 0%,#072d2b00 18%)}
  .company-mosaic{min-height:0;display:flex;flex-direction:column}
  .company-mosaic__field{position:relative;inset:auto;height:46svh;flex:0 0 auto;translate:-17% 0;width:150%}
  .company-mosaic__readout{position:relative;right:auto;bottom:auto;width:auto;margin:6px 16px 0;padding:8px 10px;gap:6px}
  .company-mosaic__wave{display:none}
  .company-mosaic__state{min-height:44px;font-size:17px;padding:5px 8px}
  .company-mosaic__note,.company-mosaic__k{font-size:13px}
  .cx-sec h2{font-size:clamp(1.9rem,8.6vw,2.4rem)}
  .cx-lens__panel{margin-inline:0;padding-top:28px}
  .cx-tabs{gap:6px}
  .cx-tab{grid-template-columns:1fr;min-height:56px;padding:8px 10px;text-align:center}
  .cx-tab__n{grid-row:auto;font-size:15px}
  .cx-tab__t{font-size:16px}
  .cx-tab__d{display:none}
  .cx-hex{width:100%}
  .cx-hex__box{width:142%;margin-left:-35%}
  .cx-node i{width:52px;height:45px;font-size:15px}
  .cx-node b{font-size:14px}
  .cx-node--left b{left:30px}
  .cx-node--below b{top:26px;translate:-80% 0}
  .cx-cards{position:relative;inset:auto;display:grid;margin-top:12px;pointer-events:auto}
  .cx-card{position:relative;grid-area:1/1;left:auto;right:auto;top:auto;bottom:auto;width:auto!important}
  .cx-card h3{font-size:22px}
  .cx-card p{font-size:17px}
  .cx-gap__head,.cx-account__head,.cx-truth__head,.cx-gates__head,.cx-stance__head,.cx-stance__ctl,.cx-gap__ctl{grid-template-columns:minmax(0,1fr)}
  .cx-flow{height:48svh}
  .cx-mill{left:68%;top:30%;width:120px}
  .cx-flow__tag--out{bottom:2%}
  .cx-figs{gap:6px}
  .cx-fig{padding:8px}
  .cx-fig__v{font-size:34px}
  .cx-fig__l{font-size:13px}
  .cx-scrub__ends span:nth-child(2){display:none}
  .cx-tri{grid-template-columns:minmax(0,1fr)}
  .cx-acc__rows{grid-template-columns:1fr 1fr}
  .cx-acc__dec{display:none}
  .cx-ring{max-width:320px;margin-inline:auto}
  .cx-calc .cx-stack{font-size:26px}
  .cx-rec{aspect-ratio:auto;min-height:0;height:auto}
  .cx-rec__frame{display:none}
  .cx-rec::before{content:'';position:absolute;inset:0;background:var(--gft-forest);clip-path:polygon(50% 0,100% 36px,100% calc(100% - 36px),50% 100%,0 calc(100% - 36px),0 36px)}
  .cx-rec::after{content:'';position:absolute;inset:3px;background:#fff;clip-path:polygon(50% 0,100% 35px,100% calc(100% - 35px),50% 100%,0 calc(100% - 35px),0 35px)}
  .cx-strata{position:relative;inset:auto;z-index:1;padding-block:40px;grid-template-rows:none}
  .cx-stratum,.cx-stratum--2,.cx-stratum--3{padding-inline:8px}
  .cx-stratum__open{font-size:15px}
  .cx-rec__line{z-index:2}
  .cx-h--display{font-size:clamp(2.6rem,11vw,2.9rem)!important}
  .cx-weave{height:30svh}
  .cx-cross i{width:58px;height:50px;font-size:15px}
  .cx-cross b{top:32px;font-size:14px}
  .cx-seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .cx-seg .cx-cap{grid-column:1/-1}
  .cx-seg__opt{justify-content:center;padding:8px 6px;font-size:15px}
  .cx-stance .cx-btns{grid-column:1/-1}
  .cx-film__stage{z-index:3;height:50svh;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);padding:14px 20px 8px;background:var(--gft-forest);box-shadow:0 12px 30px #0006}
  .cx-film__head{grid-column:1;padding-right:160px}
  .cx-film__head .gft-eyebrow{display:none}
  .cx-film__head h2{font-size:24px}
  .cx-film__fig{grid-column:1;grid-row:2}
  .cx-film__hud{top:14px;right:20px}
  .cx-film__hud b{font-size:15px}
  .cx-film__hud>span:first-child{display:none}
  .cx-film__rail{top:38px;right:20px;gap:4px}
  .cx-film__box{width:min(80cqw,100cqh * 7 / 6)}
  .cx-film__rail button{min-width:44px;font-size:13px}
  .cx-film__plaque,.cx-film__cap{display:none}
  .cx-film__read{display:none}
  .cx-fl span{font-size:13px}
  .cx-fl__n--e{translate:-70% -175%}
  .cx-fl__n--w{translate:-30% -175%}
  .cx-fl__r{font-size:13px!important}
  .cx-film__steps{margin-top:0}
  .cx-film__step{min-height:70svh;padding-inline:20px;align-items:flex-end;padding-bottom:6svh}
  .cx-film__step--exit{min-height:60svh}
  .cx-film__steps{z-index:1}
  .cx-scard{width:100%}
  .cx-scard__out{display:block;margin-top:10px;font-size:15px!important;color:var(--cx-ochre-l)!important}
  .cx-gates__grid{grid-template-columns:minmax(0,1fr);height:auto;min-height:0}
  .cx-gates__fig{order:-1;height:190px}
  .cx-gates__nest{position:absolute;left:50%;top:50%;width:178px;height:356px;max-width:none;aspect-ratio:auto;translate:-50% -50%;rotate:-90deg}
  .cx-g__t{transform-box:fill-box;transform-origin:center;rotate:90deg}
  .cx-g-hit{display:none}
  .cx-gates__read{container-type:normal}
  .cx-gates__readgo{position:relative;translate:none}
  .cx-auto button{width:100%}
  .cx-doors{min-height:0}
  .cx-doors__in{grid-template-columns:minmax(0,1fr);min-height:0}
  body[data-page=company]{--cx-fw:min(320px,calc(100vw - 40px))}
  .cx-doors__fig{order:2;margin-inline:auto;width:var(--cx-fw)}
  .cx-doors__panel{order:1;padding-bottom:12px}
  .cx-choice{font-size:14px;padding:6px 10px;min-height:44px}
  .cx-choice i{display:none}
  .cx-d-in{display:none}
  .cx-rec__tag{bottom:-36px}
  .cx-truth{min-height:0}
  .cx-route__six{grid-template-columns:1fr}
  body[data-page=company] .gft-footer__next::before{left:calc(50% - 3px)}
}
@media(prefers-reduced-motion:reduce){
  .company-mosaic__lift,.company-mosaic__cells,.cx-hex__sink,.cx-mill__go,.cx-mill__fill,.cx-ring__arrows,.cx-ring__go,.cx-rec__eg,.cx-unroll i,.cx-cross__go,.cx-weave__fold,.cx-g{animation-name:none!important;animation-timeline:auto!important}
}
