:root{color-scheme:dark;--bg: #0f0f10;--bg-elev: #1a1a1c;--border: #2a2a2e;--text: #e8e8ea;--muted: #888;--accent: #4ade80;--accent-dim: #2d6b46;--danger: #ef4444;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);min-height:100vh}body{display:flex;flex-direction:column}.app-header{padding:16px 24px 8px;border-bottom:1px solid var(--border)}.app-header h1{margin:0;font-size:20px;letter-spacing:.02em}.tagline{margin:2px 0 0;color:var(--muted);font-size:13px}.app-main{flex:1;display:flex;flex-direction:column;gap:16px;padding:16px 24px;max-width:1100px;width:100%;margin:0 auto}.panel{background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;padding:14px}.recorder{display:flex;align-items:center;gap:14px}.record-btn{display:inline-flex;align-items:center;gap:8px;background:#2a2a2e;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer;font-size:14px;font-weight:500;transition:background .15s}.record-btn:hover{background:#34343a}.record-dot{width:10px;height:10px;border-radius:50%;background:var(--danger);display:inline-block}.record-btn.recording .record-dot{animation:pulse 1s ease-in-out infinite}.record-btn.recording{background:#3a1a1a;border-color:var(--danger)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.recorder-timer{font-variant-numeric:tabular-nums;color:var(--muted);min-width:50px}.recorder-status{color:var(--muted);font-size:13px}#waveform-panel{position:relative;padding-bottom:24px}#waveform{width:100%;display:block;border-radius:4px}.trim-track{position:relative;height:16px;margin-top:4px}.trim-region{position:absolute;top:0;bottom:0;background:#4ade8026;border-top:1px solid var(--accent);border-bottom:1px solid var(--accent);pointer-events:none}.trim-handle{position:absolute;top:-160px;width:12px;height:176px;margin-left:-6px;cursor:ew-resize;background:transparent;touch-action:none}.trim-handle:before{content:"";position:absolute;left:5px;top:0;bottom:0;width:2px;background:var(--accent)}.trim-handle:after{content:"";position:absolute;left:0;bottom:0;width:12px;height:12px;border-radius:2px;background:var(--accent)}.trim-handle[data-handle=start]{left:0%}.trim-handle[data-handle=end]{left:100%}#piano-panel{padding:0;overflow-x:auto;overflow-y:hidden}.piano{position:relative;height:180px;min-width:1400px;-webkit-user-select:none;user-select:none;touch-action:none}.piano-white-row{display:flex;height:100%}.piano-key.white{flex:1 0 auto;background:linear-gradient(to bottom,#f8f8f8,#e8e8e8);border:1px solid #2a2a2e;border-radius:0 0 4px 4px;position:relative;cursor:pointer}.piano-key.white:hover{background:linear-gradient(to bottom,#fff,#f0f0f0)}.piano-key.white.active{background:linear-gradient(to bottom,#b8e0c4,#93cea7)}.piano-key.white.highlight:after{content:"";position:absolute;bottom:6px;left:50%;transform:translate(-50%);width:6px;height:6px;border-radius:50%;background:var(--accent)}.piano-key-label{position:absolute;bottom:16px;left:50%;transform:translate(-50%);font-size:10px;color:#555;pointer-events:none}.piano-black-overlay{position:absolute;top:0;left:0;right:0;height:60%;pointer-events:none}.piano-key.black{position:absolute;height:100%;background:linear-gradient(to bottom,#2a2a2e,#0f0f10);border:1px solid #000;border-radius:0 0 3px 3px;cursor:pointer;pointer-events:auto}.piano-key.black:hover{background:linear-gradient(to bottom,#3a3a3e,#1a1a1c)}.piano-key.black.active{background:linear-gradient(to bottom,#2d6b46,#1a4029)}.piano-key.black.highlight:after{content:"";position:absolute;bottom:6px;left:50%;transform:translate(-50%);width:5px;height:5px;border-radius:50%;background:var(--accent)}.app-footer{display:flex;gap:24px;padding:10px 24px;border-top:1px solid var(--border);color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}#octave-indicator{margin-left:auto;color:var(--accent)}
