:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101315;--bg-2:#14181b;--panel:#181d20;--panel-2:#20272a;--line:#2c3538;--text:#edf3f1;--text-dim:#abb8b4;--muted:#859590;--teal:#5be0b3;--teal-dim:#28775e;--amber:#e5bc76;--amber-soft:#efce96;--red:#f18b82;--green:#5be0b3;--mono:"SF Mono", ui-monospace, Menlo, Consolas, monospace;--radius:12px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-width:320px;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;line-height:1.55}button,select,input{font:inherit}button,label,select,input,summary{-webkit-tap-highlight-color:transparent}button,select,summary{cursor:pointer}button{color:inherit}button:disabled{opacity:.5;cursor:wait}button,select,input,summary,a{outline-offset:4px}:focus-visible{outline:2px solid var(--teal)}[hidden]{display:none!important}svg{vertical-align:middle;flex-shrink:0}a{color:var(--teal)}.app-shell{width:min(1184px,100% - 64px);margin:0 auto}.skip-link{background:var(--panel);z-index:50;padding:10px 16px;position:absolute;top:-80px;left:24px}.skip-link:focus{top:12px}.site-header{justify-content:space-between;align-items:center;gap:20px;padding:20px 0 16px;display:flex}.brand{align-items:center;gap:11px;display:flex}.brand-mark{width:36px;height:36px;color:var(--bg);background:var(--teal);border-radius:10px;place-items:center;display:grid}.brand-text h1{letter-spacing:-.5px;align-items:center;gap:12px;font-size:18px;font-weight:700;display:flex}.brand-text h1>span:last-child{color:var(--text-dim);letter-spacing:.2px;font-size:13px;font-weight:400}.brand-divider{color:var(--line);font-size:19px;font-weight:400}.privacy-badge{color:var(--muted);align-items:center;gap:7px;font-size:11px;display:flex}.header-tools{align-items:center;gap:14px;display:flex;position:relative}.lang-picker{align-items:center;display:flex}.lang-picker select{border-radius:999px;min-height:34px;padding:6px 28px 6px 11px;font-size:12px}.btn-install{min-height:34px;color:var(--text-dim);background:0 0;border-radius:999px;padding:6px 13px}.btn-install:hover{color:var(--teal);border-color:var(--teal)}.install-hint{z-index:60;width:min(300px,78vw);color:var(--text);background:#25372c;border:1px solid #45584e;border-radius:9px;padding:10px 13px;font-size:11px;line-height:1.65;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 6px 30px #0005}.tabs{border-bottom:1px solid var(--line);scrollbar-width:none;align-items:center;gap:6px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{color:var(--text-dim);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:10px 20px 13px;font-size:13px;font-weight:500;display:flex;position:relative}.tab:first-child{padding-left:12px}.tab:hover{color:var(--text)}.tab.active{color:var(--teal)}.tab.active:after{content:"";background:var(--teal);height:2px;position:absolute;bottom:0;left:12px;right:12px}.tab:focus-visible{outline-offset:-4px;border-radius:6px}.settings-bar{justify-content:space-between;align-items:center;gap:16px;padding:16px 0 0;display:flex}.settings-fields{align-items:center;gap:20px;min-width:0;display:flex}.settings-symbol{color:var(--muted)}.setting-field{color:var(--muted);align-items:center;gap:10px;min-width:0;font-size:12px;display:flex}select{color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:7px;max-width:100%;min-height:38px;padding:8px 30px 8px 10px;font-size:12px}select:hover{border-color:#45524c}.btn{border:1px solid var(--line);background:var(--panel-2);white-space:nowrap;border-radius:7px;justify-content:center;align-items:center;gap:9px;min-height:38px;padding:8px 15px;font-size:12px;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.btn-primary{background:var(--teal);border-color:var(--teal);color:#0d2920}.btn-primary:hover{background:#77e9c2;border-color:#77e9c2}.btn-primary.listening{color:var(--teal);background:#244235;border-color:#365f4b}.btn-secondary{color:var(--teal);background:#23332c;border-color:#324c3e}.btn-ghost{color:var(--text-dim);background:0 0}.btn-ghost:hover,.btn-secondary:hover{background:var(--panel-2);border-color:#45524c}.mic-dot,.status-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.mic-dot{width:7px;height:7px}.session-status{color:var(--muted);align-items:center;gap:7px;min-height:30px;font-size:11px;display:flex}.session-status .status-dot{width:4px;height:4px}.session-status.listening{color:var(--teal)}.mic-hint{line-height:1.5}main{min-height:470px;padding:10px 0 0}.tab-panel{display:none}.tab-panel.active{display:block}.panel-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.panel-heading h2{letter-spacing:-.6px;font-size:24px;font-weight:650;line-height:1.3}.panel-subtitle{color:var(--muted);margin-top:7px;font-size:12px}.live-badge{color:var(--text-dim);border:1px solid var(--line);border-radius:5px;align-items:center;gap:6px;padding:5px 8px;font-size:10px;display:flex}.live-badge .status-dot{color:var(--teal);width:5px;height:5px}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);min-width:0;padding:20px}.card h3,.card h4{font-size:13px;font-weight:600}.card-heading{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.card-heading h3{color:var(--text)}.card-caption,.muted{color:var(--muted);font-size:12px;line-height:1.65}.card-caption{margin-top:12px}.tuner-grid{grid-template-columns:320px minmax(0,1fr);gap:16px;display:grid}.note-card{text-align:center}.note-card .card-heading{text-align:left}.note-display{padding:8px 0 0}.note-name{font-family:var(--mono);letter-spacing:-5px;color:var(--teal);font-size:68px;font-weight:650;line-height:1.3}.note-name.flat{color:#55645f;letter-spacing:4px}.note-meta{min-height:21px;font-family:var(--mono);color:var(--muted);font-size:11px}.note-meta .sep{color:var(--line);margin:0 8px}canvas{width:100%;max-width:100%;display:block}#centsGauge{max-width:284px;height:auto;margin:10px auto 0}.cents-readout{font-family:var(--mono);margin-top:7px;font-size:22px;line-height:1.2}.cents-readout small{color:var(--muted);font-size:10px}.gauge-legend{color:var(--muted);justify-content:space-between;align-items:center;margin:12px 12px 21px;font-size:10px;display:flex}.gauge-legend span:nth-child(2){color:var(--teal)}.signal-row{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:12px;padding-top:12px;font-size:10px;display:flex}.clarity-bar{background:var(--panel-2);border-radius:2px;flex:1;height:4px;overflow:hidden}.clarity-fill{background:var(--teal);width:0%;height:100%;transition:width .12s}.curve-card{flex-direction:column;display:flex}.chart-legend{color:var(--muted);align-items:center;gap:6px;font-size:10px;display:flex}.chart-legend>span:first-child{background:var(--teal);width:13px;height:2px}.pitch-chart{background:var(--bg-2);border:1px solid #252d2f;border-radius:7px;flex:1;align-items:center;min-height:250px;display:flex;position:relative;overflow:hidden}#pitchCurve{width:100%;height:auto}.chart-empty{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px;display:flex;position:absolute;inset:0}.empty-wave{width:54px;height:54px;color:var(--teal);background:#1c2923;border-radius:50%;place-items:center;margin-bottom:3px;display:grid}.chart-empty p{color:var(--text-dim);font-size:13px}.chart-empty small{color:var(--muted);font-size:11px}.chart-footer{color:var(--muted);justify-content:space-between;gap:12px;margin-top:13px;font-size:10px;display:flex}.tuner-tip{color:var(--text-dim);align-items:center;gap:9px;padding:18px 0;font-size:11px;display:flex}.tuner-tip svg{color:var(--teal)}.guide-details{border:1px solid var(--line);color:var(--text-dim);background:0 0;border-radius:8px;padding:0;font-size:12px}.guide-details summary{min-height:42px;color:var(--text-dim);padding:12px 16px}.guide-details summary::marker{color:var(--muted)}.guide-details[open] summary{border-bottom:1px solid var(--line)}.guide-body{padding:14px 18px}.guide-body p,.guide-body li{margin-bottom:8px;line-height:1.75}.guide-body ul,.guide-body ol{padding-left:20px}.guide-body h4{color:var(--text);margin:16px 0 8px}.panel-stack>.card,.panel-stack>.guide-details{margin-bottom:16px}.compact-toolbar{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.practice-head{border:1px solid var(--line);background:var(--panel);border-radius:8px;margin-bottom:16px;padding:12px 16px}.key-select{color:var(--text-dim);align-items:center;gap:10px;font-size:12px;display:flex}.key-hint{color:var(--muted);font-size:11px}.exercise-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:18px;display:grid}.exercise-card{background:var(--panel);border:1px solid var(--line);cursor:pointer;text-align:left;font:inherit;border-radius:10px;min-width:0;padding:16px;transition:border-color .15s}.exercise-card:hover{background:#1c2421;border-color:#486454}.exercise-card.selected{border-color:var(--teal);background:#1d2e25}.exercise-card .ex-icon{margin-bottom:12px;font-size:20px}.exercise-card h4{margin-bottom:6px;font-size:13px}.exercise-card p{color:var(--muted);font-size:11px;line-height:1.65}.ex-best{color:var(--teal);margin-top:10px;font-size:11px}.runner-card{border-color:#385c48}.runner-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.runner-desc,.runner-tips{color:var(--muted);margin-top:8px;font-size:12px}.step-dots{flex-wrap:wrap;gap:7px;margin:18px 0;display:flex}.step-dot{background:var(--panel-2);border:1px solid var(--line);width:25px;height:25px;font-size:10px;font-family:var(--mono);color:var(--muted);border-radius:50%;place-items:center;display:grid}.step-dot.playing{border-color:var(--teal);color:var(--teal)}.step-dot.singing{border-color:var(--amber);color:var(--amber)}.step-dot.done{background:var(--teal-dim);border-color:var(--teal-dim);color:#fff}.step-dot.done.bad{background:#663c37;border-color:#915148}.runner-stage{grid-template-columns:170px minmax(0,1fr);align-items:center;gap:20px;display:grid}.target-display{text-align:center;background:var(--bg-2);border-radius:8px;padding:20px}.target-label{color:var(--muted);font-size:11px}.target-label.sing{color:var(--amber)}.target-note{font-size:40px;font-family:var(--mono);font-weight:600;line-height:1.4}.target-cents{color:var(--teal);font-family:var(--mono);min-height:18px;font-size:12px}.runner-feedback{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.fb-chip{background:var(--panel-2);border:1px solid var(--line);color:var(--muted);border-radius:5px;padding:6px 10px;font-size:11px}.fb-chip.good{color:var(--teal);border-color:#385c48}.fb-chip.bad{color:var(--red);border-color:#714a42}.runner-summary{background:#1d2e25;border-radius:8px;margin-top:16px;padding:16px}.runner-summary .big-score{font-family:var(--mono);color:var(--teal);font-size:36px}.runner-summary p{color:var(--text-dim);font-size:12px}.practice-support-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.range-controls{align-items:center;gap:8px;display:flex}.range-card p{margin-top:12px}.range-result{color:var(--text-dim);padding:12px 0 0;font-size:12px}.range-result b{font-family:var(--mono);color:var(--amber);font-size:16px}.history-list{flex-direction:column;gap:8px;max-height:240px;margin-top:16px;display:flex;overflow-y:auto}.history-item{background:var(--panel-2);border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:10px;font-size:11px;display:flex}.h-score{color:var(--teal);font-family:var(--mono);font-weight:600}.h-time{color:var(--muted);font-size:10px}.karaoke-upload-grid{grid-template-columns:1.3fr 1fr 1fr;gap:20px;display:grid}.upload-field{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.upload-label{color:var(--text-dim);margin-bottom:9px;font-size:11px}.file-btn{background:var(--panel-2);cursor:pointer;min-height:38px;color:var(--text-dim);border:1px solid #3b4842;border-radius:7px;justify-content:center;align-items:center;padding:9px 14px;font-size:12px;font-weight:500;display:inline-flex}.file-btn:hover{border-color:var(--teal);color:var(--teal)}.upload-field:first-child .file-btn{color:var(--teal);background:#22382c;border-color:#3d6650}.upload-field .muted{margin-top:9px;font-size:10px}.karaoke-source-card .card-caption{margin-top:16px;font-size:10px}.k-pair-status.ok{color:var(--teal)}.k-pair-status.warn{color:var(--amber)}.karaoke-head{padding:14px 18px}.playback-actions{gap:8px;display:flex}.k-volume,.k-check{color:var(--text-dim);align-items:center;gap:10px;min-height:38px;font-size:11px;display:flex}.k-volume{margin-left:auto}input[type=range]{width:120px;height:32px;accent-color:var(--teal)}input[type=checkbox]{width:17px;height:17px;accent-color:var(--teal)}.karaoke-hint{color:var(--muted);margin-top:12px;font-size:10px}.karaoke-hint.live{color:var(--teal)}.karaoke-grid{grid-template-columns:minmax(0,1fr) 265px;gap:16px;margin-bottom:16px;display:grid}.k-timeline-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.k-now{align-items:center;gap:10px;display:flex}.k-now-label{color:var(--muted);font-size:11px;font-family:var(--mono)}.k-now-note{font-family:var(--mono);font-size:15px}.k-live-score{font-family:var(--mono);color:var(--teal);font-size:24px}.k-live-score small,.k-live-sub{color:var(--muted);margin-left:6px;font-size:10px}#karaokeCanvas{background:var(--bg-2);border-radius:7px;height:auto}.k-status{flex-direction:column;margin-top:14px;display:flex}.k-status>div{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:baseline;padding:10px 0;font-size:11px;display:flex}.k-status b{color:var(--text);font-family:var(--mono);font-size:14px}.k-status meter{align-self:center;width:90px;height:13px}meter::-webkit-meter-bar{background:var(--panel-2);border:0}meter::-webkit-meter-optimum-value{background:var(--teal)}meter::-moz-meter-bar{background:var(--teal)}.k-lyric{color:var(--text-dim);margin-top:18px;font-size:12px;line-height:1.75}.k-lyric .next{color:var(--muted);margin-top:8px;font-size:10px;display:block}.k-report-card{border-color:#385c48;grid-column:1/-1}.k-report-head{flex-wrap:wrap;align-items:baseline;gap:24px;margin:16px 0;display:flex}.k-report-score{color:var(--teal);font-size:40px;font-family:var(--mono);line-height:1.2}.k-report-score small{color:var(--muted);font-size:12px}.k-report-stats{color:var(--muted);flex-wrap:wrap;gap:12px 20px;font-size:12px;display:flex}.k-report-stats b{color:var(--text);font-family:var(--mono)}.k-report h4{color:var(--text);margin:18px 0 10px}.k-report ul{padding-left:18px}.k-report li{color:var(--text-dim);margin:8px 0;font-size:12px}.k-report li strong{color:var(--teal)}.k-seg-list{flex-direction:column;gap:8px;display:flex}.k-seg{background:var(--panel-2);border-radius:6px;grid-template-columns:65px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;font-size:12px;display:grid}.k-seg-t{font-family:var(--mono);color:var(--muted);font-size:10px}.k-seg.good .k-seg-acc{color:var(--teal)}.k-seg.mid .k-seg-acc{color:var(--amber)}.k-seg.bad .k-seg-acc{color:var(--red)}.k-seg-btn{border:1px solid var(--line);background:0 0;border-radius:5px;min-height:32px;padding:6px 10px;font-size:11px}.k-seg-btn:hover{border-color:var(--teal);color:var(--teal)}.progress-bar{background:var(--panel-2);border-radius:3px;height:5px;margin-top:14px;overflow:hidden}.progress-fill{background:var(--teal);width:0%;height:100%;transition:width .18s}.karaoke-loading p{margin-top:6px}.spectrum-grid{grid-template-columns:minmax(0,1fr);gap:16px;margin-bottom:16px;display:grid}.spectrum-card>h3{margin-bottom:16px}.spectrum-card canvas{height:auto}.spectrum-metrics{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.metric-card{border:1px solid var(--line);background:var(--panel);border-radius:10px;min-width:0;padding:16px}.metric-name{color:var(--text-dim);font-size:11px}.metric-value{font-family:var(--mono);color:var(--teal);margin:9px 0;font-size:22px;line-height:1.3}.metric-desc{color:var(--muted);font-size:10px;line-height:1.7}.learn-content{max-width:860px}.lesson{margin-bottom:28px}.lesson>h2{letter-spacing:-.3px;margin-bottom:6px;font-size:18px;font-weight:600}.lesson-sub{color:var(--muted);margin-bottom:14px;font-size:12px}.lesson .card{margin-top:12px}.lesson h4{color:var(--teal);margin-bottom:10px}.lesson p,.lesson li{color:var(--text-dim);margin-bottom:8px;font-size:13px;line-height:1.9}.lesson ul,.lesson ol{padding-left:20px}.lesson strong{color:var(--text)}.lesson .callout{border-left:2px solid var(--teal);color:var(--text-dim);background:#213128;border-radius:0 6px 6px 0;margin:12px 0;padding:12px 14px;font-size:12px}.week{border-bottom:1px solid var(--line);grid-template-columns:85px minmax(0,1fr);gap:14px;padding:12px 0;font-size:12px;display:grid}.week:last-child{border:0}.week b{color:var(--teal)}.metric-table-scroll{overflow-x:auto}.metric-table{border-collapse:collapse;width:100%;font-size:12px}.metric-table th,.metric-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px}.metric-table th{color:var(--teal);font-weight:500}.metric-table td{color:var(--text-dim)}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:baseline;gap:20px;margin-top:32px;padding:18px 0 24px;font-size:10px;display:flex}.site-footer>span{color:var(--text-dim);font-weight:600}.toast{z-index:100;max-width:min(520px,90vw);color:var(--text);background:#25372c;border:1px solid #45584e;border-radius:9px;padding:12px 18px;font-size:12px;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 30px #0005}@media (width<=1000px){.app-shell{width:calc(100% - 40px)}.tuner-grid{grid-template-columns:280px minmax(0,1fr)}.exercise-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.karaoke-grid{grid-template-columns:minmax(0,1fr) 235px}.spectrum-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.brand-text h1>span:last-child,.brand-divider{display:none}.settings-fields{gap:12px}.settings-symbol{display:none}.setting-field{gap:8px}.tuner-grid{grid-template-columns:minmax(0,1fr)}.note-card{position:relative}.note-card .note-display{padding:0}.note-name{font-size:54px;line-height:1.2}#centsGauge{max-width:225px;margin-top:2px}.gauge-legend{max-width:220px;margin:10px auto 16px}.signal-row{padding-top:10px}.pitch-chart{min-height:230px}.practice-support-grid,.karaoke-grid{grid-template-columns:minmax(0,1fr)}.k-status{grid-template-columns:1fr 1fr;gap:0 20px;display:grid}.k-lyric{margin-top:12px}.k-controls{gap:12px 16px}.k-volume{margin-left:0}.karaoke-upload-grid{grid-template-columns:1fr 1fr;gap:16px}.upload-field:first-child{grid-column:1/-1}.upload-field:first-child .file-btn{width:100%}}@media (width<=560px){.app-shell{width:calc(100% - 28px)}.site-header{gap:8px;padding:18px 0 14px}.brand-text h1{font-size:17px}.brand-mark{border-radius:8px;width:31px;height:31px}.privacy-badge{gap:5px;font-size:9px}.header-tools{gap:10px}.header-tools .privacy-badge{display:none}.lang-picker select{width:auto;min-height:34px;padding:6px 22px 6px 10px;font-size:12px}.btn-install{padding:6px 9px}.btn-install span{display:none}.tabs{gap:0;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 26px),#0000)}.tab,.tab:first-child{gap:6px;padding:11px 12px 13px;font-size:12px}.tab svg{width:15px;height:15px}.settings-bar{grid-template-columns:minmax(0,1fr);gap:10px;padding-top:14px;display:grid}.settings-fields{grid-template-columns:minmax(0,1fr);gap:10px;display:grid}.setting-field{flex-direction:row;justify-content:space-between;align-items:center;gap:10px;font-size:11px}.setting-field select{width:auto}select{width:100%;min-height:38px;padding-right:18px;font-size:13px}.mic-control .btn{width:100%;min-height:40px}.session-status{padding-top:8px;padding-bottom:6px;font-size:10px}main{padding-top:14px}.panel-heading{gap:10px;margin-bottom:18px}.panel-heading h2{font-size:21px}.panel-subtitle{margin-top:6px;font-size:11px}.live-badge{flex-shrink:0;font-size:9px}.card{border-radius:10px;padding:16px}.tuner-grid{gap:12px}.note-card .card-heading{margin-bottom:8px}.note-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;padding-bottom:12px;display:grid}.note-card .card-heading{grid-column:1/-1}.note-display{flex-direction:column;grid-area:2/1/5;justify-content:center;display:flex}.note-name{font-size:44px}.note-meta{font-size:10px}.note-meta .sep{margin:0 4px}#centsGauge{grid-area:2/2;max-width:205px}.cents-readout{grid-area:3/2;margin-top:5px;font-size:18px}.gauge-legend{grid-area:4/2;width:100%;margin:8px 0 12px;font-size:9px}.signal-row{grid-column:1/-1}.pitch-chart{min-height:200px}.chart-empty{padding:24px 20px}.chart-empty p{font-size:12px}.chart-empty small{font-size:10px}.tuner-tip{align-items:flex-start;padding:16px 0;font-size:10px}.chart-footer{font-size:9px}.guide-details summary{padding:12px;font-size:11px}.guide-body{padding:12px}.compact-toolbar{gap:10px}.key-select{justify-content:space-between;width:100%}.key-select select{width:auto;max-width:190px}.key-hint{font-size:10px}.exercise-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.exercise-card{padding:14px}.exercise-card .ex-icon{margin-bottom:8px}.exercise-card h4{font-size:12px}.runner-stage{grid-template-columns:minmax(0,1fr);gap:12px}.target-display{padding:12px}.target-note{font-size:34px}.range-controls .btn{padding:8px 10px}.karaoke-upload-grid{gap:16px 10px}.file-btn{padding:9px 10px;font-size:11px}.k-volume{flex:auto}.k-volume input{flex:1;max-width:135px}.k-check{min-height:38px}input[type=checkbox]{width:32px;height:32px}.playback-actions{width:100%}.playback-actions .btn{flex:1}.karaoke-hint{font-size:10px}.k-live-score{font-size:21px}.k-timeline-card .card-caption{font-size:10px}#karaokeCanvas{min-height:175px}.spectrum-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric-card{padding:14px}.metric-value{font-size:20px}.lesson>h2{font-size:16px}.lesson p,.lesson li{font-size:12px}.metric-table{min-width:450px}.week{grid-template-columns:minmax(0,1fr);gap:5px}.k-report-stats{gap:10px;font-size:11px}.k-seg{grid-template-columns:45px minmax(0,1fr) auto;gap:7px;font-size:11px}.k-seg-btn{padding:6px 8px;font-size:10px}.site-footer{padding-bottom:max(24px, env(safe-area-inset-bottom));flex-direction:column;gap:6px;margin-top:24px;font-size:9px}}@media (width<=380px){.privacy-badge svg{display:none}.tab,.tab:first-child{padding-left:10px;padding-right:10px}.tab svg,.live-badge{display:none}.k-volume{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@supports (padding:max(0px)){.app-shell{padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}}.karaoke-mode-bar{justify-content:space-between;align-items:center;gap:16px;margin:-8px 0 18px;display:flex}.karaoke-modes{border:1px solid var(--line);background:var(--bg-2);border-radius:8px;flex-shrink:0;padding:3px;display:inline-flex}.karaoke-modes button{min-height:36px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:5px;padding:6px 14px;font-size:12px}.karaoke-modes button.active{color:var(--teal);background:#22362c;border-color:#365544}.karaoke-live>.card,.karaoke-live>.karaoke-grid,.karaoke-live>.guide-details{margin-bottom:16px}.k-coach{background:#1d2d23;border:1px solid #3b5343;border-radius:8px;min-height:102px;margin:-2px -2px 18px;padding:12px}.k-coach-label{color:var(--teal);letter-spacing:.08em;font-size:10px}.k-coach p{color:var(--text);margin-top:7px;font-size:13px;line-height:1.65}.k-coach[data-tone=notice]{background:#332b20;border-color:#766044}.k-coach[data-tone=notice] .k-coach-label{color:var(--amber)}.k-coach[data-tone=positive]{border-color:#548669}.k-check{cursor:pointer;min-height:36px}.k-session-card{margin-top:16px}.k-session-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 20px;display:flex}.k-session-heading h3{font-size:14px}.k-session-heading .muted{font-size:11px;line-height:1.6}.k-session-status{color:var(--teal);margin-top:12px;font-size:12px;line-height:1.6}.k-session-error,.review-session-hint{color:var(--amber);overflow-wrap:anywhere;margin-top:8px;font-size:12px;line-height:1.6}.k-session-empty{color:var(--muted);margin-top:8px;font-size:11px}.k-session-list{max-height:360px;margin:12px 0 0;padding:0;list-style:none;overflow-y:auto}.k-session-item{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding:12px 0;display:flex}.k-session-meta{flex-direction:column;gap:4px;min-width:0;display:flex}.k-session-meta strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;overflow:hidden}.k-session-meta span,.k-session-meta small{color:var(--muted);font-size:10px}.k-session-current .k-session-meta small{color:var(--teal)}.k-session-actions{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px 7px;display:flex}.k-session-actions .btn{min-height:34px;padding:6px 10px;font-size:11px}.k-session-delete-confirm{max-width:360px}.k-session-delete-confirm>span{color:var(--amber);flex-basis:100%;font-size:11px}@media (width<=600px){.k-coach{min-height:85px;margin-bottom:12px}.k-session-item{flex-direction:column;align-items:stretch;gap:8px}.k-session-actions{justify-content:flex-start}.k-session-heading{display:block}.k-session-heading .muted{margin-top:6px}}@media (width<=760px){.karaoke-workspace .k-status-card{grid-row:1}}.recording-review>.card,.review-report>.card,.review-report>.guide-details{margin-bottom:16px}.review-section-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.review-section-heading h3{font-size:14px}.review-section-heading .muted{margin-top:4px}.review-source-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.review-source{min-width:0}.review-source-heading{color:var(--text-dim);justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;font-size:12px;display:flex}.review-text-button{min-height:32px;color:var(--teal);background:0 0;border:0;padding:4px 8px;font-size:11px}.review-text-button:hover{background:var(--panel-2);border-radius:5px}.review-file-row{align-items:center;gap:10px;min-width:0;display:flex}.review-file-row .file-btn{flex-shrink:0}.review-vocal-button{color:var(--teal);background:#22382c;border-color:#3d6650}.review-filename{min-width:0;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.review-source-kind{color:var(--muted);align-items:center;gap:10px;margin-top:10px;font-size:11px;display:flex}.review-source-kind select{flex:1;min-width:0;max-width:300px;font-size:11px}.review-analysis-controls{border-top:1px solid var(--line);flex-wrap:wrap;align-items:end;gap:12px 20px;margin-top:18px;padding-top:15px;display:flex}.review-analysis-controls>label{color:var(--text-dim);flex-direction:column;gap:6px;font-size:11px;display:flex}.review-analysis-controls .review-check{flex-direction:row;flex:1;align-items:center;min-width:180px;min-height:38px}.review-analysis-controls .review-auto-offset{flex:0 auto;min-width:135px}.review-number-field{background:var(--bg-2);border:1px solid var(--line);font-family:var(--mono);color:var(--muted);border-radius:7px;align-items:center;gap:6px;padding-right:10px;display:flex}.review-number-field input{width:92px;min-width:0;min-height:38px;color:var(--text);background:0 0;border:0;border-radius:7px;padding:7px 8px;font-size:12px}.review-control-hint{color:var(--muted);margin-top:12px;font-size:11px;line-height:1.65}.review-offset-estimate{color:var(--amber);margin-top:8px;font-size:11px;line-height:1.65}.review-alignment-anchors{flex-wrap:wrap;gap:8px;margin-top:9px;display:flex}.review-alignment-anchor{border:1px solid var(--line);border-radius:6px;align-items:center;gap:5px;padding:2px 7px;display:flex}.review-alignment-anchor>span{font:10px var(--mono);color:var(--muted);margin-right:3px}.review-check{min-height:38px;color:var(--text-dim);align-items:center;gap:7px;font-size:11px;display:inline-flex}.review-progress{color:var(--teal);align-items:center;gap:12px;margin-top:14px;font-size:11px;display:flex}.review-progress progress{min-width:0;height:8px;accent-color:var(--teal);border:0;border-radius:4px;flex:1;overflow:hidden}.review-progress progress::-webkit-progress-bar{background:var(--panel-2)}.review-progress progress::-webkit-progress-value{background:var(--teal)}.review-status{color:var(--teal);margin-top:12px;font-size:11px}.review-notice{color:var(--amber);overflow-wrap:anywhere;margin-top:12px;font-size:12px;line-height:1.65}.review-preview-bar{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px 20px;padding:12px 16px;display:grid}.review-preview-options{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:10px;font-size:11px;display:flex}.review-preview-options select{max-width:180px;font-size:11px}.review-preview-bar audio{width:100%;min-width:0;height:38px}.review-audio-match{color:var(--muted);grid-column:1/-1;font-size:11px}.review-audio-match[data-matched=true]{color:var(--teal)}.review-result-heading{padding-top:12px}.review-stale{color:var(--amber);background:#3a3021;border:1px solid #645338;border-radius:8px;margin-bottom:12px;padding:12px 16px;font-size:12px}.review-quality{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:8px 16px;margin:0 0 18px;font-size:11px;display:flex}.review-quality strong{color:var(--teal);font-weight:500}.review-quality[data-quality=limited] strong,.review-quality[data-quality=insufficient] strong{color:var(--amber)}.review-priority{margin-bottom:20px}.review-priority .review-section-heading{margin-bottom:12px}.review-score{color:var(--teal);font-family:var(--mono);align-items:baseline;gap:8px;font-size:24px;display:inline-flex}.review-score small{color:var(--muted);font-family:inherit;font-size:10px;font-weight:400}.review-issue-list{flex-direction:column;gap:8px;display:flex}.review-issue{border:1px solid var(--line);border-left:2px solid var(--amber);background:var(--panel);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:15px 16px;display:flex}.review-issue-body{min-width:0}.review-issue h4{margin:3px 0 6px;font-size:13px;font-weight:600}.review-issue p{color:var(--text-dim);font-size:12px;line-height:1.7}.review-issue .review-evidence{color:var(--muted);margin-bottom:5px;font-size:11px}.review-issue-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.review-time-tag{font-family:var(--mono);color:var(--amber);font-size:10px}.review-hypotheses>.muted{margin-top:6px}.review-hypothesis-grid{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:16px;margin-top:16px;display:grid}.review-hypothesis{border-top:1px solid var(--line);min-width:0;padding-top:12px}.review-hypothesis-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:5px;display:flex}.review-hypothesis h4{font-size:12px;line-height:1.5}.review-confidence{white-space:nowrap;color:var(--amber);border:1px solid #5b4c33;border-radius:4px;padding:3px 6px;font-size:10px;display:inline-block}.review-hypothesis p{color:var(--text-dim);margin-bottom:9px;font-size:11px;line-height:1.75}.review-hypothesis .review-time-tag{color:var(--muted);font-size:10px}.review-hypothesis .review-evidence{color:var(--muted)}.review-hypothesis b{font-weight:500}.review-verification{background:#203127;border-radius:6px;padding:10px 12px}.review-empty-hypotheses{color:var(--text-dim);margin-top:14px;font-size:12px;line-height:1.75}.review-chart-card .review-section-heading{margin-bottom:12px}.review-chart-legend{color:var(--muted);align-items:center;gap:14px;font-size:10px;display:flex}.review-chart-legend span:before{content:"";background:var(--teal);vertical-align:middle;width:12px;height:2px;margin-right:6px;display:inline-block}.review-chart-legend .review-legend-reference:before{background:#a6b2b9}.review-canvas{border:1px solid var(--line);cursor:crosshair;touch-action:manipulation;border-radius:7px;width:100%;margin-bottom:10px}.review-comparison-status{color:var(--amber);padding-top:10px;font-size:11px;line-height:1.65}.review-comparison-status.ready{color:var(--teal)}.review-summary{flex-wrap:wrap;gap:16px 28px;margin-bottom:18px;display:flex}.review-summary dt{color:var(--muted);margin-bottom:3px;font-size:11px}.review-summary dd{font-family:var(--mono);color:var(--text);font-size:14px}.review-table-scroll{overflow-x:auto}.review-segment-table{border-collapse:collapse;width:100%;min-width:490px;font-size:11px}.review-segment-table th{color:var(--muted);text-align:left;font-weight:500}.review-segment-table td,.review-segment-table th{border-bottom:1px solid var(--line);vertical-align:middle;padding:8px 10px}.review-all-observations{margin:18px 0 8px;font-size:12px;font-weight:500}.review-segment-table .review-evidence{min-width:170px;color:var(--muted);font-size:10px;line-height:1.6}.review-command{align-items:center;gap:8px;margin:8px 0 10px;display:flex}.review-command input{min-width:0;color:var(--text-dim);background:var(--bg-2);border:1px solid var(--line);font-family:var(--mono);border-radius:6px;flex:1;padding:9px 10px;font-size:11px}.review-preparation{margin-top:16px}@media (width<=900px){.review-preview-bar{grid-template-columns:minmax(0,1fr)}.review-preview-options{gap:10px 16px}.review-issue{align-items:flex-start}.review-issue-actions{flex-direction:column;align-items:stretch}}@media (width<=560px){.karaoke-mode-bar{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:16px}.karaoke-mode-bar>p{font-size:10px}.review-source-grid{grid-template-columns:minmax(0,1fr);gap:16px}.review-source+.review-source{border-top:1px solid var(--line);padding-top:14px}.review-file-row{flex-wrap:wrap;gap:7px 10px}.review-filename{flex:90px}.review-source-kind select{width:auto;font-size:11px}.review-analysis-controls{gap:12px}.review-analysis-controls>label:not(.review-check){flex:1;min-width:100px}.review-analysis-controls .review-check{flex:100%;width:100%}.review-analysis-controls .btn-primary{flex:1}.review-number-field input{width:100%}.review-issue{flex-direction:column;gap:10px;padding:13px}.review-issue-actions{flex-flow:wrap;width:100%}.review-issue-actions .btn{flex:1}.review-chart-legend{flex-wrap:wrap;gap:8px}.review-progress{flex-direction:column;align-items:stretch;gap:6px}.review-progress progress{flex:auto;width:100%}.review-command{flex-wrap:wrap}.review-command input{flex:100%;min-height:38px}}
