:root{--bg: #0f1115;--panel: #1a1d24;--panel-2: #232733;--text: #e6e8ee;--muted: #8a90a2;--accent: #7c5cff;--accent-2: #4ade80;--danger: #ef4444;--border: #2c3140}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:1200px;margin:0 auto;padding:16px}.status-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 4px 16px}.status-bar h1{font-size:1.3rem;margin:0}.status-actions{display:flex;gap:10px;align-items:center}.pill{padding:4px 12px;border-radius:999px;background:var(--panel-2);font-size:.8rem;text-transform:capitalize}.pill.running{background:#16361f;color:var(--accent-2)}.pill.error{background:#3a1717;color:var(--danger)}.layout{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}.left-col,.right-col{display:flex;flex-direction:column;gap:16px}@media(max-width:900px){.layout{grid-template-columns:1fr}}.camera-view{position:relative;background:#000;border-radius:12px;overflow:hidden;aspect-ratio:4 / 3;border:1px solid var(--border)}.camera-view video,.camera-view canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.mirror{transform:scaleX(-1)}.camera-status{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;color:var(--muted);background:#00000080}.legend{position:absolute;bottom:8px;left:8px;display:flex;gap:12px;font-size:.75rem;background:#00000073;padding:4px 8px;border-radius:6px}.legend-right{color:var(--accent-2)}.legend-left{color:#60a5fa}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px}.panel h2{margin:0 0 12px;font-size:1rem}.hint{color:var(--muted);font-size:.82rem;margin:8px 0 0}.hint.warn{color:var(--accent-2)}.chord-display{text-align:center}.chord-name{font-size:3rem;font-weight:700;line-height:1.1}.chord-name.muted{color:var(--muted)}.chord-roman{font-size:1.1rem;color:var(--accent)}.borrowed{color:var(--accent-2)}.chord-notes{color:var(--muted);margin-top:4px}.hand-labels{display:flex;justify-content:space-between;margin-top:12px;font-size:.78rem;color:var(--muted)}.note-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.note-btn,.mode-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 0;cursor:pointer;font-size:.9rem}.note-btn.active,.mode-btn.active{background:var(--accent);border-color:var(--accent)}.mode-toggle{display:flex;gap:6px;margin-top:8px}.mode-btn{flex:1;text-transform:capitalize}button{font:inherit;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.start,.record{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 16px}.recording{background:var(--danger);color:#fff;border:none;border-radius:8px;padding:8px 16px}.swap{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 12px}button.link{background:none;border:none;color:var(--muted);text-decoration:underline;padding:0 6px}.reset{margin-top:12px;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px 12px}.setting-row{display:flex;align-items:center;gap:10px;margin:8px 0}.setting-label{width:84px;font-size:.82rem;color:var(--muted)}.setting-row input[type=range]{flex:1;accent-color:var(--accent)}.setting-row select{flex:1;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px;max-width:100%}.switch{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted)}.axis-label{display:flex;align-items:center;gap:8px;font-size:.82rem;flex:1}.axis-meter{width:90px;flex:none;margin:0}.seg{display:flex;flex:1;gap:0;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg-btn{flex:1;background:var(--panel-2);color:var(--text);border:none;padding:7px 0;font-size:.85rem}.seg-btn.active{background:var(--accent);color:#fff}.meter{height:8px;background:var(--panel-2);border-radius:999px;overflow:hidden;margin:6px 0}.meter-fill{height:100%;background:var(--muted);transition:width .06s linear}.meter-fill.live{background:var(--accent-2)}.map-section{margin-top:12px}.map-head{display:flex;align-items:center;justify-content:space-between}.map-head h4{margin:6px 0;color:var(--muted)}.detect{font-size:.72rem}.detect.on{color:var(--accent-2)}.detect.off{color:var(--muted)}.map-list{list-style:none;padding:0;margin:0}.map-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--border);font-size:.85rem}.map-actions{display:flex;gap:6px;align-items:center}.map-list li.active-row{color:var(--accent-2)}.map-list li.active-row .map-actions{color:var(--accent-2);font-weight:600}.map-actions button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:.78rem}.bind-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;margin:10px 0}.bind-row select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px}.bind-row button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:6px 12px}.bind-label{font-size:.75rem;color:var(--muted)}.pattern-dots{font-size:1.1rem;letter-spacing:2px}.pattern-dots .on{color:var(--accent-2)}.pattern-dots .off{color:#3a3f4d}.bindings-list{margin-top:12px;font-size:.85rem}.bindings-list ul{list-style:none;padding:0;margin:4px 0}.bindings-list li{display:flex;align-items:center;gap:8px;padding:2px 0}.bindings-list h4{margin:8px 0 2px;color:var(--muted)}.recorder-controls{display:flex;gap:10px;margin-bottom:8px}.session-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.session-row{background:var(--panel-2);border-radius:8px;padding:8px 10px;display:flex;justify-content:space-between;align-items:center;gap:8px}.session-meta{display:flex;gap:10px;font-size:.8rem;color:var(--muted)}.session-meta strong{color:var(--text)}.session-actions{display:flex;gap:8px;align-items:center}.session-actions button,.btn-link{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:.8rem;text-decoration:none}.footer{margin-top:20px;color:var(--muted);font-size:.8rem;text-align:center}
