:root{--bg:#070a14;--ink:#cfd8ea;--dim:#7d8aa6;--line:#a0b9e629;--acc:#8fb8ff;--acc2:#c9a6ff;--panel:#0a0e1c9e}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);margin:0;font:14px/1.45 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}canvas#viz{width:100%;height:100%;display:block;position:fixed;inset:0}header{z-index:2;pointer-events:none;position:fixed;top:20px;left:24px}header h1{letter-spacing:.55em;color:#e8eefc;margin:0;font-size:18px;font-weight:300}header p{color:var(--dim);letter-spacing:.18em;text-transform:uppercase;margin:4px 0 0;font-size:11px}#readout{z-index:2;text-align:right;pointer-events:none;position:fixed;top:20px;right:24px}#rd-chord{letter-spacing:.04em;color:#f1f5ff;min-height:38px;font-size:30px;font-weight:200}#rd-key{color:var(--dim);letter-spacing:.16em;text-transform:uppercase;font-size:11px}#rd-char{color:var(--dim);letter-spacing:.14em;text-transform:uppercase;opacity:.75;margin-top:2px;font-size:10px}#rd-layers{color:var(--dim);letter-spacing:.12em;margin-top:6px;font-size:11px}#rd-layers b{color:var(--dim);opacity:.35;margin-left:8px;font-weight:400}#rd-layers b.on{color:var(--acc);opacity:1}.bar{background:var(--line);border-radius:2px;width:160px;height:2px;margin:10px 0 0 auto;overflow:hidden}.bar i{background:linear-gradient(90deg, var(--acc), var(--acc2));width:0;height:100%;transition:width .8s;display:block}#start{z-index:3;color:#e6eeff;letter-spacing:.4em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#8fb8ff14;border:1px solid #8fb8ff73;border-radius:999px;padding:16px 44px;font-size:13px;transition:all .4s;position:fixed;top:44%;left:50%;transform:translate(-50%,-50%)}#start:hover{background:#8fb8ff2e;box-shadow:0 0 50px #8fb8ff40}#start.playing{letter-spacing:.25em;padding:8px 18px;font-size:11px;position:static;top:auto;bottom:auto;left:auto;transform:none}#panel{z-index:2;background:linear-gradient(#0000,#0608108c 30%,#060810eb);flex-direction:column;gap:12px;padding:14px 22px 18px;display:flex;position:fixed;bottom:0;left:0;right:0}.row{flex-wrap:wrap;align-items:center;gap:10px 22px;display:flex}.sliders{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px 22px;display:grid}.sl label{color:var(--dim);letter-spacing:.16em;text-transform:uppercase;justify-content:space-between;font-size:10px;display:flex}.sl label span{color:#a9b8d8}input[type=range]{appearance:none;background:0 0;width:100%;height:18px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:2px;height:2px}input[type=range]::-moz-range-track{background:var(--line);border-radius:2px;height:2px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--acc);border-radius:50%;width:12px;height:12px;margin-top:-5px;box-shadow:0 0 10px #8fb8ffb3}input[type=range]::-moz-range-thumb{background:var(--acc);border:0;border-radius:50%;width:12px;height:12px}button,select,input[type=text]{font:inherit;color:var(--ink);border:1px solid var(--line);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;background:#ffffff0a;border-radius:8px;padding:6px 12px;font-size:11px}button:hover{border-color:#8fb8ff80}button.on{color:#fff;background:#8fb8ff29;border-color:#8fb8ff99}input[type=text]{text-transform:none;letter-spacing:.05em;cursor:text;width:120px}.grow{flex:1}#status{color:var(--dim);letter-spacing:.1em;font-size:11px}@media (width<=640px){header h1{font-size:14px}#rd-chord{font-size:22px}.bar{width:110px}}#styles{gap:8px}.pins{gap:8px 18px}.pin{color:var(--dim);letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:8px;font-size:10px;display:flex}.pin select{max-width:150px;padding:4px 8px}#start:disabled{cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--acc);outline-offset:4px}@media (width<=420px){header{left:16px}#readout{right:16px}header p{max-width:150px;font-size:9px}#panel{padding:14px 16px}.sliders{grid-template-columns:repeat(2,minmax(0,1fr))}.sl label{letter-spacing:.08em;gap:4px;font-size:9px}}
