/* Cotton value flow: ten blocks, one thread (the local share of lint). Every class, variable and keyframe is prefixed
 * cv-. Motion: transform, opacity, clip-path and filter only; pre-states only under :root[data-m-go]; scroll-driven
 * rules as longhands inside @supports; sticky pins only. Grounds: Act I night, Act II paper, Act III night varied
 * (deep, forest, indigo, night). Solid grounds sit only either side of the two woven seams (3 to 4, 5 to 6). */
.cv-sec,.cv-rail,.cv-hero,[data-splash=cotton-value-flow]{--cv-line:#bccdc3;--cv-mono:var(--gft-font-mono);--cv-out:cubic-bezier(.16,1,.3,1);--cv-thread:#7fd1a2;--cv-deep:#041d1b;--cv-gut:56px}
.cv-sec{--cv-thumb:var(--gft-sage);--cv-ring:var(--gft-night);--cv-trk:#ffffff40;position:relative;color:var(--gft-paper);font-variant-numeric:tabular-nums lining-nums;overflow-x:clip;padding-block:clamp(64px,8vw,120px)}
.cv-sec [hidden]{display:none!important}
.cv-wrap{width:min(1360px,calc(100% - 128px));margin-inline:auto}
.cv-wrap--wide{width:min(1560px,calc(100% - 128px))}
.cv-kicker{text-transform:uppercase;letter-spacing:.12em;font:12px/1.7 var(--cv-mono);margin:0 0 14px;color:#bad6c6}
.cv-lede{font-size:18px;line-height:1.65;max-width:52ch;margin-top:18px;color:#dcebe2}
.cv-sec h2{font-size:clamp(2rem,3.9vw,3.9rem);max-width:18ch;color:#fff}
.cv-sec h3{font-size:clamp(1.4rem,2.1vw,2rem);line-height:1.15}
.cv-sec :is(button,input,summary,a,[tabindex]):focus-visible{outline:3px solid var(--gft-ochre);outline-offset:4px}
.cv-sec button{font-family:var(--cv-mono)}
.cv-sec button:disabled{opacity:.45;cursor:not-allowed}
.cv-sec input[type=number]{width:124px;min-height:46px;padding:10px 8px;text-align:right;border:1px solid #8fbfa5;background:#06302d;color:#fff;font:15px var(--cv-mono);border-radius:0}
.cv-sec input[aria-invalid=true]{border-color:#f0a46a}
.cv-sec input[type=range]{grid-column:1/-1;width:100%;height:44px;margin:0;accent-color:var(--gft-sage);cursor:ew-resize;-webkit-appearance:none;appearance:none;background:transparent}
.cv-sec input[type=range]::-webkit-slider-runnable-track{height:8px;background:var(--cv-trk)}
.cv-sec input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:30px;height:30px;margin-top:-11px;border-radius:0;background:var(--cv-thumb);border:3px solid var(--cv-ring);box-shadow:0 0 0 2px var(--cv-thumb)}
.cv-sec input[type=range]::-moz-range-track{height:8px;background:var(--cv-trk)}
.cv-sec input[type=range]::-moz-range-thumb{width:24px;height:24px;border-radius:0;background:var(--cv-thumb);border:3px solid var(--cv-ring);box-shadow:0 0 0 2px var(--cv-thumb)}
.cv-key{display:inline-flex;align-items:center;gap:8px;margin:0 22px 8px 0;font:12px var(--cv-mono)}
.cv-key::before{content:'';width:18px;height:4px;background:var(--cv-thread)}
.cv-key--export::before,.cv-key--mass::before{background:var(--gft-ochre)}.cv-key--seed::before{background:#bdd1c9}
.cv-key--ghost::before{background:repeating-linear-gradient(90deg,var(--cv-thread) 0 5px,transparent 5px 8px)}
.cv-sec .gft-cite{min-width:44px;min-height:44px}

/* 2 / Bench (night, forest panel). The splash's local thread drops in at the right and becomes the card's top rule. */
.cv-bench{--cv-pt:clamp(44px,4.5vw,72px);background:radial-gradient(ellipse 60% 70% at 100% 0,#1a6e69 0,#1a6e6900 70%),#115753;padding-top:var(--cv-pt);padding-bottom:clamp(120px,14vw,200px);z-index:2;view-timeline-name:--cv-bench;view-timeline-axis:block}
.cv-bench__in{position:absolute;top:0;right:calc(55% * 26 / 1200 - 2.5px);left:calc(50% + min(680px,50% - 64px) - 1px);height:calc(var(--cv-pt) + 5px);border-right:5px solid var(--cv-thread);border-bottom:5px solid var(--cv-thread);border-bottom-right-radius:26px;pointer-events:none}
.cv-bench__in i{display:none}
.cv-bench__grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(32px,4.4vw,72px);align-items:start}
.cv-bench__main{min-width:0}
.cv-bench h2{font-size:clamp(2.1rem,3.5vw,3.4rem);max-width:15ch}
.cv-bench .cv-lede{margin-bottom:26px;font-size:17px}
.cv-controls{background:#0a3b38;padding:22px 24px 18px;border-top:3px solid var(--gft-ochre)}
.cv-controls fieldset{border:0;margin:0;padding:0;min-width:0}
.cv-controls legend{font-size:19px;font-weight:800;letter-spacing:-.025em;margin-bottom:14px;padding:0;color:#fff}
.cv-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.cv-presets button,.cv-actions button,.cv-cmp__hold,.cv-close__cta button{min-height:44px;padding:11px 16px;border:1px solid #8fc9a8;background:transparent;color:#eaf5ee;font-size:13px;line-height:1.4;cursor:pointer;transition:background-color .2s,color .2s}
.cv-presets button:hover,.cv-actions button:hover,.cv-close__cta button:hover{background:#6bb68f2e}
.cv-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(20px,3vw,40px)}
.cv-fields .cv-field:first-child{grid-column:1/-1}
.cv-field{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:12px 0;border-top:1px solid #6bb68f55;align-items:center;align-content:start}
.cv-fields .cv-field:not(:first-child){grid-template-columns:1fr}
.cv-field>label{font-size:15px;font-weight:650;line-height:1.45;color:#fff}
.cv-number{display:flex;align-items:center;gap:9px;white-space:nowrap}
.cv-number>span{font:13px var(--cv-mono);width:40px;color:#d5e9dd}
.cv-fields input[type=number]{font:600 20px var(--cv-mono);min-height:48px;width:140px}
.cv-field small{grid-column:1/-1;color:#d2e6da;font-size:13px;line-height:1.55}
.cv-controls .cv-segments{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.cv-segments legend{font-size:14px;letter-spacing:0;margin-bottom:8px;font-weight:650}
.cv-segments label{position:relative;flex:1;cursor:pointer}
.cv-segments input{position:absolute;top:15px;left:12px;accent-color:var(--gft-ochre);width:16px;height:16px}
.cv-segments span{display:block;border:1px solid #6bb68f77;padding:12px 12px 12px 36px;font:13px var(--cv-mono);text-transform:capitalize;min-height:44px;color:#eaf5ee;transition:background-color .25s,color .25s}
.cv-segments input:checked+span{background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night);font-weight:700}
.cv-segments input:focus-visible+span{outline:3px solid var(--gft-ochre);outline-offset:3px}
.cv-value-controls{padding:10px 0 0;border-top:1px solid #6bb68f55;margin-top:12px}
.cv-value-controls summary{font-size:15px;font-weight:700;cursor:pointer;min-height:44px;display:list-item;color:#fff}
.cv-value-controls>p{font-size:13px;line-height:1.6;max-width:58ch;margin:0 0 10px;color:#d2e6da}
.cv-multiplier{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:8px;font-size:15px}
.cv-multiplier>span:last-child{display:flex;align-items:center;gap:10px;font:12px var(--cv-mono)}
.cv-multiplier input[type=number]{width:88px}
.cv-error{margin:20px 0;padding:18px;background:#f3dfbf;color:#3a2a0c;border:1px solid var(--gft-ochre);font-size:15px}
.cv-nojs{padding:18px;border:1px solid var(--gft-ochre);margin:0 0 20px;font-size:14px}
.cv-results{background:var(--gft-night);padding:24px 28px 22px;position:sticky;top:16px;min-width:0;border-top:5px solid var(--cv-thread);box-shadow:0 30px 60px -30px #00000088}
.cv-res-band{display:grid;gap:12px}
.cv-res-band .cv-kicker{margin:0}
.cv-res-top{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.5fr);gap:14px;align-items:center}
.cv-mini-wrap{min-width:0;transform-origin:20% 50%}
.cv-mini{display:block;width:100%;height:auto;margin:0;overflow:visible}
.cv-mini [data-splash-draw]{animation:none!important}
.cv-mini .cv-flow-label{font:500 24px var(--cv-mono);fill:#d4e8dc}
.cv-mini .cv-flow-value{font:700 29px var(--cv-mono)}
.cv-primary>output{font-size:clamp(46px,4.6vw,72px);font-weight:850;line-height:1.05;letter-spacing:-.065em;display:block;color:#fff}
.cv-primary>span{font:13px/1.6 var(--cv-mono);color:#c9ded1;display:block;margin-top:4px}
.cv-alloc__track{position:relative;height:14px;background:#ffffff1f;clip-path:inset(-8px 0 -8px 0)}
.cv-alloc__fill{position:absolute;inset:0;background:var(--gft-ochre);transform-origin:0 50%;transform:scaleX(var(--cv-share,0));transition:transform .5s var(--cv-out)}
.cv-alloc__sweep{position:absolute;left:0;top:0;bottom:0;width:30%;background:linear-gradient(90deg,transparent,#ffffff59,transparent);transform:translateX(-100%);pointer-events:none}
.cv-alloc__tick{position:absolute;top:-6px;bottom:-6px;width:2px;background:#e6f2ea;translate:-1px 0}
.cv-alloc__scale{position:relative;height:20px;margin-top:8px;font:12px var(--cv-mono);color:#c9ded1}
.cv-alloc__scale span{position:absolute;top:0;white-space:nowrap;transform:translateX(-50%)}
.cv-alloc__scale span:first-child{transform:translateX(-4px)}
.cv-alloc__cap{font:13px var(--cv-mono);color:#d4f0de;margin-top:4px}
.cv-res-rest{margin-top:14px}
.cv-readout-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;border-block:1px solid #6bb68f4a;padding-block:12px}
.cv-readout-grid>div{min-width:0;display:grid;gap:6px;align-content:start}
.cv-readout-grid span{font-size:13px;line-height:1.5;color:#c9ded1;max-width:22ch}
.cv-readout-grid output{font:22px var(--cv-mono);overflow-wrap:anywhere;color:#e4f5ea}
.cv-interpretation{margin-top:12px;border-left:2px solid var(--gft-sage);padding-left:16px;min-height:92px}
.cv-interpretation p{font-size:14px;line-height:1.65}
.cv-interpretation [data-cv-warning]:not(:empty){color:#f4ce94;margin-top:10px}
.cv-result-caption{font-size:12px;line-height:1.65;color:#bcd5c7;margin-top:10px}
.cv-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.cv-actions button:first-child{background:var(--gft-sage);border-color:var(--gft-sage);color:var(--gft-night);font-weight:700}
.cv-status{font:12px/1.7 var(--cv-mono);color:#d2e7d8;min-height:2.4em;margin:10px 0 0}
.cv-share-fallback{width:100%;padding:12px;min-height:44px;margin-top:12px;font:12px var(--cv-mono);border:1px solid var(--gft-sage);color:var(--gft-night)}
html[data-cv-valid=false] .cv-primary output{font-size:36px;letter-spacing:-.04em}
.cv-pulse{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--gft-sage);margin-left:8px;vertical-align:1px}

/* 3 / Film (night, solid ground: one side of the first seam). The stage is the first mark; the heading leads the steps. */
.cv-flow-sec{background:var(--gft-night);padding-top:clamp(40px,4vw,64px);padding-bottom:0}
.cv-flow-sec .cv-wrap,.cv-warprun .cv-wrap,.cv-loom-sec .cv-wrap.cv-warpgrid{width:min(1760px,calc(100% - 64px))}
.cv-steps{align-items:start}
.cv-steps .cv-stage{position:sticky;top:16px;min-height:0;display:block;align-self:start;background:#052523;border:1px solid #6bb68f33;border-top:3px solid var(--gft-ochre);padding:14px 22px 16px}
.cv-stage__bar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:6px}
.cv-dots{display:flex;gap:7px;list-style:none;margin:0;padding:0}
.cv-dots li{width:30px;height:4px;background:#ffffff30;transition:background-color .4s}
.cv-steps:not([data-step]) .cv-dots li:nth-child(4),.cv-steps[data-step="0"] .cv-dots li:nth-child(1),.cv-steps[data-step="1"] .cv-dots li:nth-child(2),.cv-steps[data-step="2"] .cv-dots li:nth-child(3),.cv-steps[data-step="3"] .cv-dots li:nth-child(4),.cv-steps[data-step="4"] .cv-dots li:nth-child(5){background:var(--gft-sage)}
.cv-flow-status{font:12px/1.6 var(--cv-mono);color:#cfe6d7;text-align:right;margin-left:auto}
.cv-stepno{font:700 13px var(--cv-mono);color:#e9a94a;letter-spacing:.06em;text-transform:uppercase;min-width:7.5em}
.cv-flow{display:block;width:100%;height:auto;overflow:visible}
.cv-stage__wide{max-height:calc(100svh - 330px)}
.cv-canvas{position:relative}
.cv-stage__tall{display:none}
.cv-edge{transition:opacity .6s ease,transform .8s var(--cv-out)}
.cv-edge [data-cv-ribbon]{fill:var(--cv-thread);fill-opacity:.85;stroke:#b5ecc9;stroke-width:.8;transform-origin:0 0}
.cv-edge--lint [data-cv-ribbon]{fill:#e6f0ea;stroke:#fff;fill-opacity:.78}
.cv-edge--harvest [data-cv-ribbon]{fill:#e6f0ea;stroke:#fff;fill-opacity:.9}
.cv-edge--export [data-cv-ribbon]{fill:#d79a38;stroke:#f0bf74;fill-opacity:.74}
.cv-edge--seed [data-cv-ribbon]{fill:#9db9b0;stroke:#cfe0d8;fill-opacity:.4}
.cv-edge [data-cv-ribbon][data-empty=true]{stroke:none;fill:none}
.cv-edge,.cv-flow-labels text,.cv-bracket,.cv-outturn-tag{transform-box:fill-box}
.cv-edge--harvest{opacity:0}
.cv-flow-labels text{fill:var(--gft-paper);transition:opacity .6s ease,transform .7s var(--cv-out);transform-origin:0 100%}
.cv-flow-label{font:20px var(--cv-mono);fill:#e3f0e8}
.cv-flow-value{font:700 28px var(--cv-mono)}
.cv-flow--tall .cv-flow-label{font-size:15px}.cv-flow--tall .cv-flow-value{font-size:20px}
.cv-bracket path{stroke:#e9c48a;stroke-width:2;fill:none}
.cv-bracket text,.cv-outturn-tag{font:18px var(--cv-mono);fill:#f2d29d}
.cv-bracket,.cv-outturn-tag{transition:opacity .5s ease}
.cv-local-pulse{opacity:0;pointer-events:none;transition:opacity .4s}
.cv-local-pulse path{fill:#d9ffe8;stroke:#fff;stroke-width:2}
.cv-film-warp{stroke:var(--cv-thread);stroke-width:5;transform-box:fill-box;transform-origin:50% 0;opacity:0;transform:scaleY(0);transition:opacity .3s linear,transform .9s var(--cv-out)}
.cv-film-warp:nth-child(2){transition-delay:.08s}.cv-film-warp:nth-child(3){transition-delay:.16s}
svg[data-has-hot] .cv-edge:not(.is-hot){opacity:.24}
svg[data-has-hot] .cv-edge.is-hot [data-cv-ribbon]{fill-opacity:.95;stroke-width:1.4}
.cv-warp line{stroke:#6bb68f;stroke-opacity:.14;stroke-width:1;vector-effect:non-scaling-stroke}
.cv-warp line.cv-warp--ochre{stroke:#c98a2b;stroke-opacity:.5}
.cv-warp{transform-box:fill-box}
/* Film steps: 0 harvest, 1 ginning, 2 allocation, 3 local branch, 4 hand-over (bands straighten into warps). */
:root[data-m-go] .cv-steps[data-step="0"] .cv-stage [data-cv-in]:not([data-cv-in="0"]):not(.cv-node),
:root[data-m-go] .cv-steps[data-step="1"] .cv-stage :is([data-cv-in="2"],[data-cv-in="3"]):not(.cv-node),
:root[data-m-go] .cv-steps[data-step="2"] .cv-stage [data-cv-in="3"]:not(.cv-node){opacity:0;pointer-events:none}
:root[data-m-go] .cv-steps[data-step="0"] .cv-stage .cv-edge--harvest{opacity:1}
:root[data-m-go] .cv-steps[data-step="0"] .cv-stage .cv-edge:is([data-cv-edge=lint],[data-cv-edge=seed]){opacity:0}
:root[data-m-go] .cv-steps[data-step="0"] .cv-stage .cv-flow--wide [data-cv-label=seedCottonTonnes]{transform:scale(1.35)}
:root[data-m-go] .cv-steps[data-step="1"] .cv-stage [data-cv-edge=seed]{opacity:.45;transition-delay:.7s}
:root[data-m-go] .cv-steps:is([data-step="2"],[data-step="3"],[data-step="4"]) .cv-stage :is([data-cv-edge=lint],[data-cv-edge=seed],[data-cv-label=lintTonnes],[data-cv-label=seedResidualTonnes]){opacity:.55}
:root[data-m-go] .cv-steps:is([data-step="2"],[data-step="3"],[data-step="4"]) .cv-stage .cv-outturn-tag{opacity:0}
:root[data-m-go] .cv-steps[data-step="2"] .cv-stage .cv-local-pulse{opacity:.9}
:root[data-m-go] .cv-steps:is([data-step="3"],[data-step="4"]) .cv-stage :is([data-cv-edge=export],[data-cv-label=rawExportTonnes]){opacity:.35}
:root[data-m-go] .cv-steps[data-step="4"] .cv-stage :is([data-cv-edge=yarn],[data-cv-edge=fabric],[data-cv-edge=garment],.cv-bracket){opacity:0}
:root[data-m-go] .cv-steps[data-step="4"] .cv-stage .cv-film-warp{opacity:1;transform:none}
:root[data-m-go] .cv-steps[data-step="4"] .cv-stage .cv-stage__dock{opacity:1}
:root[data-m-go] .cv-steps .cv-stage svg .cv-edge.is-hot{opacity:1}
.cv-stage__dock{transition:opacity .5s ease}
.cv-nodes{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:0;margin-top:10px;border:1px solid #6bb68f33}
.cv-node{min-height:54px;padding:8px;border:0;border-right:1px solid #6bb68f33;background:transparent;color:var(--gft-paper);display:grid;align-content:center;gap:3px;text-align:left;cursor:pointer;transition:background-color .25s,opacity .5s}
.cv-node:last-child{border-right:0}
.cv-node i{font:normal 12px/1.35 var(--cv-mono);color:#c9e0d3;letter-spacing:.02em}
.cv-node b{font:600 14px var(--cv-mono);overflow-wrap:anywhere}
.cv-node:hover,.cv-node[aria-pressed=true]{background:#6bb68f26}
.cv-node[aria-pressed=true]{box-shadow:inset 0 -3px 0 var(--gft-ochre)}
:root[data-m-go] .cv-steps[data-step="0"] .cv-node:not([data-cv-in="0"]),
:root[data-m-go] .cv-steps[data-step="1"] .cv-node:is([data-cv-in="2"],[data-cv-in="3"]),
:root[data-m-go] .cv-steps[data-step="2"] .cv-node[data-cv-in="3"]{opacity:.5}
.cv-read{font-size:15px;line-height:1.55;color:#e3f0e8;margin-top:10px;min-height:3.2em;max-width:none}
.cv-stage__ctl{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;align-items:center;border-top:1px solid #6bb68f33;margin-top:6px;padding-top:4px}
.cv-stage__ctl label{font:14px var(--cv-mono);color:#e3f4ea}
.cv-stage__ctl output,.cv-statement__scrub output,.cv-scrub output,.cv-lim__scrub output,.cv-cmp__scrub output{color:#efb459;font-weight:700;margin-left:8px}
.cv-steps:is([data-step="2"],[data-step="3"]) .cv-stage__ctl{box-shadow:inset 3px 0 0 var(--gft-ochre);padding-left:12px}
.cv-stage__ctl{transition:box-shadow .4s,padding-left .4s}
.cv-flow-invalid{padding:60px 20px;text-align:center}
.cv-stage.is-invalid>.cv-canvas,.cv-stage.is-invalid>svg{display:none}
.cv-flow-head{padding-top:6px}
.cv-flow-head h2{font-size:clamp(1.9rem,2.7vw,2.8rem);max-width:12ch}
.cv-steps__track>li{color:var(--gft-paper);padding-block:5svh}
.cv-steps__track>li:last-child{min-height:100svh;align-content:start;padding-top:24svh}
.cv-steps__track h3{font-size:clamp(1.5rem,2.1vw,2.1rem);letter-spacing:-.04em;margin-bottom:12px;color:#fff}
.cv-steps__track p:not(.cv-kicker){font-size:17px;line-height:1.7;color:#d8e8de;max-width:46ch}
.cv-figcap{margin-top:12vh;padding:18px 0 28px;border-top:1px solid #6bb68f44;color:#c9ded1}
.cv-figcap>p{font-size:13px;line-height:1.7;margin-top:10px}
.cv-keys{margin:0}
.cv-balance{font:12px/1.8 var(--cv-mono)}.cv-balance output{color:#fff;margin-left:8px}
.cv-flow-dock{display:none}
.cv-warprun{height:clamp(120px,16vh,190px);position:relative}
.cv-warprun .cv-wrap,.cv-warpcell{height:100%}
.cv-warpcell{position:relative}
.cv-warpcell i,.cv-loom__warps i{position:absolute;top:0;bottom:0;width:5px;margin-left:-2.5px;background:var(--cv-thread)}

/* 4 / Loom (paper, solid: the other side of the first seam). Warps arrive from above; three weft bars beat up. */
.cv-loom-sec{background:var(--gft-paper);color:var(--gft-night);padding-top:0;padding-bottom:clamp(40px,5vw,72px)}
.cv-loom-sec .cv-kicker,.cv-cmp-sec .cv-kicker{color:#2e5b47}
.cv-loom-sec h2,.cv-cmp-sec h2{color:var(--gft-night)}
.cv-loom-sec .cv-lede,.cv-cmp-sec .cv-lede{color:#29433a}
.cv-loom-grid{display:grid;align-items:start}
.cv-loom{position:relative;padding:clamp(72px,8vw,110px) 23px 0;display:grid;gap:14px;min-width:0}
.cv-loom__warps{position:absolute;inset:0 0 -40px 0;pointer-events:none;z-index:1}
.cv-loom__warps i{background:#3f8f6b;opacity:.9}
.cv-loom__reed{display:flex;justify-content:space-between;gap:12px;font:12px var(--cv-mono);letter-spacing:.06em;text-transform:uppercase;color:#2e5b47;max-width:none;margin:0 0 4px;position:relative;z-index:2;background:linear-gradient(var(--gft-paper),var(--gft-paper)) 0 0/100% 100% no-repeat;padding:4px 0}
.cv-heddle{position:relative;display:grid;grid-template-columns:200px minmax(0,1fr) 196px;gap:clamp(14px,2vw,28px);align-items:center;width:100%;min-height:108px;padding:14px 22px;border:1px solid #c9d6ce;background:#ffffffa6;color:var(--gft-night);text-align:left;cursor:pointer;transition:background-color .3s,color .3s,box-shadow .3s}
.cv-heddle:hover{background:#0e4d4a12}
.cv-heddle__name{display:grid;gap:4px;font:800 26px var(--gft-font-display);letter-spacing:-.03em;text-transform:capitalize;position:relative;z-index:2}
.cv-heddle__name small{font:12px var(--cv-mono);letter-spacing:0;text-transform:none;color:#35574a}
.cv-heddle__track{position:relative;display:block;height:46px;background:repeating-linear-gradient(90deg,#0e4d4a14 0 2px,transparent 2px 10px)}
.cv-heddle__weft{position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(var(--w,0));transition:transform .6s var(--cv-out)}
.cv-heddle__breath{position:absolute;inset:0;background:#7aa894}
.cv-heddle__run{position:absolute;left:0;top:0;bottom:0;width:calc(var(--w,0) * 100%);container-type:inline-size;pointer-events:none;z-index:3}
.cv-heddle__bead{position:absolute;left:0;top:50%;width:14px;height:14px;margin-top:-7px;border-radius:50%;background:var(--gft-ochre);box-shadow:0 0 0 3px #fff;opacity:0}
.cv-heddle output{font:600 22px var(--cv-mono);text-align:right;position:relative;z-index:2;white-space:nowrap}
.cv-heddle[aria-pressed=true]{background:var(--gft-forest);color:#fff;box-shadow:inset 6px 0 0 var(--gft-ochre)}
.cv-heddle[aria-pressed=true] .cv-heddle__name small{color:#d6eadd}
.cv-heddle[aria-pressed=true] .cv-heddle__breath{background:var(--cv-thread)}
.cv-heddle[aria-pressed=true] .cv-heddle__bead{opacity:1}
.cv-heddle[aria-pressed=false] .cv-heddle__name::after{content:'not counted';font:12px var(--cv-mono);letter-spacing:0;text-transform:none;color:#5b3d07;background:#f3dfbf;padding:2px 6px;justify-self:start}
.cv-loom__not{font:12px var(--cv-mono);letter-spacing:.06em;text-transform:uppercase;color:#5b3d07;justify-self:end;background:#f3dfbf;padding:6px 10px;margin:2px 0 0;max-width:none;position:relative;z-index:2}
.cv-ply-lead{position:relative;height:56px;margin-inline:-23px}
.cv-ply-lead i{position:absolute;left:0;right:0;height:3px}
.cv-ply-lead__a{top:20px;background:var(--gft-forest)}
.cv-ply-lead__b{top:30px;background:var(--gft-ochre)}
.cv-loom__side{padding-top:clamp(72px,8vw,110px);min-width:0}
.cv-loom__side h2{font-size:clamp(2rem,3.2vw,3.3rem);max-width:11ch}
.cv-seg{display:flex;flex-wrap:wrap;margin:22px 0 18px}
.cv-seg__b{min-height:46px;padding:0 20px;border:1px solid var(--gft-forest);background:transparent;color:var(--gft-forest);font:700 14px var(--cv-mono);text-transform:capitalize;cursor:pointer;transition:background-color .25s,color .25s}
.cv-seg__b+.cv-seg__b{border-left:0}
.cv-seg__b:hover{background:#0e4d4a14}
.cv-seg__b[aria-pressed=true]{background:var(--gft-forest);color:#fff;box-shadow:inset 0 -4px 0 var(--gft-ochre)}
.cv-gvi{border-left:4px solid var(--gft-ochre);padding:2px 0 2px 20px}
.cv-gvi__k{font:12px var(--cv-mono);letter-spacing:.1em;text-transform:uppercase;color:#2e5b47;max-width:none}
.cv-gvi__n{font-size:clamp(3rem,4.9vw,5.4rem);font-weight:850;letter-spacing:-.065em;line-height:1.05;max-width:none;color:var(--gft-forest)}
.cv-gvi__b{font:13px/1.7 var(--cv-mono);color:#29433a;max-width:none}
.cv-boundary{padding-top:14px;font-size:14px;max-width:none;color:#29433a}
.cv-boundary output{display:block;font:14px/1.7 var(--cv-mono);color:var(--gft-forest)}

/* 5 / Plied compare (paper). */
.cv-cmp-sec{background:var(--gft-paper);color:var(--gft-night);padding-top:clamp(28px,3vw,48px);padding-bottom:clamp(110px,12vw,170px)}
.cv-cmp__head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(24px,4vw,64px);align-items:end}
.cv-cmp__head h2{max-width:16ch}
.cv-delta{border-left:4px solid var(--gft-ochre);padding-left:20px}
.cv-delta__k{font:12px var(--cv-mono);letter-spacing:.1em;text-transform:uppercase;color:#2e5b47;max-width:none}
.cv-delta__n{display:flex;align-items:baseline;gap:.15em;font-size:clamp(2.6rem,4.4vw,4.6rem);font-weight:850;letter-spacing:-.05em;line-height:1.05;color:var(--gft-forest);max-width:none}
.cv-delta__n span{font:600 20px var(--cv-mono);color:#7a4f08}
.cv-delta__s{font:13px var(--cv-mono);color:#29433a;max-width:none}
.cv-ply{--cv-bleed:calc((100vw - min(1360px,100vw - 128px)) / 2);margin-top:clamp(28px,3.4vw,48px);display:grid;gap:10px}
.cv-ply__axis{display:flex;justify-content:space-between;margin:0 130px 0 150px;font:12px var(--cv-mono);color:#35574a;max-width:none}
.cv-ply__row,.cv-ply__twist{display:grid;grid-template-columns:136px minmax(0,1fr) 120px;gap:14px;align-items:center}
.cv-ply__lab{font:600 14px var(--cv-mono);color:#0b2a26}
.cv-ply__track{position:relative;display:block;height:24px;background:#0e4d4a14}
.cv-ply__bar{position:absolute;inset:0;transform-origin:0 50%;transition:transform .6s var(--cv-out)}
.cv-ply__bar--a{background:var(--gft-forest);transform:scaleX(var(--a,0))}
.cv-ply__bar--b{background:var(--gft-ochre);transform:scaleX(var(--b,0))}
.cv-ply__bar--t{background:repeating-linear-gradient(90deg,#3f8f6b 0 8px,transparent 8px 14px);transform:scaleX(var(--t,0))}
.cv-ply__row output{font:600 15px var(--cv-mono);text-align:right}
.cv-ply__twist .cv-ply__track{height:30px;background:transparent}
.cv-ply__yarn{position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(min(var(--a,0),var(--b,0)));background:repeating-linear-gradient(120deg,var(--gft-forest) 0 7px,var(--gft-ochre) 7px 14px);transition:transform .6s var(--cv-out)}
.cv-ply__over{position:absolute;left:0;right:0;height:9px;transition:clip-path .6s var(--cv-out)}
.cv-ply__over--a{top:2px;background:var(--gft-forest);clip-path:inset(0 calc((1 - var(--a,0)) * 100%) 0 calc(min(var(--a,0),var(--b,0)) * 100%))}
.cv-ply__over--b{bottom:2px;background:var(--gft-ochre);clip-path:inset(0 calc((1 - var(--b,0)) * 100%) 0 calc(min(var(--a,0),var(--b,0)) * 100%))}
.cv-ply__agree{font:12px var(--cv-mono);color:#35574a;text-align:right}
.cv-ply__runout{position:absolute;top:calc(100% + 4px);left:calc(var(--b,0) * 100%);right:calc(-120px - 14px - var(--cv-bleed));height:3px;background:var(--gft-ochre)}
.cv-ply__gap{position:absolute;top:0;bottom:0;left:calc(var(--b,0) * 100%);width:calc(max(0,var(--t,0) - var(--b,0)) * 100%);overflow:hidden;border-block:1px dashed #c98a2b}
.cv-ply__gap i{position:absolute;top:50%;left:-28px;right:0;height:3px;margin-top:-1.5px;background:repeating-linear-gradient(90deg,#a8670f 0 14px,transparent 14px 28px)}
.cv-cmp__ctl{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1.3fr);gap:18px clamp(20px,3vw,44px);align-items:center;margin-top:clamp(24px,3vw,40px);padding-top:18px;border-top:1px solid #c9d6ce}
.cv-cmp__hold{border-color:var(--gft-forest)!important;background:var(--gft-forest)!important;color:#fff!important;font-weight:700}
.cv-cmp__scrub{display:grid;gap:0;--cv-thumb:var(--gft-forest);--cv-ring:var(--gft-paper);--cv-trk:#0e4d4a33}
.cv-cmp__scrub span{font:13px var(--cv-mono);color:#0b2a26}
.cv-cmp__scrub output{color:#7a4f08}
.cv-cmp__text{font:13px/1.7 var(--cv-mono);color:#0b2a26;background:#ffffffc0;padding:12px 14px;min-height:6.2em;max-width:none}

/* 6 / Interlude (deep, solid: the far side of the second seam). */
.cv-statement{background:var(--cv-deep);padding-block:0;overflow:clip;view-timeline-name:--cv-st;view-timeline-axis:block}
.cv-st__iris{position:relative;min-height:min(100svh,940px);display:grid;align-items:center;padding-block:clamp(72px,8vw,120px) clamp(120px,12vw,170px)}
.cv-st__svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.cv-st__wave{transform-box:fill-box;transform-origin:50% 100%}
.cv-st__mass{stroke:#c98a2b;stroke-opacity:.16;fill:none}
.cv-st__ghostwrap{opacity:.5}
.cv-st__ghost{stroke:var(--cv-thread);stroke-opacity:.16;stroke-dasharray:18 12;fill:none}
.cv-st__local{stroke:var(--cv-thread);fill:none}
.cv-statement__grid{position:relative;z-index:1}
.cv-statement h2.cv-statement__h{font-size:clamp(1.5rem,2.4vw,2.2rem);font-weight:750;letter-spacing:-.03em;max-width:30ch;margin-bottom:6px}
.cv-statement__n{display:flex;align-items:baseline;gap:.1em;font-size:clamp(6rem,21vw,20rem);font-weight:850;letter-spacing:-.07em;line-height:.95;max-width:none;margin-bottom:.12em;color:#fff}
.cv-statement__n span{font-size:.26em;letter-spacing:-.02em;color:#e9a94a}
.cv-statement__cap{font-size:clamp(1.05rem,1.5vw,1.35rem);line-height:1.6;max-width:52ch;color:#e3f0e8}
.cv-statement__cap b{font:700 1em var(--cv-mono);color:#fff}
.cv-statement__scrub{margin-top:clamp(24px,3vw,40px);max-width:720px;position:relative;background:#041d1bcc;padding:10px 14px 4px;border-left:3px solid var(--cv-thread)}
.cv-statement__scrub label{font:14px var(--cv-mono);color:#e3f4ea}
.cv-statement__marks{position:relative;height:22px;font:12px var(--cv-mono);color:#cfe6d7;max-width:none;margin:0}
.cv-statement__marks span{position:absolute;top:0;white-space:nowrap;transform:translateX(-50%)}
.cv-statement__marks span:nth-child(1){left:5%;transform:translateX(-4px)}
.cv-statement__marks span:nth-child(2){left:50%}
.cv-statement__key{margin-top:18px;max-width:none;color:#d6e8dd}
.cv-statement__dots{font:12px var(--cv-mono);color:#cfe6d7}
.cv-taut{position:absolute;left:0;right:0;bottom:44px;height:16px;pointer-events:none}
.cv-taut__grid{display:grid;height:100%}
.cv-taut__bar{display:block;height:14px;background:var(--cv-thread);transform-origin:0 50%}
@media(min-width:1001px){.cv-taut__grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(32px,4vw,72px)}.cv-taut__bar{margin-inline:36px}}

/* 7 / Method (forest). The card is sticky from the first frame; the heading leads the steps. */
.cv-method{background:radial-gradient(ellipse 70% 50% at 100% 0,#13605c 0,#13605c00 70%),#0c403d;padding-top:clamp(56px,6vw,96px)}
.cv-method h3{color:#fff}
.cv-msteps{align-items:start}
.cv-msteps .cv-mass{position:sticky;top:16px;min-height:0;display:block;align-self:start}
.cv-mass__card{position:relative;background:#072d2b;padding:20px 26px 22px;border-top:4px solid var(--gft-ochre);display:grid;gap:12px;box-shadow:0 30px 60px -30px #00000099}
.cv-mass__card .cv-kicker{margin:0}
.cv-mass__top{display:flex;justify-content:space-between;align-items:center;gap:16px}
.cv-mstep{font:700 13px var(--cv-mono);color:#e9a94a;letter-spacing:.06em;text-transform:uppercase;max-width:none}
.cv-eqstage{display:grid;align-content:start}
.cv-eqstate{grid-area:1/1;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .16s linear,transform .16s linear,visibility 0s linear .16s}
.cv-eqstate__k{font:12px var(--cv-mono);letter-spacing:.1em;text-transform:uppercase;color:#bad6c6;max-width:none}
.cv-eqstate__eq{display:grid;gap:2px;font:600 clamp(24px,2.6vw,40px)/1.16 var(--cv-mono);color:#fff;max-width:none;margin-top:4px;letter-spacing:-.02em}
.cv-eqstate__s{font-size:13px;line-height:1.55;color:#d3e5db;margin-top:6px;max-width:62ch}
.cv-msteps:not([data-step]) .cv-eqstate[data-i="3"],
.cv-msteps[data-step="0"] .cv-eqstate[data-i="0"],.cv-msteps[data-step="1"] .cv-eqstate[data-i="1"],.cv-msteps[data-step="2"] .cv-eqstate[data-i="2"],.cv-msteps[data-step="3"] .cv-eqstate[data-i="3"]{opacity:1;visibility:visible;transform:none;transition:opacity .4s linear .2s,transform .4s var(--cv-out) .2s,visibility 0s}
:root:not([data-cv-js]) .cv-eqstage{display:block}
:root:not([data-cv-js]) .cv-eqstate{opacity:1;visibility:visible;transform:none;margin-bottom:12px}
:root:not([data-m-go]) .cv-eqstate{transition:none!important}
.cv-mass__rows{display:grid;gap:4px}
.cv-mass__row{display:grid;gap:6px;padding:6px 10px;transition:opacity .5s,background-color .4s}
.cv-msteps[data-step] .cv-mass__row .cv-bar i{opacity:.5}
.cv-msteps[data-step="0"] .cv-mass__row[data-row="0"],.cv-msteps[data-step="1"] .cv-mass__row[data-row="1"],.cv-msteps[data-step="2"] .cv-mass__row[data-row="2"]{opacity:1;background:#ffffff12}
.cv-msteps[data-step="0"] .cv-mass__row[data-row="0"] .cv-bar i,.cv-msteps[data-step="1"] .cv-mass__row[data-row="1"] .cv-bar i,.cv-msteps[data-step="2"] .cv-mass__row[data-row="2"] .cv-bar i{opacity:1}
.cv-msteps:is([data-step="0"],[data-step="1"]) .cv-mass__row[data-row="2"] .cv-bar i{opacity:.22}
.cv-msteps[data-step="3"] .cv-mass__row .cv-bar i{opacity:.62}
.cv-msteps[data-step="3"] .cv-bar{filter:grayscale(1)}
.cv-mass__row>p{display:flex;justify-content:space-between;gap:12px;font:600 14px var(--cv-mono);max-width:none}
.cv-mass__row>p output{font-size:19px;color:#e3f4ea}
.cv-bar{position:relative;height:28px;background:#ffffff14;overflow:hidden;transition:filter .5s}
.cv-bar i{position:absolute;inset:0;transform-origin:0 50%;transition:transform .7s var(--cv-out),opacity .5s}
.cv-bar__a{transform:scaleX(var(--a,0))}
.cv-bar__b{transform:translateX(calc(var(--a,0) * 100%)) scaleX(calc(1 - var(--a,0)))}
.cv-mass__row[data-row="2"] .cv-bar{--a:var(--a1,0)}
.cv-msteps:is([data-step="0"],[data-step="1"]) .cv-mass__row[data-row="2"] .cv-bar{--a:var(--a0,0)}
.cv-bar__a--lint{background:#e6f0ea}.cv-bar__b--seed{background:#8fb0a4}
.cv-bar__a--export{background:var(--gft-ochre)}.cv-bar__b--local{background:var(--cv-thread)}
.cv-mass__leg{display:flex;justify-content:space-between;gap:12px;font:12px/1.5 var(--cv-mono);color:#cfe6d7;max-width:none}
.cv-mass__leg b{color:#fff;font-weight:600;margin-left:4px}
.cv-mass__resid{display:flex;flex-wrap:wrap;gap:6px 14px;font:12px/1.6 var(--cv-mono);color:#cfe6d7;max-width:none;border-top:1px solid #6bb68f44;padding-top:8px}
.cv-mass__resid output{color:#fff}.cv-mass__resid span{margin-left:auto}
.cv-mass__scrubs{display:grid;grid-template-columns:1fr 1fr;gap:4px 24px}
.cv-scrub{display:grid;gap:0}
.cv-scrub>span{font:13px var(--cv-mono);color:#e3f4ea}
.cv-excl{list-style:none;margin:0;padding:8px 0 0;border-top:1px dashed #6bb68f66;display:flex;flex-wrap:wrap;gap:8px}
.cv-excl li{font:12px var(--cv-mono);padding:6px 10px;border:1px dashed #d6e2dc;color:#eef4f0;text-decoration:line-through;text-decoration-thickness:1px;transition:transform .8s cubic-bezier(.5,0,.75,0),opacity .8s;transition-delay:calc(var(--i) * 70ms)}
:root[data-m-go] .cv-msteps[data-step="3"] .cv-excl li{transform:translateY(64px) rotate(calc((var(--i) - 2) * 4deg));opacity:.85}
.cv-method-head{padding-bottom:4svh}
.cv-method-head h2{max-width:13ch}
.cv-msteps__track>li{color:#e0eee6;padding-block:7svh}
.cv-msteps__track>li:last-child{min-height:100svh;align-content:start;padding-top:20svh}
.cv-msteps__track>*::before{background:#6bb68f44}
.cv-msteps__track .cv-kicker{display:inline-block;justify-self:start;padding:4px 12px;border:1px solid #6bb68f99;margin-bottom:14px;color:#d4e8dc;transition:background-color .4s,color .4s,border-color .4s}
.cv-msteps__track>[data-active] .cv-kicker{background:var(--gft-ochre);border-color:var(--gft-ochre);color:var(--gft-night)}
.cv-msteps__track h3{font-size:clamp(1.5rem,2.1vw,2.1rem);letter-spacing:-.04em;margin-bottom:12px}
.cv-msteps__track p:not(.cv-kicker){font-size:17px;line-height:1.7;max-width:50ch}

/* 8 / Register (indigo data layer). */
.cv-sources{background:radial-gradient(ellipse 70% 50% at 0 0,#2c3e7a 0,#2c3e7a00 70%),#151f45;padding-bottom:0}
.cv-sources .cv-kicker{color:#c9d3f2}
.cv-sources .cv-lede{color:#dfe5f7}
.cv-knots{position:relative;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin-top:clamp(28px,3vw,44px);padding-top:6px}
.cv-knots__thread{position:absolute;left:-64px;right:-64px;top:30px;height:4px;background:var(--cv-thread)}
.cv-knot{position:relative;display:grid;justify-items:center;align-content:start;gap:8px;min-height:112px;padding:0 4px 8px;border:0;background:transparent;color:#fff;cursor:pointer;text-align:center}
.cv-knot__g{position:relative;width:52px;height:52px;border-radius:50%;background:var(--cv-k);border:4px solid #151f45;box-shadow:0 0 0 2px var(--cv-k);display:block;transition:transform .35s var(--cv-out)}
.cv-knot__g::after{content:'';position:absolute;inset:12px;border-radius:50%;border:3px solid #151f45;border-top-color:transparent;transform:rotate(-30deg)}
.cv-knot__ring{position:absolute;inset:-10px;border-radius:50%;border:2px solid var(--cv-k);opacity:.2;transition:opacity .4s}
.cv-knot[aria-pressed=true] .cv-knot__ring{opacity:.6}
.cv-knot[data-status=evidenced]{--cv-k:#7fd1a2}
.cv-knot[data-status=illustrative]{--cv-k:#e9a94a}
.cv-knot[data-status=excluded]{--cv-k:#dbe3f5}
.cv-knot[data-status=excluded] .cv-knot__g{background:#151f45;border:3px dashed var(--cv-k);box-shadow:none}
.cv-knot__s{font:12px var(--cv-mono);text-transform:uppercase;letter-spacing:.06em;color:#cbd4f0}
.cv-knot b{font:700 15px/1.25 var(--gft-font-display);letter-spacing:-.01em}
.cv-knot[aria-pressed=true] .cv-knot__g{transform:scale(1.18)}
.cv-knot[aria-pressed=true] b{text-decoration:underline;text-decoration-color:var(--cv-k);text-decoration-thickness:3px;text-underline-offset:6px}
.cv-knot.is-off{opacity:.35}
.cv-src__grid{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.5fr);gap:clamp(28px,4vw,56px);align-items:start;padding-top:clamp(24px,3vw,40px)}
.cv-src__map{position:sticky;top:16px;min-width:0}
.cv-src__card{background:#0d1534;padding:22px 22px 16px;border-top:4px solid var(--cv-thread);display:grid;gap:8px;align-content:start;box-shadow:0 30px 60px -30px #000000aa}
.cv-src__card[data-status=illustrative]{border-top-color:#e9a94a}
.cv-src__card[data-status=excluded]{border-top-color:#dbe3f5;border-top-style:dashed}
.cv-src__st{font:700 12px var(--cv-mono);text-transform:uppercase;letter-spacing:.08em;color:#9fe0bb;max-width:none}
.cv-src__card[data-status=illustrative] .cv-src__st{color:#f0c37c}
.cv-src__card[data-status=excluded] .cv-src__st{color:#dbe3f5}
.cv-src__name{font-size:1.45rem;font-weight:800;letter-spacing:-.04em;line-height:1.15;min-height:2.3em;max-width:none}
.cv-src__val{font:600 clamp(18px,1.8vw,24px)/1.3 var(--cv-mono);color:#fff;min-height:2.6em;max-width:none}
.cv-src__note{font-size:14px;line-height:1.6;color:#e2e8f7;min-height:8em;max-width:none}
.cv-src__ids{font:13px var(--cv-mono);color:#cbd4f0;max-width:none}
.cv-src__mini{border-top:1px solid #ffffff22;padding-top:8px}
.cv-regflow{display:block;width:100%;height:auto;overflow:visible}
.cv-regflow [data-splash-draw]{animation:none!important}
.cv-regflow .cv-flow-label{font:500 22px var(--cv-mono);fill:#dfe5f7}
.cv-regflow .cv-flow-value{font:700 26px var(--cv-mono)}
.cv-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}
.cv-chip{min-height:46px;padding:0 16px;border:1px solid #9fb0e0;background:transparent;color:#eef1fb;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .25s,color .25s}
.cv-chip__n{display:inline-block;margin-left:10px;padding:2px 8px;font:700 12px var(--cv-mono);background:#ffffff22;border-radius:99px}
.cv-chip[aria-pressed=true]{background:#eef1fb;color:#151f45;box-shadow:inset 0 -3px 0 var(--gft-ochre)}
.cv-chip[aria-pressed=true] .cv-chip__n{background:#151f4522}
.cv-count{font:13px var(--cv-mono);margin-left:auto;color:#dfe5f7}
.cv-table-wrap{max-width:100%;overflow:auto}
.cv-sources table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.6;text-align:left;color:#eef1fb}
.cv-sources caption{text-align:left;font:12px/1.8 var(--cv-mono);margin-bottom:10px;text-transform:uppercase;letter-spacing:.1em;color:#cbd4f0}
.cv-sources th,.cv-sources td{padding:12px 14px;vertical-align:top;border-bottom:1px solid #ffffff22}
.cv-sources thead{background:#2c3e7a;color:#fff}
.cv-sources thead th{font:700 13px var(--cv-mono);text-transform:uppercase;letter-spacing:.06em}
.cv-sort{min-height:44px;padding:0;border:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.cv-sort i{font-style:normal;opacity:.8}
.cv-sources tbody th[scope=row]{border-left:6px solid var(--cv-thread)}
.cv-sources tbody tr[data-status=illustrative] th[scope=row]{border-left-color:#e9a94a}
.cv-sources tbody tr[data-status=excluded] th[scope=row]{border-left-color:#dbe3f5;border-left-style:dashed}
.cv-sources tbody tr{transition:background-color .25s,box-shadow .25s}
.cv-sources tbody tr:hover,.cv-sources tbody tr.is-on{background:#ffffff14;box-shadow:inset 5px 0 0 var(--gft-ochre)}
.cv-sources td:nth-child(2){font:14px/1.6 var(--cv-mono);width:20%}
.cv-rowbtn{min-height:44px;padding:0;border:0;background:none;color:inherit;font:700 16px/1.45 var(--gft-font-display);text-align:left;cursor:pointer}
.cv-badge{display:inline-block;font:700 12px/1 var(--cv-mono);text-transform:uppercase;letter-spacing:.06em;padding:5px 8px;border:1px solid;margin-right:6px;vertical-align:1px}
.cv-badge[data-status=evidenced]{color:#9fe0bb}
.cv-badge[data-status=illustrative]{color:#f0c37c}
.cv-badge[data-status=excluded]{color:#dbe3f5;border-style:dashed}
.cv-basis{color:#e2e8f7}
.cv-sources .gft-cite{min-width:44px;min-height:44px;padding:8px;margin:2px;font-size:12px}
.cv-src__foot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:36px;align-items:start}
.cv-srcard{border:1px solid #ffffff2a;background:#0d1534;border-top:3px solid #9fb0e0}
.cv-srcard summary{display:flex;align-items:center;gap:12px;min-height:60px;padding:12px 16px;font:700 16px/1.25 var(--gft-font-display);letter-spacing:-.02em;cursor:pointer;list-style:none;color:#fff}
.cv-srcard summary::-webkit-details-marker{display:none}
.cv-srcard summary span{font:12px var(--cv-mono);color:#cbd4f0;letter-spacing:.06em}
.cv-srcard summary::after{content:'+';margin-left:auto;font:400 24px var(--cv-mono);color:#cbd4f0}
.cv-srcard[open] summary::after{content:'-'}
.cv-srcard p{padding:0 16px 16px;font-size:14px;line-height:1.65;color:#e2e8f7;max-width:none}
.cv-lead4{position:relative;height:clamp(150px,18vh,200px);margin-top:clamp(36px,4vw,56px)}
.cv-lead4__in{position:relative;height:100%}
.cv-lead4__line{position:absolute;left:calc(var(--cv-gut) / 2 - 2px);right:-64px;top:24px;bottom:0;border-top:4px solid var(--cv-thread);border-left:4px solid var(--cv-thread);border-top-left-radius:28px}
.cv-lead4__k{position:absolute;top:16px;left:calc(var(--cv-gut) + 6% + var(--i) * 17%);width:20px;height:20px;border-radius:50%;background:#151f45;border:4px solid var(--cv-thread)}

/* 9 / Limits (night). The gutter thread runs through four station gauges. */
.cv-limits{background:radial-gradient(ellipse 60% 60% at 100% 100%,#0e4d4a 0,#0e4d4a00 70%),#072d2b;padding-top:clamp(40px,4vw,64px);padding-bottom:clamp(56px,6vw,96px)}
.cv-gut{position:relative;padding-left:var(--cv-gut)}
.cv-gut__thread{position:absolute;left:calc(var(--cv-gut) / 2 - 2px);top:calc(-1 * clamp(40px,4vw,64px));bottom:calc(-1 * clamp(56px,6vw,96px));width:4px;background:var(--cv-thread);overflow:clip}
.cv-gut__bead{position:absolute;left:-6px;top:0;width:16px;height:100%;pointer-events:none}
.cv-gut__bead::before{content:'';position:absolute;left:0;top:0;width:16px;height:16px;border-radius:50%;background:var(--gft-ochre);box-shadow:0 0 0 3px #072d2b}
.cv-lim__head h2{max-width:20ch}
.cv-lim{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(24px,4vw,64px);align-items:start;margin-top:clamp(24px,3vw,40px)}
.cv-lim__axis{display:flex;justify-content:space-between;font:12px var(--cv-mono);color:#cfe6d7;margin:0 0 8px 150px;max-width:none}
.cv-lim__axis output{color:#fff}
.cv-stations{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.cv-station{position:relative;display:grid;grid-template-columns:132px minmax(0,1fr) 110px;grid-template-areas:"n g v" ". a a";gap:6px 16px;align-items:center;padding:12px 0}
.cv-station__node{position:absolute;left:calc(-1 * var(--cv-gut) / 2 - 11px);top:18px;width:22px;height:22px;border-radius:50%;background:#072d2b;border:4px solid var(--cv-thread)}
.cv-station__n{grid-area:n;font:800 20px var(--gft-font-display);letter-spacing:-.02em}
.cv-station__gauge{grid-area:g;position:relative;display:block;height:34px;background:repeating-linear-gradient(135deg,#ffffff24 0 6px,#ffffff0a 6px 12px);border:1px dashed #6bb68f88;overflow:hidden}
.cv-station__gauge i{position:absolute;inset:0;background:var(--cv-thread);transform-origin:0 50%;transform:scaleX(var(--w,0));transition:transform .6s var(--cv-out)}
.cv-station__tgt{position:absolute;right:0;top:0;bottom:0;width:3px;background:#efb459}
.cv-station__v{grid-area:v;font:600 20px var(--cv-mono);text-align:right;white-space:nowrap}
.cv-station__a{grid-area:a;display:grid;font-size:13px;line-height:1.4;color:#d9eadf;min-height:1.4em}
.cv-station__a>span,.cv-lens__fig{grid-area:1/1;opacity:0;visibility:hidden;transition:opacity .15s linear,visibility 0s linear .15s}
.cv-lim[data-persona="0"] [data-i="0"],.cv-lim[data-persona="1"] [data-i="1"],.cv-lim[data-persona="2"] [data-i="2"]{opacity:1;visibility:visible;transition:opacity .4s linear .18s,visibility 0s}
:root:not([data-m-go]) :is(.cv-lens__fig,.cv-station__a>span){transition:none!important}
.cv-lim[data-persona="1"] .cv-station__gauge i{background:#e6f0ea}
.cv-lim[data-persona="2"] .cv-station__gauge i{background:var(--gft-ochre)}
.cv-lim__scrub{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 18px;align-items:center;border-top:1px solid #6bb68f44;margin-top:12px;padding-top:6px}
.cv-lim__scrub label{font:14px var(--cv-mono);color:#e3f4ea}
.cv-lens{background:#052523;border-top:4px solid var(--gft-ochre);padding:0 clamp(20px,2.4vw,32px) clamp(18px,2vw,26px);display:grid;gap:12px;align-content:start}
.cv-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-inline:calc(-1 * clamp(20px,2.4vw,32px))}
.cv-tab{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:64px;padding:10px 14px;border:0;border-bottom:1px solid #6bb68f55;background:transparent;color:#e3f0e8;font:800 clamp(15px,1.3vw,18px)/1.2 var(--gft-font-display);letter-spacing:-.02em;text-align:left;cursor:pointer;transition:background-color .3s,color .3s}
.cv-tab span{font:700 12px var(--cv-mono);letter-spacing:.08em}
.cv-tab:hover{background:#6bb68f1f}
.cv-tab[aria-selected=true]{background:var(--gft-sage);color:var(--gft-night);box-shadow:inset 0 -4px 0 var(--gft-ochre)}
.cv-lens__top{display:grid;min-height:150px}
.cv-lens__k{font:12px/1.5 var(--cv-mono);letter-spacing:.1em;text-transform:uppercase;color:#cfe6d7;max-width:none}
.cv-lens__n{display:flex;align-items:baseline;gap:.14em;font-size:clamp(3rem,5vw,5rem);font-weight:850;letter-spacing:-.065em;line-height:1.05;max-width:none;color:#fff}
.cv-lens__n span{font:600 18px var(--cv-mono);letter-spacing:0;color:#e9a94a}
.cv-lens__s{font-size:14px;line-height:1.55;color:#e3f0e8;max-width:60ch}
.cv-lens__s b{font:700 1em var(--cv-mono);color:#fff}
.cv-lens .cv-bar{margin-block:6px}
.cv-auds{display:grid;min-height:13em}
.cv-aud{border-top:1px solid #6bb68f44;padding-top:12px}
.cv-aud p{font-size:15px;line-height:1.6;color:#e3f0e8;max-width:56ch}
.cv-aud .cv-aud__lead{font:800 clamp(18px,1.6vw,22px)/1.25 var(--gft-font-display);letter-spacing:-.02em;margin-bottom:8px;color:#fff}
.cv-aud__more{margin-top:8px}
.cv-aud__more summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font:600 13px var(--cv-mono);color:#bfe3cc}
:root[data-cv-js] .cv-aud:not([hidden]){animation-name:cv-aud-in;animation-duration:520ms;animation-timing-function:var(--cv-out);animation-iteration-count:1;animation-direction:normal;animation-fill-mode:backwards}
@keyframes cv-aud-in{from{opacity:0;transform:translateY(12px)}}

/* 10 / Closing (night): the knot board, the last full screen before the footer. */
.cv-close{background:radial-gradient(ellipse 70% 60% at 85% 100%,#0e4d4a 0,#0e4d4a00 70%),#072d2b;min-height:100svh;padding-block:clamp(40px,4vw,64px) 72px;overflow:clip}
.cv-close__head h2{max-width:17ch;font-size:clamp(2rem,3.4vw,3.4rem)}
.cv-close__grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(14px,2vw,24px) clamp(28px,4vw,64px);align-items:start;margin-top:clamp(14px,2vw,24px)}
.cv-close__stage{display:grid;gap:clamp(10px,1.4vw,18px);min-width:0}
.cv-close__node{border-left:3px solid var(--gft-ochre);padding:2px 0 2px 20px}
.cv-close__node .cv-kicker{margin-bottom:4px}
.cv-close__big{display:flex;align-items:baseline;gap:.12em;font-size:clamp(3rem,4.6vw,4.6rem);font-weight:850;letter-spacing:-.06em;line-height:1.05;max-width:none;color:#fff}
.cv-close__big span{font-size:.3em;letter-spacing:0;color:#e9a94a}
.cv-close__sub{font:13px/1.6 var(--cv-mono);color:#d3e5db;max-width:60ch}
.cv-close__map{position:relative}
.cv-close__in{position:absolute;left:calc(-1 * var(--cv-gut) / 2 - 2px);width:calc(var(--cv-gut) / 2 + 4px);top:-300vh;bottom:calc(50% - 2px);border-left:4px solid var(--cv-thread);border-bottom:4px solid var(--cv-thread);border-bottom-left-radius:24px;pointer-events:none}
.cv-close__svg{display:block;width:100%;height:auto;overflow:visible}
.cv-close__svg--tall{display:none}
.cv-close__live{stroke:var(--cv-thread)}
.cv-close__ghost{stroke:#fff;stroke-opacity:.75;stroke-dasharray:6 6;fill:none;transform:translateY(-14px)}
.cv-close__knot{fill:#072d2b;stroke:var(--cv-thread);stroke-width:5}
.cv-close__branches{transform-box:view-box;transform-origin:64px 200px}
.cv-close__edge{color:#8fc9a8;opacity:.55;transition:opacity .5s}
.cv-close__edge [data-cv-ribbon]{stroke:currentColor;fill:none;transition:stroke-width .5s var(--cv-out)}
.cv-close__edge[data-on=true]{opacity:1;color:var(--gft-ochre)}
.cv-close__dest{fill:currentColor}
.cv-close__lab{fill:#e8f3ec;font:600 24px var(--gft-font-display)}
.cv-close__ctl{display:grid;gap:14px;align-items:start;min-width:0}
.cv-dest{border:0;margin:0;padding:0;display:grid;gap:8px;min-width:0}
.cv-dest legend{font-size:19px;font-weight:800;letter-spacing:-.025em;margin-bottom:10px;padding:0;color:#fff}
.cv-dest__opt{position:relative;display:block;cursor:pointer}
.cv-dest__opt input{position:absolute;opacity:0;width:1px;height:1px}
.cv-dest__opt span{display:flex;align-items:center;gap:14px;min-height:50px;padding:10px 16px;border:1px solid #6bb68f66;font:600 16px var(--gft-font-display);transition:background-color .3s,color .3s}
.cv-dest__opt i{font:normal 12px var(--cv-mono)}
.cv-dest__opt:hover span{background:#6bb68f1f}
.cv-dest__opt input:checked+span{background:var(--gft-sage);color:var(--gft-night);border-color:var(--gft-sage);box-shadow:inset 4px 0 0 var(--gft-ochre)}
.cv-dest__opt input:focus-visible+span{outline:3px solid var(--gft-ochre);outline-offset:3px}
.cv-dest__panel{min-height:9.5em}
.cv-dest__panel h3{font-size:1.4rem;letter-spacing:-.03em;color:#fff}
.cv-dest__panel p{font-size:14px;line-height:1.6;color:#e0eee6;margin-top:8px}
.cv-dest__carry{font:13px/1.6 var(--cv-mono)!important;color:#f0c37c!important}
.cv-dest__link a{color:#fff;text-underline-offset:5px;display:inline-flex;align-items:center;min-height:44px}
.cv-close__cta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.cv-close__fine{font-size:12px;line-height:1.65;color:#cfe3d7;max-width:none;border-top:1px solid #6bb68f44;padding-top:12px}
.cv-close__exit{stroke:var(--gft-ochre);stroke-width:4px;fill:none;opacity:0;transition:opacity .5s}
.cv-close__edge[data-on=true] .cv-close__exit{opacity:1}

/* Rail: the motif's index in the left gutter; its glyph names the thread's current state. */
.cv-rail{position:fixed;left:0;top:0;bottom:0;width:40px;z-index:30;pointer-events:none;color:var(--gft-forest);transition:color .6s}
.cv-rail[data-tone=dark]{color:var(--gft-sage)}
.cv-rail__line{position:absolute;left:50%;top:0;bottom:0;width:1.5px;background:currentColor;opacity:.35;transform:translateX(-50%)}
.cv-rail__mark{position:absolute;left:0;top:96px;width:40px;height:52px;transform:translateY(calc(var(--cv-p,0) * (100svh - 220px)))}
.cv-rail__mark svg{display:block;width:100%;height:100%;overflow:visible}
.cv-rail__mark [data-glyph]{opacity:0;transition:opacity .5s}
.cv-rail[data-state=thread] [data-glyph=thread],.cv-rail[data-state=ribbon] [data-glyph=ribbon],.cv-rail[data-state=weave] [data-glyph=weave],.cv-rail[data-state=ply] [data-glyph=ply],.cv-rail[data-state=knot] [data-glyph=knot],.cv-rail[data-state=station] [data-glyph=station],.cv-rail[data-state=garment] [data-glyph=garment]{opacity:1}

/* 1 / Splash: the programme-default flow at scale; the local thread runs out at the right and drops to the bottom edge. */
[data-splash=cotton-value-flow] .gft-splash__structure{inset:0 0 0 45%;display:block;opacity:1}
[data-splash=cotton-value-flow] .gft-splash__structure::after{background:linear-gradient(90deg,#072d2b 0%,#072d2b00 5%)}
[data-splash=cotton-value-flow] .gft-splash__content{max-width:var(--gft-max,1440px)}
[data-splash=cotton-value-flow] .gft-splash__lede{max-width:43ch}
[data-splash=cotton-value-flow] h1{font-size:clamp(54px,6.2vw,100px);max-width:11ch}
[data-splash=cotton-value-flow] h1 .gft-serif{font-size:.78em;line-height:1.15;display:inline-block;transform-origin:0 100%}
.cv-hero{position:absolute;inset:0}
.cv-hero__flow--wide{position:absolute;left:0;top:0;width:100%;height:calc(100% - 128px)}
.cv-hero__flow--phone{display:none}
.cv-hero .cv-flow-label{font:500 22px var(--cv-mono);fill:#cfe3d8}
.cv-hero .cv-flow-value{font:700 30px var(--cv-mono);fill:#fff}
.cv-hero .cv-flow-labels text{fill:var(--gft-paper)}
.cv-tail path{fill:none;stroke-linecap:butt}
.cv-tail__line{stroke:var(--cv-thread)}
.cv-tail__glint{stroke:#e6fff0;opacity:0}
.cv-hero__note{position:absolute;right:max(48px,4%);bottom:104px;font:12px var(--cv-mono);letter-spacing:.08em;color:#c4dccf;max-width:none}
.cv-ticker{position:absolute;left:0;right:0;bottom:70px;height:32px;overflow:hidden;border-block:1px solid #6bb68f33;background:#052523b3}
.cv-ticker__track{display:flex;width:max-content;height:100%;align-items:center}
.cv-ticker__row{display:flex;flex-shrink:0}
.cv-ticker__row span{display:inline-flex;gap:10px;align-items:baseline;margin-right:44px;font:12px var(--cv-mono);white-space:nowrap}
.cv-ticker__row i{font-style:normal;color:#b6d6c4;text-transform:uppercase;letter-spacing:.06em}
.cv-ticker__row b{color:var(--gft-paper);font-weight:600}

/* ---------- Entrances (page versions of the kit's textile grammars; each on its own element, own trigger) ---------- */
:root[data-m-go] .cv-bench :is(.cv-field,.cv-presets,.cv-segments)[data-m=unspool]:not([data-m-in]){transform:none;opacity:.15;clip-path:inset(-6px 100% -6px -6px)}
:root[data-m-go] .cv-bench :is(.cv-field,.cv-presets,.cv-segments)[data-m=unspool][data-m-in]{animation-name:cv-unspool;animation-duration:800ms;animation-timing-function:cubic-bezier(.65,0,.35,1);animation-delay:calc(var(--i,0) * 70ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-unspool{from{opacity:.15;clip-path:inset(-6px 100% -6px -6px)}55%{opacity:1}to{opacity:1;clip-path:inset(-6px -6px -6px -6px)}}
:root[data-m-go] .cv-results[data-m=reed]:not([data-m-in]){opacity:0;transform:translateX(56px) scaleX(.9)}
:root[data-m-go] .cv-results[data-m=reed][data-m-in]{animation-name:cv-reed;animation-duration:800ms;animation-timing-function:var(--cv-out);transform-origin:100% 0;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-reed{from{opacity:0;transform:translateX(56px) scaleX(.9)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-steps__track>li[data-m=pick]:not([data-m-in]){opacity:0;transform:translateX(64px) skewX(-6deg)}
:root[data-m-go] .cv-steps__track>li[data-m=pick][data-m-in]{animation-name:cv-pick;animation-duration:780ms;animation-timing-function:var(--cv-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-pick{from{opacity:0;transform:translateX(64px) skewX(-6deg)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-heddle[data-m=beat-up]:not([data-m-in]){opacity:0;transform:translateX(-160px)}
:root[data-m-go] .cv-heddle[data-m=beat-up]:nth-of-type(odd):not([data-m-in]){transform:translateX(160px)}
:root[data-m-go] .cv-heddle[data-m=beat-up][data-m-in]{animation-name:cv-beat-l;animation-duration:660ms;animation-timing-function:cubic-bezier(.3,1.25,.5,1);animation-delay:calc(var(--i,0) * 120ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cv-heddle[data-m=beat-up]:nth-of-type(odd)[data-m-in]{animation-name:cv-beat-r}
@keyframes cv-beat-l{from{opacity:0;transform:translateX(-160px)}to{opacity:1;transform:none}}
@keyframes cv-beat-r{from{opacity:0;transform:translateX(160px)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-ply[data-m=ply]:not([data-m-in]){opacity:1;transform:none}
:root[data-m-go] .cv-ply[data-m=ply][data-m-in]{animation-name:none}
:root[data-m-go] .cv-ply:not([data-m-in]) .cv-ply__row--a{opacity:0;transform:translateX(-140px)}
:root[data-m-go] .cv-ply:not([data-m-in]) .cv-ply__row--b{opacity:0;transform:translateX(140px)}
:root[data-m-go] .cv-ply:not([data-m-in]) .cv-ply__twist{opacity:0;transform:scaleY(.2) skewX(40deg)}
:root[data-m-go] .cv-ply[data-m-in] .cv-ply__row--a{animation-name:cv-from-l;animation-duration:800ms;animation-timing-function:var(--cv-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cv-ply[data-m-in] .cv-ply__row--b{animation-name:cv-from-r;animation-duration:800ms;animation-timing-function:var(--cv-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cv-ply[data-m-in] .cv-ply__twist{animation-name:cv-twist;animation-duration:800ms;animation-delay:100ms;animation-timing-function:var(--cv-out);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-from-l{from{opacity:0;transform:translateX(-140px)}to{opacity:1;transform:none}}
@keyframes cv-from-r{from{opacity:0;transform:translateX(140px)}to{opacity:1;transform:none}}
@keyframes cv-twist{from{opacity:0;transform:scaleY(.2) skewX(40deg)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-mass__row[data-m=cv-trace]:not([data-m-in]) .cv-bar{clip-path:inset(0 100% 0 0)}
:root[data-m-go] .cv-mass__row[data-m=cv-trace]:not([data-m-in])>p{opacity:0;transform:translateY(10px)}
:root[data-m-go] .cv-mass__row[data-m=cv-trace][data-m-in] .cv-bar{animation-name:cv-trace;animation-duration:760ms;animation-timing-function:cubic-bezier(.65,0,.35,1);animation-delay:calc(var(--i,0) * 80ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
:root[data-m-go] .cv-mass__row[data-m=cv-trace][data-m-in]>p{animation-name:cv-rise;animation-duration:600ms;animation-timing-function:var(--cv-out);animation-delay:calc(var(--i,0) * 80ms + 120ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-trace{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes cv-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-knot[data-m=knot]:not([data-m-in]){opacity:0;transform:scale(.3) rotate(-140deg)}
:root[data-m-go] .cv-knot[data-m=knot][data-m-in]{animation-name:cv-tie;animation-duration:620ms;animation-timing-function:cubic-bezier(.3,1.3,.5,1);animation-delay:calc(var(--i,0) * 32ms);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-tie{from{opacity:0;transform:scale(.3) rotate(-140deg)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-station[data-m=heddle]:not([data-m-in]){opacity:0;transform:translateY(44px) scaleY(.7)}
:root[data-m-go] .cv-station[data-m=heddle][data-m-in]{animation-name:cv-lift;animation-duration:700ms;animation-timing-function:var(--cv-out);animation-delay:calc(var(--i,0) * 60ms);transform-origin:0 100%;animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-lift{from{opacity:0;transform:translateY(44px) scaleY(.7)}to{opacity:1;transform:none}}
:root[data-m-go] .cv-close__svg[data-m=spin]:not([data-m-in]){opacity:1;transform:none}
:root[data-m-go] .cv-close__svg[data-m=spin][data-m-in]{animation-name:none}
:root[data-m-go] .cv-close__svg[data-m=spin]:not([data-m-in]) .cv-close__branches{clip-path:inset(0 100% 0 0);transform:rotate(-8deg)}
:root[data-m-go] .cv-close__svg[data-m=spin][data-m-in] .cv-close__branches{animation-name:cv-wind;animation-duration:900ms;animation-timing-function:cubic-bezier(.65,0,.35,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-wind{from{clip-path:inset(0 100% 0 0);transform:rotate(-8deg)}to{clip-path:inset(0 0 0 0);transform:none}}
:root[data-m-go] [data-splash=cotton-value-flow] h1 .gft-serif{animation-name:cv-wdth;animation-duration:900ms;animation-delay:240ms;animation-timing-function:cubic-bezier(.19,1,.22,1);animation-fill-mode:backwards;animation-iteration-count:1;animation-direction:normal}
@keyframes cv-wdth{from{opacity:0;transform:scaleX(.55)}50%{opacity:1}to{transform:none}}

/* ---------- Lives (each on its own element; paused off screen through the kit's observer) ---------- */
:root[data-m-go] [data-m-live~=cv-sweep]{animation-play-state:var(--m-play);animation-name:cv-sweep;animation-duration:3.6s;animation-timing-function:var(--cv-out);animation-iteration-count:infinite}
@keyframes cv-sweep{0%{transform:translateX(-100%)}70%,100%{transform:translateX(333%)}}
:root[data-m-go] [data-m-live~=cv-pulse]{animation-play-state:var(--m-play);animation-name:cv-pulse;animation-duration:2.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
@keyframes cv-pulse{50%{transform:scale(1.7);opacity:.35}}
:root[data-m-go] [data-m-live~=cv-ticker]{animation-play-state:var(--m-play);animation-name:cv-tick;animation-duration:70s;animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes cv-tick{to{transform:translateX(-50%)}}
:root[data-m-go] [data-m-live~=cv-glint]{animation-play-state:var(--m-play);animation-name:cv-glint;animation-duration:3.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
@keyframes cv-glint{0%,100%{opacity:0}50%{opacity:.75}}
:root[data-m-go] [data-m-live~=cv-breathe]{animation-play-state:var(--m-play);animation-name:cv-breathe;animation-duration:5s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cv-breathe{from{opacity:.35}to{opacity:.85}}
.cv-heddle[aria-pressed=true] .cv-heddle__breath{animation-name:none}
:root[data-m-go] [data-m-live~=cv-shuttle]{animation-play-state:var(--m-play);animation-name:cv-shuttle;animation-duration:3.4s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cv-shuttle{from{transform:translateX(0)}to{transform:translateX(calc(100cqw - 14px))}}
:root[data-m-go] [data-m-live~=cv-march]{animation-play-state:var(--m-play);animation-name:cv-march;animation-duration:1.8s;animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes cv-march{to{transform:translateX(28px)}}
:root[data-m-go] .cv-knot[aria-pressed=true] [data-m-live~=cv-ring]{animation-play-state:var(--m-play);animation-name:cv-ring;animation-duration:1.8s;animation-timing-function:ease-out;animation-iteration-count:infinite}
@keyframes cv-ring{from{opacity:.95;transform:scale(.85)}to{opacity:.22;transform:scale(1.35)}}
:root[data-m-go] [data-m-live~=cv-bead]{animation-play-state:var(--m-play);animation-name:cv-bead;animation-duration:10s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
@keyframes cv-bead{0%,6%{transform:translateY(18%)}22%,30%{transform:translateY(34%)}46%,54%{transform:translateY(50%)}70%,78%{transform:translateY(66%)}94%,100%{transform:translateY(82%)}}
:root[data-m-go] [data-m-live~=cv-edgepulse]{animation-play-state:var(--m-play);animation-name:cv-edgepulse;animation-duration:1.6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes cv-edgepulse{from{opacity:.15}to{opacity:1}}

/* ---------- Hand-overs on view timelines (transform and opacity only, longhands, one per element) ---------- */
@supports (animation-timeline:view()){
 :root[data-m-go] .cv-bench .cv-mini-wrap{animation-name:cv-mini-lift;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cv-bench;animation-range-start:exit 15%;animation-range-end:exit 85%}
 :root[data-m-go] .cv-st__wave{animation-name:cv-unwave;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cv-st;animation-range-start:exit 0%;animation-range-end:exit 65%}
 :root[data-m-go] .cv-taut__bar{animation-name:cv-taut;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cv-st;animation-range-start:exit 5%;animation-range-end:exit 70%}
 :root[data-m-go] .cv-ply-lead__a{animation-name:cv-part-a;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range-start:cover 20%;animation-range-end:cover 60%}
 :root[data-m-go] .cv-ply-lead__b{animation-name:cv-part-b;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range-start:cover 20%;animation-range-end:cover 60%}
 :root[data-m-go] .cv-lead4__k{animation-name:cv-apart;animation-duration:1ms;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range-start:cover 10%;animation-range-end:cover 55%}
}
@keyframes cv-mini-lift{from{transform:none;opacity:1}to{transform:translate(-70%,34%) scale(1.6);opacity:0}}
@keyframes cv-unwave{from{transform:none;opacity:1}to{transform:scaleY(.12);opacity:0}}
@keyframes cv-taut{from{transform:scaleX(.08);opacity:0}to{transform:none;opacity:1}}
@keyframes cv-part-a{from{transform:translateY(5px)}to{transform:translateY(-4px)}}
@keyframes cv-part-b{from{transform:translateY(-5px)}to{transform:translateY(4px)}}
@keyframes cv-apart{from{transform:translateX(calc((3 - var(--i)) * 9vw));opacity:.4}to{transform:none;opacity:1}}

/* ---------- Layout breakpoints ---------- */
@media(min-width:901px){
 .cv-warpgrid{display:grid;grid-template-columns:minmax(0,2.7fr) minmax(0,1fr);gap:clamp(24px,3vw,56px)}
 .cv-msteps{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(32px,4vw,72px)}
}
@media(max-width:1180px){
 .cv-rail{width:14px}.cv-rail__mark{display:none}
 .cv-wrap,.cv-wrap--wide,.cv-flow-sec .cv-wrap,.cv-warprun .cv-wrap,.cv-loom-sec .cv-wrap.cv-warpgrid{width:calc(100% - 64px)}
 .cv-heddle{grid-template-columns:150px minmax(0,1fr) 140px}
 .cv-ply{--cv-bleed:32px}
}
@media(max-width:1000px){
 .cv-bench__grid,.cv-close__grid,.cv-src__grid,.cv-lim,.cv-cmp__head{grid-template-columns:1fr}
 .cv-bench__in{display:none}
 .cv-results{position:relative;top:auto}
 .cv-src__foot{grid-template-columns:1fr 1fr}
 .cv-src__map{position:relative;top:auto}
 .cv-nodes{grid-template-columns:repeat(4,minmax(0,1fr))}
 .cv-node:nth-child(4){border-right:0}.cv-node:nth-child(-n+4){border-bottom:1px solid #6bb68f33}
 .cv-cmp__ctl{grid-template-columns:1fr}
 .cv-knots{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:18px}
 .cv-knots__thread{display:none}
 .cv-close{min-height:0}
 [data-splash=cotton-value-flow] .gft-splash__structure{inset:auto 0 56px 0;height:min(46%,430px)}
 [data-splash=cotton-value-flow] .gft-splash__structure::after{background:linear-gradient(180deg,#072d2b 0%,#072d2b00 28%)}
 [data-splash=cotton-value-flow] .gft-splash__content{padding-bottom:min(46%,430px)}
 .cv-hero__flow--wide{height:calc(100% - 56px)}
 .cv-ticker{bottom:0}.cv-hero__note{display:none}
}
@media(max-width:900px){
 .cv-warpgrid{display:block}
 .cv-loom__side{padding-top:24px}
 .cv-loom{padding-top:56px}
 .cv-steps{grid-template-columns:1fr}
 .cv-steps .cv-stage{top:0;z-index:5;height:40svh;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:'bar bar' 'svg read';gap:6px 12px;padding:10px 14px;border-top-width:2px}
 .cv-stage__bar{grid-area:bar}.cv-stage__tall{grid-area:svg}.cv-flow-invalid{grid-area:read}
 .cv-stage .cv-stage__dock{display:block;grid-area:read;align-self:start}.cv-stage__dock .cv-nodes,.cv-stage__dock .cv-stage__ctl{display:none}
 .cv-stage__dock .cv-read{font-size:13px;line-height:1.5;margin:0;min-height:0}
 .cv-flow-dock .cv-read{display:none}
 .cv-stage__bar{margin:0}.cv-flow-status{display:none}
 .cv-canvas{display:none}
 .cv-stage__tall{display:block;width:100%;height:100%;min-height:0}
 .cv-stage__tall .cv-flow-label{font-size:20px}.cv-stage__tall .cv-flow-value{font-size:24px}
 .cv-steps__track>li{padding-block:2.2rem;min-height:0}
 .cv-steps__track>li:last-child{min-height:60svh;padding-top:2.2rem}
 .cv-flow-head{padding-top:28px}
 .cv-figcap{margin-top:24px}
 .cv-flow-dock{display:grid;gap:10px;padding-bottom:28px}
 .cv-nodes--dock{grid-template-columns:repeat(2,minmax(0,1fr))}
 .cv-nodes--dock .cv-node{border-right:0;border-bottom:1px solid #6bb68f33;grid-template-columns:1fr auto;align-items:center}
 .cv-msteps{grid-template-columns:1fr}
 .cv-msteps .cv-mass{position:sticky;top:0;z-index:5;background:#0c403d}
 .cv-mass__card{padding:10px 14px 12px;gap:6px;height:40svh;overflow:clip;display:flex;flex-direction:column}
 .cv-eqstate__eq{font-size:20px;margin-top:2px}.cv-eqstate__s,.cv-mass__resid,.cv-mass__row>.cv-mass__leg{display:none}
 .cv-mass__rows{display:grid}.cv-mass__row{grid-area:1/1;padding:4px 6px}
 .cv-msteps[data-step] .cv-mass__row{opacity:0}
 .cv-msteps:not([data-step]) .cv-mass__row:not([data-row="2"]){opacity:0}
 .cv-msteps[data-step="0"] .cv-mass__row[data-row="0"],.cv-msteps[data-step="1"] .cv-mass__row[data-row="1"],.cv-msteps:is([data-step="2"],[data-step="3"]) .cv-mass__row[data-row="2"]{opacity:1}
 .cv-bar{height:22px}.cv-mass__row>p{font-size:12px}.cv-mass__row>p output{font-size:15px}
 .cv-excl{padding-top:4px;gap:4px}.cv-excl li{padding:2px 6px}
 :root[data-m-go] .cv-msteps[data-step="3"] .cv-excl li{transform:translateY(6px);opacity:.75}
 .cv-msteps__track>li{padding-block:2rem}
 .cv-msteps__track>li:last-child{min-height:50svh;padding-top:2rem}
 .cv-method-head{padding-top:28px}
}
@media(max-width:700px){
 .cv-sec{--cv-gut:32px}
 .cv-wrap,.cv-wrap--wide,.cv-flow-sec .cv-wrap,.cv-warprun .cv-wrap,.cv-loom-sec .cv-wrap.cv-warpgrid{width:calc(100% - 40px)}
 .cv-sec{padding-block:56px}
 .cv-statement{padding-block:0}.cv-st__iris{padding-block:64px 110px}
 .cv-lede{font-size:16px}
 .cv-bench{padding-bottom:96px}
 .cv-bench__in{display:block;right:calc(100% * 20 / 600 - 2.5px);left:calc(100% - 22px);border-bottom-right-radius:8px}
 .cv-bench__main,.cv-results{display:contents}
 .cv-bench__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
 .cv-res-band{order:-1;position:sticky;top:0;z-index:6;background:var(--gft-night);border-top:5px solid var(--cv-thread);padding:10px 14px;height:38svh;grid-template-rows:auto minmax(0,1fr) auto;gap:6px;margin-inline:-6px}
 .cv-res-top{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);min-height:0}
 .cv-primary>output{font-size:44px}.cv-primary>span{font-size:12px}
 .cv-mini-wrap{min-height:0;height:100%;display:grid}.cv-mini{height:100%;width:100%}
 .cv-alloc__scale{height:18px;margin-top:6px}.cv-alloc__cap{display:none}
 .cv-bench__main>.cv-kicker{margin-top:24px}
 .cv-res-rest{order:3;background:var(--gft-night);padding:16px;margin-top:16px}
 .cv-controls{order:2;padding:16px 14px}
 .cv-presets{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px}
 .cv-presets button{flex:0 0 auto;scroll-snap-align:start}
 .cv-field>label{font-size:13px}.cv-field small{font-size:12px}
 .cv-fields{grid-template-columns:1fr}.cv-fields .cv-field:first-child{grid-column:auto}
 .cv-number input[type=number]{width:108px}.cv-number>span{width:36px}
 .cv-readout-grid{gap:14px 12px}.cv-readout-grid output{font-size:19px}
 .cv-heddle{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n o" "t t";gap:8px 12px;padding:12px 14px;min-height:0}
 .cv-heddle__name{grid-area:n;font-size:22px}.cv-heddle output{grid-area:o;font-size:18px}.cv-heddle__track{grid-area:t;height:30px}
 .cv-loom__reed{display:none}
 .cv-ply__axis{margin:0}
 .cv-ply__row,.cv-ply__twist{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"l o" "t t";gap:6px 10px}
 .cv-ply__lab{grid-area:l;font-size:13px}.cv-ply__row output,.cv-ply__agree{grid-area:o}.cv-ply__track{grid-area:t}
 .cv-ply__runout{right:calc(-1 * var(--cv-bleed))}.cv-ply{--cv-bleed:20px}
 .cv-delta__n{font-size:48px}
 .cv-statement__n{font-size:28vw}
 .cv-statement__key .cv-key{display:flex}
 .cv-st__svg{height:100%;inset:0}
 .cv-msteps__track p:not(.cv-kicker),.cv-steps__track p:not(.cv-kicker){font-size:16px}
 .cv-knots{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:4px;padding-bottom:8px;margin-inline:-20px;padding-inline:20px}
 .cv-knots__thread{display:block;left:0;right:auto;width:1200px}
 .cv-knot{flex:0 0 112px;scroll-snap-align:start}
 .cv-src__map{position:sticky;top:0;z-index:4}
 .cv-src__card{height:35svh;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);grid-template-rows:auto auto minmax(0,1fr);column-gap:12px;padding:10px 14px;overflow:clip}
 .cv-src__st,.cv-src__name,.cv-src__val{grid-column:1}
 .cv-src__name{font-size:1.15rem;min-height:0}.cv-src__val{font-size:16px;min-height:0}
 .cv-src__note,.cv-src__ids{display:none}
 .cv-src__mini{grid-column:2;grid-row:1/4;border:0;padding:0;align-self:center}
 .cv-sources table,.cv-sources tbody,.cv-sources tr,.cv-sources td,.cv-sources tbody th{display:block}
 .cv-sources thead tr{display:flex;gap:10px}.cv-sources thead th:nth-child(2){display:none}.cv-sources thead th{padding:4px 10px;border:0}
 .cv-sources tbody tr{border-bottom:1px solid #ffffff2a;padding:6px 0}
 .cv-sources th,.cv-sources td{border:0;padding:4px 12px}
 .cv-sources td:nth-child(2){width:auto}
 .cv-count{margin-left:0;width:100%}
 .cv-src__foot{grid-template-columns:1fr}
 .cv-lead4__k{left:calc(var(--cv-gut) + 8% + var(--i) * 22%)}
 .cv-lim__axis{margin-left:0}
 .cv-lens{order:-1}
 .cv-station{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n v" "g g" "a a"}
 .cv-station__gauge{height:26px}
 .cv-lim__scrub{grid-template-columns:1fr}
 .cv-tab{min-height:56px;padding:8px 10px}
 .cv-close__svg--wide{display:none}.cv-close__svg--tall{display:block}
 .cv-close__in{bottom:calc(100% - 46 / 430 * 100% - 2px)}
 .cv-mini .cv-flow-labels,.cv-regflow .cv-flow-labels,.cv-stage__tall .cv-flow-labels{display:none}
 :root[data-m-go] .cv-bench .cv-mini-wrap{animation-name:none}
 .cv-src__name{min-height:2.4em}.cv-src__val{min-height:2.6em}
 .cv-loom__warps{bottom:auto;height:56px}
 .cv-heddle__track{background:linear-gradient(#3f8f6b,#3f8f6b) 0 25%/100% 2px no-repeat,linear-gradient(#3f8f6b,#3f8f6b) 0 50%/100% 2px no-repeat,linear-gradient(#3f8f6b,#3f8f6b) 0 75%/100% 2px no-repeat}
 .cv-close__lab--tall{font-size:22px}
 .cv-close__cta{display:grid}
 .cv-close__cta>*{width:100%;justify-content:center}
 .cv-actions{grid-template-columns:1fr 1fr}
 .cv-hero__flow--wide{display:none}.cv-hero__flow--phone{display:block;position:absolute;left:0;top:0;width:100%;height:calc(100% - 102px)}
 .cv-hero .cv-flow-label{font-size:19px}.cv-hero .cv-flow-value{font-size:25px}
 [data-splash=cotton-value-flow] h1{font-size:clamp(46px,13vw,74px);max-width:11ch}
 [data-splash=cotton-value-flow] .gft-splash__structure{inset:auto 0 0 0;height:312px}
 [data-splash=cotton-value-flow] .gft-splash__content{padding-bottom:300px}
 [data-splash=cotton-value-flow] .gft-splash__lede{max-width:36ch}
 .cv-ticker{display:none}
}
@media(max-height:760px) and (min-width:1001px){.cv-results,.cv-src__map{position:static}}
@media(prefers-reduced-motion:reduce){.cv-sec [data-cv-particle],.cv-hero [data-cv-particle]{opacity:0!important;transform:none!important}.cv-rail__mark{display:none}:root[data-cv-js] .cv-aud{animation-name:none}.cv-excl li{transition:none}}
:root[data-motion=calm] [data-cv-particle]{opacity:0!important;transform:none!important}
:root[data-motion=calm] .cv-rail__mark{display:none}
:root[data-motion=calm] .cv-aud{animation-name:none!important}
@media(max-width:700px){.cv-close__exit{display:none}}
