:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5f8;--surface:#fff;--surface-2:#eef0f4;--border:#d9dde5;--text:#1b1e26;--muted:#687083;--accent:#4f5bd5;--accent-text:#fff;--accent-soft:#e4e7ff;--danger:#c43c3c;--ok:#1f8a4c;--edited:#b5650d;--shadow:0 1px 2px #1418280f, 0 2px 8px #1418280d;--key-s:70%;--key-l:88%;--key-text:#1b1e26;--key-pressed-l:62%;--key-sounding-l:77%;--key-border:#0000001f;--tonic-ring:#1b1e26;--radius:10px;--control-h:34px;--kw:min(60px, calc((100vw - 96px) / 13.6));font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.4}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12141a;--surface:#1b1e27;--surface-2:#242834;--border:#323746;--text:#e7e9f0;--muted:#8d94a8;--accent:#8c96ff;--accent-text:#10121a;--accent-soft:#2b3060;--danger:#ff7a7a;--ok:#5fd08f;--edited:#ffb35c;--shadow:0 1px 2px #0000004d, 0 4px 12px #00000040;--key-s:40%;--key-l:26%;--key-text:#eef0f6;--key-pressed-l:52%;--key-sounding-l:36%;--key-border:#ffffff14;--tonic-ring:#eef0f6}@media (prefers-color-scheme:dark){:root:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12141a;--surface:#1b1e27;--surface-2:#242834;--border:#323746;--text:#e7e9f0;--muted:#8d94a8;--accent:#8c96ff;--accent-text:#10121a;--key-s:40%;--key-l:26%;--key-text:#eef0f6}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}h1,h2{margin:0;font-weight:600}h1{font-size:18px}h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:13px}a{color:var(--accent)}.muted{color:var(--muted)}.small-text{font-size:12px}.num{font-variant-numeric:tabular-nums}button{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:6px 12px;transition:background .12s,border-color .12s}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button.accent,button[type=submit]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.ghost{background:0 0}button.small{padding:3px 8px;font-size:12px}button.danger:hover{color:var(--danger);border-color:var(--danger)}button.toggle.on{background:var(--accent-soft);border-color:var(--accent)}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:6px;min-width:0;padding:5px 8px}textarea{resize:vertical;width:100%;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px}input[type=number]{font-variant-numeric:tabular-nums;width:100%}input[type=file]{padding:4px;font-size:12px}input[type=range]{accent-color:var(--accent);background:0 0;border:none;padding:0}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;gap:2px;padding:2px;display:inline-flex}.segmented button{background:0 0;border:none;border-radius:6px;padding:4px 10px}.segmented button.on{background:var(--surface);box-shadow:var(--shadow);color:var(--accent);font-weight:600}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.field>input,.field>select,.field>textarea{color:var(--text);font-size:14px}.field.grow{flex:1}.inline{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.readout{color:var(--text);font-variant-numeric:tabular-nums;padding:5px 8px;font-size:14px}.hint{color:var(--muted);margin:0;font-size:12px}.error{color:var(--danger);margin:0;font-size:13px}.ok{color:var(--ok);margin:0;font-size:13px}.quick{flex-wrap:wrap;gap:6px;display:flex}.pill{cursor:default;-webkit-user-select:none;user-select:none;border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;padding:0 12px;font-size:13px;display:inline-flex}.pill.on{color:var(--accent-text);background:var(--accent);border-color:var(--accent)}kbd{border:1px solid var(--border);background:var(--surface-2);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-family:inherit;font-size:11px}.stepper{align-items:center;gap:4px;display:inline-flex}.stepper button{min-width:30px;padding:3px 8px}.stepper span{text-align:center;min-width:40px}.slider{grid-template-columns:104px 1fr 72px;align-items:center;gap:8px;font-size:13px;display:grid}.slider-label{color:var(--muted);overflow-wrap:anywhere}.slider-value{text-align:end;font-variant-numeric:tabular-nums;font-size:12px}.app{min-height:100vh}.topbar{z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;display:flex;position:sticky;top:0}.brand{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.top-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.top-actions>*{height:var(--control-h)}main{max-width:1600px;margin:0 auto;padding:16px}.kb-section{justify-content:center;margin-bottom:16px;display:flex;overflow-x:auto}.grid{grid-template-columns:minmax(280px,1fr) minmax(0,1.7fr) minmax(280px,1fr);align-items:start;gap:16px;display:grid}.col{flex-direction:column;gap:16px;min-width:0;display:flex}@media (width<=1200px){.grid{grid-template-columns:1fr 1fr}.col.wide{order:-1;grid-column:1/-1}}@media (width<=720px){.grid{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:12px;min-width:0;padding:14px;display:flex}.panel-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.group{flex-direction:column;gap:10px;display:flex}.gen{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.gen>.field{flex:1;min-width:90px}.gen.column{flex-direction:column;align-items:stretch}.current{background:var(--surface-2);border-radius:8px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.base{flex-direction:column;gap:6px;display:flex}.row{gap:8px;display:flex}.row>.field{flex:1}.iso{flex-direction:column;gap:8px;display:flex}.transpose{justify-content:space-between;align-items:center;gap:8px;display:flex}.hotkeys{flex-direction:column;gap:4px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.keyboard{gap:calc(var(--kw) * .08);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);-webkit-user-select:none;user-select:none;touch-action:none;border-radius:14px;flex-direction:column;padding:12px;display:flex}.kb-row{gap:calc(var(--kw) * .08);margin-left:calc(var(--off) * var(--kw) * 1.08);display:flex}.key{width:var(--kw);height:calc(var(--kw) * 1.05);border:1px solid var(--key-border);background:hsl(var(--h) var(--key-s) var(--key-l));color:var(--key-text);text-align:start;box-shadow:0 2px 0 var(--key-border);border-radius:8px;flex-direction:column;justify-content:space-between;align-items:stretch;padding:3px 4px;transition:transform 50ms,background 80ms,box-shadow 80ms;display:flex;position:relative}.key:hover:not(:disabled){border-color:var(--key-border);filter:brightness(1.04)}.key.tonic{box-shadow:inset 0 0 0 2px var(--tonic-ring), 0 2px 0 var(--key-border)}.key.sounding{background:hsl(var(--h) var(--key-s) var(--key-sounding-l))}.key.pressed{background:hsl(var(--h) calc(var(--key-s) + 15%) var(--key-pressed-l));box-shadow:0 0 0 var(--key-border);transform:translateY(2px)}.key.tonic.pressed{box-shadow:inset 0 0 0 2px var(--tonic-ring)}.key.edited:after{content:"";background:var(--edited);border-radius:50%;width:6px;height:6px;position:absolute;top:4px;right:4px}.key-cap{font-size:calc(var(--kw) * .18);opacity:.6;gap:4px;display:flex}.key-alt{opacity:.7}.key-deg{font-size:calc(var(--kw) * .3);text-align:center;font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.key-deg sub{opacity:.6;margin-left:1px;font-size:.45em;font-weight:500}.key-note{font-size:calc(var(--kw) * .17);opacity:.75;text-align:center;white-space:nowrap;overflow:hidden}.table-wrap{border:1px solid var(--border);border-radius:8px;max-height:70vh;overflow:auto}table.notes{border-collapse:collapse;width:100%;font-size:13px}.notes th{background:var(--surface-2);color:var(--muted);text-align:start;white-space:nowrap;z-index:1;padding:6px 8px;font-size:12px;font-weight:500;position:sticky;top:0}.notes td{border-top:1px solid var(--border);white-space:nowrap;padding:3px 8px}.notes td input{width:96px;padding:3px 6px}.notes input.edited{border-color:var(--edited);color:var(--edited)}.notes tr.sounding td{background:var(--accent-soft)}.notes tr.period-row td{color:var(--muted);border-top:2px solid var(--border)}.play{padding:2px 8px;font-size:11px}.harmonics{grid-template-columns:repeat(16,1fr);gap:2px;height:130px;display:grid}.harm{color:var(--muted);flex-direction:column;align-items:center;gap:2px;font-size:10px;display:flex}.harm input{writing-mode:vertical-lr;direction:rtl;flex:1;width:100%;min-height:0}.sample-info{flex-direction:column;gap:8px;font-size:13px;display:flex}.presets{flex-direction:column;gap:4px;max-height:220px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.presets li{align-items:center;gap:4px;display:flex}.preset-name{text-align:start;text-overflow:ellipsis;white-space:nowrap;border-color:#0000;flex:1;overflow:hidden}.lang-select{background:var(--surface-2);border-radius:8px;padding:5px 8px}.footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;max-width:1600px;margin:8px auto 0;padding:16px 16px 32px;display:flex}.reset-confirm{text-align:start;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.reset-confirm p{max-width:60ch;margin:0}button.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}:root[data-theme=dark] button.danger-solid{color:#1b1e26}.brand h1{letter-spacing:-.01em}.subtitle{font-size:13px}.tuning-chip{background:var(--accent-soft);color:var(--text);border-radius:999px;padding:2px 8px;font-size:12px}@media (width<=720px){.subtitle{display:none}}.gen-options{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.gen-options .seed input{width:90px}.check{align-items:center;gap:8px;font-size:13px;display:inline-flex}.check input{accent-color:var(--accent)}.now-playing{background:var(--surface-2);border-radius:8px;min-height:2.6em;margin:0;padding:8px 10px;font-size:13px}.pump-info p{margin:0 0 4px}.sub-title{color:var(--muted);margin:4px 0 0;font-size:12px;font-weight:500}table.chords td{padding:4px 8px}.footer-links{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:13px;display:flex}.footer-links a{align-items:center;gap:6px;text-decoration:none;display:inline-flex}.footer-links a:hover{text-decoration:underline}.reset{align-items:center;gap:12px;display:flex}.icon{flex:none}@media (width<=720px){.footer{text-align:center;justify-content:center}}
