:root{--bg: #06000f;--panel: #14181d;--panel-hi: #2b323b;--panel-lo: #07090b;--lcd: #000a04;--green: #00ff66;--green-dim: #19b855;--amber: #ff9f1c;--red: #ff4d4d;--text: #b8f5cc;--mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, "Liberation Mono", monospace;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:14px/1.45 var(--mono);display:flex;justify-content:center;align-items:flex-start;padding:3vh 12px 6vh}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:50;background:repeating-linear-gradient(to bottom,#0000 0 2px,#0000002e 2px 3px)}.backdrop{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}#root{width:100%}.stack{position:relative;z-index:1;width:min(100%,440px);margin-inline:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.col{display:grid;gap:8px;align-content:start;min-width:0;grid-template-columns:minmax(0,1fr)}.win{min-width:0}@media(min-width:900px){.stack.rig{width:min(100%,920px);grid-template-columns:minmax(0,440px) minmax(0,1fr);align-items:start;gap:10px}.rig .playlist{max-height:340px}.rig .playlist.rotation{max-height:420px}}.win{background:var(--panel);border:1px solid #000;box-shadow:inset 1px 1px 0 var(--panel-hi),inset -1px -1px 0 var(--panel-lo),0 0 0 1px #0d3d1f,0 0 28px #00ff661a}.titlebar{height:16px;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(to bottom,#3b4a63 0 1px,#1a2231 1px 3px);border-bottom:1px solid #000}.titlebar span{padding:0 8px;background:var(--panel);color:#9fb4d6;font-size:10px;font-weight:700;letter-spacing:.22em;line-height:14px}.win-body{padding:8px;display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.win.collapsed{display:none}.lcd{background:var(--lcd);border:1px solid #000;box-shadow:inset 1px 1px 0 var(--panel-lo),inset -1px -1px 0 var(--panel-hi);padding:8px 10px;display:grid;gap:6px}.lcd-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.clock{font-size:40px;line-height:1;letter-spacing:.04em;color:var(--green);text-shadow:0 0 8px rgba(0,255,102,.7);font-variant-numeric:tabular-nums}.viz{width:120px;height:38px;flex:none;image-rendering:pixelated}.marquee{position:relative;overflow:hidden;white-space:nowrap;color:var(--green);text-shadow:0 0 6px rgba(0,255,102,.55);font-size:13px;border-top:1px solid #0c2a17;border-bottom:1px solid #0c2a17;padding:3px 0}.marquee-probe{position:absolute;visibility:hidden;pointer-events:none}.marquee-run{display:inline-flex;gap:3em;animation:scroll var(--dur, 12s) linear infinite;padding-right:3em}@keyframes scroll{to{transform:translate(-50%)}}.marquee:has(.marquee-run){-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}.lcd-info{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--green-dim);letter-spacing:.06em}.tag{color:var(--green)}.tag.amber{color:var(--amber)}.led-dot{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:#1d3a29;vertical-align:baseline}.led-dot.on{background:var(--green);box-shadow:0 0 6px var(--green);animation:pulse 2.4s ease-in-out infinite}.led-dot.warn{background:var(--amber);box-shadow:0 0 6px var(--amber)}@keyframes pulse{50%{opacity:.55}}.lcd-text{margin:0;color:var(--green);text-shadow:0 0 6px rgba(0,255,102,.6);letter-spacing:.1em}.lcd-text.err{color:var(--red);text-shadow:0 0 6px rgba(255,77,77,.6)}.blink{animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.dim{margin:0;color:#5f8a70;font-size:12px}.seek{height:10px;background:#000;border:1px solid #000;box-shadow:inset 1px 1px 0 var(--panel-lo),inset -1px -1px 0 var(--panel-hi);position:relative;overflow:hidden}.seek-fill{height:100%;background:linear-gradient(to right,#0a8f3c,#0f6);box-shadow:0 0 8px #0f69}.seek.indeterminate .seek-fill{width:30%!important;animation:sweep 1.4s ease-in-out infinite alternate}@keyframes sweep{0%{transform:translate(0)}to{transform:translate(233%)}}.controls{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;align-items:center}.controls .btn.amber,.controls .btn.quiet{grid-column:1 / -1}.btn{font:700 12px/1 var(--mono);letter-spacing:.1em;color:#cfe3ff;background:linear-gradient(#39424f,#232a33);border:1px solid #000;box-shadow:inset 1px 1px #5b6877,inset -1px -1px #11151a;padding:8px 12px;cursor:pointer}.btn:hover:not(:disabled){color:var(--green)}.btn:active:not(:disabled),.btn[aria-pressed=true]{background:#1c2229;box-shadow:inset 1px 1px #11151a,inset -1px -1px #5b6877;color:var(--green)}.btn:disabled{opacity:.4;cursor:default}.btn:focus-visible,input[type=range]:focus-visible{outline:2px solid var(--green);outline-offset:2px}.btn.tune{width:100%;padding:14px;font-size:14px;color:var(--green);text-shadow:0 0 6px rgba(0,255,102,.6)}.btn.amber{color:var(--amber)}.btn.link{display:block;text-align:center;text-decoration:none}.btn.quiet{width:100%;padding:6px 8px;font-weight:400;font-size:11px;color:var(--green-dim);background:transparent;box-shadow:inset 1px 1px #1c2a22,inset -1px -1px #000}.btn.quiet:hover:not(:disabled),.btn.quiet[aria-pressed=true]{color:var(--green)}.shared{list-style:none;margin:0;padding:6px 8px;background:#000;border:1px solid #000;box-shadow:inset 1px 1px 0 var(--panel-lo),inset -1px -1px 0 var(--panel-hi);font-size:12px;color:#5fd68a}.shared li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 0}.vol{display:flex;align-items:center;gap:8px;min-width:0;font-size:11px;color:var(--green-dim);letter-spacing:.1em}.vol input{flex:1;min-width:60px}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:8px;background:linear-gradient(to right,var(--green) var(--fill, 80%),#000 var(--fill, 80%));border:1px solid #000;box-shadow:inset 1px 1px 0 var(--panel-lo),inset -1px -1px 0 var(--panel-hi);cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:14px;background:linear-gradient(#5b6877,#2b323b);border:1px solid #000;box-shadow:inset 1px 1px #8392a6}input[type=range]::-moz-range-thumb{width:10px;height:14px;border-radius:0;background:linear-gradient(#5b6877,#2b323b);border:1px solid #000}.banner{margin:0;padding:6px 8px;background:#2a1500;color:var(--amber);border:1px solid #5a3000;font-size:12px;letter-spacing:.1em}.player{width:100%;aspect-ratio:16 / 9;min-height:202px;background:#000;border:1px solid #000;box-shadow:0 0 0 1px #0d3d1f,0 0 18px #00ff661f}.player iframe{display:block;width:100%;height:100%}.playlist{list-style:none;margin:0;padding:4px;background:#000;border:1px solid #000;box-shadow:inset 1px 1px 0 var(--panel-lo),inset -1px -1px 0 var(--panel-hi);max-height:240px;overflow-y:auto;scrollbar-color:#2b323b #000}.playlist li{display:flex;gap:8px;padding:2px 4px;font-size:12px;color:#5fd68a}.playlist li.current{background:#0b3a1c;color:#eafff1}.playlist .n{color:var(--green-dim);flex:none}.playlist li.current .n{color:var(--green)}.playlist .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist small{color:#3f8a5c;font-size:11px}.playlist li.current small{color:#8fe0ae}.playlist .d{flex:none;color:var(--green-dim);font-variant-numeric:tabular-nums}.playlist .by{flex:0 1 auto;max-width:32%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--amber);font-size:11px;opacity:.85}.playlist .t{flex:1 1 0;min-width:6em}.playlist li.current .by{color:#ffd08a;opacity:1}.by-lcd{color:var(--amber);letter-spacing:.06em}.playlist .x{flex:none;margin-left:4px;min-width:26px;padding:0 6px;font:700 13px/20px var(--mono);color:#9bd8b2;background:#0d1a12;border:1px solid #1c3a28;cursor:pointer}.playlist .x:hover:not(:disabled){color:var(--amber);border-color:#5a3000}.playlist .x.armed{color:#000;background:var(--amber);border-color:var(--amber);letter-spacing:.06em}.playlist .x:disabled{opacity:.35;cursor:default}.playlist .x:focus-visible{outline:2px solid var(--green);outline-offset:1px}.playlist.rotation{max-height:300px}.playlist.rotation li{color:#5fd68a}.boot{margin:0;white-space:pre-wrap;color:var(--green);text-shadow:0 0 6px rgba(0,255,102,.5);font-size:12px}.boot b{color:#eafff1;font-weight:700}.logo{margin:0 0 6px;color:var(--green);text-shadow:0 0 10px rgba(0,255,102,.7);font-size:11px;line-height:1.1;letter-spacing:0;overflow-x:auto}@media(prefers-reduced-motion:reduce){.marquee-run,.blink,.seek.indeterminate .seek-fill,.led-dot.on{animation:none}}@media(max-width:360px){.clock{font-size:30px}.viz{width:84px}.controls{grid-template-columns:auto auto}.controls .vol{grid-column:1 / -1}.playlist li.current .by{display:none}}
