/* Wing-style practice console. The desk is deliberately dark in both themes, like real hardware. */
.wing-page{--desk:#1a1d22;--desk-2:#23272e;--desk-3:#2d323b;--desk-line:#3a404b;--ink:#e6e9ee;--ink-dim:#8d96a4;
  --scr:#0c0f14;--scr-2:#141922;--scr-line:#26303d;--acc:#4fc3f7;--grn:#47d16b;--yel:#f2c94c;--org:#f2994a;--red:#ff5a4f;--led-off:#2a2f37}
.wing-intro{display:grid;gap:8px;padding-block:24px 14px}
.wing-intro h1{font-family:var(--f-display);font-weight:800;font-size:clamp(40px,6vw,64px);line-height:.92;text-transform:uppercase}
.wing-intro p{max-width:72ch;color:var(--muted)}
.deskscroll{overflow-x:auto;padding-bottom:8px;-webkit-overflow-scrolling:touch}
.desk{min-width:1100px;background:linear-gradient(#20242a,#16191e);border:1px solid #0b0d10;border-radius:16px;padding:14px;color:var(--ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 18px 40px rgba(0,0,0,.35);display:grid;gap:14px;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.desk button{color:var(--ink)}
.topdeck{display:grid;grid-template-columns:96px minmax(0,1fr) 96px;gap:14px;align-items:start}
.vcol{display:grid;gap:8px}
.vbtn{background:linear-gradient(#3a404a,#2a2f37);border:1px solid #0e1013;border-radius:6px;min-height:40px;font-family:var(--f-mono);font-size:12px;font-weight:600;letter-spacing:.08em;position:relative;padding:4px}
.vbtn::before{content:"";position:absolute;left:8px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--led-off)}
.vbtn[aria-pressed="true"]{border-color:var(--acc)}
.vbtn[aria-pressed="true"]::before{background:var(--acc);box-shadow:0 0 6px var(--acc)}
.vbtn:focus-visible,.sbtn:focus-visible,.wk:focus-visible,.fader:focus-visible,.hfader:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.screenwrap{display:grid;gap:10px}
.screen{background:var(--scr);border:8px solid #050608;border-radius:10px;height:430px;display:grid;grid-template-rows:auto 1fr;overflow:hidden;box-shadow:inset 0 0 0 1px #1d232c}
.sbar{display:flex;align-items:center;gap:10px;padding:6px 10px;background:var(--scr-2);border-bottom:1px solid var(--scr-line);font-family:var(--f-mono);font-size:12px}
.sbar .chn{display:flex;align-items:center;gap:8px;font-weight:600}
.sbar .chn i{width:12px;height:12px;border-radius:3px;display:inline-block}
.sbar .pg{margin-left:auto;color:var(--ink-dim);letter-spacing:.1em}
.sbar .solo{padding:1px 6px;border-radius:3px;background:var(--led-off);color:var(--ink-dim)}
.sbar .solo.on{background:var(--yel);color:#111}
.sbody{padding:12px;overflow:auto;min-height:0}
.sknobs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;background:var(--desk-2);border:1px solid var(--desk-line);border-radius:10px;padding:10px}
/* knobs */
.wk{display:grid;justify-items:center;gap:4px;cursor:ns-resize;touch-action:none;outline:none}
.wk .kc{width:54px;height:54px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#59606c,#2a2f37 70%);border:2px solid #0d0f12;position:relative;box-shadow:0 3px 8px rgba(0,0,0,.45)}
.wk .kc::before{content:"";position:absolute;inset:-7px;border-radius:50%;background:conic-gradient(from 225deg,var(--kcol,var(--acc)) 0 var(--ka,0deg),transparent var(--ka,0deg) 270deg,transparent 270deg);
  -webkit-mask:radial-gradient(circle,transparent 31px,#000 32px);mask:radial-gradient(circle,transparent 31px,#000 32px);opacity:.9}
.wk .kc b{position:absolute;left:50%;top:5px;width:3px;height:17px;margin-left:-1.5px;background:#fff;border-radius:2px;transform-origin:50% 22px}
.wk.big .kc{width:96px;height:96px}
.wk.big .kc::before{-webkit-mask:radial-gradient(circle,transparent 53px,#000 54px);mask:radial-gradient(circle,transparent 53px,#000 54px)}
.wk.big .kc b{height:30px;transform-origin:50% 43px;top:5px}
.wk .kl{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-dim)}
.wk .kv{font-family:var(--f-mono);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.wk.wk-none{opacity:.25;pointer-events:none}
/* screen content */
.cols{display:grid;gap:12px}
.panelbox{background:var(--scr-2);border:1px solid var(--scr-line);border-radius:8px;padding:10px;display:grid;gap:8px;min-width:0}
.panelbox h4{margin:0;font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;color:var(--ink-dim);font-weight:600}
.chain{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.blk{background:var(--scr-2);border:1px solid var(--scr-line);border-radius:8px;padding:8px;text-align:left;display:grid;gap:6px;min-height:118px;align-content:start;cursor:pointer}
.blk:hover{border-color:var(--acc)}
.blk h4{margin:0;font-family:var(--f-mono);font-size:11px;letter-spacing:.12em;display:flex;justify-content:space-between}
.blk h4 .st{width:8px;height:8px;border-radius:50%;background:var(--led-off)}
.blk h4 .st.on{background:var(--grn);box-shadow:0 0 6px var(--grn)}
.blk .bv{font-family:var(--f-mono);font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums}
.blk canvas{width:100%;height:46px;display:block}
.tg{background:var(--desk-3);border:1px solid var(--desk-line);border-radius:6px;padding:6px 10px;font-family:var(--f-mono);font-size:12px;font-weight:600;min-height:32px}
.tg[aria-pressed="true"]{background:var(--acc);border-color:var(--acc);color:#071018}
.tg.warn[aria-pressed="true"]{background:var(--red);border-color:var(--red);color:#fff}
.tg.y[aria-pressed="true"]{background:var(--yel);border-color:var(--yel);color:#111}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.gcanvas{width:100%;height:240px;display:block;background:var(--scr);border:1px solid var(--scr-line);border-radius:6px;touch-action:none}
.bands{display:flex;gap:6px}
.vm{display:flex;gap:4px;align-items:flex-end;height:180px}
.vmeter{position:relative;width:16px;height:100%;background:#07090c;border:1px solid var(--scr-line);border-radius:3px;overflow:hidden}
.vmeter i{position:absolute;left:1px;right:1px;bottom:0;height:0;background:linear-gradient(to top,var(--grn) 0 70%,var(--yel) 70% 90%,var(--org) 90% 97%,var(--red) 97%);background-size:100% var(--mh,180px);background-position:bottom}
.vmeter s{position:absolute;left:1px;right:1px;height:2px;background:#fff;bottom:0;opacity:.8}
.vmeter.gr i{top:0;bottom:auto;background:var(--org)}
.scale{position:relative;width:26px;height:100%;font-family:var(--f-mono);font-size:9px;color:var(--ink-dim)}
.scale span{position:absolute;right:0;transform:translateY(50%)}
.clipled{width:12px;height:12px;border-radius:50%;background:var(--led-off);border:1px solid #000}
.clipled.on{background:var(--red);box-shadow:0 0 8px var(--red)}
.sendrow{display:grid;grid-template-columns:120px minmax(0,1fr) 64px 56px 44px 64px;gap:10px;align-items:center;font-family:var(--f-mono);font-size:12px}
.hfader{position:relative;height:26px;background:#07090c;border:1px solid var(--scr-line);border-radius:4px;cursor:ew-resize;touch-action:none}
.hfader i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,rgba(79,195,247,.25),rgba(79,195,247,.6));border-radius:3px 0 0 3px}
.hfader b{position:absolute;top:2px;bottom:2px;width:10px;margin-left:-5px;background:#dfe6ee;border-radius:2px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));gap:6px}
.mcell{display:grid;gap:4px;justify-items:center;font-family:var(--f-mono);font-size:10px;color:var(--ink-dim)}
.mcell .vmeter{height:120px;width:14px}
.rtable{width:100%;border-collapse:collapse;font-family:var(--f-mono);font-size:12px}
.rtable td,.rtable th{border-bottom:1px solid var(--scr-line);padding:5px 6px;text-align:left}
.rtable th{color:var(--ink-dim);font-weight:600}
.snap{display:flex;gap:10px;align-items:center;background:var(--scr-2);border:1px solid var(--scr-line);border-radius:8px;padding:8px 10px}
.snap b{flex:1;font-size:14px}
.snap small{font-family:var(--f-mono);color:var(--ink-dim)}
.note2{font-size:13px;color:var(--ink-dim)}
/* fader bank */
.bank{display:grid;grid-template-columns:96px minmax(0,1fr) 96px;gap:14px}
.layers{display:grid;gap:8px;align-content:start}
.strips{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;background:var(--desk-2);border:1px solid var(--desk-line);border-radius:10px;padding:8px}
.strip2{display:grid;gap:6px;justify-items:center;min-width:0}
.scrib{width:100%;border-radius:4px;background:#0a0c10;border:1px solid #000;padding:3px 4px;display:grid;gap:1px;text-align:center}
.scrib .n{font-family:var(--f-mono);font-size:10px;color:var(--ink-dim)}
.scrib .nm{font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scrib .bar{height:4px;border-radius:2px}
.sbtns{display:grid;grid-template-columns:1fr;gap:4px;width:100%}
.sbtn{background:linear-gradient(#3a404a,#2a2f37);border:1px solid #0e1013;border-radius:4px;font-family:var(--f-mono);font-size:10px;font-weight:600;letter-spacing:.06em;min-height:24px;padding:2px}
.sbtn.sel[aria-pressed="true"]{background:var(--acc);color:#071018}
.sbtn.solo[aria-pressed="true"]{background:var(--yel);color:#111}
.sbtn.mute[aria-pressed="true"]{background:var(--red);color:#fff}
.fz{display:flex;gap:4px;height:200px;align-items:stretch}
.fader{position:relative;width:26px;height:100%;cursor:ns-resize;touch-action:none}
.fader::before{content:"";position:absolute;left:50%;top:10px;bottom:10px;width:4px;margin-left:-2px;background:#07090c;border-radius:2px;box-shadow:0 0 0 1px #000}
.fader .cap{position:absolute;left:0;width:26px;height:20px;margin-top:-10px;border-radius:3px;background:linear-gradient(#d8dde4,#8f97a3 45%,#c9ced6);border:1px solid #111;box-shadow:0 3px 5px rgba(0,0,0,.5)}
.fader .cap::after{content:"";position:absolute;left:3px;right:3px;top:50%;height:2px;margin-top:-1px;background:#111}
.fticks{position:absolute;right:-2px;top:10px;bottom:10px;width:6px}
.strip2 .vmeter{width:8px;height:100%}
.fdb{font-family:var(--f-mono);font-size:10px;color:var(--ink-dim);font-variant-numeric:tabular-nums}
.mainst{background:var(--desk-2);border:1px solid var(--desk-line);border-radius:10px;padding:8px;display:grid;gap:6px;justify-items:center;align-content:start}
.infobar{background:#0b0d10;border:1px solid var(--desk-line);border-radius:8px;padding:8px 12px;font-size:14px;color:var(--ink);min-height:40px;display:flex;gap:10px;align-items:center}
.infobar b{font-family:var(--f-mono);font-size:12px;color:var(--acc);letter-spacing:.08em;white-space:nowrap}
/* missions (page theme, outside the desk) */
.missions{display:grid;gap:10px;padding-block:18px 40px}
.missions h2{font-family:var(--f-display);font-size:30px;text-transform:uppercase;line-height:1}
.mlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.mission{display:flex;gap:12px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.mission .ck{flex:none;width:24px;height:24px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-weight:700;font-size:14px;color:transparent}
.mission.done{border-color:var(--good)}
.mission.done .ck{background:var(--good);border-color:var(--good);color:var(--on-accent)}
.mission p{font-size:15px}
.mission .mn{font-family:var(--f-mono);font-size:11px;color:var(--muted);letter-spacing:.08em}

/* ---- hardware finish ---- */
.desk{background:
  linear-gradient(180deg,rgba(255,255,255,.05),transparent 30%),
  repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 3px),
  linear-gradient(#262a31,#17191d);
  border:1px solid #07080a;box-shadow:inset 0 1px 0 rgba(255,255,255,.08),inset 0 -2px 0 rgba(0,0,0,.5),0 24px 50px rgba(0,0,0,.45)}
.screen{position:relative;border-width:10px;border-color:#030405;box-shadow:inset 0 0 0 1px #1d232c,0 0 0 1px #2c323b}
.screen::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(155deg,rgba(255,255,255,.05),transparent 35%)}
.vbtn,.sbtn{box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 2px 0 #08090b}
.vbtn:active,.sbtn:active{transform:translateY(1px);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.vbtn[aria-pressed="true"]{box-shadow:0 0 10px rgba(79,195,247,.35),inset 0 1px 0 rgba(255,255,255,.15)}
.sbtn.sel[aria-pressed="true"]{box-shadow:0 0 10px rgba(79,195,247,.55)}
.sbtn.solo[aria-pressed="true"]{box-shadow:0 0 10px rgba(242,201,76,.55)}
.sbtn.mute[aria-pressed="true"]{box-shadow:0 0 10px rgba(255,90,79,.6)}
/* segmented LED meters */
.vmeter{background:repeating-linear-gradient(to top,#11151b 0 3px,#07090c 3px 4px)}
.vmeter i{-webkit-mask:repeating-linear-gradient(to top,#000 0 3px,transparent 3px 4px);mask:repeating-linear-gradient(to top,#000 0 3px,transparent 3px 4px)}
.vmeter.gr i{-webkit-mask:repeating-linear-gradient(to bottom,#000 0 3px,transparent 3px 4px);mask:repeating-linear-gradient(to bottom,#000 0 3px,transparent 3px 4px)}
/* backlit scribble strips */
.scrib{background:linear-gradient(#0e1218,#080a0d);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.scrib .nm{text-shadow:0 0 6px rgba(255,255,255,.25)}
.scrib .bar{box-shadow:0 0 8px currentColor}
/* strip status lights */
.sleds{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;width:100%}
.sleds i{font-style:normal;font-family:var(--f-mono);font-size:7.5px;letter-spacing:.04em;text-align:center;padding:2px 0;border-radius:2px;background:var(--led-off);color:#5d6572}
.sleds i.on.g{background:var(--grn);color:#062010;box-shadow:0 0 6px var(--grn)}
.sleds i.on.r{background:var(--red);color:#fff;box-shadow:0 0 6px var(--red)}
.sleds i.on.o{background:var(--org);color:#241000;box-shadow:0 0 6px var(--org)}
/* fader scales */
.fz{position:relative}
.fscale{position:relative;width:16px;height:100%;font-family:var(--f-mono);font-size:7.5px;color:#7b8492}
.fscale span{position:absolute;right:0;transform:translateY(-50%);line-height:1}
.fader::before{background:linear-gradient(90deg,#000,#151920 50%,#000);width:6px;margin-left:-3px}

/* sound + scenarios */
.soundbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.soundbar .btn.primary{--mc:var(--foh)}
.soundbar .btn[aria-pressed="true"]{background:var(--good);border-color:var(--good)}
.hpv{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--muted)}
.hpv input{width:140px;accent-color:var(--foh)}
.scenbar{display:grid;gap:8px;margin-bottom:12px;background:var(--panel);border:2px solid var(--foh);border-radius:12px;padding:12px 16px}
.scenbar .sc-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.scenbar .sc-top b{font-size:18px}
.scenbar .sc-btns{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.scenbar .sc-win{color:var(--good);font-weight:700}
.sg{grid-column:1/-1;font-family:var(--f-display);font-size:22px;text-transform:uppercase;margin:6px 0 0}
.desk.ringing .screen{animation:ring .25s ease-in-out infinite alternate}
@keyframes ring{from{box-shadow:0 0 0 2px rgba(255,90,79,.3)}to{box-shadow:0 0 0 4px rgba(255,90,79,.9),0 0 28px rgba(255,90,79,.5)}}
@media (prefers-reduced-motion:reduce){.desk.ringing .screen{animation:none;box-shadow:0 0 0 3px rgba(255,90,79,.9)}}

/* effects + listen */
.sbtn.listen[aria-pressed="true"]{background:var(--grn);color:#062010;box-shadow:0 0 10px rgba(71,209,107,.55)}
.sbar .solo.on{background:var(--yel);color:#111}
#listenLamp.on{background:var(--grn);color:#062010}
.fxslot{align-content:start}
.fxf{display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px;align-items:center;font-family:var(--f-mono);font-size:11px;color:var(--ink-dim);letter-spacing:.06em}
.fxf select{background:var(--desk-3);color:var(--ink);border:1px solid var(--desk-line);border-radius:6px;padding:6px 8px;font-family:var(--f-mono);font-size:12px;min-width:0}
.sendrow{margin-bottom:6px}

/* run a service */
.svcard{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:12px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.svcard h2{font-family:var(--f-display);font-weight:800;font-size:32px;text-transform:uppercase;line-height:1}
.svcard-txt{display:grid;gap:4px;max-width:70ch;min-width:0}
.svcard-go{display:grid;gap:6px;justify-items:start}
.svcard .btn.primary{--mc:var(--good)}
.svbar{display:grid;gap:10px;margin-bottom:12px;background:var(--panel);border:2px solid var(--good);border-radius:12px;padding:12px 16px}
.sv-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sv-top b{font-size:20px}
.sv-sp{flex:1}
.sv-seg{background:var(--sc);border-color:var(--sc);color:var(--on-accent);font-weight:600}
.sv-cue{font-size:clamp(18px,2.2vw,24px);font-weight:700;line-height:1.3;max-width:70ch}
.sv-cue.surprise{color:var(--bad)}
.sv-timer{height:8px;border-radius:4px;background:var(--panel-2);border:1px solid var(--line);overflow:hidden}
.sv-timer i{display:block;height:100%;width:0;background:var(--good);transition:width .1s linear}
.sv-timer i.low{background:var(--bad)}
.sv-flash{font-weight:700;min-height:1.4em}
.sv-report{display:grid;gap:6px}
.sv-row{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--line)}
.sv-row>span{font-weight:700;width:18px}
.sv-row.ok>span{color:var(--good)}
.sv-row.miss>span{color:var(--bad)}
.sv-row div{display:grid;gap:2px;min-width:0}
.sv-row small{color:var(--muted);font-size:13px}
.sv-btns{display:flex;gap:10px;flex-wrap:wrap}
