@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500;700&display=swap");*{margin:0;padding:0;box-sizing:border-box}:root{--color-bg:#000;--color-text:#fff;--color-text-dim:hsla(0,0%,100%,.6);--color-overlay:rgba(0,0,0,.5);--color-border:hsla(0,0%,100%,.2);--color-accent:red;--font-mono:"Roboto Mono","Courier New",monospace}body,html{color:var(--color-text);font-family:var(--font-mono);overflow:hidden;height:100%;width:100%;cursor:crosshair}.splash-screen,body,html{background:var(--color-bg)}.splash-screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000;cursor:pointer;transition:opacity .5s ease-out}.splash-screen.hidden{opacity:0;pointer-events:none}.splash-title{font-size:.75rem;font-weight:500;letter-spacing:.25em;text-transform:uppercase;color:var(--color-text);text-align:center;padding:1rem 2rem;border:1px solid var(--color-border);transition:border-color .2s ease}.splash-title:hover{border-color:var(--color-text)}.splash-subtitle{font-size:.625rem;color:var(--color-text-dim);margin-top:1rem;letter-spacing:.15em}.loading-overlay{position:fixed;inset:0;background:rgba(0,0,0,.85);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:500;gap:1rem}.loading-text{font-size:.6875rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--color-text);animation:loading-blink 1.2s ease-in-out infinite}.loading-bar{width:200px;height:2px;background:var(--color-border);overflow:hidden}.loading-bar-fill{width:40%;height:100%;background:var(--color-text);animation:loading-sweep 1.5s ease-in-out infinite}.loading-status{font-size:.5625rem;color:var(--color-text-dim);letter-spacing:.15em}@keyframes loading-blink{0%,to{opacity:1}50%{opacity:.4}}@keyframes loading-sweep{0%{transform:translateX(-200%)}to{transform:translateX(600%)}}.video-container{position:fixed;overflow:hidden}.video-container,.video-deck{inset:0;background:var(--color-bg)}.video-deck{position:absolute;width:100%;height:100%;transition:opacity .1s ease-in-out}.video-deck iframe{width:100%;height:100%;border:none}.video-deck.hidden{opacity:0}.video-deck.visible{opacity:1}.beat-flash-overlay{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:2}.beat-flash-overlay.active{animation:beat-flash .12s ease-out forwards}@keyframes beat-flash{0%{opacity:.07}to{opacity:0}}.crt-overlay{position:fixed;inset:0;pointer-events:none;z-index:10}.crt-overlay:before{background:repeating-linear-gradient(0deg,transparent,transparent 1px,rgba(0,0,0,.12) 0,rgba(0,0,0,.12) 2px)}.crt-overlay:after,.crt-overlay:before{content:"";position:absolute;inset:0;pointer-events:none}.crt-overlay:after{background:radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.55) 100%)}.keyboard-hints{position:fixed;bottom:1.5rem;left:1.5rem;font-size:.5rem;color:var(--color-text-dim);letter-spacing:.1em;z-index:100;opacity:.4;transition:opacity .3s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.keyboard-hints:hover{opacity:.8}.hint-key{color:var(--color-text);font-weight:700}.hint-sep{margin:0 .3em;opacity:.4}.status-overlay{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--color-overlay);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:1px solid var(--color-border);padding:1rem 1.25rem;font-size:.6875rem;z-index:100;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none;min-width:220px;transition:min-width .2s ease;touch-action:none}.status-overlay.collapsed{min-width:auto}.status-overlay:active{cursor:-webkit-grabbing;cursor:grabbing}.status-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.status-overlay:not(.collapsed) .status-header{margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border)}.status-header-right{display:flex;align-items:center;gap:.75rem}.status-label{font-weight:700;letter-spacing:.15em;text-transform:uppercase;font-size:.5625rem;color:var(--color-text-dim)}.collapse-btn{background:transparent;border:1px solid var(--color-border);color:var(--color-text);width:18px;height:18px;font-size:.75rem;font-family:var(--font-mono);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:1;transition:border-color .2s ease}.collapse-btn:hover{border-color:var(--color-text)}.rec-indicator{display:flex;align-items:center;gap:.375rem;font-size:.5625rem;font-weight:700;letter-spacing:.1em}.rec-dot{width:6px;height:6px;background:var(--color-accent);animation:pulse-rec 1s ease-in-out infinite}.rec-dot.paused{background:#555;animation:none}@keyframes pulse-rec{0%,to{opacity:1}50%{opacity:.3}}.status-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.375rem}.status-row:last-child{margin-bottom:0}.status-key{color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.1em;font-size:.5625rem}.status-value{font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.volume-row{gap:.75rem}.volume-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:1 1;height:2px;background:var(--color-border);outline:none;cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:8px;height:8px;background:var(--color-text);cursor:pointer;border:none}.volume-slider::-moz-range-thumb{width:8px;height:8px;background:var(--color-text);cursor:pointer;border:none;border-radius:0}.volume-slider::-moz-range-track{background:var(--color-border);height:2px;border:none}.control-btn{background:transparent;border:1px solid var(--color-border);color:var(--color-text-dim);font-family:var(--font-mono);font-size:.5rem;letter-spacing:.15em;padding:.25rem .5rem;cursor:pointer;transition:border-color .2s ease,color .2s ease;width:100%;text-align:center}.control-btn:hover{border-color:var(--color-text);color:var(--color-text)}.visualizer-container{margin-top:.75rem;padding-top:.5rem;border-top:1px solid var(--color-border)}.visualizer-canvas{width:100%;height:24px;display:block}.video-deck iframe{pointer-events:none}