.analyze-container{--radius:5px;display:flex;flex-direction:column;min-height:100vh;background:var(--bg);color:var(--text)}.drop-zone{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 20px}.drop-box{width:640px;max-width:100%;border:2px dashed var(--border);border-radius:16px;padding:64px 48px;text-align:center;cursor:pointer;background:color-mix(in srgb,var(--surface) 60%,transparent);transition:border-color .18s ease,background .18s ease,transform .18s ease,box-shadow .18s ease}.drop-box:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 4%,var(--surface) 96%);transform:translateY(-2px);box-shadow:0 24px 60px color-mix(in srgb,var(--accent) 12%,transparent)}.drop-box .icon{font-size:52px;margin-bottom:18px;opacity:.6;line-height:1}.drop-box p{font-size:14px;color:var(--text-dim);line-height:1.7;margin:0}.drop-box strong{color:var(--text);font-weight:700}.drop-btns{margin-top:24px;display:flex;gap:12px;flex-wrap:wrap}.drop-btns,.file-btn{justify-content:center}.file-btn{display:inline-flex;align-items:center;min-height:48px;padding:0 28px;font-family:inherit;font-size:14px;font-weight:600;border-radius:9999px;cursor:pointer;letter-spacing:.01em;border:1px solid transparent;transition:transform .16s ease,opacity .16s ease,background .16s ease,border-color .16s ease}.file-btn.primary{background:var(--brand-gradient);color:#fff;box-shadow:none}.file-btn.primary:hover{transform:scale(1.03);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 28%,transparent)}.file-btn.primary:active{transform:scale(.98)}.file-btn.secondary{background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--text);border-color:color-mix(in srgb,var(--accent) 25%,var(--border))}.file-btn.secondary:hover:not([disabled]){background:color-mix(in srgb,var(--accent) 16%,var(--surface));border-color:color-mix(in srgb,var(--accent) 50%,var(--border))}.file-btn[disabled]{opacity:.55;cursor:not-allowed;transform:none!important;pointer-events:none}.url-picker{margin-top:24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px;width:100%;max-width:560px;margin-left:auto;margin-right:auto}.url-input{flex:1 1 100%;min-width:0;min-height:48px;padding:0 22px;font-family:inherit;font-size:14px;color:var(--text);background:color-mix(in srgb,var(--panel) 60%,transparent);border:1px solid var(--border);border-radius:9999px;outline:none;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.url-input:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}.url-input:focus{border-color:var(--accent);background:color-mix(in srgb,var(--panel) 80%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent)}.url-input::-moz-placeholder{color:var(--muted);opacity:.8}.url-input::placeholder{color:var(--muted);opacity:.8}.url-picker .file-btn{flex:0 0 auto;min-width:120px}.loading-state{flex:1;justify-content:center;gap:20px}.loading-state,.youtube-player-wrap{display:flex;flex-direction:column;align-items:center}.youtube-player-wrap{gap:6px;padding:10px 24px 14px}.youtube-player{width:100%;max-width:360px;aspect-ratio:16/9;border:1px solid var(--border);border-radius:8px;background:#000;overflow:hidden}.youtube-player iframe,.youtube-player>div{width:100%;height:100%;border:0;display:block}.youtube-link{font-size:11px;color:var(--accent2);text-decoration:none}.youtube-link:hover{text-decoration:underline}.progress-track{width:min(420px,80vw);height:8px;border-radius:999px;background:var(--surface2);border:1px solid var(--border);overflow:hidden}.progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .18s ease}.progress-text{font-size:10px;color:var(--text-dim);letter-spacing:1px;text-transform:uppercase}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.error-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px}.error-state p{font-size:14px;color:var(--danger)}.error-state button{padding:8px 20px;background:var(--accent);color:var(--bg);border:none;border-radius:4px;cursor:pointer;font-family:Space Mono,monospace;font-weight:700;font-size:11px;letter-spacing:1px}.error-state button:hover{opacity:.9}.error-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.error-state .retry-primary{background:var(--accent);color:var(--bg)}.error-state .retry-secondary{background:transparent;color:var(--dim);border:1px solid var(--border)}.error-state .retry-secondary:hover{color:var(--text);border-color:var(--text-dim,var(--dim))}.upload-status{margin-top:8px;font-size:11px;font-family:Space Mono,monospace;color:var(--text-dim,var(--dim));font-variant-numeric:tabular-nums}.player-shell{flex:1;display:flex;flex-direction:column}.player-controls-sticky{position:sticky;top:48px;z-index:30;background:var(--bg);margin:0}.player-controls-sticky,.topbar{border-bottom:1px solid var(--border)}.topbar{display:flex;align-items:center;gap:20px;padding:16px 24px;flex-wrap:wrap;flex-shrink:0}.song-info{flex:1}.song-info h2{font-family:Syne,sans-serif;font-size:13px;font-weight:800;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-pills{display:flex;gap:8px;flex-wrap:wrap}.pill{font-size:10px;padding:3px 10px;border-radius:20px;border:1px solid var(--border);color:var(--text-dim);white-space:nowrap}.pill b{color:var(--accent2);font-weight:700}.pill-key{position:relative;display:inline-flex;align-items:center;gap:6px}.pill-key-uncertain{border-style:dashed;color:var(--text-dim,var(--dim))}.pill-key-uncertain b{color:var(--accent3,#f07840)}.key-confidence-badge{display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:14px;padding:0 4px;border-radius:7px;font-size:9px;font-weight:800;background:var(--accent3,#f07840);color:var(--bg);letter-spacing:0}.key-confidence-badge.subtle{background:transparent;color:var(--text-dim,var(--dim));font-weight:600}.pill-timesig{position:relative;display:inline-flex;align-items:center;gap:4px}.pill-timesig-uncertain{border-style:dashed}.timesig-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--text,inherit);font:inherit;font-weight:700;padding:0 2px;cursor:pointer;outline:none}.timesig-select:focus-visible{outline:1px solid var(--accent,#6aa6ff);outline-offset:2px;border-radius:2px}.timesig-select option{background:var(--surface,#16161c);color:var(--text,#e8e8f0)}.bar-segment.strong-beat{box-shadow:inset 2px 0 0 var(--accent,#6aa6ff)}.bar-segment.strong-beat.has-chord{font-weight:600}.bar.bar-pickup .bar-number{color:var(--text-dim,var(--dim));font-style:italic;opacity:.7}.bar.bar-pickup{opacity:.92}.bar.bar-placeholder{visibility:hidden;pointer-events:none;border-color:transparent;background:transparent;box-shadow:none}.bar.bar-placeholder:hover{border-color:transparent;box-shadow:none;transform:none}.transpose-controls{display:flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--border);border-radius:4px;background:var(--surface)}.transpose-controls label{font-size:10px;color:var(--text-dim);margin-right:6px}.transpose-controls button{width:24px;height:24px;border:1px solid var(--border);background:transparent;color:var(--text);border-radius:3px;cursor:pointer;font-size:12px;font-weight:700;transition:all .15s}.transpose-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.transpose-controls button:disabled{opacity:.4;cursor:not-allowed}.transpose-value{min-width:24px;text-align:center;font-size:11px;color:var(--accent);font-weight:700;font-family:Syne,sans-serif}.sharp-flat-toggle button{color:var(--text-dim,var(--dim))}.sharp-flat-toggle button:hover{color:var(--text,var(--accent))}.mode-toggle{display:inline-flex;border:1px solid var(--border);border-radius:4px;background:var(--surface);overflow:hidden}.mode-toggle button{height:30px;padding:0 12px;background:transparent;border:0;color:var(--text-dim,var(--dim));font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,color .15s;border-left:1px solid var(--border);white-space:nowrap}.mode-toggle button:first-child{border-left:0}.mode-toggle button:hover{color:var(--text,var(--accent))}.mode-toggle button.active{background:var(--accent);color:var(--bg)}.open-maker-btn{font-size:12px;font-weight:600;padding:6px 12px;border-radius:6px;border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--text);cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease}.open-maker-btn:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}.reset-btn{padding:6px 14px;border-radius:4px;font-size:10px;font-family:Space Mono,monospace;border:1px solid var(--border);background:transparent;color:var(--dim);cursor:pointer;transition:all .15s;letter-spacing:.5px}.reset-btn:hover{border-color:var(--danger);color:var(--danger)}audio{padding:10px!important;background:var(--surface)!important;border-radius:4px!important;border:1px solid var(--border)!important}audio::-webkit-media-controls-panel{background-color:var(--surface2)!important}audio::-webkit-media-controls-current-time-display,audio::-webkit-media-controls-time-remaining-display{color:var(--text-dim)!important}audio::-webkit-media-controls-mute-button:hover,audio::-webkit-media-controls-play-button:hover,audio::-webkit-media-controls-volume-slider:hover{background:rgba(200,241,53,.1)!important}.transport-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;margin:0 24px 10px;background:var(--surface);border:1px solid var(--border);border-radius:4px;flex-wrap:wrap}.transport-btn{width:36px;height:36px;border-radius:50%;background:var(--accent);color:var(--bg);border:0;cursor:pointer;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:0;transition:opacity .15s,transform .1s}.transport-btn:hover{opacity:.88}.transport-btn:active{transform:scale(.96)}.transport-time{font-family:Space Mono,monospace;font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums;min-width:40px;text-align:center}.transport-seek{flex:1;min-width:120px;height:4px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--border);border-radius:2px;cursor:pointer;outline:none}.transport-seek::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:pointer;margin-top:-5px}.transport-seek::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:pointer}.transport-seek:disabled{opacity:.5;cursor:not-allowed}.timeline-panel{flex:1;display:flex;flex-direction:column;border-top:1px solid var(--border);overflow:hidden}.timeline-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.timeline-info{display:flex;align-items:center;gap:12px}.timeline-label{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--dim)}.timeline-meta,.toggle-btn{font-size:10px;color:var(--text-dim)}.toggle-btn{padding:4px 12px;border-radius:4px;font-family:Space Mono,monospace;border:1px solid var(--border);background:transparent;cursor:pointer;transition:all .15s;letter-spacing:.5px}.toggle-btn:hover{border-color:var(--accent);color:var(--accent)}.timeline-content{flex:1;overflow-y:auto;padding:14px 20px}.chord-grid{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.chord-slot{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:all .15s;min-width:64px}.chord-slot:hover{border-color:var(--accent);background:var(--surface2)}.chord-slot.active{border-color:var(--accent);background:rgba(200,241,53,.12);box-shadow:inset 0 0 0 1px rgba(200,241,53,.25)}.chord-time{font-size:8px;color:var(--dim);font-variant-numeric:tabular-nums}.chord-name{font-family:Syne,sans-serif;font-size:15px;font-weight:800;color:var(--text);letter-spacing:-.5px}.chord-slot.active .chord-name{color:var(--accent)}.bars-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--border)}.bars-header{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--dim);margin-bottom:12px}.bars-grid{display:flex;flex-direction:column;gap:14px}.bar-system{display:flex;flex-wrap:wrap;gap:12px;align-items:stretch}.bar-system>.bar{flex-grow:var(--beat-count,4);flex-shrink:0;flex-basis:0;min-width:80px}.bar-system-lyrics{padding:6px 12px;margin-top:-4px;margin-bottom:4px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent);border-radius:0 6px 6px 0;font-size:14px;line-height:1.5;color:var(--text);font-weight:500;word-spacing:.05em}.bar-system-lyric-line{position:relative;cursor:pointer;border-radius:3px;padding:0 2px;transition:background .12s ease}.bar-system-lyric-line:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}.bar-system-lyric-line.editing{background:color-mix(in srgb,var(--accent) 28%,transparent)}.bar-system-lyric-sep{color:var(--accent);font-weight:700;margin:0 2px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}.song-subtitle{display:flex;gap:12px;margin-top:2px;font-size:12px;color:var(--dim);flex-wrap:wrap;align-items:baseline}.song-artist{font-weight:600;color:color-mix(in srgb,var(--text) 80%,transparent)}.song-genre{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--dim)}.chord-sheet-artist{font-size:14px;color:#6b7280;font-family:Inter,system-ui,sans-serif;margin-top:-2px;margin-bottom:8px;font-style:italic}.bar-segment.drag-source,.bar-system-lyric-line.drag-source{cursor:grab;-moz-user-select:none;user-select:none;-webkit-user-select:none;touch-action:none}.bar-segment.drag-source.dragging,.bar-system-lyric-line.drag-source.dragging{cursor:grabbing;opacity:.4}.drop-target{outline:2px dashed var(--accent);outline-offset:2px;border-radius:4px}.drag-ghost{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;background:var(--surface);border:1.5px solid var(--accent);border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.32);font-family:Syne,sans-serif;font-size:12px;font-weight:700;color:var(--text);pointer-events:none}.drag-ghost-label{color:var(--accent)}.drag-ghost-chip{font-family:ui-monospace,Roboto Mono,Menlo,monospace;font-size:10px;font-weight:600;color:var(--dim);padding:2px 6px;background:color-mix(in srgb,var(--accent) 14%,transparent);border-radius:3px;font-variant-numeric:tabular-nums;white-space:nowrap}.timeline-content{position:relative}.pin-connector-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.pin-connector-layer line{stroke:var(--accent);opacity:.55}.edit-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;margin-bottom:8px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 6%,transparent);flex-wrap:wrap}.edit-toolbar-hint{font-size:12px;color:var(--text);flex:1;min-width:240px;font-variant-numeric:tabular-nums}.edit-toolbar-actions{display:inline-flex;gap:6px}.edit-toolbar-btn{font-size:12px;font-weight:600;padding:6px 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;transition:border-color .12s ease,background .12s ease,opacity .12s ease}.edit-toolbar-btn:hover:not(:disabled){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.edit-toolbar-btn:disabled{opacity:.45;cursor:not-allowed}.lead-sheet{font-family:ui-monospace,Roboto Mono,Menlo,monospace;line-height:1.5;color:var(--text);padding:8px 4px}.lead-sheet-header{margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border)}.lead-sheet-header h1{margin:0 0 4px;font-size:18px;font-weight:700;font-family:Inter,system-ui,sans-serif;letter-spacing:-.01em}.lead-sheet-artist{font-size:13px;margin-bottom:6px;font-style:italic}.lead-sheet-artist,.lead-sheet-meta{color:var(--dim);font-family:Inter,system-ui,sans-serif}.lead-sheet-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:11px}.lead-sheet-meta b{color:var(--text);font-weight:700}.lead-sheet-body{display:flex;flex-direction:column;gap:12px}.lead-sheet-block{position:relative}.bar-mark{font-size:9px;color:color-mix(in srgb,var(--dim) 70%,transparent);font-family:Inter,system-ui,sans-serif;font-weight:600;letter-spacing:.05em;text-transform:uppercase;margin-bottom:2px}.sheet-vocal{padding:2px 0;border-bottom:1px dashed color-mix(in srgb,var(--border) 40%,transparent)}.sheet-chord-track{height:13px;margin-bottom:0;border-radius:3px;transition:background .1s ease,height .1s ease}.sheet-chord-track.is-empty{height:0;overflow:hidden}.sheet-line-wrap:hover .sheet-chord-track.is-empty,.sheet-vocal:hover .sheet-chord-track.is-empty{height:13px}.sheet-chord-track.drop-target{background:color-mix(in srgb,var(--accent) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.sheet-chord{font-size:11px;color:var(--accent);padding:0 4px;border-radius:3px;line-height:1.3}.sheet-chord.drag-source{cursor:grab;-moz-user-select:none;user-select:none;-webkit-user-select:none;touch-action:none}.sheet-chord.drag-source:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}.sheet-chord.drag-source.dragging{cursor:grabbing;opacity:.4}.sheet-lyric{font-size:14px;line-height:1.2;color:var(--text)}.sheet-vocal.paired{padding:2px 0}.sheet-vocal.paired .sheet-paired-flow{display:flex;flex-wrap:wrap;align-items:flex-end;gap:2px 22px}.sheet-vocal.paired .sheet-paired-pair{display:inline-flex;flex-direction:column;align-items:flex-start;min-width:0}.sheet-vocal.paired .sheet-paired-chord-row{min-height:13px;line-height:1.3;display:inline-flex;gap:4px}.sheet-vocal.paired .sheet-paired-chord-row .sheet-chord{position:static;transform:none;padding:0;font-size:11px;font-weight:700;color:var(--accent);line-height:1.3;white-space:nowrap}.sheet-vocal.paired .sheet-paired-lyric{font-size:14px;line-height:1.2;white-space:nowrap;color:inherit}.sheet-line-wrap{margin-left:0}.sheet-line-wrap,.sheet-line-wrap .sheet-blank,.sheet-line-wrap .sheet-instru,.sheet-line-wrap .sheet-section,.sheet-line-wrap .sheet-vocal{position:relative}.sheet-line-gutter{position:absolute;top:4px;left:-132px;display:flex;gap:2px;padding:2px 4px;border-radius:4px;background:color-mix(in srgb,var(--surface) 80%,transparent);border:1px solid color-mix(in srgb,var(--border) 60%,transparent);opacity:0;transition:opacity .1s ease}.sheet-line-wrap:focus-within .sheet-line-gutter,.sheet-line-wrap:hover .sheet-line-gutter{opacity:1}.sheet-line-gutter button{font-size:11px;font-weight:600;width:18px;height:18px;padding:0;border:0;border-radius:3px;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center;line-height:1}.sheet-line-gutter button:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--text)}.sheet-line-gutter button:disabled{opacity:.3;cursor:not-allowed}.sheet-line-wrap-prepend{margin:4px 0 8px}.sheet-line-prepend-btn{font-size:11px;color:var(--muted);background:transparent;border:1px dashed color-mix(in srgb,var(--border) 60%,transparent);border-radius:4px;padding:4px 10px;cursor:pointer;opacity:.5;transition:opacity .1s ease}.sheet-line-prepend-btn:hover{opacity:1;border-color:var(--accent);color:var(--text)}.sheet-chord-track.editable{cursor:text}.sheet-chord-track.editable:hover:not(.drop-target){background:color-mix(in srgb,var(--accent) 4%,transparent)}.sheet-lyric.editable,.sheet-section.editable{outline:0;border-radius:3px;padding:1px 4px;margin:0 -4px;min-height:1.4em}.sheet-lyric.editable:focus,.sheet-section.editable:focus{background:color-mix(in srgb,var(--accent) 6%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.sheet-chord-delete{position:absolute;top:-7px;right:-7px;width:14px;height:14px;padding:0;border:0;border-radius:50%;background:var(--surface);color:var(--muted);font-size:9px;line-height:1;display:none;place-items:center;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.2)}.sheet-chord.drag-source:hover .sheet-chord-delete{display:grid}.sheet-chord-delete:hover{background:#dc2626;color:#fff}.sheet-chord.draft{min-width:28px;background:color-mix(in srgb,var(--accent) 22%,transparent);outline:1px dashed var(--accent);cursor:text}.sheet-chord.draft:focus{outline-style:solid}.sheet-instru{font-size:12px;padding:2px 8px;border-radius:4px}.sheet-instru.clickable{cursor:pointer;transition:background .12s ease}.sheet-instru.clickable:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.sheet-instru-label{color:var(--text);font-family:Inter,system-ui,sans-serif;text-transform:uppercase;font-size:11px;letter-spacing:.05em}.sheet-instru-chords{color:var(--accent)}.sheet-instru-expanded{border:1px dashed var(--accent);border-radius:6px;padding:8px 10px;background:color-mix(in srgb,var(--accent) 6%,transparent)}.sheet-instru-expanded-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.sheet-instru-collapse{font-size:11px;font-weight:600;padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);cursor:pointer}.sheet-instru-collapse:hover{border-color:var(--accent)}.sheet-instru-bargrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px}.sheet-instru-bar{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:4px;padding:4px;background:var(--surface)}.sheet-instru-bar-num{font-size:9px;color:var(--dim);letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px;font-family:Inter,system-ui,sans-serif}.sheet-instru-bar-beats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px}.sheet-instru-beat{text-align:center;font-size:11px;font-weight:700;color:var(--accent);padding:4px 2px;border-radius:3px;background:var(--surface2)}.sheet-instru-beat.has{background:color-mix(in srgb,var(--accent) 20%,transparent)}.chord-sheet .lead-sheet{color:#111;padding:0}.chord-sheet .lead-sheet-header{border-bottom-color:#111;border-bottom-width:2px}.chord-sheet .lead-sheet-header h1{color:#111;font-size:20px}.chord-sheet .lead-sheet-artist,.chord-sheet .lead-sheet-meta{color:#6b7280}.chord-sheet .lead-sheet-meta b{color:#111}.chord-sheet .sheet-chord{color:#2563eb}.chord-sheet .sheet-instru-label,.chord-sheet .sheet-lyric{color:#111}.chord-sheet .sheet-instru-chords{color:#2563eb}.chord-sheet .bar-mark{color:#9ca3af}.chord-sheet .sheet-vocal{border-bottom-color:#e5e7eb}.bar-num-badge{display:inline-block;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--accent) 80%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:3px;padding:1px 4px;margin-right:4px;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none}.lyric-popover{position:absolute;top:calc(100% + 4px);left:0;display:inline-flex;gap:2px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.18);z-index:20}.lyric-popover-btn{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--text);cursor:pointer;transition:border-color .12s ease,background .12s ease,color .12s ease}.lyric-popover-btn:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.lyric-popover-btn.danger:hover{border-color:#dc2626;color:#dc2626;background:color-mix(in srgb,#dc2626 10%,transparent)}.chord-sheet-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.chord-sheet-modal{background:#fff;color:#111;width:min(820px,100%);max-height:90vh;overflow-y:auto;border-radius:8px;box-shadow:0 16px 48px rgba(0,0,0,.32);display:flex;flex-direction:column}.chord-sheet-toolbar{display:flex;gap:8px;padding:12px 16px;border-bottom:1px solid #e5e7eb;background:#f9fafb;position:sticky;top:0;z-index:1}.chord-sheet-action{padding:6px 14px;font-size:13px;font-weight:600;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#111;cursor:pointer}.chord-sheet-action.primary{background:#111;color:#fff;border-color:#111}.chord-sheet-action:hover{filter:brightness(.95)}.chord-sheet{padding:32px 36px;font-family:ui-monospace,Roboto Mono,Menlo,monospace;line-height:1.5;color:#111}.chord-sheet-header{margin-bottom:24px;padding-bottom:12px;border-bottom:2px solid #111}.chord-sheet-header h1{margin:0 0 6px;font-size:20px;font-weight:700;font-family:Inter,system-ui,sans-serif;letter-spacing:-.01em}.chord-sheet-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:#6b7280;font-family:Inter,system-ui,sans-serif}.chord-sheet-meta b{color:#111;font-weight:700}.chord-sheet-body{display:flex;flex-direction:column;gap:14px}.sheet-instru{font-size:13px;letter-spacing:.02em}.sheet-instru-label{display:inline-block;font-weight:700;color:#111;margin-right:12px}.sheet-instru-chords{color:#2563eb;font-weight:600}.sheet-vocal{position:relative}.sheet-chord-track{position:relative;height:18px;margin-bottom:2px}.sheet-chord{position:absolute;top:0;font-size:12px;font-weight:700;color:#2563eb;white-space:nowrap;transform:translateX(-2px)}.sheet-lyric{font-size:15px;font-family:Sarabun,Noto Sans Thai,system-ui,sans-serif;color:#111;white-space:pre-wrap}@media print{.chord-sheet-overlay{position:static;background:none;padding:0}.chord-sheet-modal{box-shadow:none;max-height:none;overflow:visible;width:100%}.chord-sheet-toolbar{display:none}.chord-sheet{padding:12mm}}.bar{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 95%,transparent);padding:16px;transition:box-shadow .2s ease,border-color .2s ease,transform .12s ease}.bar:hover{border-color:var(--accent);box-shadow:0 8px 24px rgba(0,0,0,.18);transform:translateY(-4px)}.bar-number{font-size:8px;color:var(--dim);margin-bottom:8px;font-weight:700}.lyrics-panel{margin-bottom:12px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 95%,transparent)}.lyrics-panel-header{display:flex;align-items:center;gap:12px;padding:10px 14px}.lyrics-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:600;color:var(--text);background:transparent;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:border-color .12s ease,background .12s ease}.lyrics-toggle:hover{border-color:var(--accent)}.lyrics-toggle.open{background:color-mix(in srgb,var(--accent) 10%,transparent)}.lyrics-stat{font-size:12px;color:var(--dim)}.lyrics-panel-body{padding:0 14px 14px;display:flex;flex-direction:column;gap:10px}.lyrics-textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.5;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface2);color:var(--text);resize:vertical}.lyrics-textarea:focus{outline:none;border-color:var(--accent)}.lyrics-panel-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lyrics-action{padding:6px 14px;font-size:13px;font-weight:600;border-radius:6px;border:1px solid var(--border);cursor:pointer;transition:background .12s ease,border-color .12s ease,opacity .12s ease}.lyrics-action.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}.lyrics-action.primary:hover:not(:disabled){filter:brightness(1.1)}.lyrics-action.secondary{background:transparent;color:var(--text)}.lyrics-action.secondary:hover:not(:disabled){border-color:var(--accent)}.lyrics-action:disabled{opacity:.45;cursor:not-allowed}.lyrics-sync-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:4px 10px;border-radius:4px;border:1px solid color-mix(in srgb,var(--border) 60%,transparent);font-variant-numeric:tabular-nums}.lyrics-sync-badge.ok{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.lyrics-sync-badge.miss{color:var(--muted);background:color-mix(in srgb,var(--border) 30%,transparent)}.lyrics-sync-badge.captions{color:#b45309;background:color-mix(in srgb,#f59e0b 12%,transparent);border-color:color-mix(in srgb,#f59e0b 40%,transparent)}.lyrics-hint{font-size:12px;color:var(--dim);margin-left:auto}.lyrics-count-hint{font-size:12px;font-weight:600;margin-left:auto;padding:4px 10px;border-radius:999px;border:1px solid transparent}.lyrics-count-hint.neutral{color:var(--dim);border-color:var(--border)}.lyrics-count-hint.good{color:#16a34a;background:color-mix(in srgb,#22c55e 14%,transparent);border-color:color-mix(in srgb,#22c55e 35%,transparent)}.lyrics-count-hint.warn{color:#d97706;background:color-mix(in srgb,#f59e0b 14%,transparent);border-color:color-mix(in srgb,#f59e0b 35%,transparent)}.lyrics-shift{gap:6px;margin-left:auto}.lyrics-shift,.lyrics-shift-btn{display:inline-flex;align-items:center}.lyrics-shift-btn{width:26px;height:26px;justify-content:center;font-size:12px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--text);cursor:pointer;transition:border-color .12s ease,background .12s ease}.lyrics-shift-btn:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.lyrics-shift-value{min-width:64px;text-align:center;font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}.lyrics-shift-reset{font-size:11px;padding:3px 8px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--dim);cursor:pointer}.lyrics-shift-reset:hover{color:var(--text);border-color:var(--accent)}.lyrics-offset-tuner{display:flex;flex-direction:column;gap:8px;margin-top:10px;padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:color-mix(in srgb,var(--border) 14%,transparent)}.lyrics-offset-warning{font-size:12px;font-weight:600;color:#d97706;padding:6px 10px;border-radius:4px;background:color-mix(in srgb,#f59e0b 14%,transparent);border:1px solid color-mix(in srgb,#f59e0b 40%,transparent)}.lyrics-offset-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lyrics-offset-label{font-size:12px;font-weight:600;color:var(--dim);display:inline-flex;align-items:center;gap:6px}.lyrics-offset-source{font-size:11px;font-weight:500;padding:2px 6px;border-radius:999px;border:1px solid var(--border);color:var(--dim)}.lyrics-offset-source.auto{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.lyrics-offset-source.manual{color:#2563eb;border-color:color-mix(in srgb,#3b82f6 40%,transparent);background:color-mix(in srgb,#3b82f6 12%,transparent)}.lyrics-offset-source.low{color:#d97706;border-color:color-mix(in srgb,#f59e0b 40%,transparent);background:color-mix(in srgb,#f59e0b 12%,transparent)}.lyrics-offset-slider{flex:1 1 220px;min-width:180px;accent-color:var(--accent)}.lyrics-offset-value{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);min-width:110px}.lyrics-offset-dirty{color:var(--dim);font-weight:500;font-style:italic}.lyrics-offset-apply,.lyrics-offset-reset{font-size:12px;padding:5px 12px}.bar-chords{display:grid;grid-template-columns:repeat(var(--beat-count,4),minmax(0,1fr));gap:4px}.bar-beat,.bar-segment{position:relative;display:flex;align-items:center;justify-content:center;min-height:48px;padding:8px 6px;border:1px solid var(--border);border-radius:3px;background:var(--surface2);color:var(--text);font-size:11px;font-weight:700;text-align:center;font-family:Syne,sans-serif;overflow:hidden;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .15s ease,opacity .15s ease}.bar-beat:hover,.bar-segment:hover{border-color:var(--accent);transform:translateY(-1px)}.bar-beat.has-chord,.bar-segment.has-chord{background:color-mix(in srgb,var(--surface2) 82%,var(--accent) 18%)}.bar-beat.empty,.bar-segment.empty{opacity:.45}.bar-beat.beat-change,.bar-segment.beat-change{box-shadow:inset 0 0 0 1px rgba(78,240,196,.12)}.bar-beat.active,.bar-segment.active{border-color:var(--accent);background:rgba(200,241,53,.12);box-shadow:inset 0 0 0 1px rgba(200,241,53,.25),0 0 20px rgba(200,241,53,.12);opacity:1}.bar-segment.overridden{border-color:rgba(125,134,240,.7);background:color-mix(in srgb,var(--surface2) 78%,rgba(125,134,240,.2) 22%);box-shadow:inset 0 0 0 1px rgba(125,134,240,.18)}.bar-segment.overridden .segment-label{color:#b4bcff}.bar-segment.suspect{border-style:dashed;border-color:rgba(245,158,11,.8);background:color-mix(in srgb,var(--surface2) 80%,rgba(245,158,11,.18) 20%)}.bar-segment.suspect .segment-label{color:#fed7aa}.suspect-badge{position:absolute;top:2px;right:3px;width:13px;height:13px;border-radius:50%;background:rgba(245,158,11,.95);color:#1a1d2b;font-size:10px;font-weight:800;line-height:13px;text-align:center;pointer-events:none}.chord-edit-suggested{display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.chord-edit-suggested-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:rgba(245,158,11,.95);font-weight:700}.chord-edit-suggested-btn{padding:3px 9px;font-size:12px;font-weight:700;border-radius:3px;background:rgba(245,158,11,.18);border:1px solid rgba(245,158,11,.55);color:#fed7aa;cursor:pointer;font-variant-numeric:tabular-nums}.chord-edit-suggested-btn:hover{background:rgba(245,158,11,.32);color:#fff}.bar-segment.editable{cursor:pointer}.bar-segment.editable.drag-source{cursor:grab}.bar-segment.editable.drag-source.dragging{cursor:grabbing}.bar-segment.editable:hover{border-color:rgba(125,134,240,.9);box-shadow:inset 0 0 0 1px rgba(125,134,240,.35)}.chord-edit-popover{position:absolute;z-index:20;top:calc(100% + 4px);left:0;display:flex;gap:4px;padding:6px;background:var(--surface);border:1px solid rgba(125,134,240,.7);border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.5);font-family:Space Mono,monospace}.chord-edit-popover input{width:86px;padding:4px 6px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--text);font-family:Space Mono,monospace;font-size:11px;outline:none}.chord-edit-popover input:focus{border-color:rgba(125,134,240,.9)}.chord-edit-popover input.invalid{border-color:#ef4444}.chord-edit-popover button{border:0;border-radius:4px;padding:4px 8px;font-size:10px;font-weight:700;cursor:pointer;font-family:Space Mono,monospace}.chord-edit-popover button.primary{background:#7d86f0;color:var(--bg)}.chord-edit-popover button.primary:disabled{opacity:.4;cursor:not-allowed}.chord-edit-popover button.ghost,.chord-edit-popover button.secondary{background:transparent;color:var(--text-dim)}.chord-edit-popover button.ghost{border:1px solid var(--border)}.timeline-actions{display:flex;align-items:center;gap:8px}.edits-pill{padding:3px 8px;border-radius:999px;background:rgba(125,134,240,.15);color:#b4bcff;border:1px solid rgba(125,134,240,.4)}.edit-mode-toggle,.edits-pill{font-size:10px;letter-spacing:.5px}.edit-mode-toggle{padding:4px 10px;color:var(--text-dim)}.edit-mode-toggle.active{border-color:rgba(125,134,240,.9);color:#b4bcff}.timeline-edit-hint{padding:8px 20px;border-bottom:1px solid var(--border);font-size:10px;color:var(--text-dim);background:rgba(125,134,240,.05);letter-spacing:.3px}.bar-beat.active .segment-label,.bar-segment.active .segment-label{color:var(--accent)}.segment-label{position:absolute;inset:0;padding:6px;line-height:1.1}.no-data,.segment-label{display:flex;align-items:center;justify-content:center}.no-data{flex:1;font-size:11px;color:var(--dim)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--dim)}.full-pass-banner{display:flex;flex-direction:column;gap:6px;margin:10px 0;padding:10px 14px;background:var(--surface2,#1a1a24);border:1px solid var(--border);border-radius:8px}.full-pass-text{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12px}.full-pass-text strong{color:var(--text,#e8e8f0);font-weight:600}.full-pass-eta{color:var(--text-dim,var(--dim));font-size:11px;font-variant-numeric:tabular-nums}.full-pass-track{width:100%;height:6px;border-radius:999px;background:var(--surface,#0e0e16);border:1px solid var(--border);overflow:hidden}.full-pass-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .18s ease}.full-pass-banner[data-state=error]{border-color:var(--danger);background:rgba(240,85,102,.08)}.full-pass-banner[data-state=error] .full-pass-text strong{color:var(--danger)}.full-pass-actions{display:flex;justify-content:flex-end}.full-pass-retry{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--danger);color:#fff;border:0;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s,transform .1s}.full-pass-retry:hover{background:#d63d4d}.full-pass-retry:active{transform:translateY(1px)}.play-hud{display:flex;flex-direction:column;gap:6px;padding:8px 16px 6px;background:var(--bg);border-bottom:1px solid var(--border)}.play-hud-song{font-size:10px;color:var(--text-dim);letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.play-hud-chords{display:flex;align-items:baseline;gap:clamp(8px,3vw,22px);min-width:0;padding:0}.play-hud-next,.play-hud-now{font-family:Syne,sans-serif;font-weight:800;line-height:.95;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em}.play-hud-now{font-size:clamp(48px,12vw,88px);color:var(--accent);text-shadow:0 0 18px rgba(200,241,53,.18)}.play-hud-next{font-size:clamp(22px,5vw,38px);color:var(--text);opacity:.72}.play-hud-next-empty{opacity:.4;color:var(--text-dim)}.play-hud-arrow{font-size:clamp(16px,4vw,26px);color:var(--text-dim);flex-shrink:0}.play-hud-placeholder{font-family:Syne,sans-serif;font-size:clamp(20px,5vw,32px);color:var(--text-dim);font-weight:700;font-style:italic;opacity:.6}.play-hud-beats{display:flex;gap:6px;margin:2px 0}.play-hud-beat{flex:1;height:6px;border-radius:3px;background:var(--surface2);border:1px solid var(--border);transition:background 80ms ease,box-shadow 80ms ease}.play-hud-beat[data-strong=true]{border-color:color-mix(in srgb,var(--accent) 50%,var(--border) 50%)}.play-hud-beat[data-active=true]{background:var(--accent);border-color:var(--accent);box-shadow:0 0 10px rgba(200,241,53,.55)}.play-hud-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.play-hud-row-break{display:none}.play-hud-bpm{min-height:36px}.play-hud-bpm,.play-hud-transpose{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.play-hud-transpose{min-height:44px}.play-hud-transpose-label{font-family:Space Mono,monospace;font-size:9px;color:var(--text-dim);letter-spacing:.5px;text-transform:uppercase;margin-right:2px}.play-hud-transpose-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:transparent;color:var(--text);width:22px;height:22px;border-radius:4px;font-family:Syne,sans-serif;font-weight:800;font-size:14px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease,border-color .12s ease}.play-hud-transpose-btn:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--bg)}.play-hud-transpose-btn:disabled{opacity:.4;cursor:not-allowed}.play-hud-transpose-value{font-family:Syne,sans-serif;font-weight:800;font-size:14px;color:var(--text);font-variant-numeric:tabular-nums;min-width:24px;text-align:center}.play-hud-audio-shift{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid transparent;color:var(--text-dim);font-size:14px;line-height:1;margin-left:4px;padding:3px 6px;border-radius:4px;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease}.play-hud-audio-shift.on{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.play-hud-audio-shift.off{color:var(--text-dim);opacity:.65}.play-hud-audio-shift:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.play-hud-audio-shift.disabled,.play-hud-audio-shift:disabled{color:var(--text-dim);opacity:.4;cursor:not-allowed;background:transparent;border-color:transparent}.play-hud-audio-shift.inactive{opacity:.45}.play-hud-audio-source{display:inline-flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.play-hud-audio-source-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-dim);font:inherit;font-size:12px;font-weight:500;line-height:1;padding:6px 10px;border-radius:6px;cursor:pointer;transition:background-color .12s ease,color .12s ease}.play-hud-audio-source-chip:hover:not(.active){color:var(--text);background:color-mix(in srgb,var(--accent) 8%,transparent)}.play-hud-audio-source-chip.active{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--text)}.play-hud-divider{display:inline-block;width:1px;height:22px;background:var(--border);margin:0 4px;align-self:center;opacity:.7}.play-hud-lyrics-speed{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:4px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer}.play-hud-lyrics-speed-label{font-family:Space Mono,monospace;font-size:9px;color:var(--text-dim);letter-spacing:.5px;text-transform:uppercase}.play-hud-lyrics-speed-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:90px;height:4px;background:var(--border);border-radius:2px;cursor:pointer;outline:none;margin:0}.play-hud-lyrics-speed-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:pointer;margin-top:-5px;-webkit-transition:transform .1s ease,box-shadow .1s ease;transition:transform .1s ease,box-shadow .1s ease}.play-hud-lyrics-speed-slider::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 25%,transparent)}.play-hud-lyrics-speed-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);cursor:pointer}.play-hud-lyrics-speed-slider:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.play-hud-lyrics-speed-value{font-size:12px;font-variant-numeric:tabular-nums;min-width:36px;text-align:right}.play-hud-bpm-value,.play-hud-lyrics-speed-value{font-family:Syne,sans-serif;font-weight:800;color:var(--text)}.play-hud-bpm-value{font-size:16px;font-variant-numeric:tabular-nums}.play-hud-bpm-unit{font-size:9px;color:var(--text-dim);letter-spacing:.5px;text-transform:uppercase}.play-hud-key{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:4px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-family:var(--font-display,"Syne",sans-serif)}.play-hud-key.ambiguous{border-style:dashed;border-color:var(--accent3)}.play-hud-key-label{font-family:var(--font-mono,monospace);font-size:9px;letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim);font-weight:700}.play-hud-key-value{font-size:13px;font-weight:800;color:var(--text);letter-spacing:-.01em}.play-hud-key-conf{font-family:var(--font-mono,monospace);font-size:9px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.3px;padding:1px 5px;border-radius:999px;background:color-mix(in srgb,var(--text-dim) 18%,transparent);color:var(--text-dim)}.play-hud-key.tier-high .play-hud-key-conf{color:var(--bg);background:var(--accent)}.play-hud-key.tier-med .play-hud-key-conf{color:var(--bg);background:var(--accent3)}.play-hud-key.tier-low .play-hud-key-conf{color:var(--text-dim);background:color-mix(in srgb,var(--text-dim) 25%,transparent)}.play-hud-edit,.play-hud-more{min-height:44px;padding:0 16px;border:1px solid var(--border);background:transparent;color:var(--text-dim);border-radius:22px;font-family:Space Mono,monospace;font-size:12px;font-weight:700;cursor:pointer;letter-spacing:.05em;transition:border-color .12s ease,color .12s ease,background .12s ease}.play-hud-edit:hover,.play-hud-more:hover{border-color:var(--accent);color:var(--accent)}.play-hud-edit[aria-pressed=true]{border-color:rgba(125,134,240,.9);color:#b4bcff;background:rgba(125,134,240,.12)}.play-hud-reset{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border:1px solid var(--border);background:transparent;color:var(--text-dim);border-radius:22px;font-family:Space Mono,monospace;font-size:12px;font-weight:700;letter-spacing:.05em;line-height:1;cursor:pointer;transition:border-color .12s ease,color .12s ease,background .12s ease}.play-hud-reset:hover{border-color:var(--accent);color:var(--accent)}.play-hud-reset-label{font-size:12px}.play-hud-more[aria-expanded=true]{border-color:var(--accent2);color:var(--accent2)}.play-hud-more{margin-left:auto}.play-hud-nudges{display:flex;align-items:center;gap:8px;padding:8px 2px 0;border-top:1px dashed var(--border);margin-top:2px;flex-wrap:wrap}.play-hud-nudge-label{font-size:10px;color:var(--text-dim);letter-spacing:.6px;text-transform:uppercase}.play-hud-nudge-btn{min-height:40px;min-width:64px;padding:0 12px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:20px;font-family:Space Mono,monospace;font-size:11px;font-weight:700;cursor:pointer;transition:border-color .12s ease,color .12s ease}.play-hud-nudge-btn:hover{border-color:var(--accent);color:var(--accent)}.play-hud-nudge-value{font-family:Space Mono,monospace;font-size:12px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;min-width:64px;text-align:center}.play-hud-nudge-reset{background:transparent;border:0;color:var(--text-dim);text-decoration:underline;font-family:Space Mono,monospace;font-size:11px;cursor:pointer;padding:6px 8px}.analyze-controls-drawer{border-top:1px solid var(--border)}.analyze-controls-drawer[data-open=false],.lyrics-panel[data-collapsed=true]{display:none}.lyrics-panel[data-empty=true]{margin-top:12px;padding:8px 12px;border:1px dashed color-mix(in srgb,var(--accent2) 35%,transparent);border-radius:10px;background:color-mix(in srgb,var(--accent2) 4%,transparent)}.lyrics-panel[data-empty=true] .lyrics-toggle.cta{font-weight:700;color:var(--accent2);font-size:14px}.lyrics-panel[data-empty=true] .lyrics-toggle.cta:after{content:" — match lines to bars yourself";color:var(--text-dim);font-weight:400;font-size:12px;margin-left:8px}.timeline-panel.play-mode .timeline-edit-hint,.timeline-panel.play-mode .timeline-header{display:none}.chord-tape{position:relative;overflow:hidden;height:160px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 70%,transparent) 0,var(--bg) 100%);-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}.chord-tape-playhead{bottom:0;width:2px;box-shadow:0 0 18px color-mix(in srgb,var(--accent) 75%,transparent);z-index:6;pointer-events:none}.chord-tape-playhead,.chord-tape-playhead:after{position:absolute;top:0;background:var(--accent)}.chord-tape-playhead:after{content:"";left:50%;transform:translate(-50%,-2px);width:12px;height:12px;border-radius:50%;box-shadow:0 0 14px color-mix(in srgb,var(--accent) 75%,transparent)}.chord-tape-inner{position:relative;height:100%;will-change:transform}.chord-tape-bars{position:absolute;top:4px;left:0;height:14px}.chord-tape-bar-num{position:absolute;transform:translateX(-50%);padding:1px 8px;border-radius:999px;background:color-mix(in srgb,var(--surface2) 85%,transparent);font-family:var(--font-mono,monospace);font-size:10px;letter-spacing:.3px;color:var(--text-dim);font-weight:700;white-space:nowrap}.chord-tape-ticks{position:absolute;top:24px;left:0;height:12px}.chord-tape-tick{position:absolute;top:0;width:1px;height:8px;background:var(--border);transform:translateX(-50%)}.chord-tape-tick.strong{height:14px;background:color-mix(in srgb,var(--text-dim) 70%,transparent)}.chord-tape-tick.active{background:var(--accent);height:14px}.chord-tape-chords{position:absolute;top:40px;left:0;height:100px}.chord-tape-chord{position:absolute;top:0;height:100%;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--surface2) 90%,var(--accent) 10%);font-family:var(--font-display,"Syne",sans-serif);color:var(--text);overflow:hidden;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease,transform .14s ease}.chord-tape-chord-label{font-size:clamp(22px,3.4vw,36px);font-weight:800;letter-spacing:-.01em;white-space:nowrap;padding:0 10px}.chord-tape-chord.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 22%,var(--surface2) 78%);box-shadow:0 0 30px color-mix(in srgb,var(--accent) 38%,transparent);transform:scale(1.02)}.chord-tape-chord.active .chord-tape-chord-label{color:var(--accent)}.chord-tape-chord.suspect{border-style:dashed;border-color:rgba(245,158,11,.75)}.chord-tape-chord.suspect .chord-tape-chord-label{color:#fed7aa}.chord-tape-chord-progress{position:absolute;left:0;bottom:0;height:4px;width:0;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 60%,transparent),var(--accent));pointer-events:none;border-radius:0 0 14px 14px}.chord-tape-suspect-badge{position:absolute;top:8px;right:10px;width:18px;height:18px;border-radius:50%;background:rgba(245,158,11,.95);color:var(--bg);font-size:12px;font-weight:800;line-height:18px;text-align:center;pointer-events:none}.chord-tape-sticky{position:sticky;top:calc(48px + var(--play-hud-height, 220px));z-index:25;background:var(--bg);margin:0}.chord-tape-sticky,.lyrics-reader{border-bottom:1px solid var(--border)}.lyrics-reader{position:relative;margin-top:8px;padding:8px 16px;border-top:1px solid var(--border);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 60%,transparent) 0,var(--bg) 100%)}.lyrics-reader-list{display:flex;flex-direction:column;gap:3px;max-height:50vh;overflow-y:auto;scrollbar-width:thin;padding-top:0;padding-bottom:calc(50vh / 3)}.lyrics-reader-line{display:block;padding:4px 8px;font-family:var(--font-body,sans-serif);font-size:14px;font-weight:500;color:var(--text);text-align:center;cursor:pointer;border-radius:4px;transition:color .14s ease,background .14s ease}.lyrics-reader-line:hover{color:var(--accent2);background:color-mix(in srgb,var(--accent2) 8%,transparent)}.lyrics-reader-text{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.lyrics-reader-jump-pill{position:absolute;top:8px;left:12px;padding:6px 14px;font-size:12px;font-weight:600;color:#fff;background:var(--accent2);border:none;border-radius:999px;cursor:pointer;box-shadow:0 4px 12px color-mix(in srgb,var(--accent2) 40%,transparent);z-index:2;transition:transform .12s ease,box-shadow .12s ease}.lyrics-reader-jump-pill:hover{transform:translateY(-1px);box-shadow:0 6px 16px color-mix(in srgb,var(--accent2) 50%,transparent)}@media (max-width:540px){.lyrics-reader{padding:6px 12px}.lyrics-reader-list{max-height:40vh}.lyrics-reader-line{font-size:13px;padding:3px 6px}}.chord-tape-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:60px 20px;color:var(--text-dim);border-top:1px solid var(--border);background:var(--surface)}.chord-tape-empty-icon{font-size:32px;opacity:.6}@media (max-width:540px){.chord-tape{height:140px}.chord-tape-chords{top:36px;height:86px}.chord-tape-chord-label{font-size:clamp(22px,8vw,32px)}.chord-tape-bar-num{font-size:9px;padding:1px 6px}.play-hud{padding:10px 12px 8px;gap:6px}.play-hud-now{font-size:clamp(80px,26vw,120px)}.play-hud-next{font-size:clamp(34px,11vw,52px)}.play-hud-actions{gap:6px}.play-hud-edit,.play-hud-more,.play-hud-sync{padding:0 12px;font-size:11px}.play-hud-sync{min-height:32px}.play-hud-transpose{min-height:38px;padding:2px 6px}.play-hud-transpose-btn{width:20px;height:20px;font-size:12px}.play-hud-lyrics-speed{padding:4px 6px;min-height:36px}.play-hud-lyrics-speed-slider{width:60px}.play-hud-lyrics-speed-value{min-width:28px;font-size:11px}.play-hud-bpm,.play-hud-key{padding:4px 6px;min-height:36px}.play-hud-divider,.play-hud-key-conf,.play-hud-transpose-label{display:none}.play-hud-lyrics-speed{flex:1 0 100%;justify-content:center}.play-hud-row-break{display:block;flex:1 0 100%;height:0}.play-hud-audio-source,.play-hud-edit,.play-hud-more,.play-hud-transpose{min-height:36px}.play-hud-edit,.play-hud-more{padding:0 14px}}.chord-card,.chord-diagram,.chord-palette,.play-hud-chord-toggle{--surface:var(--panel);--surface2:var(--panel);--text-dim:var(--muted)}.play-hud-chord-toggle{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:4px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-family:var(--font-display,"Syne",sans-serif);font-weight:700;font-size:12px;cursor:pointer;transition:background .12s ease,color .12s ease,border-color .12s ease,box-shadow .12s ease}.play-hud-chord-toggle:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--border) 50%)}.play-hud-chord-toggle[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}.play-hud-chord-toggle[aria-pressed=false]{border-color:color-mix(in srgb,var(--accent) 55%,var(--border) 45%);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 14%,transparent)}.play-hud-chord-toggle-count{font-size:10px;opacity:.85;font-weight:600}.analyze-play-body{display:block}@media (min-width:900px){.analyze-play-body[data-palette-open=true]{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}}.analyze-play-main{min-width:0}.chord-palette{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px;position:sticky;top:calc(var(--play-hud-height, 100px) + 56px)}.chord-palette-title{display:flex;align-items:center;gap:8px;margin:0 0 10px}.chord-palette-title h3{font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim);margin:0;font-weight:700}.chord-palette-count{font-size:11px;color:var(--text-dim);flex:1}.chord-palette-close{width:24px;height:24px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-size:14px;line-height:1;cursor:pointer;padding:0}.chord-palette-close:hover{color:var(--text);border-color:var(--text-dim)}.chord-palette-stack{display:flex;flex-direction:column;gap:10px}.chord-palette-empty{font-family:var(--font-display,"Syne",sans-serif);font-style:italic;font-size:14px;color:var(--muted);text-align:center;padding:24px 8px}.chord-card-role{font-family:var(--font-mono,ui-monospace,monospace);font-size:9px;letter-spacing:.6px;text-transform:uppercase;font-weight:700;color:var(--muted);align-self:flex-start;padding:1px 6px;border-radius:999px;background:color-mix(in srgb,var(--muted) 14%,transparent)}.chord-card[data-role=now] .chord-card-role{color:var(--bg);background:var(--accent)}.chord-card[data-role=after]{opacity:.78}.chord-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px 8px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;min-width:0}.chord-card[data-active=true]{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 28%,transparent)}.chord-card-label-row{display:inline-flex;align-items:baseline;gap:6px}.chord-card-label{font-family:var(--font-display,"Syne",sans-serif);font-size:15px;font-weight:800;letter-spacing:-.01em;color:var(--text)}.chord-card-fret,.chord-card[data-active=true] .chord-card-label{color:var(--accent)}.chord-card-fret{font-family:var(--font-mono,ui-monospace,monospace);font-size:10px;font-weight:700;letter-spacing:.4px;background:color-mix(in srgb,var(--accent) 14%,transparent);padding:1px 6px;border-radius:999px;white-space:nowrap}.chord-card-empty{display:flex;align-items:center;justify-content:center;width:76px;height:92px;border:1px dashed var(--border);border-radius:6px;color:var(--text-dim);font-size:9px;letter-spacing:.4px;text-transform:uppercase;text-align:center;padding:0 4px}.chord-diagram{display:block;color:var(--text)}.chord-diagram__nut{fill:var(--text)}.chord-diagram__fret-line,.chord-diagram__string-line{stroke:var(--text);stroke-opacity:.55}.chord-diagram__dot{fill:var(--accent)}.chord-diagram__dot-text{fill:var(--bg);font-weight:800}.chord-diagram__dot-text,.chord-diagram__mark{font-family:var(--font-display,"Syne",sans-serif)}.chord-diagram__mark{fill:var(--text-dim);font-weight:700}.chord-diagram__mark--open{fill:none;stroke:var(--text-dim);stroke-width:1.4}.chord-diagram__barre{fill:var(--accent);opacity:.85}.drop-box .hint{margin-top:16px;font-size:12px;color:var(--dim);letter-spacing:.5px}.sharp-flat-toggle{display:inline-flex;border:1px solid var(--border);border-radius:4px;background:var(--surface);overflow:hidden}.sharp-flat-toggle button{min-width:32px;height:30px;padding:0 10px;background:transparent;border:0;color:var(--text-dim);font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,color .15s;border-left:1px solid var(--border)}.sharp-flat-toggle button:first-child{border-left:0}.sharp-flat-toggle button:hover{color:var(--text)}.sharp-flat-toggle button.active{background:var(--accent);color:var(--bg)}.view-tabs{display:flex;gap:4px;padding:12px 24px 0;flex-wrap:wrap}.view-tab{padding:7px 16px;border:1px solid var(--border);background:transparent;color:var(--text-dim);border-radius:4px;font-family:Space Mono,monospace;font-size:13px;letter-spacing:.5px;cursor:pointer;transition:all .15s}.view-tab:hover{color:var(--text);border-color:var(--text-dim)}.view-tab.active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.image-stage{display:flex;justify-content:center;padding:16px 24px;min-height:200px;overflow:auto}.chord-sheet-frame{position:relative;display:inline-block;max-width:100%}.chord-sheet-img{display:block;max-width:100%;border:1px solid var(--border);border-radius:6px;background:#fff;box-shadow:0 8px 32px rgba(0,0,0,.25)}.chord-overlay{position:absolute;inset:0;pointer-events:none}.chord-overlay.editing{pointer-events:auto;cursor:crosshair}.chord-box{position:absolute;border:2px solid rgba(34,197,94,.55);background:rgba(34,197,94,.08);border-radius:2px;cursor:pointer;transition:background .1s,border-color .1s}.chord-box:hover{background:rgba(34,197,94,.28);border-color:rgba(34,197,94,.95)}.chord-box.excluded{border-color:rgba(148,163,184,.55);background:repeating-linear-gradient(45deg,rgba(148,163,184,.18),rgba(148,163,184,.18) 4px,transparent 0,transparent 8px)}.chord-box.manual{border-color:rgba(99,102,241,.75);background:rgba(99,102,241,.12)}.chord-box.manual:hover{background:rgba(99,102,241,.3)}.chord-box-label{position:absolute;top:-20px;left:0;font-family:Space Mono,monospace;font-size:14px;font-weight:700;padding:2px 6px;border-radius:3px;background:rgba(15,23,42,.92);color:#fff;white-space:nowrap;pointer-events:none}.chord-box.manual .chord-box-label{background:rgba(99,102,241,.95)}.chord-box.excluded .chord-box-label{background:rgba(100,116,139,.92);text-decoration:line-through}.chord-draft{position:absolute;border:2px dashed rgba(99,102,241,.9);background:rgba(99,102,241,.1);pointer-events:none}.chord-prompt{position:absolute;z-index:10;display:flex;gap:4px;padding:6px;background:var(--surface,#1e293b);border:1px solid var(--accent);border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.4);pointer-events:auto}.chord-prompt input{width:100px;padding:5px 9px;background:var(--input-bg,#0f172a);border:1px solid var(--border);border-radius:4px;color:var(--text);font-family:Space Mono,monospace;font-size:14px;outline:none}.chord-prompt input:focus{border-color:var(--accent)}.chord-prompt input.invalid{border-color:#ef4444}.chord-prompt button{border:0;border-radius:4px;padding:5px 12px;font-size:13px;font-weight:700;cursor:pointer;font-family:Space Mono,monospace}.chord-prompt button.primary{background:var(--accent);color:var(--bg,#020617)}.chord-prompt button.primary:disabled{opacity:.4;cursor:not-allowed}.chord-prompt button.secondary{background:transparent;color:var(--text-dim,#94a3b8)}.edit-mode-bar{justify-content:space-between;padding:8px 24px 0;font-size:13px;color:var(--text-dim,#94a3b8)}.edit-mode-bar,.edit-mode-bar .left{display:flex;align-items:center;gap:12px}.edit-mode-bar .left{flex-wrap:wrap}.edit-mode-toggle{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--text-dim,#94a3b8);font-family:Space Mono,monospace;font-size:13px;cursor:pointer}.edit-mode-toggle.active{border-color:var(--accent);color:var(--accent)}.edit-mode-bar .legend{display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.4px}.edit-mode-bar .legend-dot{display:inline-block;width:10px;height:10px;margin-right:4px;border-radius:2px;vertical-align:middle}.edit-mode-bar .legend-dot.detected{background:rgba(34,197,94,.6)}.edit-mode-bar .legend-dot.excluded{background:rgba(148,163,184,.6)}.edit-mode-bar .legend-dot.manual{background:rgba(99,102,241,.7)}.img-loading{display:flex;flex-direction:column;align-items:center;gap:14px;padding:32px;color:var(--text-dim);font-size:14px}.chord-mapping{padding:20px 24px;border-top:1px solid var(--border)}.mapping-header{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--dim);margin-bottom:12px}.mapping-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.mapping-pair{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:5px;background:var(--surface);font-family:Syne,sans-serif;font-size:16px;font-weight:700}.mapping-pair .from{color:var(--text-dim)}.mapping-pair .arrow{color:var(--dim);font-size:14px}.mapping-pair .to{color:var(--accent)}