/* WST V1.1 showcase. One stylesheet, offline, no build step.
   Colour semantics come from the model materials:
   wind / mechanical = cyan, heat = model orange, solar = PV steel blue, structure = grey, ink = drawing ink.
   --heat etc. may be overridden at runtime from assets/v2/manifest.json (palette). */

@font-face{font-family:"WST Local Sans";src:local("Noto Sans SC"),local("NotoSansSC-Regular"),local("Noto Sans SC Regular"),local("Source Han Sans SC");font-weight:100 900;font-display:swap}
@font-face{font-family:"WST Local Mono";src:local("JetBrains Mono"),local("JetBrainsMono-Regular");font-weight:100 900;font-display:swap}

:root{
  --ink:#142b42;--ink-2:#1d3a55;--ink-3:#0c1d2e;
  --wind:#0b7076;--wind-line:#1a9da0;--wind-glow:#3fc7bd;--wind-soft:#dcefed;
  --heat:#c04914;--heat-line:#c04914;--heat-text:#a83e10;--heat-glow:#f07a3e;--heat-soft:#f7e5db;
  --sun:#2e5b80;--sun-line:#3d6e96;--sun-soft:#e1eaf2;
  --struct:#5e707d;--struct-text:#4c6171;--struct-line:#b9c8d1;
  --paper:#f1f5f6;--paper-2:#e8eff2;--paper-3:#dfe9ee;--white:#fff;
  --stage:#f1f5f6;--grid:#a9bdcb1f;--grid-strong:#a9bdcb33;
  --text:#142b42;--muted:#4c6171;--muted-2:#566b7a;--line:#d3dee4;--line-2:#c4d3db;
  --on-ink:#ffffff;--on-ink-muted:#b4c8d6;--on-ink-line:#36536b;
  --ease:cubic-bezier(.2,.7,.2,1);--dur:.6s;
  --font-sans:"WST Sans SC","WST Symbols","Noto Sans SC","WST Local Sans","Source Han Sans SC","Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif;
  --font-mono:"WST Mono","JetBrains Mono","WST Local Mono","Cascadia Mono","Cascadia Code",Consolas,"WST Sans SC","WST Symbols","Noto Sans SC","Microsoft YaHei UI",monospace;
  --rail:164px;--topbar:78px;
  color:var(--text);background:var(--paper);font-family:var(--font-sans);font-synthesis:none;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;font-size:16px;line-height:1.6;background:var(--paper)}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
button,a{-webkit-tap-highlight-color:transparent}
img{display:block;max-width:100%}
h1,h2,h3,p,figure,ol,ul,dl,dd{margin:0}
ol,ul{padding:0;list-style:none}
:focus-visible{outline:3px solid var(--wind-line);outline-offset:4px}
::selection{background:#bfe3df}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.02em}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:fixed;z-index:100;top:-80px;left:20px;background:var(--ink);color:#fff;padding:12px}
.skip-link:focus{top:10px}

/* Reveal: content fades in and rises 8px; groups stagger. Hidden state only applies once JS is up. */
.js [data-reveal],.js [data-reveal-group]>*{opacity:0;transform:translateY(8px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease);transition-delay:calc(var(--i,0) * 70ms)}
.js [data-reveal].in,.js [data-reveal-group].in>*{opacity:1;transform:none}

/* ---------- top bar ---------- */
.topbar{height:var(--topbar);position:absolute;left:0;top:0;width:100%;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(30px,4.4vw,86px);border-bottom:1px solid var(--line);background:#f5f8f9e6}
.brand{display:flex;align-items:center;gap:12px}
.brand>span{font-weight:700;font-size:22px;line-height:1.05;letter-spacing:.02em}
.brand svg{height:40px;width:40px;fill:var(--ink)}
.brand b{font-weight:400;color:var(--wind)}
.brand small{display:block;font-size:13px;letter-spacing:.14em;margin-top:5px;font-weight:600;color:var(--muted)}
.topbar-caption{font-size:13px;letter-spacing:.1em;color:var(--muted)}
.topbar-link{font-size:14px;font-weight:600}
.topbar-link span{color:var(--wind);padding-left:14px}

/* ---------- hero ---------- */
.hero{position:relative;height:100vh;min-height:690px;overflow:hidden;background:var(--stage);isolation:isolate;--rotor-size:100vw;--hub-y:34%;--lens-radius:clamp(105px,8vw,160px)}
.hero-grid,.stage-plate{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:90px 90px}
.hero-grid{position:absolute;inset:0;background-position:center top}
.hero-axis{position:absolute;inset:var(--topbar) auto 0 50%;border-left:1px dashed #aec2ce66}
.hero-coordinate,.hero-instruction{position:absolute;z-index:3;top:108px;font-size:13px;color:var(--muted);letter-spacing:.08em;pointer-events:none}
.hero-coordinate{left:4.4vw;font-weight:600}
.hero-coordinate span{display:block;margin-top:8px;color:var(--wind)}
.hero-instruction{right:4.4vw}
.hero-instruction span{color:var(--wind);font-size:21px;vertical-align:middle;padding-left:10px}
.hero-canvas{position:absolute;inset:var(--topbar) 0 0;cursor:crosshair;z-index:2;outline-offset:-8px}
.hero-wheel{position:absolute;inset:calc(var(--topbar) * -1) 0 0;--lens-x:50%;--lens-y:34%;pointer-events:none}
.hero-image{position:absolute;max-width:none;width:var(--rotor-size);height:var(--rotor-size);left:50%;top:var(--hub-y);transform:translate(-50%,-50%);object-fit:contain;user-select:none;-webkit-user-drag:none}
.hero-shadow{position:absolute;left:50%;top:calc(var(--hub-y) + var(--rotor-size) * .47);width:calc(var(--rotor-size) * .14);height:calc(var(--rotor-size) * .02);transform:translate(-50%,-50%);background:radial-gradient(closest-side,#14324633,#14324600);pointer-events:none}
.hero-xray{position:absolute;inset:0;opacity:0;clip-path:circle(var(--lens-radius) at var(--lens-x) var(--lens-y));transition:opacity .3s var(--ease)}
.hero-wheel.xray-active .hero-xray{opacity:1}
.lens-ring{position:absolute;left:var(--lens-x);top:var(--lens-y);width:calc(var(--lens-radius)*2);height:calc(var(--lens-radius)*2);transform:translate(-50%,-50%);border:1px solid #0d7a8099;border-radius:50%;box-shadow:0 0 0 5px #ffffff70,0 0 26px #0d7a801c;opacity:0;transition:opacity .3s var(--ease)}
.hero-wheel.xray-active .lens-ring{opacity:1}
.lens-ring>i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-style:normal;font-size:19px;color:#0d7a8077}
.lens-label{position:absolute;top:calc(100% + 12px);left:50%;transform:translateX(-50%);font-size:13px;font-weight:600;letter-spacing:.06em;white-space:nowrap;color:var(--ink);background:#ffffffe8;border:1px solid var(--line);padding:4px 10px;transition:color .2s var(--ease)}
.lens-label.part{color:var(--wind)}
.lens-label.part.heat{color:var(--heat-text)}
.lens-label.part.sun{color:var(--sun)}

/* Nameplate: restrained equipment plate, hairline rules, mono values. */
.nameplate{position:absolute;z-index:5;top:57%;left:50%;transform:translateX(-50%);width:min(54vw,980px);background:var(--ink);color:var(--on-ink);border:1px solid #27455f;box-shadow:0 21px 65px #0e273626}
.nameplate:before{content:"";position:absolute;left:0;top:0;width:66px;height:3px;background:var(--wind-glow)}
.np-head{display:flex;justify-content:space-between;padding:14px clamp(20px,2vw,36px);border-bottom:1px solid var(--on-ink-line);font-size:13px;letter-spacing:.12em;color:var(--on-ink-muted)}
.np-ver{color:var(--wind-glow)}
.nameplate h1{padding:18px clamp(20px,2vw,36px) 0;font-size:clamp(26px,2.05vw,40px);font-weight:700;line-height:1.3;letter-spacing:-.01em;white-space:nowrap}
.np-desc{padding:10px clamp(20px,2vw,36px) 18px;color:var(--on-ink-muted);font-size:clamp(13px,.85vw,16px)}
.np-spec{display:grid;grid-template-columns:repeat(6,1fr);border-top:1px solid var(--on-ink-line);border-bottom:1px solid var(--on-ink-line)}
.np-spec>div{padding:12px clamp(12px,1.1vw,22px);border-left:1px solid var(--on-ink-line);min-width:0}
.np-spec>div:first-child{border-left:0;padding-left:clamp(20px,2vw,36px)}
.np-spec dt{font-size:13px;color:var(--on-ink-muted);white-space:nowrap}
.np-spec dt i{font-style:normal;font-family:var(--font-mono);display:none}
.np-spec dd{font-size:clamp(15px,1.05vw,20px);font-weight:600;margin-top:4px;white-space:nowrap}
.np-spec dd small{font-size:13px;font-weight:400;color:var(--on-ink-muted);margin-left:3px}
.np-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px clamp(20px,2vw,36px)}
.np-foot span{font-size:13px;color:var(--on-ink-muted)}
.np-foot a{font-size:14px;color:var(--wind-glow);white-space:nowrap;transition:color .2s var(--ease)}
.np-foot a:hover{color:#fff}
.scroll-cue{position:absolute;z-index:6;bottom:26px;left:4.4vw;display:flex;align-items:center;gap:12px;font-size:14px;font-weight:600;color:var(--ink);background:#ffffffd9;border:1px solid var(--line);padding:9px 16px 9px 12px;transition:background .2s var(--ease),color .2s var(--ease)}
.scroll-cue>span{font-size:18px;line-height:1;color:var(--wind)}
.scroll-cue:hover{background:var(--ink);color:#fff}
.hero-footnote{position:absolute;bottom:34px;right:4.4vw;font-size:13px;color:var(--muted)}

/* ---------- rail ---------- */
.rail{position:fixed;left:0;top:0;bottom:0;width:var(--rail);z-index:15;display:flex;flex-direction:column;align-items:center;padding:calc(var(--topbar) + 20px) 18px 20px;background:#eff4f5f2;border-right:1px solid var(--line);opacity:0;transform:translateX(-12px);pointer-events:none;transition:opacity .4s var(--ease),transform .4s var(--ease)}
.rail.visible{opacity:1;transform:none;pointer-events:auto}
/* The 04 dark room extends into the rail while it is on screen. */
.rail{transition:opacity .4s var(--ease),transform .4s var(--ease),background-color .3s var(--ease),border-color .3s var(--ease)}
.rail nav a,.rail-current,.rail-rpm,.rail-top,.rail-line,.mini-tower,.mini-nacelle,#mini-rotor path{transition:color .3s var(--ease),background-color .3s var(--ease),fill .3s var(--ease),stroke .3s var(--ease)}
.rail.dark{background:var(--ink-3);border-right-color:#1d3349}
.rail.dark nav a{color:var(--on-ink-muted)}.rail.dark nav i{color:#8fa7b8}
.rail.dark nav a:hover{color:#fff}
.rail.dark nav a.active{color:#fff;background:#16304a;border-left-color:var(--wind-glow)}.rail.dark nav a.active i{color:var(--wind-glow)}
.rail.dark .rail-current{color:#fff}.rail.dark .rail-current>span:first-child,.rail.dark .rail-rpm span{color:var(--wind-glow)}
.rail.dark .rail-rpm,.rail.dark .rail-top{color:var(--on-ink-muted)}
.rail.dark .rail-line{background:#24405a}.rail.dark .rail-line i{background:var(--wind-glow)}
.rail.dark .mini-tower{fill:#3c5a70;stroke:#4f6f86}.rail.dark .mini-nacelle{fill:#55758b;stroke:#6f8ea3}.rail.dark #mini-rotor path{fill:#dfe9ee;stroke:#6f8ea3}
.mini-turbine{width:102px;height:125px;flex:none}
.mini-tower{fill:#bbcdd5;stroke:#a4bac5}
.mini-base{fill:#8fa9b7}
.mini-panel{fill:var(--sun);stroke:#1f4462}
.mini-panel-grid{fill:none;stroke:#8fb0c8;stroke-width:.7}
.mini-nacelle{fill:#d0dfe5;stroke:#8da9ba}
#mini-rotor path{fill:#fff;stroke:#8da9ba;stroke-width:.8}
.mini-hub{fill:var(--heat);stroke:#fff;stroke-width:2}
.rail-rpm{font-size:13px;color:var(--muted);margin-top:2px}
.rail-rpm span{display:inline-block;min-width:3ch;text-align:right;color:var(--wind);font-weight:600}
.rail-current{font-size:13px;display:flex;gap:8px;margin:6px 0 16px;white-space:nowrap}
.rail-current>span:first-child{color:var(--wind);font-weight:700}
.rail nav{display:grid;gap:4px;width:100%}
.rail nav a{display:flex;align-items:center;gap:10px;padding:10px;font-size:13px;color:var(--muted);border-left:2px solid transparent;transition:background .3s var(--ease),color .3s var(--ease)}
.rail nav i{font-size:13px;font-style:normal;font-family:var(--font-mono);color:var(--muted-2)}
.rail nav a:hover{color:var(--ink)}
.rail nav a.active{color:var(--ink);background:#e0ecee;border-left-color:var(--wind);font-weight:600}
.rail nav a.active i{color:var(--wind)}
.rail-line{height:3px;margin-top:24px;background:#d5e2e5;width:calc(100% - 20px)}
.rail-line i{display:block;background:var(--wind);height:100%;width:0}
.rail-top{font-size:13px;color:var(--muted);margin-top:18px}

/* ---------- sections ---------- */
.content{margin-left:var(--rail)}
.section{padding:110px clamp(42px,5.3vw,112px);position:relative;border-bottom:1px solid var(--line)}
.section-head{margin-bottom:44px}
.eyebrow{font-size:13px;font-weight:600;letter-spacing:.14em;color:var(--wind);margin-bottom:16px}
.section-head h2{font-size:clamp(30px,2.5vw,48px);line-height:1.35;font-weight:700;letter-spacing:-.025em}
.section-head>p:not(.eyebrow),.split-head>p{font-size:16px;line-height:1.8;color:var(--muted);margin-top:20px;max-width:900px}
.split-head{display:flex;align-items:flex-end;justify-content:space-between;gap:50px}
.split-head>p{max-width:420px;margin:0}
.figure-note{font-size:13px;line-height:1.7;color:var(--muted);margin-top:18px}
.scope-note{margin-top:38px;padding:22px 26px;border-left:3px solid var(--wind);display:flex;gap:28px;background:var(--paper-2)}
.scope-note>span{font-size:14px;font-weight:700;white-space:nowrap;padding-top:2px}
.scope-note p{font-size:14px;line-height:1.8;color:var(--muted)}

/* ---------- unified stage (exhibit plinth) ---------- */
.stage{position:relative;background:var(--stage);border:1px solid var(--line);overflow:hidden}
.stage-plate{position:relative;height:var(--stage-h,560px);display:flex;align-items:center;justify-content:center;background-color:var(--stage);background-position:center;container-type:inline-size}
.stage-crop{position:absolute;inset:0;overflow:hidden}
.stage-frame{position:relative;aspect-ratio:var(--ar,1.333);width:min(100cqw,calc(var(--stage-h,560px) * var(--ar,1.333)));flex:none}
.stage-img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;mix-blend-mode:darken;transition:opacity .45s var(--ease),width .6s var(--ease),height .6s var(--ease),left .6s var(--ease),top .6s var(--ease)}
.stage-img.swap{opacity:0}
.stage.transparent .stage-img{mix-blend-mode:normal}
.stage-shadow{position:absolute;z-index:0;left:calc(var(--sx,.5) * 100%);top:calc(var(--sy,.85) * 100%);width:calc(var(--srx,.2) * 200%);height:calc(var(--sry,.03) * 200%);transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(closest-side,#14324638,#1432461a 55%,#14324600);pointer-events:none;transition:opacity .45s var(--ease)}
.stage-shadow.frame{transform:none;border-radius:0;background:center/100% 100% no-repeat}
.stage-shadow.off{opacity:0}
.stage>figcaption{position:relative;z-index:3;background:#f6f9fa;border-top:1px solid var(--line);padding:16px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.stage figcaption span{font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.06em}
.stage figcaption b{font-size:14px;font-weight:500}
.zoom-button{position:absolute;z-index:4;right:18px;top:18px;width:44px;height:44px;border:1px solid var(--line-2);background:#ffffffd6;font-size:21px;line-height:1;color:var(--ink);transition:background .2s var(--ease),color .2s var(--ease)}
.zoom-button:hover{background:var(--ink);color:#fff}

/* ---------- 02 concept ---------- */
.concept-layout{display:grid;grid-template-columns:320px 1fr;gap:32px;align-items:stretch}
.concept-points{display:grid}
.concept-points article{padding:26px 0;border-top:1px solid var(--line)}
.point-index{font-size:13px;font-weight:600;letter-spacing:.06em;display:inline-flex;align-items:center;gap:8px}
.point-index:before{content:"";width:8px;height:8px;background:currentColor}
.c-wind .point-index{color:var(--wind)}
.c-sun .point-index{color:var(--sun)}
.c-heat .point-index{color:var(--heat-text)}
.concept-points h3{font-size:24px;font-weight:700;margin:14px 0 12px}
.concept-points p{font-size:15px;line-height:1.8;color:var(--muted)}
.concept-stage{--stage-h:580px;--ar:1.3333}

/* ---------- 03 internal + hotspots ---------- */
.internal{background:#fff}
.figure-toolbar{display:flex;justify-content:space-between;align-items:center;padding-bottom:15px}
.figure-toolbar>span,.toolbar-end>span{font-size:13px;font-weight:600;letter-spacing:.06em;color:var(--muted)}
.toolbar-end{display:flex;align-items:center;gap:24px}
.internal-stage .hotspot-layer,.internal-stage .hotspot-labels{transition:opacity .35s var(--ease)}
.internal-stage.dims-on .hotspot-layer,.internal-stage.dims-on .hotspot-labels{opacity:0;pointer-events:none}
.tabs{display:flex;gap:4px;padding:4px;background:var(--paper-2)}
.tabs button{padding:10px 22px;font-size:14px;color:var(--muted);transition:background .3s var(--ease),color .3s var(--ease)}
.tabs button.active{background:var(--ink);color:#fff}
.internal-stage{--stage-h:clamp(420px,36vw,700px);--ar:1.6}
.hotspot-layer{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none;overflow:visible}
.hotspot-layer .leader{fill:none;stroke:var(--struct);stroke-width:1;opacity:.7;transition:opacity .35s var(--ease),stroke .35s var(--ease)}
.hotspot-layer .dot{fill:#fff;stroke:var(--ink);stroke-width:1.5;transition:fill .35s var(--ease),stroke .35s var(--ease),opacity .35s var(--ease)}
.hotspot-layer .dot-core{fill:var(--ink);transition:fill .35s var(--ease),opacity .35s var(--ease)}
.hotspot-layer .leader.occ{stroke-dasharray:3 3}
.hotspot-layer .dot.occ{stroke-dasharray:2.5 2;fill:#ffffffb3}
.hotspot-layer .dot-core.occ{opacity:.0}

.hotspot-labels{position:absolute;inset:0;z-index:3;pointer-events:none}
.hotspot-labels li{position:absolute;display:flex;align-items:center;gap:8px;font-size:13px;line-height:1.3;white-space:nowrap;transform:translateY(-50%);transition:opacity .35s var(--ease),color .35s var(--ease)}
.hotspot-labels li.left{flex-direction:row-reverse;transform:translate(-100%,-50%)}
.hotspot-labels li i{font-style:normal;font-family:var(--font-mono);font-size:13px;font-weight:600;min-width:26px;height:22px;display:inline-grid;place-items:center;border:1px solid var(--ink);background:#fff;color:var(--ink);transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease)}
.hotspot-labels li b{font-weight:500;color:var(--ink)}
[data-chain-state="active"] .hotspot-labels li,[data-chain-state="active"] .hotspot-layer .leader,[data-chain-state="active"] .hotspot-layer .dot,[data-chain-state="active"] .hotspot-layer .dot-core{opacity:.18}
[data-chain-state="active"] .hotspot-labels li.lit,[data-chain-state="active"] .hotspot-layer .lit{opacity:1}
.hotspot-labels li.lit i{background:var(--chain-color);border-color:var(--chain-color);color:#fff}
.hotspot-labels li.lit b{color:var(--chain-text)}
.hotspot-layer .leader.lit{stroke:var(--chain-color);stroke-width:1.5}
.hotspot-layer .dot.lit{stroke:var(--chain-color);fill:#fff}
.hotspot-layer .dot-core.lit{fill:var(--chain-color)}
.internal-stage[data-chain="mechanical"]{--chain-color:var(--wind-line);--chain-text:var(--wind)}
.internal-stage[data-chain="thermal"]{--chain-color:var(--heat);--chain-text:var(--heat-text)}
.internal-stage[data-chain="mounting"]{--chain-color:var(--struct);--chain-text:var(--ink)}
.structure-chains{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:24px;margin-top:22px}
.chain{display:block;text-align:left;border-top:2px solid var(--line);padding:16px 14px 14px;background:transparent;transition:background .35s var(--ease),border-color .35s var(--ease)}
.chain span{font-size:13px;font-weight:600;margin-right:10px}
.chain b{font-size:15px;font-weight:700}
.chain p{font-size:14px;line-height:1.85;margin-top:8px;color:var(--muted)}
.chain-wind span,.chain-wind b{color:var(--wind)}
.chain-heat span,.chain-heat b{color:var(--heat-text)}
.chain-struct span,.chain-struct b{color:var(--struct-text)}
.chain:hover,.chain[aria-pressed="true"]{background:var(--paper)}
.chain-wind:hover,.chain-wind[aria-pressed="true"]{border-top-color:var(--wind-line)}
.chain-heat:hover,.chain-heat[aria-pressed="true"]{border-top-color:var(--heat)}
.chain-struct:hover,.chain-struct[aria-pressed="true"]{border-top-color:var(--struct)}
.annotate-toast{position:fixed;z-index:200;right:16px;bottom:16px;background:var(--ink);color:#fff;font:13px/1.5 var(--font-mono);padding:10px 14px;max-width:420px}

/* ---------- 04 dark room: the only "lights off" moment ---------- */
.disassembly{background:var(--ink-3);color:var(--on-ink);border-bottom-color:var(--ink-3)}
.disassembly .eyebrow{color:var(--wind-glow)}
.disassembly .section-head h2{color:#fff}
.motion-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:30px}
.motion-caption{font-size:13px;letter-spacing:.08em;color:var(--on-ink-muted)}
.motion-frame{position:relative;aspect-ratio:16/9;width:min(100%,calc((100vh - 250px) * 16 / 9));margin:0 auto;background:#081624;border:1px solid #1d3349;overflow:hidden;box-shadow:0 40px 120px #0008}
.motion-frame video,.sequence-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.motion-action{position:absolute;right:18px;bottom:18px;z-index:3;padding:9px 16px;font-size:13px;background:#0b1d2ecc;color:#dbe8f0;border:1px solid #35516a;transition:background .2s var(--ease)}
.motion-action:hover{background:#163049}
.motion-error{position:absolute;inset:auto 18px 18px auto;z-index:3;font-size:14px;color:#ffd7c4}
.scrolly.pinned{height:var(--scrolly-h,320vh)}
.scrolly.pinned .scrolly-sticky{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;padding:24px 0}
.scrolly.pinned .section-head{margin-bottom:24px}
.scrolly.pinned .motion-frame{width:min(100%,calc((100vh - 230px) * 16 / 9))}
.sequence-meter{position:absolute;left:12px;right:12px;bottom:12px;z-index:3;background:#0b1d2ee6;padding:9px 14px;display:flex;align-items:center;gap:14px;font-size:13px;color:var(--on-ink-muted)}
.sequence-meter i{flex:1;height:2px;background:#ffffff26}
.sequence-meter b{display:block;height:100%;width:0;background:var(--wind-glow)}
#sequence-phase{color:#fff;min-width:11ch}

/* ---------- 05 flow diagram ---------- */
.logic{background:var(--paper-2)}
.flow{border:1px solid var(--line-2);background:#f8fbfc}
.flow-legend{display:flex;gap:28px;padding:18px 32px;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}
.flow-legend span{display:inline-flex;align-items:center;gap:10px}
.flow-legend i{width:28px;height:0;border-top:2px dashed}
.lg-wind i{border-color:var(--wind-line)}.lg-heat i{border-color:var(--heat)}
.flow-stage{position:relative;padding:44px 32px}
.flow-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.flow-wires path{fill:none;stroke-width:2;stroke-linecap:round}
.flow-wires .w-base{stroke-opacity:.18;stroke-dasharray:none}
.flow-wires .w-flow{stroke-dasharray:6 9;animation:flow-dash 1.6s linear infinite}
.flow-wires .wind{stroke:var(--wind-line)}.flow-wires .heat{stroke:var(--heat)}
.flow-wires .arrow.wind{fill:var(--wind-line);stroke:none}.flow-wires .arrow.heat{fill:var(--heat);stroke:none}
@keyframes flow-dash{to{stroke-dashoffset:-30}}
.flow-grid{position:relative;display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:auto auto;grid-template-areas:"m1 m2 . hub m4 m5" "t1 t2 t3 hub t5 .";column-gap:clamp(22px,2.6vw,52px);row-gap:56px}
.flow-node,.hub-half{position:relative;background:#fff;border:1px solid var(--line);padding:18px 16px;min-width:0}
.flow-node small,.hub-half small{display:block;font-size:13px;font-weight:600;letter-spacing:.04em;margin-bottom:10px}
.flow-node b,.hub-half b{font-size:16px;font-weight:700;line-height:1.45}
.n-wind{border-top:3px solid var(--wind-line)}.n-wind small{color:var(--wind)}
.n-heat{border-top:3px solid var(--heat)}.n-heat small{color:var(--heat-text)}
.n-sun small:after{content:" · PV";color:var(--sun)}
.flow-hub{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:56px;padding:0;outline:2px solid var(--ink);outline-offset:10px;background:linear-gradient(var(--ink),var(--ink)) center/2px 100% no-repeat}
.flow-hub .hub-half{flex:1;display:flex;flex-direction:column;justify-content:center}
.hub-half.n-wind{background:var(--wind-soft)}.hub-half.n-heat{background:var(--heat-soft)}
.hub-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:4px}
.hub-core svg{width:40px;height:40px;fill:#fff;stroke:var(--ink);stroke-width:2;background:#f8fbfc;border-radius:50%}
.hub-core span{font-size:13px;font-weight:700;color:var(--ink);background:#f8fbfc;padding:0 6px;white-space:nowrap}
.hub-tag{position:absolute;left:50%;bottom:calc(100% + 18px);transform:translateX(-50%);font-size:13px;font-weight:600;white-space:nowrap;color:var(--ink)}
.logic-foot{padding:24px 32px;display:flex;gap:25px;align-items:center;border-top:1px solid var(--line)}
.logic-foot b{font-size:14px;color:var(--heat-text);white-space:nowrap}
.logic-foot p{font-size:14px;color:var(--muted);line-height:1.8}

/* ---------- 06 model views ---------- */
.model{background:#fff}
.model-layout{display:grid;grid-template-columns:1fr 235px;gap:28px}
.model-stage{--stage-h:clamp(420px,37vw,720px);--ar:1.3333}
.model-stage>figcaption{gap:20px}
.model-stage>figcaption b{color:var(--wind)}
.dims-layer{position:absolute;inset:0;z-index:2;width:100%;height:100%;pointer-events:none;overflow:visible;opacity:0;transition:opacity .45s var(--ease)}
.dims-on .dims-layer{opacity:1}
.dims-layer .dim{stroke:var(--ink);stroke-width:1;fill:none;vector-effect:non-scaling-stroke}
.dims-layer .ext{fill:none}
.dims-layer .ext{stroke:var(--struct);stroke-width:.75;stroke-dasharray:none;vector-effect:non-scaling-stroke;opacity:.8}
.dims-layer .head{fill:var(--ink)}
.dims-layer text{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px;fill:var(--ink);paint-order:stroke;stroke:var(--stage);stroke-width:5px;stroke-linejoin:round}
.dims-layer text .lbl{fill:var(--muted)}
.dims-switch{display:inline-flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:var(--ink);padding:4px 0}
.dims-switch i{width:34px;height:18px;border:1px solid var(--ink);position:relative;transition:background .3s var(--ease)}
.dims-switch i:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;background:var(--ink);transition:transform .3s var(--ease),background .3s var(--ease)}
.dims-switch[aria-checked="true"] i{background:var(--ink)}
.dims-switch[aria-checked="true"] i:after{transform:translateX(16px);background:#fff}
.dims-switch small{font-size:13px;color:var(--muted)}
.dims-switch:disabled{opacity:.45;cursor:not-allowed}
.model-tabs{display:flex;flex-direction:column;justify-content:center}
.model-tabs button{display:flex;gap:18px;align-items:center;text-align:left;background:#fff;padding:24px 20px;border-top:1px solid var(--line);transition:background .3s var(--ease),color .3s var(--ease)}
.model-tabs button:last-child{border-bottom:1px solid var(--line)}
.model-tabs button>span{font-size:13px;font-weight:600;color:var(--muted)}
.model-tabs b{font-size:18px;font-weight:500}
.model-tabs small{display:block;font-size:13px;letter-spacing:.06em;margin-top:5px;color:var(--muted)}
.model-tabs i{font-style:normal;font-size:18px;margin-left:auto;color:var(--muted)}
.model-tabs button:hover{background:var(--paper)}
.model-tabs button.active{background:var(--ink);color:#fff}
.model-tabs button.active>span,.model-tabs button.active small,.model-tabs button.active i{color:var(--wind-glow)}
.viewer3d{position:absolute;inset:0;z-index:3;background:var(--stage)}
.viewer3d canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.viewer3d canvas:active{cursor:grabbing}
.turntable{position:absolute;inset:0;z-index:5;background:var(--stage);transition:opacity .45s var(--ease)}
.turntable.out{opacity:0;pointer-events:none}
.turntable canvas{display:block;width:100%;height:100%;cursor:ew-resize;touch-action:pan-y}
.turntable-note{position:absolute;left:18px;bottom:16px;font-size:13px;color:var(--muted);background:#ffffffe6;border:1px solid var(--line);padding:6px 10px}
.v3d-msg{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:30px;font-size:15px;color:var(--muted);line-height:1.8}
.v3d-msg b{display:block;color:var(--ink);font-size:17px;margin-bottom:6px}
.v3d-ui{position:absolute;left:18px;right:18px;bottom:16px;z-index:4;display:flex;align-items:center;gap:16px;background:#ffffffe6;border:1px solid var(--line);padding:10px 14px;font-size:13px}
.v3d-ui label{font-weight:600;white-space:nowrap}
.v3d-ui input{flex:1;accent-color:var(--ink)}
.v3d-ui output{font-family:var(--font-mono);min-width:5ch;text-align:right}
.v3d-labels{position:absolute;inset:0;pointer-events:none;z-index:3}
.v3d-labels>span{position:absolute;transform:translate(-50%,-50%);font:600 13px/1 var(--font-mono);min-width:26px;height:22px;display:grid;place-items:center;background:#fff;border:1px solid var(--ink);color:var(--ink);transition:min-width .25s var(--ease),height .25s var(--ease),background .25s var(--ease)}
.v3d-labels>span{pointer-events:auto;cursor:default}
.v3d-labels>span::before{content:"";position:absolute;inset:-6px}
.v3d-labels>span.dot{min-width:9px;width:9px;height:9px;border-radius:50%;font-size:0;background:var(--ink);border-color:#fff}
.v3d-labels>span:not(.dot):not(.hot){z-index:1}
.v3d-labels>span.dot::before{inset:-8px}
.v3d-labels>span.hot{z-index:2;white-space:nowrap;background:var(--ink);color:#fff;min-width:auto;padding:0 8px;font-size:13px;width:auto;height:24px;border-radius:0}
.v3d-legend{position:absolute;left:18px;top:18px;z-index:4;display:grid;gap:2px;background:#ffffffeb;border:1px solid var(--line);padding:8px;font-size:13px;max-height:calc(100% - 100px);overflow:auto}
.v3d-legend button{display:flex;gap:10px;align-items:center;text-align:left;padding:3px 6px;font-size:13px;color:var(--ink)}
.v3d-legend button i{font-style:normal;font-family:var(--font-mono);font-weight:600;min-width:2ch}
.v3d-legend button:hover,.v3d-legend button:focus-visible,.v3d-legend button.hot{background:var(--ink);color:#fff;outline:none}
.parameter-strip{padding:24px 0;display:flex;gap:35px;border-bottom:1px solid var(--line)}
.parameter-strip>span{color:var(--wind);font-size:14px;font-weight:700;white-space:nowrap}
.parameter-strip p{font-size:14px;color:var(--muted)}
.parameter-strip i{font-style:normal;color:var(--struct-line);padding:0 12px}
.versions{padding-top:34px}
.version-strip{position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.version-strip:before{content:"";position:absolute;left:6px;right:6px;top:6px;height:1px;background:var(--line-2)}
.version-strip li{position:relative;padding-top:24px}
.version-strip li:before{content:"";position:absolute;left:0;top:0;width:13px;height:13px;border:1px solid var(--struct);background:#fff}
.version-strip b{display:block;font-size:20px;font-weight:600;color:var(--muted)}
.version-strip small{display:block;font-family:var(--font-sans);font-size:13px;color:var(--muted);margin-top:4px}
.version-strip .current:before{background:var(--wind);border-color:var(--wind)}
.version-strip .current b{color:var(--wind)}
.version-slider{display:grid;gap:18px}
.vs-stage{--stage-h:clamp(320px,30vw,560px)}
.vs-stage .stage-plate{display:grid;place-items:center}
.vs-frame{grid-area:1/1;position:relative;overflow:hidden;aspect-ratio:var(--ar);width:min(100cqw,calc(var(--stage-h) * var(--ar)))}
.vs-frame img{position:absolute;max-width:none;opacity:0;transition:opacity .35s var(--ease)}
.vs-controls{display:flex;align-items:flex-start;gap:36px}
.vs-modes{flex:none}
.vs-track{position:relative;flex:1;height:76px;margin:0 52px}
.vs-track input{position:absolute;left:-8px;right:-8px;top:2px;width:calc(100% + 16px);margin:0;accent-color:var(--wind);z-index:2;cursor:pointer}
.vs-track:before{content:"";position:absolute;left:0;right:0;top:12px;height:1px;background:var(--line-2)}
.vs-tick{position:absolute;top:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;padding-top:26px;color:var(--muted);white-space:nowrap}
.vs-tick i{position:absolute;top:7px;left:50%;width:11px;height:11px;margin-left:-5.5px;border:1.5px solid var(--struct);border-radius:50%;background:#fff;transition:background .3s var(--ease),border-color .3s var(--ease)}
.vs-tick b{font-size:15px;font-weight:600;color:var(--muted)}
.vs-tick small{font-size:13px}
.vs-tick.current i{background:var(--wind);border-color:var(--wind)}
.vs-tick.current b{color:var(--wind)}
.vs-tick.current small{color:var(--ink)}
.vs-stage>figcaption{display:flex !important;justify-content:space-between;gap:16px}
.vs-stage>figcaption b{color:var(--wind)}
/* ---------- 07 presentation ---------- */
.presentation{background:var(--paper-3)}
.ppt-shell{background:#fff;border:1px solid var(--line-2);color:var(--ink)}
.ppt-topline{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;font-size:14px;color:var(--muted);border-bottom:1px solid var(--line)}
.ppt-topline b{font-size:13px;font-weight:600;letter-spacing:.08em;color:var(--wind)}
.ppt-screen{position:relative;background:#f5f7f6;aspect-ratio:16/9}
.ppt-screen img{width:100%;height:100%;object-fit:contain}
.ppt-arrow{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:66px;background:#0b2239c4;color:#fff;font-size:22px;opacity:0;transition:opacity .3s var(--ease)}
.ppt-screen:hover .ppt-arrow,.ppt-screen:focus-within .ppt-arrow{opacity:1}
.ppt-arrow.previous{left:0}.ppt-arrow.next{right:0}
.ppt-arrow:disabled{visibility:hidden}
.ppt-toolbar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;gap:20px;border-top:1px solid var(--line)}
.filmstrip{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:8px;flex:1;max-width:980px}
.filmstrip button{position:relative;aspect-ratio:16/9;background:#eef2f4;border:1px solid var(--line);overflow:hidden;opacity:.62;transition:opacity .3s var(--ease),border-color .3s var(--ease),transform .3s var(--ease)}
.filmstrip button img{width:100%;height:100%;object-fit:cover}
.filmstrip button span{position:absolute;left:0;bottom:0;font:600 13px/1 var(--font-mono);background:#ffffffe6;color:var(--ink);padding:3px 5px}
.filmstrip button:hover{opacity:1}
.filmstrip button.active{opacity:1;border-color:var(--wind);box-shadow:inset 0 0 0 1px var(--wind)}
.filmstrip button.active span{background:var(--wind);color:#fff}
.ppt-actions{display:flex;gap:22px;align-items:center;white-space:nowrap}
.ppt-actions button{font-size:14px;color:var(--ink)}
.ppt-actions a{color:var(--wind);font-size:14px;font-weight:600}
.ppt-shell:fullscreen,.ppt-shell.fallback-fullscreen{background:#081421;color:#fff;display:flex;flex-direction:column;justify-content:center;width:100%;height:100%;padding:0 clamp(10px,4vw,90px);border:0}
.ppt-shell:fullscreen .ppt-topline,.ppt-shell.fallback-fullscreen .ppt-topline,.ppt-shell:fullscreen .ppt-toolbar,.ppt-shell.fallback-fullscreen .ppt-toolbar{border-color:#21384d;color:#c9d9e4}
.ppt-shell:fullscreen .ppt-actions button,.ppt-shell.fallback-fullscreen .ppt-actions button{color:#dbe8f0}
.ppt-shell:fullscreen .ppt-actions a,.ppt-shell.fallback-fullscreen .ppt-actions a{color:var(--wind-glow)}
.ppt-shell:fullscreen .ppt-screen,.ppt-shell.fallback-fullscreen .ppt-screen{max-height:calc(100vh - 170px);aspect-ratio:16/9;width:auto;align-self:center}
.ppt-shell.fallback-fullscreen{position:fixed;inset:0;z-index:100}

/* ---------- 08 validation ---------- */
.validation{background:#f8fafb}
.validation-banner{background:var(--ink);color:#fff;padding:26px 30px;display:flex;justify-content:space-between;align-items:center;gap:20px}
.validation-banner>span{font-size:13px;letter-spacing:.08em;color:var(--on-ink-muted)}
.validation-banner strong{font-size:21px;font-weight:500}
.validation-banner a{color:var(--wind-glow);font-size:14px;white-space:nowrap}
.validation-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-top:0;background:#fff}
.validation-metric{padding:28px;border-right:1px solid var(--line);min-height:200px}
.validation-metric:last-child{border-right:0}
.validation-metric>span{font-size:14px;color:var(--muted)}
.validation-metric strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600;font-size:clamp(44px,4vw,76px);line-height:1.05;letter-spacing:-.02em;display:block;margin-top:18px;color:var(--wind);white-space:nowrap}
.validation-metric strong.pending{color:var(--heat-text)}
.validation-metric small{display:block;font-size:13px;color:var(--muted);margin-top:14px;line-height:1.6}
.validation-counts{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}
.validation-counts p{display:flex;gap:16px;align-items:baseline;padding:30px 28px 26px 0}
.validation-counts b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600;font-size:clamp(56px,5vw,96px);line-height:1;letter-spacing:-.03em;color:var(--ink)}
.validation-counts span{font-size:14px;color:var(--muted)}
.validation-details{margin-top:30px;border:1px solid var(--line);background:#fff;padding:0 27px 25px}
.validation-details summary{padding:22px 0;cursor:pointer;list-style:none;display:flex;justify-content:space-between;font-size:16px;font-weight:600}
.validation-details summary::-webkit-details-marker{display:none}
.validation-details:not([open]){padding-bottom:0}
.validation-details ul{padding-left:20px;margin:0 0 20px;display:grid;gap:10px;list-style:disc}
.validation-details li{font-size:14px;color:var(--muted);line-height:1.8}
.validation-details>a{color:var(--wind);font-size:14px;font-weight:600}

/* ---------- 09 downloads + title block ---------- */
.downloads{background:var(--paper-2)}
.downloads-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.download-group h3{font-size:13px;font-weight:600;letter-spacing:.06em;padding:18px 0;border-top:2px solid var(--ink);margin:0;font-family:var(--font-mono)}
.download-group a{padding:18px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-2);gap:12px;transition:padding .3s var(--ease)}
.download-group a strong{font-size:16px;font-weight:600;display:block}
.download-group a small{display:block;font-size:13px;color:var(--muted);margin-top:6px}
.download-group a em{font-style:normal;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink);background:#fff;border:1px solid var(--line-2);padding:1px 7px;margin-right:8px}
.download-group a>span{font-size:20px;color:var(--wind)}
.download-group a:hover{padding-left:6px}
.download-group a:hover strong{color:var(--wind)}
/* Online build only: file kept out of the upload (see tools/deploy_pages.ps1). */
.download-group .download-local{padding:18px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line-2);gap:12px;color:var(--muted);cursor:not-allowed}
.download-group .download-local strong{font-size:16px;font-weight:600;display:block;color:var(--muted)}
.download-group .download-local small{display:block;font-size:13px;color:var(--muted);margin-top:6px}
.download-group .download-local em{font-style:normal;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);border:1px solid var(--line-2);padding:1px 7px;margin-right:8px}
.download-group .download-local>span{font-size:12px;white-space:nowrap;color:var(--muted);border:1px dashed var(--line-2);padding:2px 8px}
.titleblock{margin-top:86px;display:grid;grid-template-columns:2.6fr repeat(7,minmax(0,1fr)) auto;gap:1px;background:var(--ink);border:1.5px solid var(--ink)}
.titleblock>*{background:#fff;padding:12px 14px;min-width:0}
.titleblock small{display:block;font-size:13px;color:var(--muted);white-space:nowrap}
.titleblock small i{font-style:normal;font-size:13px}
.titleblock b{display:block;font-size:15px;font-weight:600;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-name b{font-size:16px;white-space:normal}
.tb-top{display:flex;align-items:center;padding:0 18px;font-size:14px;font-weight:600;white-space:nowrap}
.tb-top:hover{background:var(--ink);color:#fff}

/* ---------- dialog ---------- */
.image-dialog{position:fixed;inset:0;width:96vw;max-width:none;max-height:96vh;margin:auto;border:1px solid #587585;padding:35px;background:var(--stage);box-shadow:0 15px 100px #081b4060}
.image-dialog::backdrop{background:#071b2be6}
.image-dialog img{max-height:80vh;width:100%;object-fit:contain}
.image-dialog>button{position:absolute;right:10px;top:7px;width:42px;height:42px;font-size:28px;background:var(--ink);color:#fff}
.image-dialog p{text-align:center;font-size:14px;color:var(--muted);margin-top:10px}
.noscript{position:fixed;bottom:0;left:0;right:0;z-index:200;padding:20px;background:#f6d99b;color:#402c13;font-size:15px}

/* ---------- responsive ---------- */
@media(min-width:1850px){
  .concept-layout{grid-template-columns:360px 1fr;gap:70px}
  .concept-stage{--stage-h:680px}
  .concept-points article{padding:35px 0}
  .concept-points h3{font-size:28px}
  .concept-points p{font-size:16px}
  .hero-coordinate,.hero-instruction{top:118px}
  .section{padding-top:130px;padding-bottom:130px}
  .rail{padding-top:calc(var(--topbar) + 36px)}
  .mini-turbine{height:154px;width:125px}
  .rail nav a{padding-top:13px;padding-bottom:13px}
}
@media(max-width:1450px){
  :root{--rail:140px}
  .hero{--rotor-size:108vw}
  .nameplate{width:60vw;top:55%}
  .nameplate h1{font-size:29px;padding-top:14px}
  .np-desc{padding-bottom:14px}
  .np-spec dd{font-size:15px}
  .np-spec>div{padding:10px 10px}
  .section{padding:84px 50px}
  .section-head{margin-bottom:34px}
  .section-head h2{font-size:33px}
  .section-head>p:not(.eyebrow),.split-head>p{font-size:15px}
  .split-head>p{max-width:340px}
  .concept-layout{grid-template-columns:270px 1fr;gap:25px}
  .concept-stage{--stage-h:520px}
  .concept-points article{padding:20px 0}
  .concept-points h3{font-size:22px;margin:11px 0}
  .concept-points p{font-size:14px}
  .stage>figcaption{display:block;padding:14px 18px}
  .concept-stage figcaption b{display:block;margin-top:6px}
  .model-stage>figcaption{display:flex}
  .structure-chains{gap:16px}
  .chain p{font-size:13px}
  .rail{padding-left:10px;padding-right:10px}
  .rail nav a{padding:9px 8px}
  .flow-stage{padding:40px 26px}
  .flow-grid{column-gap:22px}
  .flow-node b,.hub-half b{font-size:15px}
  .flow-node,.hub-half{padding:16px 12px}
  .model-layout{grid-template-columns:1fr 205px}
  .model-tabs button{padding:20px 16px;gap:14px}
  .model-tabs b{font-size:16px}
  .validation-metric{padding:22px}
  .validation-banner strong{font-size:18px}
  .ppt-toolbar{flex-wrap:wrap}
  .filmstrip{max-width:none;flex-basis:100%}
  .titleblock{grid-template-columns:repeat(5,minmax(0,1fr))}
  .tb-name{grid-column:span 2}
  .tb-top{padding:12px 14px}
}
@media(max-width:1100px){
  :root{--rail:118px}
  .topbar-caption{display:none}
  .hero{--rotor-size:129vw}
  .nameplate{width:72vw}
  .np-spec{grid-template-columns:repeat(3,1fr)}
  .np-spec>div:nth-child(4){border-left:0;padding-left:clamp(20px,2vw,36px)}
  .np-spec>div:nth-child(n+4){border-top:1px solid var(--on-ink-line)}
  .np-foot span{display:none}
  .section{padding-left:32px;padding-right:32px}
  .rail{padding:calc(var(--topbar) + 18px) 5px 18px}
  .mini-turbine{width:87px;height:113px}
  .rail nav a{font-size:13px;gap:6px;padding:8px 6px}
  .section-head h2{font-size:30px}
  .split-head{gap:26px}
  .split-head>p{max-width:280px}
  .concept-layout{grid-template-columns:230px 1fr}
  .concept-stage{--stage-h:480px}
  .structure-chains{grid-template-columns:1fr}
  .flow-grid{column-gap:16px;row-gap:48px}
  .flow-node b,.hub-half b{font-size:14px}
  .model-layout{grid-template-columns:1fr 160px;gap:18px}
  .model-tabs button{padding:18px 12px;gap:10px}
  .model-tabs b{font-size:15px}
  .model-tabs i{display:none}
  .validation-grid{grid-template-columns:repeat(2,1fr)}
  .validation-metric:nth-child(2){border-right:0}
  .validation-metric:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .validation-banner{flex-wrap:wrap}
  .validation-banner>span{width:100%}
  .downloads-grid{gap:18px}
  .download-group a strong{font-size:15px}
}
@media(max-width:760px){
  :root{--rail:0px;--topbar:66px}
  .topbar{padding:0 18px}
  .brand>span{font-size:19px}
  .brand svg{width:30px;height:30px}
  .topbar-link{font-size:13px}
  .hero{height:100svh;min-height:720px;--rotor-size:182vw;--hub-y:31%;--lens-radius:96px}
  .hero-coordinate{left:18px;top:86px}
  .hero-instruction{right:18px;top:86px;letter-spacing:0}
  .hero-instruction span{display:none}
  .nameplate{top:auto;bottom:76px;width:calc(100% - 32px)}
  .nameplate h1{font-size:clamp(23px,6vw,34px);white-space:normal}
  .np-spec>div{padding:9px 10px}
  .np-spec>div:first-child,.np-spec>div:nth-child(4){padding-left:16px}
  .np-head,.nameplate h1,.np-desc,.np-foot{padding-left:16px;padding-right:16px}
  .hero-footnote{display:none}
  .scroll-cue{left:16px;bottom:18px}
  .rail{display:none}
  .section{padding:64px 16px}
  .section-head h2{font-size:27px}
  .split-head{display:block}
  .split-head>p{max-width:none;margin-top:16px}
  .concept-layout{display:flex;flex-direction:column-reverse}
  .concept-stage{--stage-h:360px}
  .scope-note{display:block;padding:18px}
  .scope-note p{margin-top:8px}
  .figure-toolbar{gap:10px;flex-wrap:wrap}
  .tabs button{padding:9px 13px;font-size:14px}
  .internal-stage{--stage-h:300px}
  .hotspot-labels li b{display:none}
  .zoom-button{right:10px;top:10px;width:38px;height:38px}
  .motion-heading{display:block}
  .motion-caption{display:block;margin-top:10px}
  .flow-legend{flex-direction:column;gap:8px;padding:16px}
  .flow-stage{padding:30px 16px}
  .flow-grid{grid-template-columns:1fr 1fr;grid-template-areas:"m1 t1" "m2 t2" ". t3" "hub hub" "m4 t5" "m5 .";row-gap:30px;column-gap:24px}
  .flow-hub{flex-direction:row;gap:24px;background:linear-gradient(var(--ink),var(--ink)) center/100% 2px no-repeat;margin-top:26px}
  .hub-tag{bottom:calc(100% + 16px)}
  .logic-foot{display:block;padding:20px 16px}
  .logic-foot p{margin-top:8px}
  .model-layout{display:flex;flex-direction:column;gap:16px}
  .model-stage{--stage-h:340px}
  .model-stage>figcaption{flex-wrap:wrap}
  .model-tabs{display:grid;grid-template-columns:repeat(5,1fr)}
  .model-tabs button{padding:12px 4px;display:block;text-align:center;border-bottom:1px solid var(--line)}
  .model-tabs button>span{display:none}
  .model-tabs b{font-size:14px}
  .model-tabs small{display:none}
  .parameter-strip{display:block}
  .parameter-strip p{margin-top:10px}
  .version-strip b{font-size:15px}
  .vs-controls{flex-direction:column;gap:14px}
  .vs-track{width:calc(100% - 60px);margin:0 30px}
  .vs-tick small{display:none}
  .filmstrip{grid-template-columns:repeat(5,1fr)}
  .vs-stage{--stage-h:280px}
  .ppt-actions{width:100%;justify-content:space-between}
  .ppt-arrow{width:34px;height:46px;opacity:.85}
  .validation-banner{padding:20px}
  .validation-grid{grid-template-columns:1fr}
  .validation-metric{border-right:0;border-bottom:1px solid var(--line);min-height:0}
  .validation-counts{grid-template-columns:1fr}
  .validation-counts p{padding:18px 0}
  .downloads-grid{grid-template-columns:1fr}
  .titleblock{grid-template-columns:1fr 1fr}
  .tb-name{grid-column:1/-1}
  .tb-top{grid-column:1/-1;padding:12px 14px}
}

/* Reduced motion: no auto-play, no scroll-driven effects, no flowing dashes; everything static and visible. */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation:none !important;transition:none !important}
  .js [data-reveal],.js [data-reveal-group]>*{opacity:1;transform:none}
  .flow-wires .w-flow{stroke-dasharray:none;stroke-opacity:1}
}
