/* Sizes are in rem: 1rem = 14px up to 1920×1080 and grows smoothly to 22px on 4K (see :root), so the whole dashboard
   scales like browser zoom on large monitors. Borders stay in px (hairlines); px inside SVG-internal rules are SVG user units. */
:root{color-scheme:dark;--bg:#101211;--panel:#191c19;--line:#30352e;--text:#ecf0e8;--muted:#929d8c;--lime:#c7f56d;--lime-dark:#26371e;--red:#ff8476;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:clamp(14px,min(calc(14px + (100vw - 1920px) * .0042),calc(14px + (100vh - 1080px) * .0075)),22px)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}[hidden]{display:none!important}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{border:1px solid #424a3c;background:#232821;color:var(--text);border-radius:0.5714rem;padding:0.7857rem 1.0714rem;font-weight:650;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s}button:hover:not(:disabled){background:#303a28;border-color:#7f9964}button:disabled{opacity:.38;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,svg:focus-visible{outline:2px solid var(--lime);outline-offset:3px}input,select{min-width:0;border:1px solid #40483a;background:#111610;border-radius:0.5rem;color:var(--text);padding:0.7143rem 0.8571rem;width:100%;outline-offset:2px}input[type=checkbox]{width:1.4286rem;height:1.4286rem;accent-color:var(--lime);flex-shrink:0;cursor:pointer}label{display:block;font-size:0.8571rem;color:#aab4a3;font-weight:600}label>input{margin-top:0.5rem}a{color:inherit;text-decoration:none}h1,h2,p{margin:0}h1{font-size:clamp(1.9286rem,2.7vw,2.7857rem);font-weight:600;letter-spacing:-0.0929rem;margin:0.6429rem 0 0.7143rem}h2{font-size:1.1429rem;letter-spacing:-0.0179rem;font-weight:650}strong{font-weight:600}code,.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}code{font-size:0.7857rem;overflow-wrap:anywhere}.muted{color:var(--muted);line-height:1.65}.fine{font-size:0.7857rem;color:var(--muted);line-height:1.6}.eyebrow,.metric-label{font-size:0.7143rem;letter-spacing:0.1214rem;font-weight:650;color:var(--muted)}.eyebrow{color:var(--lime)}.primary{color:#18220e;background:var(--lime);border-color:var(--lime);font-weight:750}.primary:hover:not(:disabled){background:#d7ff91;border-color:#d7ff91}.full{width:100%}.quiet{background:transparent;border-color:transparent;color:#afbaA6;font-weight:500}.topbar{height:5.8571rem;padding:0 4%;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:1.7143rem;background:#151814}.wordmark{font-size:1.7857rem;letter-spacing:-0.0714rem;font-weight:750;display:flex;align-items:center;gap:0.5714rem;white-space:nowrap}.brand-symbol{display:inline-flex;align-items:center;justify-content:center;width:2.2143rem;height:2.2143rem;background:var(--lime);color:#14220e;transform:skew(-8deg);font-size:1.6429rem;font-weight:800;border-radius:0.2143rem;letter-spacing:-0.2143rem;padding-right:0.2143rem}.brand-dot{color:var(--lime);font-size:0.6429rem;margin-left:0}.product-name{border-left:1px solid #3d4535;padding-left:1.7143rem;color:#929d87;font-size:0.8571rem;letter-spacing:0.0143rem}.top-actions{margin-left:auto;display:flex;align-items:center;gap:1.4286rem}.badge{display:inline-flex;align-items:center;gap:0.5714rem;color:#bbd1a4;font-size:0.7857rem}.badge i,.pulse-dot{width:0.4286rem;height:0.4286rem;border-radius:50%;background:var(--lime);display:inline-block;box-shadow:0 0 0.7143rem #c7f54a35}.badge.offline i{background:var(--red)}main{max-width:114.2857rem;margin:auto;padding:2.6429rem 4% 0}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:2.1429rem;margin-bottom:1.7857rem}.source-box{width:18.2143rem;flex-shrink:0}.source-box label{margin-bottom:0.5rem}.source-box .fine{display:block;margin-top:0.3571rem}.source-box select{font-size:0.8571rem;padding:0.8571rem}.mode-banner{background:#1d2719;border:1px solid #3c5030;border-radius:0.7143rem;display:flex;align-items:center;gap:1rem;padding:0.9286rem 1.2857rem;margin-bottom:1.5714rem}.mode-banner>span:first-child{font-size:1.5714rem;color:var(--lime)}.mode-banner strong{display:block;font-size:0.8571rem;color:#d0e0bd}.mode-banner div>span{display:block;font-size:0.7857rem;color:#a1b095;margin-top:0.2143rem}.mode-banner>.mono{margin-left:auto;font-size:0.7857rem;color:#acbf9a}.mode-banner.unavailable{background:#2b211b;border-color:#604532}.mode-banner.unavailable strong{color:#ffd0a8}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:1.0714rem;margin-bottom:1.4286rem}.metric{background:var(--panel);border:1px solid var(--line);border-radius:0.7143rem;padding:1.3571rem 1.4286rem;min-height:8.8571rem;position:relative}.metric>div{display:flex;align-items:baseline;gap:0.6429rem;margin-top:0.7143rem}.metric strong{font-size:2.4286rem;line-height:1.15;letter-spacing:-0.1071rem;font-weight:550;font-variant-numeric:tabular-nums}.metric div>span{color:#82916e;font-size:0.8571rem}.metric small{display:block;color:var(--muted);font-size:0.7143rem;margin-top:0.7143rem}.sparkline{width:7.8571rem;height:1.7143rem;position:absolute;right:1.3571rem;bottom:1rem;overflow:visible}.sparkline path{stroke:var(--lime);stroke-width:1.5;fill:none}.control-grid{display:grid;grid-template-columns:minmax(24.2857rem,1.15fr) minmax(19.6429rem,1fr) minmax(18.5714rem,.9fr);gap:1.2857rem;align-items:start}.middle-column,.right-column{display:grid;gap:1.2857rem}.panel{border:1px solid var(--line);border-radius:0.8571rem;background:var(--panel);padding:1.5rem}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:0.7143rem;margin-bottom:1.2143rem}.tag{display:inline-block;border:1px solid #42483d;color:#a9b39f;background:#242922;border-radius:0.2857rem;padding:0.2857rem 0.5rem;font-size:0.5714rem;letter-spacing:0.0714rem;font-weight:650;white-space:nowrap}.tag.lime{border-color:#4e6535;color:var(--lime);background:#27371e}.dial-wrap{margin:0 -0.6429rem 1.5714rem}.dial-wrap svg{width:100%;max-height:22.8571rem;display:block;touch-action:none;cursor:crosshair}.dial-wrap svg[aria-disabled=true]{cursor:default}.dial-track{fill:none;stroke:#3a4431;stroke-width:1.5}.dial-inner{fill:#151a13;stroke:#343e2c;stroke-width:1}.tick{stroke:#4e5b40;stroke-width:1}.tick.major{stroke:#8caa68;stroke-width:2}#angle-needle{stroke:var(--lime);stroke-width:2}#target-needle{stroke:#718a57;stroke-width:1.5;stroke-dasharray:4 5}#angle-tip{fill:var(--lime);stroke:#17270d;stroke-width:4}.dial-caption{text-anchor:middle;fill:#8a9a7b;font:9px ui-sans-serif,system-ui;letter-spacing:1.5px}.dial-value{text-anchor:middle;fill:var(--text);font:500 34px ui-sans-serif,system-ui;letter-spacing:-1.5px}.dial-label{text-anchor:middle;fill:#859575;font:10px ui-sans-serif,system-ui}.dial-help{color:#899d74;font-size:0.7143rem;text-align:center;margin-top:0.2143rem}.target-row{display:flex;align-items:center;justify-content:space-between;gap:0.7143rem;margin:0 0 1rem}.input-action{display:flex;align-items:center;width:13.5714rem;border:1px solid #454e3b;border-radius:0.5rem;overflow:hidden;background:#111710}.input-action input{width:6.5rem;border:0;border-radius:0;background:transparent}.input-action span{color:#91a57e;margin-left:-0.7857rem;margin-right:0.8571rem}.input-action button{margin:0.2143rem;padding:0.5714rem 0.8571rem;font-size:0.7857rem;background:#354a22;border:0;color:var(--lime);white-space:nowrap}.home-button{display:flex;align-items:center;justify-content:space-between;padding:1.0714rem 1.2857rem;letter-spacing:0.0214rem;font-size:0.8571rem}.two-buttons{display:flex;gap:0.6429rem;margin-top:0.7857rem}.two-buttons button{flex:1;padding:0.7857rem 0.4286rem;font-size:0.7143rem}.manual-control{border-top:1px solid var(--line);margin-top:1.5714rem;padding-top:1.4286rem}.manual-control>div:first-child{display:flex;justify-content:space-between;margin-bottom:0.8571rem}.jog-buttons{display:flex;gap:0.5714rem}.jog-buttons button{flex:1;padding:0.9286rem 0.3571rem;font-size:1.0714rem;touch-action:none;user-select:none}.jog-buttons button span{font-size:0.7143rem;font-weight:500}.jog-buttons .stop-button{font-size:0.7143rem;border-color:#a34839;background:#47281f;color:#ffa594;letter-spacing:0.0714rem}.jog-buttons .stop-button:hover:not(:disabled){background:#603025;border-color:#ed7f6c}.status-line{border-left:2px solid #637f43;padding-left:0.7143rem;margin-top:1.4286rem;color:#b1c39c;font-size:0.7857rem;min-height:2.1429rem;line-height:1.6}.compact{font-size:0.7857rem;margin-bottom:1.3571rem}.toggle{border:0;padding:0;background:none!important;display:flex;align-items:center;gap:0.5rem}.toggle>span{width:2.4286rem;height:1.2857rem;border-radius:1.4286rem;background:#42493b;position:relative}.toggle>span:after{content:"";position:absolute;width:0.8571rem;height:0.8571rem;left:0.2143rem;top:0.2143rem;border-radius:50%;background:#a3ae98;transition:transform .2s}.toggle[aria-pressed=true]>span{background:#667f36}.toggle[aria-pressed=true]>span:after{transform:translateX(1.1429rem);background:var(--lime)}.toggle b{font-size:0.7143rem;color:#b2c3a0}.auto-phase{display:flex;align-items:center;gap:0.8571rem;background:#12190f;border-radius:0.5rem;padding:1rem;margin-bottom:0.6429rem}.auto-phase strong{display:block;font-size:1.0714rem;margin-top:0.3571rem;text-transform:capitalize}.timers{display:flex;gap:0.7143rem;margin:1.2857rem 0 0.8571rem}.timers label{flex:1;font-size:0.7857rem}.unit-input{display:flex;align-items:center;border:1px solid #404c35;border-radius:0.5rem;margin-top:0.5rem;background:#11180e}.unit-input input{border:0;background:transparent;padding:0.7143rem;width:100%;font-size:0.9286rem}.unit-input span{font-size:0.7143rem;margin-right:0.7143rem;color:#91a47e}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-top:1.3571rem;margin-top:1.2143rem;border-top:1px solid var(--line)}.setting-row strong{font-size:0.8571rem}.setting-row .fine{margin-top:0.3571rem}.panel>.setting-row:first-of-type{padding-top:0;margin-top:0;border:0}.panel>.full{font-size:0.7857rem}.coming-panel{background:#171b16}.extension-row{display:flex;justify-content:space-between;color:#7d8d6e;font-size:0.8571rem;margin:1.0714rem 0}.coming-panel .fine{font-size:0.7143rem}.video-wrap{position:relative;width:100%;aspect-ratio:4/3;background:#0c100b;border:1px solid #2f3828;border-radius:0.5rem;overflow:hidden}.video-wrap video{width:100%;height:100%;object-fit:cover;display:block}#camera-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#6f855e;background:radial-gradient(ellipse,#202d1970,transparent 70%)}#camera-empty .camera-icon{font-size:2.6429rem;color:#8daa6b;line-height:1;margin-bottom:1.1429rem}#camera-empty strong{font-size:0.8571rem;color:#a2b98c}#camera-empty p{font-size:0.7143rem;line-height:1.7;margin-top:0.5714rem}.camera-panel>.fine{margin-top:0.8571rem}.connection-panel dl{margin:0 0 1.0714rem}.connection-panel dl>div{display:flex;justify-content:space-between;gap:0.7143rem;border-bottom:1px solid #2d3528;padding:0.7857rem 0;font-size:0.7857rem}.connection-panel dt{color:#8c9d7e}.connection-panel dd{margin:0;text-align:right;max-width:65%;overflow-wrap:anywhere;color:#c7d5ba}.protocol-panel{margin-top:1.6429rem;padding:0;overflow:hidden}.protocol-panel>.panel-heading{margin:0;padding:1.0714rem 1.4286rem;border-bottom:1px solid var(--line)}.tabs{display:flex;gap:1.5714rem}.tabs button{border:0;border-radius:0;padding:0.5rem 0;font-size:0.8571rem;font-weight:550;color:#829372;background:transparent!important}.tabs button.active{color:var(--lime)}.tabs button span{font-size:0.6429rem;background:#3a4b2b;color:#c2d5ad;border-radius:0.2857rem;padding:0.2143rem 0.3571rem;margin-left:0.3571rem}.protocol-panel>.panel-heading>.quiet{font-size:0.7143rem;padding:0.5rem 0}.table-wrap{max-height:20.3571rem;overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:0.7143rem}th{padding:0.8571rem 1.4286rem;color:#7d916c;font-size:0.6429rem;letter-spacing:0.0786rem;font-weight:600;position:sticky;top:0;background:#1b2117;white-space:nowrap}td{padding:0.7143rem 1.4286rem;border-top:1px solid #292f24;color:#b0c0a1;vertical-align:top}td:first-child{white-space:nowrap;color:#7d916c}td:last-child{overflow-wrap:anywhere}#packet-rows td:last-child{font-family:ui-monospace,Consolas,monospace;font-size:0.7143rem}#packet-rows td:nth-child(2){min-width:10.3571rem}.empty-text{padding:2.5rem;text-align:center;color:#71835f;font-size:0.8571rem}#catalog-view>.fine{padding:1.0714rem 1.4286rem}footer{display:flex;justify-content:space-between;padding:1.7143rem 0 2.1429rem;color:#637655;font-size:0.7143rem}.toast{position:fixed;bottom:1.7143rem;left:50%;transform:translateX(-50%);max-width:min(42.8571rem,90vw);padding:1rem 1.4286rem;border:1px solid #6f8556;border-radius:0.6429rem;background:#293621;color:#e0f0ce;font-size:0.8571rem;z-index:20;box-shadow:0 0.5714rem 2.8571rem #0009}.toast.error{background:#41261f;border-color:#b16754;color:#ffd0ba}.login-screen{min-height:100vh;display:grid;place-items:center;padding:1.7143rem;background:radial-gradient(ellipse at 75% 20%,#2f412233,transparent 50%),var(--bg)}.login-card{width:min(30rem,100%);padding:2.7143rem;border:1px solid #3a4631;border-radius:1.2857rem;background:#181e15;box-shadow:0 2.1429rem 7.1429rem #0004}.login-card .eyebrow{font-size:0.5714rem;margin:0.9286rem 0 2.2857rem;letter-spacing:0.1429rem}.login-card h1{font-size:2.6429rem;line-height:1.15;margin-bottom:1.2857rem}.login-card>.muted{font-size:0.8571rem;margin-bottom:1.7857rem}.login-card label{margin:1.1429rem 0}.login-card button{display:flex;justify-content:space-between;margin-top:1.6429rem;padding:1rem}.login-card>.fine{margin-top:1.4286rem;font-size:0.7143rem}.login-card .error{margin-top:1rem;font-size:0.7857rem;color:#ffa28f;line-height:1.5}@media(min-width:1450px){.dial-wrap svg{max-height:25.7143rem}.position-panel{padding:1.6429rem 1.9286rem}.metric strong{font-size:2.8571rem}}@media(max-width:1100px){.control-grid{grid-template-columns:minmax(23.5714rem,1fr) minmax(20rem,1fr)}.right-column{grid-column:1/-1;grid-template-columns:1fr 1fr}.video-wrap{aspect-ratio:16/9}.product-name{font-size:0.7143rem}.metric{padding:1.1429rem}.metric strong{font-size:2.0714rem}.sparkline{width:5.3571rem;right:1rem}.metrics{gap:0.7143rem}}@media(max-width:720px){.topbar{height:4.8571rem;padding:0 1.4286rem;gap:0.7143rem}.wordmark{font-size:1.5rem}.brand-symbol{width:1.9286rem;height:1.9286rem;font-size:1.4286rem}.product-name{display:none}.top-actions{gap:0.5714rem}.badge{font-size:0.6429rem}.top-actions button{font-size:0.7143rem;padding:0.4286rem}main{padding:1.9286rem 1.1429rem 0}.page-heading{display:block}.source-box{margin-top:1.5714rem;width:100%}.page-heading h1{font-size:2.0714rem}.metrics{grid-template-columns:repeat(2,1fr);gap:0.7143rem}.metric{min-height:8.4286rem}.metric strong{font-size:2.1429rem}.metric-label{font-size:0.5714rem;letter-spacing:0.0786rem}.metric small{font-size:0.6429rem}.control-grid{display:block}.middle-column,.right-column{display:grid;grid-template-columns:1fr;margin-top:1.0714rem;gap:1.0714rem}.position-panel{padding:1.4286rem}.dial-wrap svg{max-height:24.6429rem}.mode-banner{padding:0.8571rem;gap:0.7143rem;align-items:start}.mode-banner>.mono{display:none}.mode-banner div>span{font-size:0.7143rem}.mode-banner strong{font-size:0.7857rem}.protocol-panel>.panel-heading{padding:0.9286rem}.tabs{gap:1.0714rem}.tabs button{font-size:0.7857rem}td,th{padding:0.7143rem 0.9286rem}.table-wrap{max-height:18.5714rem}.login-card{padding:2.1429rem}.source-box .fine{font-size:0.7143rem}footer{font-size:0.5714rem}}
.camera-controls{margin-top:1.0714rem}.camera-controls select{margin-top:0.5rem;font-size:0.7857rem}.camera-selector-footer{display:flex;align-items:flex-start;gap:0.5714rem;margin-top:0.5714rem}.camera-selector-footer .fine{flex:1;font-size:0.7143rem}.camera-selector-footer button{flex-shrink:0;padding:0.2143rem 0 0.2143rem 0.3571rem;font-size:0.7143rem}.video-wrap #camera-feed{display:block;width:100%;height:100%;object-fit:contain}.manual-control>div:first-child{gap:0.7143rem}.manual-control>div:first-child .fine{text-align:right}
.continuous-option{display:flex;align-items:center;gap:0.6429rem;margin:0.1429rem 0 0.9286rem;font-size:0.8571rem}.continuous-option input{margin:0;width:1.2143rem;height:1.2143rem}#manual-policy{margin-top:0.7857rem;font-size:0.7143rem}.jog-buttons button{min-width:0}.jog-buttons button span{font-size:0.7143rem}
.home-actions{display:flex;gap:0.7143rem}.home-actions button{flex:1;justify-content:center;min-width:0}.home-help{margin-top:0.7143rem}#saved-home{margin-top:0.2857rem;color:var(--lime)}.logo-wordmark{display:flex;align-items:center}.logo-image{width:12.1429rem;height:5.5714rem;object-fit:contain;display:block}.login-card .logo-image{width:100%;height:auto;max-height:12.1429rem}.login-card .logo-wordmark{justify-content:center}.login-card .eyebrow{text-align:center;margin-top:0.5714rem}@media(max-width:720px){.topbar .logo-image{width:8.3571rem;height:4.4286rem}.home-actions button{padding:0.9286rem 0.7143rem}}
/* Keep direction names readable and Stop easy to reach on narrow phones. */
@media(max-width:400px){.jog-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}#jog-minus{grid-column:1;grid-row:1}#jog-plus{grid-column:2;grid-row:1}#stop{grid-column:1/-1;grid-row:2}.manual-control>div:first-child{flex-wrap:wrap}.target-row{align-items:stretch;flex-direction:column;gap:0.5rem}.target-row .input-action{width:100%}.target-row .input-action input{flex:1}}

.motor-pill{display:inline-flex;align-items:center;gap:0.6429rem;padding:0.6429rem 1.1429rem;border-radius:71.3571rem;border:1px solid #6f9a3c;background:#23361a;color:var(--lime);font-size:0.8571rem;font-weight:800;letter-spacing:0.1rem;white-space:nowrap;box-shadow:0 0 1.5714rem #c7f56d33}.motor-pill i{width:0.7143rem;height:0.7143rem;border-radius:50%;background:var(--lime);box-shadow:0 0 0.7143rem var(--lime);animation:motorPulse 1.6s ease-in-out infinite}.motor-pill.offline{border-color:#a34839;background:#3a211b;color:#ffb3a3;box-shadow:0 0 1.5714rem #ff847633}.motor-pill.offline i{background:var(--red);box-shadow:0 0 0.7143rem var(--red)}.motor-pill.simulation{border-color:#8a7a3a;background:#332d17;color:#f5dc7a;box-shadow:none}.motor-pill.simulation i{background:#f5dc7a;box-shadow:none}@keyframes motorPulse{50%{opacity:.35}}
.autofix-button{padding:0.6429rem 1.1429rem;border-radius:71.3571rem;border-color:#c79a3a;background:#3a2e14;color:#ffd46b;font-size:0.8571rem;font-weight:800;letter-spacing:0.0857rem;white-space:nowrap}.autofix-button:hover:not(:disabled){background:#4d3c17;border-color:#ffd46b}
.autofix-overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1.4286rem;background:#080a08e6;backdrop-filter:blur(0.2857rem)}.autofix-card{width:min(30rem,100%);text-align:center;padding:2.5714rem 2.1429rem;border:1px solid #4e6535;border-radius:1.1429rem;background:#181e15;box-shadow:0 2.1429rem 7.1429rem #000a}.autofix-card strong{display:block;font-size:1.5714rem;margin:0.5714rem 0 0.7143rem}.autofix-card p{color:#b9c9aa;font-size:0.9286rem;line-height:1.6}.autofix-card .fine{margin-top:0.7143rem}.autofix-spinner{width:3.8571rem;height:3.8571rem;margin:0 auto 1.2857rem;border-radius:50%;border:4px solid #2c3a22;border-top-color:var(--lime);animation:autofixSpin .9s linear infinite}@keyframes autofixSpin{to{transform:rotate(360deg)}}
@media(max-width:900px){#stream-badge{display:none}}
@media(max-width:720px){.topbar{height:auto;min-height:4.8571rem;flex-wrap:wrap;padding:0.5714rem 1rem}.top-actions{flex-wrap:wrap;justify-content:flex-end;gap:0.4286rem}.motor-pill{font-size:0.7143rem;padding:0.5rem 0.7143rem;letter-spacing:0.0571rem}.autofix-button{font-size:0.7143rem;padding:0.5rem 0.7143rem}}

.zero-zone{fill:#c7f56d33;stroke:#c7f56d88;stroke-width:1}.zero-marker{stroke:#c7f56d66;stroke-width:1.5;stroke-dasharray:3 4}#torque-needle{stroke:#ffb35c;stroke-width:2.5;transition:x2 .25s,y2 .25s}#torque-tip{fill:#ffb35c;stroke:#2a1a08;stroke-width:4}#torque-dial.balanced #torque-needle{stroke:var(--lime)}#torque-dial.balanced #torque-tip{fill:var(--lime);stroke:#17270d}.vane-label{fill:var(--lime);font-weight:700;letter-spacing:1px}.tag.warn{border-color:#8a6a2c;color:#ffc46b;background:#3a2c14}.torque-panel .dial-wrap{margin-bottom:0.4286rem}
#stream-badge{display:none!important}
@media(max-width:1100px){.topbar{height:auto;min-height:4.8571rem;flex-wrap:wrap;padding:0.5714rem 1.4286rem;row-gap:0.5714rem}.top-actions{flex-wrap:wrap;justify-content:flex-end;gap:0.5714rem}.product-name{display:none}}
.vane-settings{border-top:1px solid var(--line);margin-top:1.1429rem;padding-top:0.4286rem}.vane-settings .timers{margin:0.8571rem 0 0.5714rem}.vane-settings label{font-size:0.7143rem;letter-spacing:0.0143rem}.vane-settings>.full{margin-top:0.4286rem;font-size:0.7857rem}.vane-settings>.fine{margin-top:0.6429rem;font-size:0.7143rem}.auto-detail{color:var(--lime);margin-top:0.4286rem;font-variant-numeric:tabular-nums}

.downloads-list{list-style:none;margin:0;padding:0;display:grid;gap:0.4286rem}
.downloads-list a{color:var(--lime,#b6ff2e);word-break:break-all}

.gear-button{font-size:1.4286rem;padding:0.2857rem 0.7143rem;line-height:1}
.advanced-overlay{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:30;padding:1.1429rem}
.advanced-card{width:min(54.2857rem,100%);max-height:92vh;overflow:auto;background:var(--panel);border:1px solid #3a4631;border-radius:1rem;padding:1.5714rem;box-shadow:0 2.1429rem 7.1429rem #000c}
.advanced-card .panel-heading{margin-bottom:0.7143rem}
.advanced-table{max-height:44vh;margin:0.8571rem 0}
.advanced-table input{width:8.5714rem;padding:0.4286rem 0.5714rem;font-size:0.8571rem}
.advanced-table td,.advanced-table th{padding:0.5714rem 0.8571rem}
.advanced-link{margin:1rem 0 0}
.advanced-link>div{display:flex;justify-content:space-between;gap:0.7143rem;border-top:1px solid #2d3528;padding:0.6429rem 0;font-size:0.7857rem}
.advanced-link dt{color:#8c9d7e}.advanced-link dd{margin:0;text-align:right;overflow-wrap:anywhere;color:#c7d5ba}
@media(max-width:720px){.gear-button{padding:0.2857rem 0.5714rem}.advanced-card{padding:1.1429rem}}
/* ---- Weather view, storm protection and the catastrophic weather tilt ---- */
.wx-sprite{position:absolute;width:0;height:0;overflow:hidden}
.weather-button{display:inline-flex;align-items:center;gap:0.6429rem;padding:0.6429rem 1.1429rem;border-radius:71.3571rem;border-color:#3d6ea8;background:#15263a;color:#a9d0ff;font-size:0.8571rem;font-weight:800;letter-spacing:0.0857rem;white-space:nowrap}
.weather-button:hover:not(:disabled){background:#1c3350;border-color:#7fb5f5}
.weather-button[aria-pressed=true]{border-color:#c7f56d;color:var(--lime);background:#20301a}
.wx-dot{width:0.7143rem;height:0.7143rem;border-radius:50%;display:inline-block;background:#0ca30c;box-shadow:0 0 0.5714rem #0ca30c88}
.wx-dot.level-1{background:#fab219;box-shadow:0 0 0.5714rem #fab21988}
.wx-dot.level-2{background:#ec835a;box-shadow:0 0 0.5714rem #ec835a88}
.wx-dot.level-3{background:#ff4d3d;box-shadow:0 0 0.7143rem #ff4d3d;animation:wxBlink .8s steps(2) infinite}
.wx-dot.armed{outline:2px solid #ff6b5a;outline-offset:2px}
@keyframes wxBlink{50%{opacity:.25}}
.level-0{--lv:#0ca30c;--lv-bg:#132214;--lv-line:#2e5a2f;--lv-text:#a8e89a}
.level-1{--lv:#fab219;--lv-bg:#2a2210;--lv-line:#7a5c14;--lv-text:#ffd36b}
.level-2{--lv:#ec835a;--lv-bg:#2e1c12;--lv-line:#8a4b2c;--lv-text:#ffbf9f}
.level-3{--lv:#ff4d3d;--lv-bg:#3a1414;--lv-line:#b43a3a;--lv-text:#ffc0b8}
.storm-strip{display:flex;align-items:center;gap:1rem;border:1px solid var(--lv-line);background:var(--lv-bg);border-radius:0.7143rem;padding:0.8571rem 1.1429rem;margin-bottom:1.2857rem}
.storm-strip .beacon{width:2.4286rem;height:2.4286rem;flex-shrink:0}
.storm-strip strong{display:block;color:var(--lv-text);font-size:0.8571rem;letter-spacing:0.0571rem}
.storm-strip span{display:block;font-size:0.7857rem;color:#c9cfc2;margin-top:0.2143rem;line-height:1.5}
.storm-strip>div{flex:1}
.storm-strip button{flex-shrink:0;color:var(--lv-text);font-size:0.7857rem}
.storm-strip.flash,.wx-threat.flash{animation:wxFlash 1.2s ease-in-out infinite}
@keyframes wxFlash{50%{box-shadow:0 0 0 0.1429rem var(--lv),0 0 2rem var(--lv)}}
.weather-view .page-heading{align-items:flex-end}
.wx-heading-actions{display:flex;gap:0.7143rem;flex-shrink:0}
.wx-back{border-color:#4e6535;color:var(--lime);background:#1d2719}
.danger-outline{border-color:#a34839;color:#ffb3a3;background:#2d1a16}
.danger-outline:hover:not(:disabled){background:#47281f;border-color:#ed7f6c}
.wx-sim-banner{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;border:1px solid #8a6a2c;border-radius:0.7143rem;padding:0.7143rem 1.1429rem;margin-bottom:1rem;background:repeating-linear-gradient(135deg,#2e2410 0 1rem,#241c0d 1rem 2rem);color:#ffd36b;font-size:0.7857rem}
.wx-sim-banner strong{letter-spacing:0.1143rem;font-size:0.7857rem}
.wx-threat{display:flex;align-items:center;gap:1.1429rem;border:1px solid var(--lv-line);background:var(--lv-bg);border-radius:0.8571rem;padding:1.0714rem 1.4286rem;margin-bottom:1.4286rem}
.wx-threat-icon{width:2.8571rem;height:2.8571rem;border-radius:50%;display:grid;place-items:center;flex-shrink:0;background:var(--lv);color:#111;font-size:1.3571rem;font-weight:900}
.wx-threat-copy{flex:1;min-width:0}
.wx-threat-label{display:block;font-size:0.7143rem;letter-spacing:0.1286rem;font-weight:800;color:var(--lv-text)}
.wx-threat-copy strong{display:block;font-size:1.1429rem;margin-top:0.2857rem;line-height:1.35}
#wx-threat-detail{display:block;font-size:0.7857rem;color:#b9c4b0;margin-top:0.3571rem;line-height:1.5}
.wx-feed{font-size:0.7143rem;color:#9aa890;max-width:17.8571rem;text-align:right;line-height:1.5}
.wx-grid{display:grid;grid-template-columns:minmax(24.2857rem,1.15fr) minmax(20.7143rem,1fr) minmax(18.5714rem,.9fr);gap:1.2857rem;align-items:start}
.wx-grid>*,.wx-grid-2>*,.wx-side>*{min-width:0}
.wx-side{display:grid;gap:1.2857rem}
.wx-grid-2{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:1.2857rem;margin-top:1.2857rem;align-items:start}
.wx-outlook-panel{margin-top:1.2857rem}
.wx-subhead{font-size:0.7857rem;letter-spacing:0.1rem;color:var(--muted);font-weight:700;margin:1.2857rem 0 0.7143rem;text-transform:uppercase}
.wx-kind{font-style:normal;font-size:0.5714rem;font-weight:800;letter-spacing:0.0714rem;border-radius:0.2857rem;padding:0.1429rem 0.3571rem;margin-left:0.5rem;vertical-align:0.0714rem;white-space:nowrap}
.wx-kind.motor{background:#23361a;color:var(--lime);border:1px solid #4e6535}
.wx-kind.sim{background:#3a2c14;color:#ffc46b;border:1px solid #8a6a2c}
/* Alarm button */
.alarm-button{width:100%;display:flex;align-items:center;gap:1rem;text-align:left;padding:1rem 1.1429rem;border-radius:0.8571rem;border:1px solid #7a4a2a;background:#221812;color:#ffd2b8;margin-bottom:1rem}
.alarm-button:hover:not(:disabled){background:#2e1f16;border-color:#d0703f}
.alarm-copy b{display:block;font-size:0.9286rem;letter-spacing:0.0786rem;font-weight:900;line-height:1.3}
.alarm-copy small{display:block;font-size:0.7143rem;letter-spacing:0.0714rem;margin-top:0.3571rem;color:#d9a98c;font-weight:700}
.beacon{width:3.2857rem;height:3.2857rem;flex-shrink:0;overflow:visible}
.beacon-dome{fill:#6e2c26;stroke:#2a0f0c;stroke-width:2}
.beacon-shine{fill:none;stroke:#ffffff55;stroke-width:3;stroke-linecap:round}
.beacon-base{fill:#3b3f47;stroke:#1d2026;stroke-width:2}
.beacon-rays path{stroke:#ff5a4a;stroke-width:4;stroke-linecap:round;fill:none;opacity:0}
.alarm-button[aria-pressed=true]{border-color:#ff5a4a;background:linear-gradient(180deg,#4a1411,#2c0c0a);color:#fff;box-shadow:0 0 0 0.0714rem #ff5a4a55,0 0 1.7143rem #ff3b2f40;animation:alarmGlow 2.4s ease-in-out infinite}
.alarm-button[aria-pressed=true] .alarm-copy small{color:#ffb3a8}
.alarm-button[aria-pressed=true] .beacon-dome,.storm-strip.level-3 .beacon-dome,.storm-strip.flash .beacon-dome{fill:#ff3b2f;animation:beaconFlash .9s steps(2) infinite}
.alarm-button[aria-pressed=true] .beacon-rays path,.storm-strip.level-3 .beacon-rays path,.storm-strip.flash .beacon-rays path{animation:beaconRays .9s steps(2) infinite}
.alarm-button.engaged{background:linear-gradient(180deg,#7a1612,#3e0d0b);animation:alarmEngaged .8s steps(2) infinite}
.alarm-button.exposed{border-color:#ff5a4a;animation:alarmExposed .7s steps(2) infinite}
.alarm-button.exposed .beacon-dome{fill:#ff3b2f;animation:beaconFlash .7s steps(2) infinite}
@keyframes alarmGlow{50%{box-shadow:0 0 0 0.0714rem #ff5a4a,0 0 2.8571rem #ff3b2f70}}
@keyframes alarmEngaged{50%{background:linear-gradient(180deg,#b01d16,#5a100d)}}
@keyframes alarmExposed{50%{box-shadow:0 0 0 0.2143rem #ff5a4a,0 0 2.1429rem #ff3b2f}}
@keyframes beaconFlash{50%{fill:#7a1a14}}
@keyframes beaconRays{0%{opacity:1}50%{opacity:0}}
/* Turbine diagram */
.turbine-wrap{border:1px solid #2f3828;border-radius:0.7143rem;overflow:hidden;background:#0d120c;margin-bottom:0.8571rem}
.turbine{width:100%;height:auto;display:block}
.tb-sky{fill:url(#tb-sky-fill)}
.tb-sky-top{stop-color:#1a2b3c;transition:stop-color 1s}
.tb-sky-bottom{stop-color:#2b3b2e;transition:stop-color 1s}
.turbine.storm .tb-sky-top{stop-color:#0b0f15}
.turbine.storm .tb-sky-bottom{stop-color:#1c2224}
.tb-clouds ellipse{fill:#2f3a46;opacity:0;transition:opacity 1.2s}
.turbine.storm .tb-clouds ellipse{opacity:.95}
.tb-bolt{fill:#fff4a0;opacity:0}
.turbine.lightning .tb-bolt{animation:tbBolt 3.4s linear infinite}
@keyframes tbBolt{0%,88%,100%{opacity:0}89%,91%{opacity:1}90%{opacity:.2}}
.tb-rain path{stroke:#7fa6d6;stroke-width:1.5;stroke-linecap:round;opacity:0;fill:none}
.turbine.storm .tb-rain path{opacity:.55;animation:tbRain .45s linear infinite}
@keyframes tbRain{from{transform:translate(0,-24px)}to{transform:translate(-8px,24px)}}
.tb-streak{stroke:#9fb7c9;stroke-width:1.6;stroke-linecap:round;opacity:.35;fill:none;animation:tbStreak var(--wind-duration,4s) linear infinite}
.tb-streak.s2{animation-delay:calc(var(--wind-duration,4s) * -.35)}
.tb-streak.s3{animation-delay:calc(var(--wind-duration,4s) * -.7)}
.tb-streak.s4{animation-delay:calc(var(--wind-duration,4s) * -.15)}
.tb-streak.s5{animation-delay:calc(var(--wind-duration,4s) * -.55)}
@keyframes tbStreak{from{transform:translateX(-70px)}to{transform:translateX(430px)}}
.tb-ground{fill:#182014}
.tb-grass{stroke:#3d5a2a;stroke-width:2}
.tb-cradle,.tb-anchor{fill:#394150;stroke:#1d222b;stroke-width:1.5}
.tb-cradle-saddle{stroke:#8a94a6;stroke-width:3;stroke-linecap:round}
.tb-pedestal{fill:#48505e;stroke:#1d222b;stroke-width:1.5}
.tb-cyl-barrel{stroke:#b89422;stroke-width:8;stroke-linecap:round}
.tb-cyl-rod{stroke:#dde2e8;stroke-width:3.5;stroke-linecap:round}
.turbine.hydraulics .tb-cyl-barrel{stroke:#ffd23f;filter:drop-shadow(0 0 4px #ffd23f)}
.tb-cyl-pin{fill:#dde2e8;stroke:#454c5a;stroke-width:1.5}
.tb-mast{fill:#b9c2ce;stroke:#5d6776;stroke-width:1}
.tb-lattice{fill:none;stroke:#6f7a89;stroke-width:1.2}
.tb-hub{fill:#5b6573;stroke:#2d333c;stroke-width:1}
.tb-brake{fill:#3a3f48;stroke:#20242a;stroke-width:1;transition:fill .3s}
.tb-brake.on{fill:#ff4d3d;filter:drop-shadow(0 0 5px #ff4d3d)}
.tb-shaft{fill:#d2d9e2}
.tb-boom{stroke:#c3ccd6;stroke-width:4;stroke-linecap:round}.tb-yawpost{fill:#3f7d3a;stroke:#22331f;stroke-width:1}
.tb-sail{fill:#eef3f8;stroke:#7c8896;stroke-width:.8}.tb-counterweight{fill:#aeb7c2;stroke:#6b7480;stroke-width:1}
.tb-sail.back,.tb-counterweight.back{opacity:.5}
.tb-beacon{fill:#5a2a2a}
.turbine.alarm .tb-beacon{fill:#ff3b2f;animation:beaconFlash .8s steps(2) infinite;filter:drop-shadow(0 0 6px #ff3b2f)}
.tb-hinge{fill:#dde2e8;stroke:#454c5a;stroke-width:2}
.tb-label{fill:#8594a2;font:700 7.5px ui-sans-serif,system-ui;letter-spacing:1.2px}
.tb-status{fill:#e8eef4;font:800 10px ui-sans-serif,system-ui;letter-spacing:1.4px}
.turbine.alarm .tb-status{fill:#ffb0a8}
/* Sequence steps */
.wx-steps{list-style:none;margin:0 0 0.8571rem;padding:0;display:grid;gap:0.5rem}
.wx-steps-head{font-size:0.7143rem;letter-spacing:0.0714rem;color:var(--muted);font-weight:700;text-transform:uppercase;line-height:1.5}
.wx-step{display:flex;gap:0.7143rem;align-items:flex-start;font-size:0.7857rem;color:#c5d0bb}
.wx-step-mark{width:1.2857rem;height:1.2857rem;border-radius:50%;border:1.5px solid #4a5541;display:grid;place-items:center;font-size:0.7143rem;flex-shrink:0;color:#6f7d64;font-weight:900}
.wx-step.done .wx-step-mark{border-color:var(--lime);background:#27371e;color:var(--lime)}
.wx-step.failed .wx-step-mark{border-color:#ff6b5a;background:#3a1a16;color:#ff9c90}
.wx-step.skipped .wx-step-mark{border-color:#5b6453;color:#8e9985}
.wx-step.running .wx-step-mark{border-color:#ffd23f;border-top-color:transparent;animation:autofixSpin .8s linear infinite}
.wx-step.running .wx-step-label{color:#ffe38a;font-weight:700}
.wx-step.pending,.wx-step.preview{opacity:.7}
.wx-step-body{display:flex;flex-direction:column;gap:0.2143rem;min-width:0}
.wx-step-body small{display:block}
.wx-tilt-actions{margin-top:0.2857rem}
.wx-tilt-actions button{font-size:0.7857rem}
#wx-tilt-note{margin-top:0.8571rem}
.wx-rules{margin-top:1rem;border-top:1px solid var(--line);padding-top:0.8571rem}
.wx-rules summary,.wx-location summary{cursor:pointer;font-size:0.8571rem;font-weight:650;color:#c3d0b6}
.wx-rules select{margin-top:0.5rem;padding:0.7143rem;font-size:0.8571rem}
.wx-check-stack{display:flex;flex-direction:column;gap:0.5rem}
.wx-check{display:flex;align-items:center;gap:0.5714rem;font-size:0.7857rem;color:#c3d0b6;font-weight:500}
.wx-check input{width:1.1429rem;height:1.1429rem;margin:0}
/* Storm scope */
.scope{width:100%;max-width:24.2857rem;height:auto;display:block;margin:0 auto 0.7143rem}
.sc-bg{fill:#0b130e;stroke:#2f3a2a;stroke-width:1.5}
.sc-rings circle,.sc-rings path{fill:none;stroke:#27361f;stroke-width:1}
.sc-ring-label{fill:#5f7552;font:8px ui-sans-serif,system-ui}
.sc-compass{fill:#89a574;font:800 9px ui-sans-serif,system-ui;text-anchor:middle}
.sc-sweep{transform-origin:150px 150px;animation:scSweep 4s linear infinite}
@keyframes scSweep{to{transform:rotate(360deg)}}
.sc-site circle{fill:var(--lime)}
.sc-site path{stroke:var(--lime);stroke-width:1.2}
.sc-readout{fill:var(--lime);font:800 8.5px ui-sans-serif,system-ui;letter-spacing:1px;text-anchor:middle}
.sc-alert{stroke-width:1.5;fill-opacity:.16;stroke-linejoin:round}
.sc-alert.tornado{fill:#ff2d6f;stroke:#ff2d6f}
.sc-alert.warning{fill:#ff5a4a;stroke:#ff5a4a}
.sc-alert.watch{fill:#fab219;stroke:#fab219}
.sc-alert.advisory{fill:#5aa0ff;stroke:#5aa0ff}
.sc-alert.sim{stroke-dasharray:5 3}
.sc-hook{fill:none;stroke:#ff4fd8;stroke-width:3.5;stroke-linecap:round;opacity:0;transition:opacity .4s}
.sc-hook.on{opacity:1}
.sc-motion{fill:none;stroke:#ffffffcc;stroke-width:1.5;stroke-linecap:round}
.wx-sim-controls{display:flex;gap:0.7143rem;margin-top:0.4286rem}
.wx-sim-controls button{flex:1;font-size:0.7857rem}
.wx-sim-progress{height:0.3571rem;border-radius:0.3571rem;background:#2a3024;overflow:hidden;margin-top:0.7143rem}
.wx-sim-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#fab219,#ff4d3d);transition:width .9s linear}
.wx-log{list-style:none;margin:0;padding:0;display:grid;gap:0.4286rem;max-height:18.5714rem;overflow:auto}
.wx-log li{display:grid;grid-template-columns:auto 1fr auto;gap:0.5714rem;font-size:0.75rem;line-height:1.45;color:#c2ceb6;border-left:2px solid #3b4634;padding-left:0.5714rem}
.wx-log time{color:#7d916c;font-size:0.7143rem}
.wx-log .wx-log-alarm{border-left-color:#ff4d3d;color:#ffd0c9}
.wx-log .wx-log-warn{border-left-color:#fab219}
.wx-log .wx-log-ok{border-left-color:var(--lime)}
.wx-log .wx-kind{margin-left:0;align-self:start}
/* GPS and conditions */
.wx-gps{display:flex;align-items:center;gap:1rem;margin-bottom:0.7143rem}
.wx-sat{width:3rem;height:3rem;flex-shrink:0;fill:none;stroke:var(--lime);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.wx-gps strong{display:block;font-size:1.2857rem;letter-spacing:-0.0214rem}
.wx-gps .mono{display:block;font-size:0.7857rem;color:#a8b99a;margin-top:0.2857rem}
.wx-facts{margin:0}
.wx-facts>div{display:flex;justify-content:space-between;gap:0.7143rem;border-bottom:1px solid #2d3528;padding:0.6429rem 0;font-size:0.7857rem}
.wx-facts dt{color:#8c9d7e}
.wx-facts dd{margin:0;text-align:right;color:#c7d5ba;overflow-wrap:anywhere}
.wx-location{margin-top:0.8571rem}
.wx-location label{margin-top:0.7143rem}
.wx-location .full{margin-top:0.7143rem;font-size:0.7857rem}
.wx-now{display:flex;align-items:center;gap:1.1429rem;margin-bottom:0.5714rem}
.wx-now strong{display:block;font-size:2.4286rem;font-weight:550;letter-spacing:-0.0857rem;line-height:1.1;margin-top:0.4286rem}
.wx-compass{width:6.1429rem;height:6.1429rem;flex-shrink:0}
.wx-compass circle{fill:#121810;stroke:#3a4431;stroke-width:1.5}
.wx-compass text{fill:#7f9270;font:800 10px ui-sans-serif,system-ui;text-anchor:middle}
.wx-compass-arrow{fill:#3987e5;stroke:#0d1a2a;stroke-width:1;transition:transform .6s}
.wx-compass.empty .wx-compass-arrow{opacity:.2}
.wx-camera-slot:empty{display:none}
/* 7-day chart */
.wx-legend{display:flex;flex-wrap:wrap;gap:1rem;font-size:0.7143rem;color:#aab7a0}
.wx-legend span{display:inline-flex;align-items:center;gap:0.4286rem}
.key{display:inline-block;width:1.1429rem;height:0;border-top:2px solid}
.key.wind{border-color:#3987e5}
.key.gust{border-color:#d95926}
.key.hub{border-color:#199e70}
.key.limit{border-top:2px dashed #d03b3b}
.wx-chart-wrap{position:relative;overflow-x:auto;overflow-y:hidden}
.wx-chart{width:100%;height:auto;display:block;touch-action:pan-y}
.wx-chart:focus-visible{outline:2px solid var(--lime);outline-offset:3px}
.wx-grid-lines line{stroke:#252c22;stroke-width:1}
.wx-grid-lines line.baseline{stroke:#3a4436}
.wx-axis{fill:#7d8f70;font:10px ui-sans-serif,system-ui;font-variant-numeric:tabular-nums}
.wx-axis.day{fill:#a9b99b;font-weight:650}
.wx-axis.now{fill:var(--lime)}
.wx-day-lines line{stroke:#30392b;stroke-width:1}
.wx-wash{fill:#d95926;fill-opacity:.12}
.wx-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.wx-line.wind{stroke:#3987e5}
.wx-line.gust{stroke:#d95926}
.wx-line.hub{stroke:#199e70}
.wx-limit{stroke:#d03b3b;stroke-width:1.5;stroke-dasharray:6 5}
.wx-limit-label{fill:#ffb0a8;font:700 10px ui-sans-serif,system-ui}
.wx-peak{fill:#d95926;stroke:#191c19;stroke-width:2}
.wx-peak-label{fill:#e7ede2;font:600 10px ui-sans-serif,system-ui}
.wx-now-line{stroke:#c7f56d;stroke-width:1;opacity:.6}
.wx-sim-band{fill:#d03b3b;fill-opacity:.13}
.wx-sim-label{fill:#ffb0a8;font:800 9px ui-sans-serif,system-ui;letter-spacing:1px}
.wx-cross{stroke:#e8eee4;stroke-width:1;opacity:.55}
.wx-hit{fill:transparent;cursor:crosshair}
.wx-chart-empty{fill:var(--muted);font:12px ui-sans-serif,system-ui}
.wx-tooltip{position:absolute;min-width:14.2857rem;max-width:18.5714rem;background:#0f130e;border:1px solid #3a4631;border-radius:0.5714rem;padding:0.7143rem 0.8571rem;font-size:0.7857rem;color:#dce5d4;pointer-events:none;box-shadow:0 0.7143rem 2.1429rem #000a;z-index:5}
.wx-tooltip strong{display:block;font-size:0.7857rem;margin-bottom:0.4286rem}
.wx-tip-row{display:flex;align-items:center;gap:0.5714rem;margin:0.2143rem 0}
.wx-tip-row b{min-width:4rem;font-variant-numeric:tabular-nums}
.wx-tip-row span{color:#9aa890}
.wx-tip-meta{color:#9aa890;margin-top:0.3571rem;line-height:1.45}
/* Day cards */
.wx-days{display:grid;grid-template-columns:repeat(7,minmax(8.5714rem,1fr));gap:0.7143rem;margin-top:1.1429rem}
.wx-day{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:0.4286rem;text-align:left;padding:0.8571rem;border-radius:0.7143rem;border:1px solid var(--line);background:#141913;font-weight:500;min-width:0}
.wx-day:hover:not(:disabled){background:#1b2218}
.wx-day.selected{border-color:var(--lime);background:#1b2716}
.wx-day.risk-storms{border-left:0;box-shadow:inset 0 -0.1429rem 0 #fab21988}
.wx-day.risk-severe{box-shadow:inset 0 -0.1429rem 0 #ec835a}
.wx-day.risk-tilt{box-shadow:inset 0 -0.2143rem 0 #ff4d3d}
.wx-day-head{display:flex;justify-content:space-between;width:100%;align-items:baseline}
.wx-day-head b{font-size:0.9286rem}
.wx-icon{width:2.4286rem;height:2.4286rem;fill:none;stroke:#cfe0ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.wx-day-temps{font-size:1.0714rem;font-weight:650}
.wx-day-short{font-size:0.7143rem;color:#a9b69f;line-height:1.35;min-height:1.9286rem}
.wx-day-wind{display:flex;align-items:center;flex-wrap:wrap;gap:0.1429rem;font-size:0.7143rem;color:#a9b69f}
.wx-day-wind b{color:#e8eee4;font-size:0.8571rem}
.wx-day-dir{width:1rem;height:1rem;margin-left:0.2857rem;fill:#3987e5}
.wx-day .wx-kind{position:absolute;top:0.7143rem;right:0.7143rem;margin:0}
.wx-risk{display:inline-flex;align-items:center;gap:0.3571rem;font-size:0.7143rem;font-weight:700;border-radius:71.3571rem;padding:0.2143rem 0.5714rem;background:#1f2a1c;color:#a8e89a}
.wx-risk.storms{background:#2a2210;color:#ffd36b}
.wx-risk.severe{background:#2e1c12;color:#ffbf9f}
.wx-risk.tilt{background:#3a1414;color:#ffc0b8}
.wx-spc-chip{display:inline-block;font-size:0.6429rem;font-weight:800;letter-spacing:0.0286rem;border-radius:0.2857rem;padding:0.2143rem 0.4286rem;background:#242922;color:#a9b39f;white-space:nowrap}
.wx-spc-chip.spc-TSTM{background:#c1e9c1;color:#10300f}
.wx-spc-chip.spc-MRGL{background:#66a366;color:#07210a}
.wx-spc-chip.spc-SLGT{background:#ffe066;color:#3a2e00}
.wx-spc-chip.spc-ENH{background:#ffa366;color:#3d1c00}
.wx-spc-chip.spc-MDT{background:#e06666;color:#2e0000}
.wx-spc-chip.spc-HIGH{background:#ee99ee;color:#3a003a}
.tag.risk-storms{border-color:#7a5c14;color:#ffd36b;background:#2a2210}
.tag.risk-severe{border-color:#8a4b2c;color:#ffbf9f;background:#2e1c12}
.tag.risk-tilt{border-color:#b43a3a;color:#ffc0b8;background:#3a1414}
.tag.risk-calm{border-color:#2e5a2f;color:#a8e89a;background:#132214}
/* Hourly and alerts */
.wx-hourly{max-height:30.7143rem}
.wx-hourly td,.wx-hourly th{padding:0.5714rem 0.8571rem}
.wx-hourly td{font-variant-numeric:tabular-nums;white-space:nowrap}
.wx-hourly table{min-width:45.7143rem}
.wx-hourly tr.over td{background:#3a141455;color:#ffc0b8}
.wx-hourly tr.sim td:last-child{color:#ffc46b}
.wx-alerts{display:grid;gap:0.7143rem}
.wx-alert{border:1px solid #3a4436;border-left:3px solid #5aa0ff;border-radius:0.5714rem;padding:0.8571rem 1rem;background:#141913}
.wx-alert.warning{border-left-color:#ff4d3d;background:#1f1311}
.wx-alert.watch{border-left-color:#fab219}
.wx-alert-head{display:flex;flex-wrap:wrap;align-items:center;gap:0.2857rem 0.5714rem}
.wx-alert-head strong{font-size:0.9286rem}
.wx-alert-head .fine{width:100%}
.wx-alert-headline{font-size:0.7857rem;color:#dfe7d8;margin:0.4286rem 0;line-height:1.5}
.wx-alert-facts{font-size:0.7857rem;color:#ffc9a8;margin-bottom:0.4286rem}
.wx-empty{font-size:0.8571rem;color:#a8e89a;line-height:1.6}
.wx-spc td,.wx-spc th{padding:0.5714rem 0.7143rem}
.wx-spc tr.sim td{background:#2a221055}
.wx-sources{margin:1.1429rem 0 0}
@media(max-width:1100px){.wx-grid{grid-template-columns:minmax(22.8571rem,1fr) minmax(20rem,1fr)}.wx-side{grid-column:1/-1;grid-template-columns:1fr 1fr}.wx-grid-2{grid-template-columns:minmax(0,1fr)}.wx-days{grid-template-columns:repeat(7,minmax(9.1429rem,1fr));overflow-x:auto;padding-bottom:0.4286rem}}
@media(max-width:720px){.weather-view .page-heading{display:block}.wx-heading-actions{margin-top:1rem}.wx-grid{display:block}.wx-grid>*{margin-top:1.0714rem}.wx-side{display:grid;grid-template-columns:1fr;gap:1.0714rem}.wx-threat{flex-wrap:wrap;padding:0.9286rem}.wx-feed{max-width:none;text-align:left;width:100%}.wx-threat-copy strong{font-size:1rem}.alarm-copy b{font-size:0.8571rem}.wx-days{grid-template-columns:repeat(7,minmax(8.4286rem,46%));overflow-x:auto}.weather-button{font-size:0.7143rem;padding:0.5rem 0.7143rem}.storm-strip{flex-wrap:wrap}.wx-legend{gap:0.5714rem}.wx-outlook-panel .panel-heading{flex-direction:column;align-items:flex-start}.wx-chart{min-width:54.2857rem}.wx-spc{min-width:37.1429rem}}
.wx-day .wx-spc-chip{white-space:normal;max-width:100%}
/* Installed motor: Kollmorgen KBM-43S01-C0 */
.motor-panel .motor-id{display:flex;flex-direction:column;gap:0.3571rem;margin-bottom:0.8571rem}
.motor-panel .motor-id strong{font-size:1.6429rem;letter-spacing:-0.0429rem;color:var(--text);font-variant-numeric:tabular-nums}
.motor-facts{margin:0 0 0.8571rem}
.motor-facts>div{display:flex;justify-content:space-between;gap:0.7143rem;border-bottom:1px solid #2d3528;padding:0.6429rem 0;font-size:0.7857rem}
.motor-facts dt{color:#8c9d7e;white-space:nowrap}
.motor-facts dd{margin:0;text-align:right;color:#c7d5ba;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.motor-panel.hot{border-color:#b16754;background:#231a16}
.metric.warm{border-color:#8f7430}
.metric.warm strong{color:#ffd27a}
.metric.hot{border-color:#b16754;background:#2a1b17}
.metric.hot strong{color:#ffa28f}
.metric small.beside-spark{max-width:calc(100% - 8.8571rem)}
.advanced-subhead{font-size:0.9286rem;font-weight:650;margin:1.4286rem 0 0.5714rem;color:var(--text)}
.motor-table{max-height:25.7143rem}
.motor-table td:first-child{white-space:normal;min-width:10rem}
@media(max-width:1100px){.metric small.beside-spark{max-width:calc(100% - 6rem)}}
/* Motor fault banner + Clear Fault control */
.mode-banner.faulted{background:#2d1a16;border-color:#a34839}
.mode-banner.faulted strong{color:#ffb3a3}
.mode-banner #clear-fault{margin-left:auto;padding:0.6429rem 1rem;font-size:0.8571rem;white-space:nowrap}
.mode-banner #clear-fault+.mono{margin-left:1rem}
/* ---- 2026-09-27: live wind panel, 24 h wind strip, NWS radar loop, simulated storm approach ---- */
.wx-sim-banner{display:grid;gap:0.7143rem;align-items:stretch}
.wx-sim-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.wx-approach{display:grid;grid-template-columns:minmax(16.4286rem,auto) minmax(0,1fr);gap:0.7143rem 1.4286rem;align-items:center}
.wx-approach-readout{min-width:0}
.wx-approach-readout .metric-label{color:#d9b25a}
.wx-approach-readout strong{display:block;font-size:1.8571rem;line-height:1.15;color:#fff5de;letter-spacing:-0.0429rem;font-variant-numeric:tabular-nums;margin-top:0.2143rem}
#wx-approach-text{display:block;font-size:0.7857rem;color:#ffd36b;margin-top:0.2143rem;line-height:1.45}
.wx-approach.inside .wx-approach-readout strong{color:#ffb0a8}
.wx-approach.engaged #wx-approach-text{color:#ffc0b8;font-weight:750}
.wx-approach.disarmed #wx-approach-text{font-weight:750}
.wx-approach.disarmed.inside #wx-approach-text{color:#ff8476;font-weight:800}
.wx-approach-track{position:relative;height:3.7143rem;border-radius:0.6429rem;background:linear-gradient(90deg,#241c0d,#1b150a 50%,#241c0d);border:1px solid #6b5220;overflow:hidden}
.wx-approach-zone{position:absolute;top:0;bottom:0;left:25%;width:50%;font-style:normal;background:repeating-linear-gradient(135deg,#ff4d3d2e 0 0.5714rem,#ff4d3d14 0.5714rem 1.1429rem);border-left:2px dashed #ff6b5a;border-right:2px dashed #ff6b5a}
.wx-approach-zone span{position:absolute;top:0.2857rem;left:0;right:0;text-align:center;font-size:0.6429rem;font-weight:800;letter-spacing:0.0857rem;color:#ffb0a8;white-space:nowrap}
.wx-approach.inside .wx-approach-zone{background:repeating-linear-gradient(135deg,#ff4d3d55 0 0.5714rem,#ff4d3d2a 0.5714rem 1.1429rem);animation:wxZone 1.1s ease-in-out infinite}
@keyframes wxZone{50%{box-shadow:inset 0 0 1.2857rem #ff4d3d88}}
.wx-approach-site{position:absolute;left:50%;top:1.2857rem;bottom:1.0714rem;width:0.1429rem;margin-left:-0.0714rem;background:var(--lime);box-shadow:0 0 0.5714rem var(--lime)}
.wx-approach-site-label{position:absolute;left:50%;bottom:0.1429rem;transform:translateX(-50%);font-size:0.5714rem;font-weight:800;letter-spacing:0.0857rem;color:var(--lime)}
.wx-approach-end{position:absolute;bottom:0.2143rem;font-size:0.5714rem;font-weight:800;letter-spacing:0.0714rem;color:#b89a5a}
.wx-approach-end.from{left:0.5714rem}
.wx-approach-end.to{right:0.5714rem}
.wx-approach-storm{position:absolute;top:50%;left:0;width:2.1429rem;height:2.1429rem;margin:-0.9286rem 0 0 -1.0714rem;border-radius:50%;background:radial-gradient(circle,#ff4fd8 0 16%,#e5342f 17% 34%,#f5c02a 35% 56%,#2fb34acc 57% 74%,transparent 75%);filter:drop-shadow(0 0 0.4286rem #e5342f)}
/* Live wind */
.wx-wind-panel{position:relative;overflow:hidden;margin-bottom:1.2857rem;background:linear-gradient(160deg,#152330 0%,#131c1b 55%,#161b15 100%);border-color:#2c3d49;container-type:inline-size}
.wx-wind-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none;z-index:0}
.wx-wind-panel>.panel-heading,.wx-wind-body{position:relative;z-index:1}
.wx-wind-panel>.panel-heading{margin-bottom:0.7143rem}
#wx-wind-place{color:#9fc0d6}
.wx-wind-body{display:grid;grid-template-columns:auto minmax(13.5714rem,.9fr) minmax(17.8571rem,1.3fr);gap:1.1429rem 2rem;align-items:center}
.wx-wind-hours-wrap{grid-column:1/-1;min-width:0;container-type:inline-size}
@container (min-width: 110rem){.wx-wind-body{grid-template-columns:auto minmax(13.5714rem,.8fr) minmax(19.2857rem,1.15fr) minmax(0,2.4fr)}.wx-wind-hours-wrap{grid-column:auto}}
@container (max-width: 46rem){.wx-wind-body{grid-template-columns:auto minmax(0,1fr)}.wx-wind-facts{grid-column:1/-1}}
.wx-wind-compass{width:10.7143rem;height:10.7143rem;display:block;filter:drop-shadow(0 0.4286rem 1.2857rem #0009)}
.wc-face{fill:#0c1319e6;stroke:#3a5566;stroke-width:1.5}
.wc-ticks line{stroke:#4b6576;stroke-width:1}
.wc-ticks line.major{stroke:#9cbdd2;stroke-width:1.8}
.wc-cardinal{fill:#a9c8dc;font:800 13px ui-sans-serif,system-ui;text-anchor:middle}
.wc-arrow{transform-box:view-box;transform-origin:80px 80px;transition:transform 1s cubic-bezier(.25,.9,.3,1)}
.wc-arrow-body{fill:#4f9dff;stroke:#0a1726;stroke-width:1.2;stroke-linejoin:round}
.wc-flow{fill:none;stroke:#f2f8ff;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:2 10;animation:wcFlow var(--flow-duration,1.4s) linear infinite}
@keyframes wcFlow{to{stroke-dashoffset:-24}}
.wc-hub{fill:#e3ecf3;stroke:#1f2f3d;stroke-width:1.5}
.wx-wind-compass.empty .wc-arrow{opacity:.12}
.wx-wind-compass.empty .wc-flow{animation:none}
.wx-wind-compass.sim .wc-arrow-body{fill:#ffb347}
.wx-wind-compass.over .wc-arrow-body{fill:#ff5a4a}
.wx-wind-readout{min-width:0}
.wx-wind-speed{display:flex;align-items:baseline;gap:0.5714rem}
.wx-wind-speed strong{font-size:4.8571rem;line-height:.95;font-weight:600;letter-spacing:-0.2143rem;font-variant-numeric:tabular-nums;text-shadow:0 0.1429rem 1.2857rem #000a}
.wx-wind-speed span{font-size:1.2143rem;font-weight:700;color:#9fb9ca}
.wx-wind-gust{font-size:1.0714rem;font-weight:700;color:#ffc9a8;margin-top:0.5714rem}
.wx-wind-dir{display:flex;align-items:baseline;gap:0.5714rem;margin-top:0.5714rem}
.wx-wind-dir{flex-wrap:wrap}
.wx-wind-dir strong{font-size:1.7143rem;letter-spacing:-0.0286rem;font-variant-numeric:tabular-nums;color:#dcebf6}
.wx-wind-toward{font-size:0.7857rem;color:#8ea5b5;white-space:nowrap}
.wx-wind-facts{margin:0;min-width:0;background:#0b1116d9;border:1px solid #243441;border-radius:0.7143rem;padding:0.1429rem 1rem}
.wx-wind-facts>div{display:flex;justify-content:space-between;align-items:baseline;gap:0.8571rem;padding:0.5714rem 0;border-bottom:1px solid #22303b;font-size:0.7857rem}
.wx-wind-facts>div:last-child{border-bottom:0}
.wx-wind-facts dt{color:#8ea5b5;white-space:nowrap}
.wx-wind-facts dd{margin:0;text-align:right;color:#d5e3ee;overflow-wrap:anywhere}
.wx-wind-facts dd.stale{color:#ffc46b;font-weight:650}
.wx-wind-hours-head{display:flex;justify-content:space-between;align-items:baseline;gap:0.2857rem 0.8571rem;flex-wrap:wrap;margin-bottom:0.4286rem}
.wx-wind-hours-head .fine{font-size:0.7143rem}
.wx-wind-hours{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:0.2857rem}
@container (min-width: 82rem){.wx-wind-hours{grid-template-columns:repeat(24,minmax(0,1fr))}}
@container (max-width: 34rem){.wx-wind-hours{grid-template-columns:repeat(6,minmax(0,1fr))}}
.wx-wh{display:flex;flex-direction:column;align-items:center;gap:0.0714rem;min-width:0;padding:0.3571rem 0.0714rem 0.2857rem;border-radius:0.5rem;background:#0b1116c7;border:1px solid #21303b;color:#9fb4c3;font-size:0.7143rem;line-height:1.25}
.wx-wh-time{font-size:0.6786rem;font-weight:700;color:#8aa2b3;white-space:nowrap}
.wx-wh-arrow{width:1.4286rem;height:1.4286rem;margin:0.1429rem 0;fill:#6f8796}
.wx-wh b{font-size:1rem;color:#eef5fa;font-variant-numeric:tabular-nums}
.wx-wh small{font-size:0.6786rem;color:#d9a98c;white-space:nowrap;font-variant-numeric:tabular-nums}
.wx-wh.now{border-color:#4f9dff;background:#0f1d2ae0}
.wx-wh.now .wx-wh-time{color:#a9d0ff}
.wx-wh.light .wx-wh-arrow{fill:#4f9dff}
.wx-wh.breezy .wx-wh-arrow{fill:#3cc59b}
.wx-wh.windy .wx-wh-arrow{fill:#f5c02a}
.wx-wh.strong .wx-wh-arrow{fill:#ff9147}
.wx-wh.over{border-color:#b43a3a;background:#3a1414d9}
.wx-wh.over .wx-wh-arrow{fill:#ff5a4a}
.wx-wh.over small{color:#ffb0a8;font-weight:800}
.wx-wh.sim{border-style:dashed;border-color:#8a6a2c}
.wx-wh-empty{grid-column:1/-1;padding:0.5714rem 0}
/* NWS radar loop */
.wx-middle{display:grid;gap:1.2857rem;min-width:0;align-content:start}
.wx-middle>*{min-width:0}
.wx-radar-frame{position:relative;aspect-ratio:600/550;border-radius:0.6429rem;overflow:hidden;background:#0b0f0d;border:1px solid #2f3828;display:grid;place-items:center}
.wx-radar-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.wx-radar-fallback{padding:1.7143rem;text-align:center;color:var(--muted);font-size:0.8571rem;line-height:1.6;max-width:25.7143rem}
#wx-radar-note{margin-top:0.7143rem}
.wx-radar-link{display:inline-block;margin-top:0.2857rem;color:#a9d0ff}
.wx-radar-link:hover{text-decoration:underline}
/* Auto-tilt ring on the storm scope */
.sc-tilt circle{fill:#ff4d3d0f;stroke:#ff6b5a;stroke-width:1.3;stroke-dasharray:5 4}
.sc-tilt text{fill:#ffb0a8;font:800 7.5px ui-sans-serif,system-ui;letter-spacing:.8px}
.sc-tilt.inside circle{fill:#ff4d3d26;stroke-width:2.2;animation:scTilt 1s ease-in-out infinite}
@keyframes scTilt{50%{stroke-opacity:.3}}
@media(max-width:720px){.wx-approach{grid-template-columns:minmax(0,1fr)}.wx-wind-speed strong{font-size:3.8571rem}.wx-wind-compass{width:8.5714rem;height:8.5714rem}.wx-middle{gap:1.0714rem}}
@media(prefers-reduced-motion:reduce){.wc-flow{animation:none;stroke-dasharray:none;opacity:.55}.wc-arrow{transition:none}.wx-approach.inside .wx-approach-zone,.sc-tilt.inside circle{animation:none}}
/* The seven day cards wrap (4 + 3, then 2 per row) instead of scrolling sideways in narrow windows and at high browser zoom. */
@media(max-width:1100px){.wx-days{grid-template-columns:repeat(4,minmax(0,1fr));overflow-x:visible;padding-bottom:0}}
@media(max-width:720px){.wx-days{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* On desktop widths the hourly table fits its panel: the Forecast column wraps instead of scrolling sideways. */
.wx-hourly td:last-child{white-space:normal;min-width:9rem}
@media(min-width:721px){.wx-hourly table{min-width:0}}
/* The SPC outlook has at most 8 rows: show them all instead of a scroll box that can cut the last row at large sizes. */
.wx-alerts-panel .table-wrap{max-height:none}
.field-flag{color:#ff5c5c;font-weight:800;font-size:1rem;margin-right:0.5714rem;line-height:1}.unit-input:has(input.invalid){border-color:#ff5c5c;background:#2a1414;box-shadow:0 0 0 1px #ff5c5c55}.unit-input input.invalid{color:#ffd6d0}.field-errors{display:grid;gap:0.2857rem;margin:0.4286rem 0 0.7143rem;padding:0.6429rem 0.8571rem;border:1px solid #8a3a33;border-radius:0.5rem;background:#2a1414;color:#ffb3a8;font-size:0.7857rem;line-height:1.5}.order-hint{margin:0.2857rem 0 0.4286rem}
.password-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0.7143rem;align-items:end;margin-top:0.8571rem}.password-form button{grid-column:1/-1}#password-status{margin-top:0.5714rem}#password-status.error{color:#ffa28f}@media(max-width:720px){.password-form{grid-template-columns:1fr}}
.label-check{display:inline-flex;align-items:center;gap:0.4286rem}.label-check input[type=checkbox]{width:1.1429rem;height:1.1429rem;margin:0}.check-setting{display:flex;flex-direction:column;gap:0.4286rem;justify-content:flex-start}.check-setting .fine{font-size:0.6786rem;line-height:1.45}.timer-note{align-self:end;font-size:0.6786rem;line-height:1.45;padding-bottom:0.2857rem}
