:root,[data-theme=light]{--page-bg: #f7f7f5;--surface: #ffffff;--surface-alt: #fafaf8;--border: #e8e8ec;--border-soft: #f0f0f4;--text: #1a1a1a;--text-secondary: #777777;--text-muted: #aaaaaa;--text-faint: #bbbbbb;--teal: #5DCAA5;--teal-soft: #e0f5ec;--teal-deep: #3a9a7a;--accent: #AFA9EC;--accent-soft: #f0eef8;--accent-deep: #7a72b8;--warn: #EF9F27;--error: #f08080;--shadow-card: 0 2px 8px rgba(0, 0, 0, .06);--shadow-glow: 0 6px 18px rgba(93, 202, 165, .3);--play-bg: #12121e;--play-surface: #1a1a2e;--play-text: #e8e8f0;--play-text-secondary: #8a8a9a;--play-border: #2a2a40;--play-divider: #1e1e32;--lyrics: #888aa0;--lyrics-active: #AFA9EC;--lyrics-faded: #4a4a60}[data-theme=dark]{--page-bg: #0e0e18;--surface: #16162a;--surface-alt: #1a1a30;--border: #25253a;--border-soft: #1f1f32;--text: #e8e8f0;--text-secondary: #a0a0b0;--text-muted: #75758a;--text-faint: #5a5a72;--teal: #6ed8b3;--teal-soft: rgba(110, 216, 179, .16);--teal-deep: #6ed8b3;--accent: #c2bcff;--accent-soft: rgba(194, 188, 255, .16);--accent-deep: #c2bcff;--warn: #EFB960;--error: #ff8a8a;--shadow-card: 0 2px 12px rgba(0, 0, 0, .4);--shadow-glow: 0 6px 18px rgba(110, 216, 179, .35)}*{box-sizing:border-box}html,body,#app{margin:0;padding:0;min-height:100%;background:var(--page-bg);color:var(--text);font-family:DM Sans,-apple-system,system-ui,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased}button{font-family:inherit}.app-shell{min-height:100vh;padding-bottom:72px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--surface);border-top:1px solid var(--border);display:flex;justify-content:space-around;align-items:center;z-index:50}.bottom-nav button{background:none;border:none;padding:6px 14px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--text-faint)}.bottom-nav button .nav-icon{font-size:18px;line-height:1}.bottom-nav button .nav-label{font-size:10px;font-weight:500}.bottom-nav button.active{color:var(--teal)}.browse-page{padding:20px 24px 16px}.browse-head{display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--teal),var(--accent));display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px}.brand-name{font-size:20px;font-weight:600}.icon-btn{background:none;border:none;color:var(--text-faint);font-size:18px;cursor:pointer;padding:4px 8px}.head-actions{display:flex;gap:4px}.search-row{padding:8px 24px 16px}.search-row input{width:100%;padding:10px 14px;font-size:14px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);outline:none}.search-row input:focus{border-color:var(--teal)}.library-list{padding:0 24px;display:flex;flex-direction:column;gap:10px}.song-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 16px;cursor:pointer;transition:box-shadow .15s,transform .15s}.song-card:hover{box-shadow:var(--shadow-card);transform:translateY(-1px)}.song-card-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.song-card-title{font-size:15px;font-weight:500;color:var(--text);margin-bottom:3px}.song-card-sub{font-size:12px;color:var(--text-secondary)}.song-card-tags{display:flex;gap:6px;flex-shrink:0}.chip{font-size:11px;font-weight:500;padding:3px 8px;border-radius:5px;white-space:nowrap}.chip-raag{background:var(--accent-soft);color:var(--accent-deep);text-transform:uppercase;font-size:10px}.chip-acc-good{background:var(--teal-soft);color:var(--teal-deep)}.chip-acc-mid{background:#ef9f2726;color:#b67310}.chip-acc-low{background:#f080802e;color:#b85050}.chip-new{color:var(--text-faint);font-style:italic;font-size:11px;padding-top:3px}.chip-saved{background:var(--teal-soft);color:var(--teal-deep)}.chip-mine{background:var(--accent-soft);color:var(--accent-deep)}.scope-tabs{display:flex;gap:4px;padding:0 24px;border-bottom:1px solid var(--border-soft)}.scope-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;font-family:inherit;font-size:14px;font-weight:500;color:var(--text-secondary);padding:12px 16px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.scope-tab:hover{color:var(--text)}.scope-tab.active{color:var(--accent-deep);border-bottom-color:var(--accent)}.card-action{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--accent-soft);color:var(--accent-deep);border:1px solid transparent;font-family:inherit;font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;cursor:pointer}.card-action:hover{background:var(--accent);color:var(--surface)}.card-action[disabled]{opacity:.5;cursor:progress}.card-action-soft{background:transparent;color:var(--text-secondary);border-color:var(--border)}.card-action-soft:hover{color:var(--error);border-color:var(--error);background:#f0808014}.song-card-phrases{margin-top:6px;font-size:11px;color:var(--text-faint)}.empty{color:var(--text-secondary);padding:32px 0;text-align:center}.add-song-btn{position:fixed;bottom:72px;left:24px;right:24px;max-width:400px;margin:0 auto;padding:13px;background:var(--teal);color:#fff;font-weight:500;font-size:14px;border:none;border-radius:12px;cursor:pointer;box-shadow:var(--shadow-glow)}.byok-banner{padding:8px 24px 0;font-size:11px;color:var(--text-faint);display:flex;align-items:center;gap:6px}.byok-banner.ok{color:var(--teal-deep)}.byok-banner button.link{background:none;border:none;color:var(--accent-deep);text-decoration:underline;cursor:pointer;padding:0;font-size:inherit;font-family:inherit}.progress-page{padding:20px 24px 16px}.progress-page h1{font-size:20px;font-weight:600;margin:0 0 16px}.progress-page .section-label{font-size:13px;font-weight:500;color:var(--text-secondary);margin:16px 0 8px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 10px;text-align:center}.stat-num{font-size:24px;font-weight:600;color:var(--text)}.stat-label{font-size:11px;color:var(--text-faint);margin-top:2px}.session-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;margin-bottom:8px}.session-row{display:flex;justify-content:space-between;align-items:center}.session-title{font-size:14px;font-weight:500;color:var(--text)}.session-acc{font-size:13px}.session-acc .acc-num{font-weight:600}.session-acc .acc-trend{margin-left:6px}.session-meta{font-size:11px;color:var(--text-faint);margin-top:4px}.trend-up{color:var(--teal)}.trend-down{color:var(--error)}.trend-flat{color:var(--text-faint)}.tech-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px}.tech-row{display:flex;align-items:center;margin-bottom:10px;gap:10px}.tech-row:last-child{margin-bottom:0}.tech-name{font-size:12px;color:var(--text);width:110px;flex-shrink:0}.tech-bar-track{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.tech-bar-fill{height:100%;border-radius:3px}.tech-bar-fill.good{background:var(--teal)}.tech-bar-fill.mid{background:var(--warn)}.tech-bar-fill.low{background:var(--error)}.tech-pct{font-size:12px;font-weight:500;width:36px;text-align:right}.raag-row{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.raag-chip{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;min-width:120px;flex-shrink:0}.raag-chip-name{font-size:14px;font-weight:500;color:var(--text)}.raag-chip-name.dim{color:var(--text-faint)}.raag-chip-meta{font-size:11px;color:var(--text-faint);margin-top:4px}.play-page{font-family:DM Sans,-apple-system,system-ui,sans-serif}.play-head{padding:20px 24px 16px}.back-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:14px;padding:0 0 8px}.play-head-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.play-head-meta{display:flex;flex-direction:column}.label-now-playing{font-size:10px;color:var(--text-faint);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px}.play-title{font-size:24px;font-weight:600;letter-spacing:-.5px;margin:0 0 4px}.play-sub{font-size:13px;color:var(--text-secondary)}.play-chips{display:flex;gap:8px;flex-shrink:0;align-items:flex-start;padding-top:6px}.chip-acc{background:var(--teal-soft);color:var(--teal-deep);padding:4px 12px;border-radius:6px;font-size:12px;font-weight:500}.play-chips .chip-raag{padding:4px 12px;border-radius:6px;font-size:12px;font-weight:500}.yt-panel{margin:0 24px 12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.yt-panel.empty{display:flex;align-items:center;justify-content:space-between;padding:10px 16px}.yt-empty-text{font-size:13px;color:var(--text-secondary)}.yt-attach-btn{background:var(--accent-soft);color:var(--accent-deep);border:1px solid transparent;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500;cursor:pointer}.yt-attach-btn:hover{border-color:var(--accent)}.yt-panel-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border-soft);font-size:12px;color:var(--text-secondary)}.yt-clip-label{font-variant-numeric:tabular-nums}.yt-toggle{background:none;border:none;color:var(--accent-deep);font-size:12px;cursor:pointer;padding:0}.yt-edit-btn{font-size:12px;padding:2px 6px}.yt-frames-row{display:flex;gap:12px;padding:8px 16px 12px;flex-wrap:wrap}.yt-slot{flex:1 1 240px;min-width:200px;max-width:360px}.yt-slot.empty{display:flex;flex-direction:column;gap:8px}.yt-slot.empty .yt-empty-frame{aspect-ratio:16 / 9;border:1px dashed var(--border);border-radius:8px;background:var(--surface-alt);display:flex;align-items:center;justify-content:center;padding:18px}.yt-slot-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.yt-frame-wrap{width:100%;aspect-ratio:16 / 9;background:#000;border-radius:8px;overflow:hidden}.yt-frame-host,.yt-frame-host iframe{width:100%;height:100%;border:0;display:block}.yt-panel.collapsed .yt-frames-row{display:none}.yt-fieldset{margin-top:12px}.yt-help{font-size:12px;color:var(--text-secondary);margin:0 0 8px}.yt-time-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fret-card{margin:0 24px;border-radius:12px;overflow:hidden;background:var(--play-bg);border:1px solid var(--play-border)}.fret-card canvas{display:block;width:100%;height:100%}.fret-card .rocksmith-wrap{height:clamp(360px,56vh,620px)}.fret-card .river-wrap{height:clamp(120px,18vh,200px);border-bottom:1px solid var(--play-divider)}.fret-card .fret-wrap{height:clamp(220px,36vh,380px)}.fret-card .neck-wrap{height:140px;border-top:1px solid var(--play-divider);background:var(--play-bg)}.countdown-overlay{position:fixed;top:50%;left:50%;font-family:DM Sans,system-ui,sans-serif;font-size:clamp(96px,16vw,260px);font-weight:700;color:#afa9ecf2;text-shadow:0 0 32px rgba(175,169,236,.55),0 0 64px rgba(175,169,236,.25);letter-spacing:-.04em;pointer-events:none;z-index:9999;opacity:0;transform:translate(-50%,-50%) scale(.6);transition:opacity .12s ease-out,transform .22s cubic-bezier(.2,1.4,.4,1)}.countdown-overlay.visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.fret-card .immersive-overlay{display:none}.fret-card .immersive-overlay .immersive-title{font-size:18px;font-weight:700;letter-spacing:.01em;color:#e8e8f0f2}.fret-card .immersive-overlay .immersive-sub{font-size:12px;color:#e8e8f08c;letter-spacing:.04em;text-transform:uppercase}.immersive-btn{padding:5px 14px;border-radius:6px;font-size:12px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-deep);cursor:pointer;font-family:inherit;font-weight:600}.immersive-btn:hover{background:var(--accent);color:#fff}[data-screen=play][data-immersive=true]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#08080f;overflow:hidden;padding:0}[data-screen=play][data-immersive=true]>*:not(.fret-card):not(.controls-row){display:none}[data-screen=play][data-immersive=true] .controls-row{position:fixed;top:14px;left:16px;right:16px;background:#08081094;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(120,120,160,.18);border-radius:999px;padding:8px 14px;z-index:10;box-shadow:0 6px 24px #00000073}[data-screen=play][data-immersive=true] .controls-row .progress-bar-wrap{flex:1 1 200px}[data-screen=play][data-immersive=true] .fret-card{margin:0;border-radius:0;border:none;height:100vh;height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#0c0c18,#07070d 70%,#050509)}[data-screen=play][data-immersive=true] .view-toggle,[data-screen=play][data-immersive=true] .river-wrap,[data-screen=play][data-immersive=true] .fret-wrap{display:none!important}[data-screen=play][data-immersive=true] .lyrics-wrap{position:fixed;bottom:188px;left:24px;right:24px;padding:6px 14px;background:#08081080;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(120,120,160,.18);border-radius:8px;font-size:18px;text-align:center;z-index:9;pointer-events:none}[data-screen=play][data-immersive=true] .rocksmith-wrap{flex:1 1 auto;min-height:0;height:auto}[data-screen=play][data-immersive=true] .neck-wrap{flex:0 0 180px;height:180px;border-top:1px solid rgba(60,60,90,.6)}.play-score{display:none}[data-screen=play][data-immersive=true] .play-score{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:14px;align-items:center;position:fixed;top:70px;right:24px;z-index:8;padding:8px 14px 10px;background:#0808108c;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(120,120,160,.18);border-radius:12px;pointer-events:none}.play-score-grade{grid-row:1 / span 2;font-size:36px;font-weight:800;letter-spacing:-.04em;line-height:1;color:var(--accent);text-align:center;min-width:36px}.play-score-grade[data-tier=s]{color:#ffd166}.play-score-grade[data-tier=a]{color:#06d6a0}.play-score-grade[data-tier=b]{color:#5dcaa5}.play-score-grade[data-tier=c]{color:var(--accent)}.play-score-grade[data-tier=d]{color:#f59e0b}.play-score-grade[data-tier=e]{color:#f08080}.play-score-pct{font-size:22px;font-weight:700;color:#e8e8f0f2;font-variant-numeric:tabular-nums}.play-score-pct span{font-size:13px;opacity:.7;margin-left:1px}.play-score-encourage{font-size:11px;letter-spacing:.02em;color:#dcdcf0b3}[data-screen=play][data-immersive=true] .immersive-overlay{display:block;position:absolute;bottom:22px;right:28px;text-align:right;z-index:2;pointer-events:none;opacity:.85}[data-screen=play][data-immersive=true] .fret-card:before{content:"ESC to exit";position:absolute;bottom:22px;left:28px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#e8e8f073;z-index:2}.fret-card .view-toggle{position:absolute;top:12px;right:12px;display:inline-flex;background:#141423b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--play-divider);border-radius:999px;padding:3px;z-index:5}.view-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--play-text-secondary);font-family:inherit;font-size:11px;font-weight:600;padding:5px 12px;border-radius:999px;cursor:pointer;letter-spacing:.02em}.view-btn:hover{color:var(--play-text)}.view-btn.active{background:var(--accent);color:#1a1a2e}.sheet-edit-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--play-text-secondary);font-family:inherit;font-size:11px;font-weight:600;padding:5px 12px;margin-left:4px;border-radius:999px;cursor:pointer;letter-spacing:.02em}.sheet-edit-btn:hover{color:var(--play-text)}.sheet-edit-btn.active{background:#f59e0b;color:#1a1a2e}.fret-card[data-view=tab] .sheet-edit-btn,.fret-card[data-view=melody] .sheet-edit-btn{display:none}.fret-card{position:relative}.fret-card[data-view=tab] .river-wrap,.fret-card[data-view=tab] .fret-wrap,.fret-card[data-view=tab] .sheet-wrap,.fret-card[data-view=melody] .rocksmith-wrap,.fret-card[data-view=melody] .sheet-wrap{display:none}.fret-card[data-view=melody] .river-wrap{border-bottom:1px solid var(--play-divider)}.fret-card[data-view=sheet] .rocksmith-wrap,.fret-card[data-view=sheet] .river-wrap,.fret-card[data-view=sheet] .fret-wrap{display:none}.fret-card .sheet-wrap{height:clamp(360px,56vh,620px);overflow:auto;background:var(--play-bg);padding:18px 8px 18px 12px}[data-screen=play][data-immersive=true] .sheet-wrap{padding-top:70px;flex:1 1 auto;min-height:0;height:auto}[data-screen=play][data-immersive=true] .fret-card[data-view=sheet]~* .lyrics-wrap,.fret-card[data-view=sheet] .lyrics-wrap{display:none!important}.fret-card .sheet-wrap .tab-sheet{display:flex;flex-direction:column;gap:16px}.tab-sheet-host.tab-sheet-editing .tab-sheet-line{outline:1px solid rgba(245,158,11,.45);outline-offset:-1px}.tab-sheet-line .tab-sheet-fret.editable{cursor:pointer}.tab-sheet-line .tab-sheet-fret.editable:hover{fill:#f59e0b!important;text-decoration:underline}.tab-sheet-line .tab-sheet-add-hit{cursor:copy}.tab-sheet-line .tab-sheet-add-hit:hover{fill:#f59e0b1a}.fret-card .sheet-wrap .tab-sheet-line{display:block;background:var(--play-surface);border:1px solid var(--play-divider);border-radius:8px}.fret-card .lyrics-wrap{padding:16px 24px 18px;border-top:1px solid var(--play-divider);font-size:22px;line-height:1.35;font-style:normal;letter-spacing:-.01em;color:#c8c8d8;text-align:center}.lyrics-word{display:inline-block;margin:0 6px;transition:color .18s,transform .18s,text-shadow .18s;font-weight:500}.lyrics-word.active{color:var(--lyrics-active);font-weight:700;text-shadow:0 0 16px rgba(175,169,236,.45);transform:translateY(-1px)}.lyrics-word.faded{color:#5a5a72;font-weight:400}@media (max-width: 720px){.fret-card .lyrics-wrap{font-size:18px;padding:12px 16px 14px}}.controls-row{display:flex;align-items:center;gap:10px;padding:12px 24px;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;scrollbar-width:thin}.controls-row::-webkit-scrollbar{height:6px}.controls-row::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.controls-row>*{flex-shrink:0}.controls-row .progress-bar-wrap{flex:1 1 240px;min-width:180px}.speed-btns{display:flex;gap:4px}.speed-btn{padding:5px 14px;border-radius:6px;font-size:13px;font-weight:500;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer}.speed-btn.active{border-color:var(--teal);background:var(--teal-soft);color:var(--teal-deep)}.play-pause-btn{width:40px;height:32px;border-radius:8px;border:none;background:var(--teal-soft);color:var(--teal-deep);font-size:14px;font-weight:600;cursor:pointer}.play-pause-btn.playing{background:#f080802e;color:var(--error)}.play-pause-btn.counting{background:var(--accent-soft);color:var(--accent-deep);font-size:18px;font-variant-numeric:tabular-nums}.progress-bar-wrap{flex:1;cursor:pointer}.progress-bar-track{height:4px;background:var(--border);border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--teal),var(--accent))}.progress-times{display:flex;justify-content:space-between;margin-top:4px;font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.loop-btn,.mic-btn,.reset-btn,.tabla-btn,.guitar-btn,.link-btn,.sync-btn,.rewind-btn,.src-btn{padding:5px 14px;border-radius:6px;font-size:12px;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);cursor:pointer;font-family:inherit}.reset-btn:hover{color:var(--text);border-color:var(--accent)}.tabla-btn.active{border-color:var(--warn);background:#ef9f2729;color:var(--warn)}.guitar-btn.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep)}.link-btn.independent{border-color:var(--teal);background:var(--teal-soft);color:var(--teal-deep)}.tempo-readout{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:5px 8px;border-radius:6px;font-size:12px;font-variant-numeric:tabular-nums;color:var(--text-secondary);background:var(--surface-alt);border:1px solid var(--border-soft)}.sync-btn.listening{border-color:var(--warn);background:#ef9f2729;color:var(--warn);animation:sync-pulse 1.2s ease-in-out infinite}@keyframes sync-pulse{0%,to{opacity:1}50%{opacity:.55}}.loop-btn.active,.mic-btn.active{border-color:var(--teal);background:var(--teal-soft);color:var(--teal-deep)}.mic-btn[data-state=denied],.mic-btn[data-state=error]{color:var(--error);border-color:var(--error)}.follow-btn{margin-left:6px;padding:5px 14px;border-radius:6px;font-size:12px;font-weight:500;border:1px solid var(--accent);background:var(--surface);color:var(--accent-deep);cursor:pointer}.follow-btn:hover{background:var(--accent-soft)}.follow-btn.active{background:var(--accent);color:var(--surface);border-color:var(--accent);box-shadow:0 0 0 3px #afa9ec2e}.follow-btn[data-state=denied]{border-color:var(--error);color:var(--error)}.speed-btn:disabled{opacity:.4;cursor:not-allowed}.play-pause-btn:disabled{opacity:.4;cursor:not-allowed}.phrase-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 24px 12px}.phrase-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.card-label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--text-faint);margin-bottom:6px}.card-title{font-size:16px;font-weight:600;color:var(--text);margin-bottom:4px}.card-context{font-size:12px;color:var(--text-secondary);line-height:1.5;margin-bottom:10px}.card-context.muted{font-style:italic;color:var(--text-faint)}.card-tags{display:flex;flex-wrap:wrap;gap:6px}.tag{background:var(--teal-soft);color:var(--teal-deep);padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500}.tag-neutral{background:var(--border-soft);color:var(--text-secondary)}.related-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border-soft);font-size:13px}.related-row:last-child{border-bottom:none}.related-title{color:var(--text);font-weight:500}.related-where{color:var(--text-faint);font-size:11px}.coach-card{margin:0 24px 24px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.coach-card .card-label{margin-bottom:6px}.coach-card .coach-text{font-size:14px;line-height:1.6;color:var(--text)}.tuner-page{padding:20px 24px 16px;max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.tuner-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.tuner-head h1{margin:0;font-size:22px;font-weight:600}.tuner-actions{display:flex;gap:8px;align-items:center}.tuner-mode{display:flex;padding:2px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.tuner-mode .mode-btn{background:none;border:none;color:var(--text-secondary);padding:6px 12px;cursor:pointer;font-size:12px;font-weight:500;border-radius:6px;font-family:inherit}.tuner-mode .mode-btn.active{background:var(--accent-soft);color:var(--accent-deep)}.tuner-target{margin-top:6px;font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.6px}.mic-toggle-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-secondary);border-radius:8px;padding:8px 14px;cursor:pointer;font-size:13px}.mic-toggle-btn.active{border-color:var(--teal);background:var(--teal-soft);color:var(--teal-deep)}.mic-toggle-btn[data-state=denied]{border-color:var(--error);color:var(--error)}.tuner-readout{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:36px 24px 32px}.tuner-note{font-size:96px;font-weight:700;letter-spacing:-2px;line-height:1;font-variant-numeric:tabular-nums}.tuner-hz{margin-top:8px;font-size:14px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.tuner-cents{margin-top:18px;font-size:32px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-faint)}.tuner-cents[data-tone=good]{color:var(--teal)}.tuner-cents[data-tone=mid]{color:var(--warn)}.tuner-cents[data-tone=bad]{color:var(--error)}.tuner-meter{padding:0 4px}.meter-track{position:relative;height:52px;background:linear-gradient(90deg,#f080802e,#ef9f2729 30%,#5dcaa538,#ef9f2729 70%,#f080802e);border-radius:8px;border:1px solid var(--border)}.meter-tick{position:absolute;top:8px;bottom:8px;width:1px;background:var(--border)}.meter-tick.mid{background:var(--text-secondary);width:2px}.meter-needle{position:absolute;top:-4px;bottom:-4px;left:50%;width:3px;border-radius:2px;background:var(--text-faint);transform:translate(-50%);transition:left .08s linear,background .15s}.meter-needle[data-tone=good]{background:var(--teal);box-shadow:0 0 12px #5dcaa5a6}.meter-needle[data-tone=mid]{background:var(--warn)}.meter-needle[data-tone=bad]{background:var(--error)}.meter-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--text-faint);margin-top:6px;font-variant-numeric:tabular-nums}.tuner-mic-level{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.mic-level-label{text-transform:uppercase;letter-spacing:.5px;min-width:28px}.mic-level-track{flex:1;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.mic-level-fill{height:100%;background:linear-gradient(90deg,var(--teal),var(--warn) 75%,var(--error));transition:width .12s linear}.mic-level-state{min-width:50px;text-align:right;text-transform:uppercase;letter-spacing:.5px}.mic-help{background:#f080801a;border:1px solid rgba(240,128,128,.35);border-radius:10px;padding:14px 18px;font-size:13px;color:var(--text);display:flex;flex-direction:column;gap:8px}.mic-help p{margin:0;line-height:1.5;color:var(--text-secondary)}.mic-help code{background:var(--surface-alt);padding:1px 6px;border-radius:3px;font-size:12px}.mic-help a{color:var(--accent-deep)}.retry-mic-btn{align-self:flex-start;background:var(--teal);color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit}.tuner-strings h2{font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin:0 0 10px}.strings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.string-btn{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px;font-family:inherit}.string-btn:hover{border-color:var(--accent)}.string-btn:active{transform:scale(.98);background:var(--accent-soft)}.string-btn .string-name{font-size:13px;font-weight:500;color:var(--text)}.string-btn .string-hz{font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.tuner-help{font-size:12px;color:var(--text-secondary);line-height:1.5}@media (max-width: 480px){.strings-grid{grid-template-columns:repeat(2,1fr)}.tuner-note{font-size:72px}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--surface);border-radius:14px;border:1px solid var(--border);padding:24px;width:min(560px,100%);max-height:85vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.modal-header h2{margin:0;font-size:18px;font-weight:600}.modal-close{background:none;border:none;color:var(--text-faint);font-size:22px;cursor:pointer;line-height:1}.modal fieldset{border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin:12px 0}.modal fieldset legend{font-size:12px;color:var(--text-secondary);padding:0 6px}.modal label{display:block;margin:8px 0;font-size:13px}.modal input[type=text],.modal input[type=password]{width:100%;background:var(--page-bg);border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:6px;font-size:13px;margin-top:4px;font-family:inherit}.modal .external{color:var(--accent-deep);font-size:12px}.modal-footer{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.modal-footer button{background:var(--teal);color:#fff;border:none;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:500;cursor:pointer}.modal-footer .cancel-btn{background:var(--border);color:var(--text)}.modal fieldset[data-section].focused legend{color:var(--accent-deep)}.modal fieldset .cancel-btn.small{background:none;border:1px solid var(--border);color:var(--text-secondary);padding:4px 10px;font-size:12px;cursor:pointer;border-radius:6px;margin-top:6px}.byok-explainer{background:var(--accent-soft);border-left:2px solid var(--accent);padding:8px 12px;font-size:12px;color:var(--text-secondary);border-radius:4px;margin-bottom:12px}.library-backup-actions{display:flex;gap:8px;margin-top:6px}.import-library-label{display:inline-flex;align-items:center;cursor:pointer;padding:8px 14px;border-radius:6px;font-size:13px;font-weight:500}.library-backup-status{margin-top:8px;font-size:12px;color:var(--text-secondary);min-height:16px}.byok-explainer code{color:var(--accent-deep)}.upload-modal progress{width:100%;margin:8px 0}.upload-modal .status-text{font-size:13px;color:var(--text-secondary)}.upload-modal .preview-summary,.upload-modal .error-text{background:var(--page-bg);border-radius:6px;padding:12px;font-size:12px;white-space:pre-wrap;font-family:ui-monospace,monospace}.upload-modal .warn{color:var(--warn);font-size:12px}@media (max-width: 720px){.phrase-cards{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}.controls-row{flex-wrap:nowrap}.progress-bar-wrap{order:10;flex-basis:100%}}.signin{min-height:100vh;display:grid;place-items:center;padding:32px 20px;background:radial-gradient(ellipse at 20% -10%,rgba(167,139,250,.18),transparent 60%),radial-gradient(ellipse at 100% 100%,rgba(244,114,182,.14),transparent 55%),var(--page-bg)}.signin-card{width:100%;max-width:460px;background:var(--surface);border:1px solid var(--border-soft);border-radius:24px;padding:40px 36px 28px;box-shadow:0 1px #fff6 inset,0 12px 40px #140c321a,0 2px 8px #0000000a;position:relative;overflow:hidden}.signin-card:before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,transparent,var(--accent),var(--teal),transparent);opacity:.7}.signin-brand{text-align:center;margin-bottom:18px}.signin-logo{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:22px;background:linear-gradient(135deg,#afa9ec2e,#f472b624);margin-bottom:14px}.signin-title{font-size:32px;font-weight:700;letter-spacing:-.02em;margin:0;background:linear-gradient(90deg,var(--accent-deep),var(--teal-deep));-webkit-background-clip:text;background-clip:text;color:transparent}.signin-tag{margin:6px 0 0;font-size:14px;color:var(--text-secondary);letter-spacing:.01em}.signin-pitch p{margin:0 0 20px;font-size:15px;line-height:1.55;color:var(--text);text-align:center}.signin-error{margin:0 0 16px;padding:10px 14px;border-radius:10px;background:#f080801f;color:var(--error);font-size:13px;text-align:center}.signin-google-btn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:14px 18px;margin:6px 0 12px;background:var(--text);color:var(--surface);border-radius:14px;font-size:15px;font-weight:600;text-decoration:none;letter-spacing:.01em;transition:transform .12s ease,box-shadow .2s ease,opacity .2s ease;box-shadow:0 6px 18px #140c322e}.signin-google-btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px #140c3238}.signin-google-btn:active{transform:translateY(0);opacity:.92}.signin-google-btn svg{background:#fff;border-radius:4px;padding:2px}.signin-fineprint{margin:0 0 22px;text-align:center;font-size:12px;color:var(--text-muted)}.signin-byok{margin-top:8px;padding:16px 18px;background:var(--surface-alt);border:1px solid var(--border-soft);border-radius:14px}.signin-byok h3{margin:0 0 6px;font-size:13px;font-weight:600;color:var(--text);letter-spacing:.02em;text-transform:uppercase}.signin-byok p{margin:0;font-size:13px;line-height:1.55;color:var(--text-secondary)}.signin-byok a{color:var(--accent-deep);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent-deep) 30%,transparent)}.signin-byok a:hover{border-bottom-color:var(--accent-deep)}.signin-foot{margin-top:22px;text-align:center;font-size:11px;color:var(--text-faint);letter-spacing:.08em;text-transform:uppercase}@media (max-width: 480px){.signin-card{padding:32px 22px 22px;border-radius:20px}.signin-title{font-size:28px}}
