:root{--upper-fraction: .58;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color-scheme:light dark}body[data-theme=dark]{--bg: #0b0d12;--panel: #12161d;--panel-2: #1a2029;--border: #2a3340;--text: #e6ebf2;--text-dim: #9aa6b3;--accent: #4ea1ff;--accent-dim: #2f6aa8;--warn: #ffb454;--danger: #ff6b7a;--playhead: #ffd166;--cell-bg: #1a2029;--cell-hover: #2a3340;--shadow: 0 4px 24px rgba(0, 0, 0, .5);color-scheme:dark}body[data-theme=light]{--bg: #f4f6fa;--panel: #ffffff;--panel-2: #eef1f6;--border: #d5dae3;--text: #1a2029;--text-dim: #5b6776;--accent: #2f6aa8;--accent-dim: #4ea1ff;--warn: #c9760b;--danger: #c94250;--playhead: #e09a1a;--cell-bg: #eef1f6;--cell-hover: #dde2ec;--shadow: 0 2px 12px rgba(30, 40, 60, .1);color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text)}body{display:flex;flex-direction:column;min-height:100vh}#topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border);gap:16px;flex-wrap:wrap;position:relative}.nav-toggle{display:none;background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:6px;width:34px;height:34px;align-items:center;justify-content:center;cursor:pointer;padding:0}.nav-toggle svg{width:18px;height:18px;display:block}.nav-toggle:hover{color:var(--text);border-color:var(--accent)}.nav-toggle[aria-expanded=true]{background:var(--accent-dim);color:#fff;border-color:var(--accent)}.brand{display:flex;align-items:baseline;gap:10px}.brand-mark{font-weight:700;background:linear-gradient(180deg,#4ea1ff,#9b6bff);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:22px;letter-spacing:.5px}.brand-title{color:var(--text-dim);font-size:14px}#space-nav{display:flex;gap:6px;flex-wrap:wrap;flex:1}#space-nav button{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:6px 12px;border-radius:6px;font-size:13px;cursor:pointer;transition:all .12s ease}#space-nav button.active{background:var(--accent-dim);color:var(--bg);border-color:var(--accent)}body[data-theme=light] #space-nav button.active{color:#fff}#space-nav button:disabled{cursor:not-allowed;opacity:.55}#space-nav button:not(:disabled):hover{color:var(--text);border-color:var(--accent)}.topbar-actions{display:flex;gap:8px}.topbar-actions button{background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:6px;width:32px;height:32px;cursor:pointer;font-size:16px;font-weight:600}.topbar-actions button:hover{color:var(--text);border-color:var(--accent)}#app{flex:1;display:grid;grid-template-rows:minmax(180px,calc(var(--upper-fraction, .58) * (100vh - 220px))) 6px auto minmax(140px,1fr);gap:1px;background:var(--border);min-height:0}#lattice-view{position:relative;background:var(--panel);overflow:hidden;min-height:180px}#lattice-canvas{position:absolute;inset:0}.lattice-overlay{position:absolute;z-index:2}.lattice-overlay-tr{top:10px;right:10px;display:flex;flex-direction:column;gap:6px;align-items:flex-end;max-width:calc(100% - 20px)}.lattice-controls{display:flex;flex-direction:row;gap:6px;align-items:stretch;flex-wrap:nowrap}.overlay-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text);background:#1a2029d9;border:1px solid var(--border);border-radius:6px;padding:4px 10px;cursor:pointer;user-select:none;backdrop-filter:blur(6px)}body[data-theme=light] .overlay-toggle{background:#ffffffd9}.overlay-toggle input{margin:0;cursor:pointer}.icon-btn{background:#1a2029d9;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:13px;cursor:pointer;backdrop-filter:blur(6px)}body[data-theme=light] .icon-btn{background:#ffffffd9}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.legend{background:#12161dd1;border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:12px;color:var(--text-dim);display:grid;gap:4px;grid-template-columns:auto auto;column-gap:12px;max-width:320px;backdrop-filter:blur(6px)}body[data-theme=light] .legend{background:#ffffffe0}.legend .swatch{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:6px;vertical-align:middle}.resize-handle{height:6px;background:var(--panel-2);cursor:ns-resize;display:flex;align-items:center;justify-content:center;user-select:none;position:relative;z-index:3}.resize-handle:hover,.resize-handle.dragging{background:var(--accent-dim)}.resize-grip{display:block;width:36px;height:2px;background:var(--border);border-radius:2px}.resize-handle:hover .resize-grip,.resize-handle.dragging .resize-grip{background:var(--bg)}#transport{background:var(--panel);padding:10px 16px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.transport-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.transport-spacer{flex:1}#transport button{background:var(--accent-dim);color:#fff;border:1px solid var(--accent);border-radius:6px;padding:6px 16px;font-size:14px;cursor:pointer}#transport button:hover{background:var(--accent)}#transport button.playing{background:var(--warn);border-color:var(--warn);color:#1a1a1a}.theme-btn{background:transparent!important;color:var(--text-dim)!important;border-color:var(--border)!important}.theme-btn:hover{color:var(--text)!important;border-color:var(--accent)!important}.control{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-dim)}.control select,.control input{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:13px}.control input[type=range]{width:140px;padding:0}.chord-picker{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:6px;padding:6px 12px;background:var(--panel-2)}.chord-picker legend{padding:0 6px;color:var(--text-dim);font-size:12px}.chord-picker label{font-size:12px;color:var(--text-dim);display:inline-flex;align-items:center;gap:4px}.chord-name{font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--accent);font-size:14px}.hint{margin:0;color:var(--text-dim);font-size:12px}.hint kbd{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;background:var(--panel-2);border:1px solid var(--border);border-radius:3px;padding:1px 5px;color:var(--text)}#timeline-view{background:var(--panel);padding:10px;overflow:auto;min-height:120px;position:relative}.tl-playhead{position:absolute;top:4px;bottom:4px;width:2px;background:var(--danger);box-shadow:0 0 8px #ff6b7aa6;pointer-events:auto;cursor:ew-resize;z-index:5;transform:translate(0);will-change:transform;display:none;touch-action:none}.tl-playhead:before{content:"";position:absolute;top:-6px;left:-7px;width:16px;height:16px;border-radius:50%;background:var(--danger);box-shadow:0 0 10px #ff6b7ad9;cursor:ew-resize}.tl-playhead:after{content:"";position:absolute;inset:0 -8px;cursor:ew-resize}.tl-row.tl-header .tl-cells{cursor:ew-resize;background:linear-gradient(to bottom,transparent,rgba(255,107,122,.04));border-radius:3px}.tl-row.tl-header .tl-cells:hover{background:linear-gradient(to bottom,transparent,rgba(255,107,122,.14))}body.scrubbing,body.scrubbing *{cursor:ew-resize!important;user-select:none}#timeline{display:flex;flex-direction:column;gap:4px;outline:none}#timeline:focus-within{box-shadow:0 0 0 1px var(--accent-dim);border-radius:4px}.tl-row{display:grid;grid-template-columns:168px 1fr;gap:6px;align-items:stretch;min-height:34px}.tl-row.tl-header{min-height:20px}.tl-row.muted .tl-cells{opacity:.45}.tl-track-head{display:flex;align-items:center;gap:6px;padding:2px 6px;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;font-size:12px;color:var(--text-dim)}.tl-track-head.tl-track-head-spacer{background:transparent;border-color:transparent}.tl-track-label{flex:1;color:var(--text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl-track-swatch{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px #00000040}.tl-track-inst{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:3px;padding:2px 4px;font-size:11px;max-width:72px;flex-shrink:1;min-width:0}.tl-track-mute{background:transparent!important;color:var(--text-dim)!important;border:1px solid var(--border)!important;border-radius:3px!important;padding:0!important;font-size:11px!important;cursor:pointer;width:24px;height:22px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.tl-track-mute svg{width:14px;height:14px;display:block}.tl-track-mute:hover{color:var(--text)!important;border-color:var(--accent)!important}.tl-track-mute.is-muted{background:var(--warn)!important;color:#1a1a1a!important;border-color:var(--warn)!important}.tl-cells{display:grid;grid-template-columns:repeat(var(--cells, 32),minmax(18px,1fr));gap:2px}.tl-cell{background:var(--cell-bg);border:1px solid var(--border);border-radius:3px;font-size:11px;color:var(--text-dim);display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;transition:background 80ms ease;overflow:hidden}.tl-cell:hover{background:var(--cell-hover)}.tl-cell.downbeat{border-left:2px solid var(--accent-dim)}.tl-cell.beat{border-left:1px dashed var(--border)}.tl-cell.filled{background:var(--cell-color, var(--accent-dim));color:#1a1a1a;font-weight:600}body[data-theme=light] .tl-cell.filled{color:#0b0d12}.tl-cell.selected{outline:2px solid var(--accent);outline-offset:-2px}.tl-cell.tl-cell-header{background:transparent;border-color:transparent;cursor:default;color:var(--text-dim)}.tl-cell.tl-cell-bar-start{color:var(--text);font-weight:600}.tl-cell.filled{position:relative;padding-right:8px}.tl-cell-grip{position:absolute;top:0;right:0;bottom:0;width:6px;cursor:ew-resize;border-radius:0 3px 3px 0;background:transparent;transition:background 80ms ease;touch-action:none}.tl-cell.filled:hover .tl-cell-grip,.tl-cell-grip.dragging{background:#ffffff59}body[data-theme=light] .tl-cell.filled:hover .tl-cell-grip,body[data-theme=light] .tl-cell-grip.dragging{background:#00000040}body.resizing-cell,body.resizing-cell *{cursor:ew-resize!important;user-select:none}.legend-title{color:var(--text);font-weight:600;margin-top:4px}.legend-title:first-child{margin-top:0}#bottombar{background:var(--panel);border-top:1px solid var(--border);padding:8px 16px;font-size:12px;color:var(--text-dim)}#bottombar a{color:var(--accent)}.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center}.modal.hidden{display:none}.modal-backdrop{position:absolute;inset:0;background:#05070a99;backdrop-filter:blur(3px)}.modal-panel{position:relative;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:20px 24px;max-width:820px;width:calc(100% - 32px);max-height:calc(100vh - 32px);overflow:auto;box-shadow:var(--shadow)}.modal-panel h2{margin:0 0 4px;font-size:20px}.tour-lead{color:var(--text-dim);margin-top:0}.tour-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:16px 0}.tour-grid h3{font-size:14px;margin:0 0 6px;color:var(--accent)}.tour-grid ul{margin:0;padding-left:18px;color:var(--text);font-size:13px;line-height:1.45}.tour-grid li+li{margin-top:4px}.tour-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:8px;border-top:1px solid var(--border)}.tour-checkbox{display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:13px}.modal-panel button.primary{background:var(--accent-dim);color:#fff;border:1px solid var(--accent);border-radius:6px;padding:8px 18px;font-size:14px;cursor:pointer}.modal-panel button.primary:hover{background:var(--accent)}@media (max-width: 820px){.tour-grid{grid-template-columns:1fr}.tl-row{grid-template-columns:132px 1fr}.control input[type=range]{width:100px}}@media (max-width: 720px){#topbar{padding:8px 12px;gap:8px}.brand-title{display:none}.nav-toggle{display:inline-flex;order:1;margin-left:auto}.topbar-actions{order:2}#space-nav{order:3;flex-basis:100%;flex-direction:column;align-items:stretch;padding:6px;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;display:none;max-height:60vh;overflow-y:auto;box-shadow:var(--shadow)}#space-nav.open{display:flex}#space-nav button{width:100%;text-align:left;padding:10px 12px;font-size:14px}.lattice-overlay-tr{top:6px;right:6px;gap:4px}.lattice-controls{flex-wrap:wrap;justify-content:flex-end}.legend{max-width:calc(100vw - 24px);font-size:11px;padding:6px 8px}.tl-row{grid-template-columns:120px 1fr}.tl-track-inst{max-width:64px}}
