*{margin:0;padding:0;box-sizing:border-box}body{background:#ede9e3;overflow:hidden;cursor:grab;user-select:none;font-family:Space Mono,monospace}body.drag{cursor:grabbing}canvas{display:block;position:absolute;top:0;left:0}#panel{position:fixed;right:0;top:0;bottom:0;width:230px;background:#ffffffb8;backdrop-filter:blur(14px);border-left:1px solid rgba(0,0,0,.08);display:flex;flex-direction:column;z-index:10;transition:transform .35s cubic-bezier(.4,0,.2,1);transform:translate(100%)}#panel.open{transform:translate(0)}#panel-toggle{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:11;background:#ffffffd1;backdrop-filter:blur(10px);border:1px solid rgba(0,0,0,.1);border-right:none;border-radius:8px 0 0 8px;width:22px;padding:14px 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;font-size:9px;color:#00000059;letter-spacing:.05em;writing-mode:vertical-rl;font-family:Space Mono,monospace;font-weight:700;transition:right .35s cubic-bezier(.4,0,.2,1),background .15s;white-space:nowrap}#panel-toggle:hover{background:#fffffff2}#panel.open~#panel-toggle{right:230px}#panel-header{padding:18px 18px 13px;border-bottom:1px solid rgba(0,0,0,.07)}#panel-chord{font-family:Playfair Display,serif;font-size:22px;font-weight:700;color:#12186a;letter-spacing:.04em;min-height:28px;line-height:1.3}#panel-chord .chord-alt{font-size:13px;font-weight:400;color:#12186a80;display:inline-block;margin-left:6px;vertical-align:middle}#panel-chord .chord-primary{font-size:22px}#panel-notes{margin-top:4px;font-size:10px;color:#00000061;letter-spacing:.06em;min-height:14px}#panel-body{flex:1;overflow-y:auto;padding:13px 18px;display:flex;flex-direction:column;gap:14px}#empty{flex:1;display:flex;align-items:center;justify-content:center;padding:28px 18px;text-align:center;font-size:11px;color:#00000038;line-height:2;letter-spacing:.04em}.stat-group{display:flex;flex-direction:column;gap:6px}.stat-label{font-size:8px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#0000004d;margin-bottom:1px}.stat-row{display:flex;align-items:center;gap:7px}.stat-name{font-size:10px;color:#0000008c;width:82px;flex-shrink:0}.stat-bar-wrap{flex:1;height:5px;background:#00000014;border-radius:3px;overflow:hidden}.stat-bar{height:100%;border-radius:3px;transition:width .35s cubic-bezier(.4,0,.2,1)}.stat-val{font-size:10px;color:#12186a;font-weight:700;width:26px;text-align:right;flex-shrink:0}.divider{height:1px;background:#0000000f;margin:0 -18px}.bar-fifth{background:linear-gradient(90deg,#2aada0,#1d8070)}.bar-maj3{background:linear-gradient(90deg,#e04848,#b02020)}.bar-min3{background:linear-gradient(90deg,#4a78e0,#2040b0)}.bar-generic{background:linear-gradient(90deg,#8060c0,#5030a0)}.bar-neutral{background:#0003}#int-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.int-cell{height:21px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#ffffffe6}#seq{position:fixed;bottom:0;left:0;right:0;background:#ffffffe0;backdrop-filter:blur(14px);border-top:1px solid rgba(0,0,0,.09);z-index:10;pointer-events:all;transition:height .3s cubic-bezier(.4,0,.2,1);overflow:hidden}#seq-bar{display:flex;flex-direction:column;flex-shrink:0;cursor:pointer}#seq-bar-row1{height:44px;display:flex;align-items:center;gap:8px;padding:0 14px}#seq-bar-row2{display:flex;height:40px;align-items:center;gap:8px;padding:0 14px 6px;border-top:1px solid rgba(0,0,0,.05)}#seq-toggle-btn{font-size:10px;font-weight:700;letter-spacing:.1em;color:#0006;text-transform:uppercase;display:flex;align-items:center;gap:5px;background:none;border:none;cursor:pointer;font-family:Space Mono,monospace;padding:0;white-space:nowrap}#seq-toggle-btn .arrow{transition:transform .3s;display:inline-block}#seq.open #seq-toggle-btn .arrow{transform:rotate(180deg)}#seq-bar-chord{font-family:Playfair Display,serif;font-size:14px;font-weight:700;color:#12186a;letter-spacing:.05em;opacity:0;transition:opacity .3s;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#seq-bar-chord.on{opacity:1}#seq-controls{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0}.ctrl-btn{width:32px;height:32px;border-radius:8px;border:1.5px solid rgba(0,0,0,.15);background:#ffffffe6;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background .15s,border-color .15s;font-family:Space Mono,monospace;flex-shrink:0}.ctrl-btn:hover{background:#fff;border-color:#141e7866}.ctrl-btn.active{background:#1e2878;border-color:#1e2878;color:#fff}#btn-audio{font-size:16px}#btn-audio.active{background:#1e2878;border-color:#1e2878;color:#fff}#btn-chord-edit{font-size:17px;font-weight:700;transition:background .15s}#btn-chord-edit.is-remove{background:#c0392b;border-color:#c0392b;color:#fff}#bpm-wrap{display:flex;align-items:center;gap:5px;font-size:10px;color:#0006}#bpm-input{width:42px;height:28px;border:1.5px solid rgba(0,0,0,.15);border-radius:6px;text-align:center;font-size:11px;font-family:Space Mono,monospace;background:#ffffffe6;color:#1a1a35;outline:none}#bpm-input:focus{border-color:#141ea080}#step-dots{display:flex;gap:4px;align-items:center;flex:1;flex-wrap:wrap;overflow:hidden;max-height:16px}.sdot{width:7px;height:7px;border-radius:50%;background:#0000001f;transition:background .2s,transform .15s;flex-shrink:0}.sdot.cur{background:#1e2878;transform:scale(1.4)}.sdot.has{background:#1e287847}#split-wrap{display:flex;align-items:center;gap:6px;font-size:10px;color:#00000073}#split-label{white-space:nowrap;font-family:Space Mono,monospace;min-width:52px}#split-input{flex:1;min-width:60px;max-width:100px;accent-color:#1e2878;cursor:pointer}#seq-inner{padding:0 14px 14px;display:flex;flex-direction:column;gap:8px;pointer-events:all}#prog-editor{width:100%;height:80px;resize:none;border:1.5px solid rgba(0,0,0,.12);border-radius:8px;padding:8px 10px;font-size:12px;font-family:Space Mono,monospace;background:#fffffff2;color:#1a1a35;outline:none;line-height:1.7}#prog-editor:focus{border-color:#141ea066}#seq-hint{font-size:9px;color:#00000047;letter-spacing:.03em;line-height:1.6}#parse-error{font-size:9px;color:#c02020;letter-spacing:.03em;min-height:12px;display:flex;align-items:center;gap:6px}#midi-clear{display:none;font-size:9px;font-family:Space Mono,monospace;border:none;background:none;cursor:pointer;color:#141eb499;padding:0;text-decoration:underline}#seq.open{height:230px}#seq:not(.open){height:84px}@media(max-width:500px){#step-dots,#bpm-wrap span{display:none}}@media(min-width:501px){#seq-controls{gap:8px}}#chord-overlay{position:fixed;top:14px;left:50%;transform:translate(-50%);pointer-events:none;z-index:6;text-align:center;white-space:nowrap;background:#ffffffd1;backdrop-filter:blur(10px);border:1px solid rgba(0,0,0,.08);border-radius:10px;padding:4px 14px 5px;min-height:20px}#chord-overlay .chord-primary{font-family:Playfair Display,serif;font-size:24px;font-weight:700;color:#12186a;letter-spacing:.04em}#chord-overlay .chord-alt{font-size:13px;font-weight:400;color:#12186a73;display:inline-block;margin-left:7px;vertical-align:middle;font-family:Space Mono,monospace}#chord-overlay .chord-full{display:block;font-size:11px;font-weight:400;color:#12186a61;font-family:Space Mono,monospace;letter-spacing:.04em;margin-top:1px}#title{position:fixed;top:18px;left:50%;transform:translate(-50%);font-family:Playfair Display,serif;font-style:italic;font-size:20px;color:#00000029;letter-spacing:.4em;pointer-events:none;z-index:5}#pills{position:fixed;bottom:52px;left:50%;transform:translate(-50%);display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:calc(100vw - 60px);pointer-events:none;z-index:5}@media(max-width:500px){#pills{bottom:92px}}.pill{background:#ffffffc7;border:1.5px solid rgba(20,30,100,.22);border-radius:13px;padding:3px 13px;font-size:11px;font-family:Space Mono,monospace;color:#1a2060}#key-wrap{display:flex;align-items:center;gap:4px;flex-shrink:0}#key-root,#key-mode,#chord-notation,#root-source,#note-display,#sel-echo{height:28px;border:1.5px solid rgba(0,0,0,.15);border-radius:6px;font-size:11px;font-family:Space Mono,monospace;background:#ffffffe6;color:#1a1a35;outline:none;cursor:pointer;padding:0 4px}#key-root{width:52px}#key-mode{width:48px}#chord-notation{width:72px}#root-source{width:76px}#note-display{width:72px}#root-indicator{font-size:10px;font-family:Space Mono,monospace;color:#00000073;white-space:nowrap}#btn-midi.active{background:#1e7828;border-color:#1e7828;color:#fff}#sel-echo{width:74px}#midi-status{position:fixed;top:14px;right:14px;font-size:10px;font-family:Space Mono,monospace;color:#00000073;pointer-events:none;z-index:6;display:none;background:#ffffffd9;padding:4px 8px;border-radius:6px;line-height:1.6;text-align:right;max-width:240px}#midi-status.on{display:block}#drop-overlay{display:none;position:fixed;inset:0;z-index:100;background:#1e28782e;backdrop-filter:blur(4px);align-items:center;justify-content:center;pointer-events:none}#drop-overlay.active{display:flex}#drop-inner{background:#ffffffeb;border:2.5px dashed rgba(30,40,180,.4);border-radius:18px;padding:32px 48px;font-family:Playfair Display,serif;font-size:22px;color:#12186a;letter-spacing:.08em}#hint-top{position:fixed;top:18px;left:22px;font-size:10px;color:#0000002e;line-height:2;pointer-events:none;letter-spacing:.04em;z-index:5}#piano-wrap{position:fixed;bottom:90px;right:14px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:4px}#piano-toggle{background:#ffffffd9;border:1px solid rgba(0,0,0,.13);border-radius:8px;padding:3px 8px;font-size:10px;font-family:Space Mono,monospace;color:#00000073;cursor:pointer;backdrop-filter:blur(4px)}#piano-toggle:hover{background:#fffffff7}#piano-keys{position:relative;width:168px;height:64px;background:#ffffffeb;border:1px solid rgba(0,0,0,.13);border-radius:8px;overflow:hidden;backdrop-filter:blur(6px);box-shadow:0 2px 12px #0000001a}#piano-keys.hidden{display:none}.pk-white{position:absolute;bottom:0;width:22px;height:64px;background:#fff;border-right:1px solid rgba(0,0,0,.13);border-radius:0 0 4px 4px;box-sizing:border-box;cursor:pointer;transition:background .12s}.pk-black{position:absolute;top:0;width:14px;height:40px;background:#3a3a4a;border-radius:0 0 3px 3px;z-index:2;cursor:pointer;transition:background .12s}.pk-white.active{background:#b8d4f0}.pk-black.active{background:#57c}.pk-white:hover{background:#e8f0ff}.pk-black:hover{background:#555570}
