:root{--red: #7c3aed;--red-soft: rgba(124, 58, 237, .55);--red-glow: rgba(124, 58, 237, .18);--bg: #f0f4f5;--ink: #0a0a0a;--dim: rgba(10, 10, 10, .45);--faint: rgba(10, 10, 10, .18);--hairline: rgba(10, 10, 10, .1);--guide-w: 320px}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;background:var(--bg);font-family:DM Mono,monospace;color:var(--ink);overflow:hidden;-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}#field{position:fixed;top:60px;left:0;width:100vw;height:calc(100vh - 116px);display:block;cursor:none;z-index:1}@media (max-width: 800px){:root{--guide-w: 280px}#voices{left:10px;padding:5px}.voice-btn{width:30px;height:30px}.version{right:300px}#state-section{width:130px;padding:0 10px}#state-section .row{font-size:8px}#zoom-section{width:110px;padding:0 8px}.zoom-btn{width:22px;height:22px}#freq-section .axis-label,#freq-section .axis-label-r{display:none}}@media (max-width: 600px){#guide{transform:translate(calc(var(--guide-w) - 32px))}#guide.expanded{transform:translate(0)}}#top-spectrum{position:fixed;top:0;left:0;right:0;height:60px;z-index:9;background:var(--bg);border-bottom:1px solid var(--ink);overflow:hidden}#top-spectrum-canvas{width:100%;height:100%;display:block}#top-spectrum .ts-brand{position:absolute;top:8px;left:24px;display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--ink);pointer-events:none;z-index:2}#top-spectrum .ts-brand .dot{width:7px;height:7px;background:var(--red);border-radius:50%;animation:pulse 1.6s infinite ease-in-out}#top-spectrum .ts-brand .time{font-variant-numeric:tabular-nums;color:var(--dim);margin-left:8px}#top-spectrum .ts-brand .count{color:var(--dim);margin-left:8px}#top-spectrum .ts-readout{position:absolute;top:8px;right:24px;font-family:Bebas Neue,sans-serif;font-size:24px;letter-spacing:.04em;color:var(--ink);pointer-events:none;z-index:2;line-height:1;text-align:right}#top-spectrum .ts-readout .label-small{font-family:DM Mono,monospace;font-size:8px;letter-spacing:.28em;color:var(--dim);font-weight:500;text-transform:uppercase;display:block;line-height:1;margin-bottom:3px}#top-spectrum .ts-readout small{font-family:DM Mono,monospace;font-size:9px;letter-spacing:.2em;color:var(--dim);margin-left:4px;font-weight:400}.dot{width:7px;height:7px;background:var(--red);border-radius:50%;animation:pulse 1.6s infinite ease-in-out}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.hud-bottom{position:fixed;bottom:0;left:0;right:0;height:56px;z-index:10;display:flex;background:var(--bg);border-top:1px solid var(--ink)}#state-section{width:200px;padding:0 18px;display:flex;flex-direction:column;justify-content:center;gap:4px;border-right:1px solid var(--faint)}#state-section .row{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.2em;text-transform:uppercase}#state-section .row span:first-child{color:var(--dim)}#state-section .row span:last-child{color:var(--ink);font-weight:500}#freq-section{flex:1;position:relative;overflow:hidden}#freq-canvas{width:100%;height:100%;display:block}#freq-section .axis-label{position:absolute;bottom:3px;left:12px;font-size:8px;letter-spacing:.25em;color:var(--dim);pointer-events:none}#freq-section .axis-label-r{position:absolute;bottom:3px;right:12px;font-size:8px;letter-spacing:.25em;color:var(--red);pointer-events:none;opacity:.7}#zoom-section{width:160px;border-left:1px solid var(--faint);display:flex;align-items:center;padding:0 12px;gap:6px}.zoom-btn{width:26px;height:26px;background:transparent;border:1px solid var(--faint);cursor:pointer;color:var(--ink);font-family:DM Mono,monospace;font-size:13px;display:flex;align-items:center;justify-content:center}.zoom-btn:hover{border-color:var(--ink)}#zoom-level{flex:1;font-size:10px;letter-spacing:.15em;text-align:center;font-variant-numeric:tabular-nums;color:var(--ink)}#emitter-label{position:fixed;z-index:11;pointer-events:none;background:var(--bg);border:1px solid var(--ink);padding:8px 12px;font-size:9px;letter-spacing:.18em;font-variant-numeric:tabular-nums;opacity:0;transition:opacity .2s ease;white-space:nowrap}#emitter-label.show{opacity:1}#emitter-label .hz{font-family:Bebas Neue,sans-serif;font-size:22px;letter-spacing:.04em;line-height:1}#emitter-label .hz small{font-family:DM Mono,monospace;font-size:9px;letter-spacing:.15em;margin-left:2px;color:var(--dim)}#top-spectrum .ts-rec{position:absolute;top:38px;left:24px;display:none;align-items:center;gap:6px;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--red);font-weight:500;pointer-events:none;z-index:2}#top-spectrum .ts-rec.show{display:flex}#top-spectrum .ts-rec .rec-dot{width:7px;height:7px;background:var(--red);border-radius:50%;animation:pulse 1s infinite ease-in-out}.version{position:fixed;top:70px;right:calc(var(--guide-w) + 12px);font-size:9px;letter-spacing:.2em;color:var(--dim);z-index:11;pointer-events:none}#voices{position:fixed;left:20px;top:80px;max-height:calc(100vh - 156px);z-index:12;display:flex;flex-direction:column;gap:4px;padding:8px;background:var(--bg);border:1px solid var(--ink);overflow-y:auto;overflow-x:hidden}#voices::-webkit-scrollbar{width:4px}#voices::-webkit-scrollbar-track{background:var(--bg)}#voices::-webkit-scrollbar-thumb{background:var(--faint)}#voices .group-label{font-size:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);text-align:center;margin:4px 0 2px;padding:0 2px}#voices .group-label:first-child{margin-top:0}.voice-btn{width:36px;height:36px;background:transparent;border:1px solid var(--faint);cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;transition:border-color .2s,background .2s;padding:0;font-family:DM Mono,monospace;font-size:14px;color:var(--ink)}.voice-btn:hover{border-color:var(--ink)}.voice-btn.active{background:var(--ink);border-color:var(--ink);color:var(--bg)}.voice-btn .k{position:absolute;bottom:1px;right:2px;font-size:7px;color:var(--dim)}.voice-btn.active .k{color:#f0f4f580}.voice-param-chip{position:sticky;bottom:-8px;margin:6px -8px -8px;padding:6px 8px 8px;background:var(--bg);border-top:1px solid var(--hairline);display:flex;flex-direction:column;gap:4px;z-index:1}.voice-param-chip[hidden]{display:none}.voice-param-chip .vp-label{font-family:DM Mono,monospace;font-size:8px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);text-align:center}.voice-param-chip .vp-values{display:flex;flex-direction:column;gap:2px}.voice-param-chip .vp-value{height:22px;padding:0;background:transparent;border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;font-size:10px;letter-spacing:.06em;color:var(--ink);transition:all .15s}.voice-param-chip .vp-value:hover{border-color:var(--ink)}.voice-param-chip .vp-value.active{background:var(--red);border-color:var(--red);color:var(--bg)}#guide{position:fixed;top:60px;right:0;bottom:56px;width:var(--guide-w);z-index:11;background:var(--bg);border-left:1px solid var(--ink);display:flex;flex-direction:column;font-size:11px;overflow-y:auto;overflow-x:hidden;transition:transform .3s ease}#guide.collapsed{transform:translate(calc(var(--guide-w) - 32px))}#guide-toggle{position:absolute;left:0;top:50%;transform:translate(-100%,-50%);width:26px;height:60px;background:var(--bg);border:1px solid var(--ink);border-right:none;cursor:pointer;font-family:DM Mono,monospace;font-size:11px;color:var(--ink);z-index:12}#guide::-webkit-scrollbar{width:4px}#guide::-webkit-scrollbar-track{background:var(--bg)}#guide::-webkit-scrollbar-thumb{background:var(--faint)}.guide-row{padding:16px 20px;border-bottom:1px solid var(--hairline)}.g-label{font-size:9px;letter-spacing:.28em;text-transform:uppercase;color:var(--dim);margin-bottom:8px;display:flex;justify-content:space-between;align-items:baseline}.g-label .accent{color:var(--red);font-weight:500}.big-value{font-family:Bebas Neue,sans-serif;font-size:32px;letter-spacing:.04em;line-height:1}.big-value small{font-family:DM Mono,monospace;font-size:10px;letter-spacing:.18em;color:var(--dim);margin-left:4px;font-weight:400}.big-value.muted{color:var(--faint)}.meta-row{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-top:6px;display:flex;justify-content:space-between}.meta-row.harmonic span:last-child{color:var(--red)}.meta-row span:last-child{color:var(--ink);font-weight:500}.desc{font-family:DM Sans,sans-serif;font-size:12px;line-height:1.55;color:var(--ink);margin-top:10px}.desc.dim{color:var(--dim)}.preset-strip{display:flex;gap:4px;align-items:center}.preset-btn{width:28px;height:28px;background:transparent;border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;font-size:11px;color:var(--dim);transition:all .2s}.preset-btn:hover{border-color:var(--ink);color:var(--ink)}.preset-btn.filled{background:var(--ink);color:var(--bg);border-color:var(--ink)}.preset-btn.filled:hover{background:var(--red);border-color:var(--red)}#export-btn{width:28px;height:28px;background:transparent;border:1px solid var(--faint);cursor:pointer;font-size:14px;color:var(--ink);margin-left:auto;font-family:DM Mono,monospace}#export-btn:hover{border-color:var(--ink)}#grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.cell{aspect-ratio:1;border:1px solid var(--faint);display:flex;align-items:center;justify-content:center;transition:border-color .5s ease}.cell.found{border-color:var(--ink)}.cell svg{width:60%;height:60%;opacity:.85}.timer-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.timer-btn{padding:6px 0;background:transparent;border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;font-size:10px;letter-spacing:.1em;color:var(--ink);transition:all .2s}.timer-btn:hover{border-color:var(--ink)}.timer-btn.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}#timer-countdown{font-family:Bebas Neue,sans-serif;font-size:38px;letter-spacing:.04em;line-height:1;color:var(--ink);margin-bottom:4px}#timer-countdown.fading{color:var(--red)}#timer-status{font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}#timer-cancel{margin-top:8px;width:100%;padding:6px;background:transparent;border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}#timer-cancel:hover{border-color:var(--ink);color:var(--ink)}.rec-row{display:flex;align-items:center;gap:12px}#rec-btn{width:44px;height:44px;background:transparent;border:2px solid var(--ink);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0;transition:all .2s}#rec-btn:before{content:"";width:18px;height:18px;background:var(--red);border-radius:50%;transition:all .25s}#rec-btn.recording:before{border-radius:2px;width:14px;height:14px;background:var(--ink)}#rec-btn:hover{border-color:var(--red)}#rec-btn.recording{border-color:var(--red);animation:recPulse 1.4s infinite ease-in-out}@keyframes recPulse{0%,to{box-shadow:0 0 #7c3aed00}50%{box-shadow:0 0 0 8px #7c3aed2e}}.rec-info{flex:1}.rec-info .duration{font-family:Bebas Neue,sans-serif;font-size:22px;letter-spacing:.04em;line-height:1;color:var(--ink)}.rec-info .duration.muted{color:var(--faint)}.rec-info .label-tiny{font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-top:2px}.preset-section{margin-bottom:12px}.preset-section:last-child{margin-bottom:0}.preset-section .ps-label{font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-bottom:6px;display:flex;justify-content:space-between;align-items:baseline}.preset-section .ps-label .accent{color:var(--red);font-weight:500}.solf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.eeg-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.solf-btn,.eeg-btn{padding:8px 4px;background:transparent;border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;text-align:center;color:var(--ink);transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:2px}.solf-btn:hover,.eeg-btn:hover{border-color:var(--ink);background:#7c3aed0a}.solf-btn .hz,.eeg-btn .hz{font-family:Bebas Neue,sans-serif;font-size:16px;letter-spacing:.02em;line-height:1}.solf-btn .lbl,.eeg-btn .lbl{font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}#reveal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.96);z-index:50;background:var(--bg);border:2px solid var(--ink);padding:32px 40px 28px;text-align:center;pointer-events:none;opacity:0;transition:opacity .6s ease,transform .6s ease;min-width:280px}#reveal.show{opacity:1;transform:translate(-50%,-50%) scale(1)}#reveal .label{font-size:9px;letter-spacing:.35em;text-transform:uppercase;color:var(--red);margin-bottom:10px}#reveal .sigil{width:72px;height:72px;margin:12px auto 18px}#reveal .name{font-family:Bebas Neue,sans-serif;font-size:32px;letter-spacing:.12em;margin-bottom:6px}#reveal .ratio{font-size:10px;letter-spacing:.25em;color:var(--dim);font-variant-numeric:tabular-nums}.io-panel.library-panel{max-width:640px}.lib-quota-banner{border:1px solid var(--red-soft);background:var(--red-glow);color:var(--ink);padding:10px 14px;margin-bottom:14px;font-size:11px;letter-spacing:.04em;line-height:1.5}.lib-quota-banner[hidden]{display:none}.lib-sort-row{display:flex;align-items:center;gap:6px;margin-bottom:10px}.lib-sort-label{font-family:DM Mono,monospace;font-size:9px;letter-spacing:.22em;color:var(--dim);margin-right:4px}.lib-sort-btn{padding:4px 10px;background:transparent;border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.18em;color:var(--dim)}.lib-sort-btn.active{color:var(--ink);border-color:var(--ink)}.lib-sort-btn:hover{color:var(--ink)}.lib-tabs{display:flex;gap:4px;margin-bottom:18px;border-bottom:1px solid var(--faint);padding-bottom:0}.lib-tab{padding:8px 14px;background:transparent;border:1px solid transparent;border-bottom:none;cursor:pointer;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-bottom:-1px}.lib-tab.active{background:var(--bg);border-color:var(--faint);border-bottom-color:var(--bg);color:var(--ink)}.lib-content{min-height:200px;max-height:400px;overflow-y:auto}.lib-empty{font-family:DM Sans,sans-serif;font-size:12px;color:var(--dim);text-align:center;padding:40px 0;line-height:1.6}.lib-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--faint);margin-bottom:6px;transition:border-color .2s}.lib-item:hover{border-color:var(--ink)}.lib-item .lib-thumb{width:48px;height:48px;border:1px solid var(--faint);flex-shrink:0;background:var(--bg);position:relative;overflow:hidden}.lib-item .lib-thumb svg{width:100%;height:100%;display:block}.lib-item .lib-meta{flex:1;min-width:0}.lib-item .lib-name{font-family:DM Mono,monospace;font-size:12px;color:var(--ink);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lib-item .lib-sub{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}.lib-item .lib-actions{display:flex;gap:4px}.lib-item button{padding:6px 10px;background:var(--bg);border:1px solid var(--faint);cursor:pointer;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink)}.lib-item button:hover{border-color:var(--ink)}.lib-item button.danger:hover{background:var(--red);color:var(--bg);border-color:var(--red)}.lib-item audio{display:block;width:100%;margin-top:8px;height:28px}.lib-save-row{display:flex;gap:8px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--faint)}.lib-save-row input{flex:1;padding:8px 10px;background:var(--bg);border:1px solid var(--faint);font-family:DM Mono,monospace;font-size:10px;color:var(--ink);outline:none}.lib-save-row input:focus{border-color:var(--ink)}.lib-save-row button{padding:8px 14px;background:var(--ink);color:var(--bg);border:1px solid var(--ink);cursor:pointer;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.22em;text-transform:uppercase}.lib-save-row button:hover{background:var(--red);border-color:var(--red)}#io-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#0a0a0a66;display:none;align-items:center;justify-content:center;padding:20px}#io-modal.show{display:flex}.io-panel{background:var(--bg);border:2px solid var(--ink);padding:28px;width:100%;max-width:480px}.io-panel h2{font-family:Bebas Neue,sans-serif;font-size:28px;letter-spacing:.1em;margin-bottom:16px}.io-panel .section{margin-bottom:20px}.io-panel .section-label{font-size:9px;letter-spacing:.3em;text-transform:uppercase;color:var(--dim);margin-bottom:8px}.io-panel textarea{width:100%;min-height:80px;padding:10px;border:1px solid var(--faint);background:#fff;font-family:DM Mono,monospace;font-size:10px;resize:vertical;color:var(--ink);outline:none}.io-panel textarea:focus{border-color:var(--ink)}.io-row{display:flex;gap:8px;margin-top:8px}.io-row button{padding:8px 14px;background:var(--bg);border:1px solid var(--ink);cursor:pointer;font-family:DM Mono,monospace;font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink)}.io-row button:hover,.io-row button.primary{background:var(--ink);color:var(--bg)}.io-row button.primary:hover{background:var(--red);border-color:var(--red)}.io-msg{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--red);margin-top:6px;min-height:12px}#splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:opacity 1.2s ease}#splash.hidden{opacity:0;pointer-events:none}.bauhaus{position:relative;width:280px;height:90px;margin-bottom:36px}.bauhaus .bar{position:absolute;left:0;top:50%;width:100%;height:3px;background:var(--ink);transform:translateY(-50%)}.bauhaus .circle{position:absolute;right:0;top:50%;width:32px;height:32px;background:var(--red);border-radius:50%;transform:translateY(-50%);animation:floatY 4s infinite ease-in-out}.bauhaus .triangle{position:absolute;left:0;top:50%;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:24px solid var(--ink);transform:translate(-4px,-100%)}@keyframes floatY{0%,to{transform:translateY(-50%)}50%{transform:translateY(calc(-50% - 6px))}}#splash h1{font-family:Bebas Neue,sans-serif;font-size:clamp(72px,12vw,140px);letter-spacing:.04em;font-weight:700;line-height:.9}#splash .sub{font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:var(--dim);margin-top:8px}#splash .meta{position:absolute;bottom:32px;font-size:9px;letter-spacing:.3em;text-transform:uppercase;color:var(--faint);text-align:center;width:100%}#splash .prompt{font-family:Bebas Neue,sans-serif;font-size:22px;letter-spacing:.2em;color:var(--red);margin-top:56px;animation:blink 2.4s infinite ease-in-out}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}
