:root{color-scheme:light dark;font-family:Aptos,Segoe UI Variable,Segoe UI,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--page: #f3f5f8;--surface: #fbfcfd;--surface-raised: #ffffff;--surface-muted: #e9edf3;--text: #18202d;--text-secondary: #596579;--text-tertiary: #778397;--line: #d8dee8;--line-strong: #c2cbd8;--accent: #2856bc;--accent-hover: #1f459c;--accent-soft: #e7edfc;--accent-text: #193b86;--success: #237450;--success-soft: #e2f2ea;--warning: #9a6514;--warning-soft: #fff1d3;--danger: #b3423f;--danger-hover: #913331;--danger-soft: #fae7e6;--shadow: 0 16px 48px rgba(54, 66, 91, .1);--radius: 12px;--header-height: 68px}@media(prefers-color-scheme:dark){:root{--page: #10141b;--surface: #161c25;--surface-raised: #1b222d;--surface-muted: #242d3a;--text: #e8ecf2;--text-secondary: #b1bac8;--text-tertiary: #8e99aa;--line: #303a48;--line-strong: #465264;--accent: #89a8fa;--accent-hover: #a6bcfa;--accent-soft: #223359;--accent-text: #c5d3ff;--success: #76cba3;--success-soft: #193b2e;--warning: #e7bd72;--warning-soft: #43351c;--danger: #f09591;--danger-hover: #f4aaa7;--danger-soft: #4b292c;--shadow: 0 18px 52px rgba(3, 7, 13, .32)}}*{box-sizing:border-box}html{min-width:320px;background:var(--page)}body{margin:0;min-width:320px;min-height:100dvh;background:var(--page);color:var(--text)}button,input,select{font:inherit}button,a,select,input{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 42%,transparent);outline-offset:2px}a{color:inherit}h1,h2,h3,p{margin:0}.app-shell{min-height:100dvh}.app-header{position:sticky;top:0;z-index:20;height:var(--header-height);border-bottom:1px solid color-mix(in srgb,var(--line) 86%,transparent);background:color-mix(in srgb,var(--page) 91%,transparent);backdrop-filter:blur(16px) saturate(130%);-webkit-backdrop-filter:blur(16px) saturate(130%)}.app-header__inner{display:flex;align-items:center;justify-content:space-between;width:min(100% - 40px,1480px);height:100%;margin:0 auto}.brand{display:inline-flex;align-items:center;gap:11px;color:var(--text);text-decoration:none}.brand__mark{display:grid;width:38px;height:38px;place-items:center;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:var(--radius);background:var(--accent-soft);color:var(--accent)}.brand>span:last-child{display:grid;gap:1px}.brand strong{font-size:15px;letter-spacing:-.01em}.brand small{color:var(--text-tertiary);font-size:11px}.app-nav{display:flex;align-items:center;gap:4px}.app-nav__link{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 12px;border-radius:var(--radius);color:var(--text-secondary);font-size:14px;font-weight:600;text-decoration:none;transition:background-color .15s ease,color .15s ease,transform .12s ease}.app-nav__link:hover:not(.app-nav__link--disabled),.app-nav__link--active{background:var(--surface-muted);color:var(--text)}.app-nav__link:active:not(.app-nav__link--disabled){transform:translateY(1px)}.app-nav__link--disabled{cursor:not-allowed;opacity:.42}.app-main{min-height:calc(100dvh - var(--header-height))}.page{width:min(100% - 40px,1480px);margin:0 auto;padding:32px 0 64px}.page--narrow{display:grid;justify-items:start;gap:20px;width:min(100% - 40px,720px);padding-top:72px}.eyebrow{color:var(--accent);font-family:Cascadia Code,Consolas,monospace;font-size:11px;font-weight:700;letter-spacing:.13em}.section-heading{display:grid;gap:7px}.section-heading h2{color:var(--text);font-size:clamp(20px,2vw,26px);letter-spacing:-.025em}.section-heading p{max-width:64ch;color:var(--text-secondary);font-size:14px;line-height:1.55}.section-heading--compact{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-heading--compact>div{display:grid;gap:4px}.section-heading--compact h2{font-size:16px;letter-spacing:-.012em}.section-heading--compact p{font-size:12px;line-height:1.45}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 15px;border:1px solid transparent;border-radius:var(--radius);cursor:pointer;font-size:14px;font-weight:700;line-height:1;text-decoration:none;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .12s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{cursor:not-allowed;opacity:.5}.button--primary{background:var(--accent);color:#f8faff}.button--primary:hover:not(:disabled){background:var(--accent-hover)}@media(prefers-color-scheme:dark){.button--primary{color:#101724}}.button--secondary{border-color:var(--line-strong);background:var(--surface-raised);color:var(--text)}.button--secondary:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:var(--accent-soft);color:var(--accent-text)}.button--danger{background:var(--danger);color:#fff8f7}.button--danger:hover:not(:disabled){background:var(--danger-hover)}@media(prefers-color-scheme:dark){.button--danger{color:#281416}}.button--text{min-height:32px;padding:0;background:transparent;color:var(--accent)}.button--full{width:100%}.button--large{min-height:48px;font-size:15px}.notice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:13px 14px;border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font-size:13px;line-height:1.5}.notice__icon{margin-top:1px}.notice__body{margin-top:3px;color:var(--text-secondary)}.notice--info{border-color:color-mix(in srgb,var(--accent) 24%,var(--line));background:var(--accent-soft)}.notice--info .notice__icon{color:var(--accent)}.notice--success{border-color:color-mix(in srgb,var(--success) 26%,var(--line));background:var(--success-soft)}.notice--success .notice__icon{color:var(--success)}.notice--warning{border-color:color-mix(in srgb,var(--warning) 27%,var(--line));background:var(--warning-soft)}.notice--warning .notice__icon{color:var(--warning)}.notice--danger{border-color:color-mix(in srgb,var(--danger) 28%,var(--line));background:var(--danger-soft)}.notice--danger .notice__icon{color:var(--danger)}.loading-block{display:grid;gap:14px;padding:24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.loading-block__line{height:18px;border-radius:var(--radius);background:var(--surface-muted)}@media(prefers-reduced-motion:no-preference){.loading-block__line{animation:skeleton-pulse 1.4s ease-in-out infinite alternate}}@keyframes skeleton-pulse{to{opacity:.48}}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.library-intro{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:72px;align-items:end;width:100%;padding:30px 0 48px}.page--library{width:calc(100% - 40px);max-width:1480px}.library-intro>div:first-child{display:grid;gap:16px}.library-intro h1{max-width:820px;font-size:clamp(36px,5vw,64px);font-weight:650;letter-spacing:-.052em;line-height:1.03}.library-intro>div:first-child>p:last-child{max-width:64ch;color:var(--text-secondary);font-size:16px;line-height:1.65}.library-intro__actions{display:grid;justify-items:start;gap:22px}.library-facts{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));width:100%;margin:0;padding-top:18px;border-top:1px solid var(--line-strong)}.library-facts div{display:grid;gap:5px}.library-facts dt,.score-row__meta dt{color:var(--text-tertiary);font-size:12px}.library-facts dd{margin:0;color:var(--text);font-family:Cascadia Code,Consolas,monospace;font-size:23px;font-weight:650}.import-panel,.score-library{display:grid;gap:24px;width:100%;padding:28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.import-panel{margin-bottom:28px;box-shadow:var(--shadow)}.import-form{display:grid;grid-template-columns:minmax(180px,.75fr) minmax(180px,.65fr) minmax(260px,1.15fr) auto;gap:14px;align-items:end}.field{display:grid;gap:7px;min-width:0}.field__label{color:var(--text-secondary);font-size:12px;font-weight:700}.field input,.field select,.select-wrap select{width:100%;min-height:42px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);font-size:14px}.field input{padding:0 12px}.field input::placeholder{color:var(--text-tertiary);opacity:1}.file-field{position:relative;display:flex;align-items:center;gap:10px;min-height:58px;padding:8px 12px;overflow:hidden;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);cursor:pointer}.file-field>svg{flex:0 0 auto;color:var(--accent)}.file-field>span{display:grid;gap:2px}.file-field strong{font-size:13px}.file-field small{color:var(--text-tertiary);font-size:11px}.file-field input{position:absolute;inset:0;cursor:pointer;opacity:0}.score-list{display:grid;gap:8px}.score-row{display:grid;grid-template-columns:auto minmax(180px,1fr) minmax(170px,.45fr) auto;gap:18px;align-items:center;padding:16px;border:1px solid transparent;border-radius:var(--radius);transition:background-color .15s ease,border-color .15s ease}.score-row:hover{border-color:var(--line);background:var(--surface-raised)}.score-row__icon{display:grid;width:44px;height:44px;place-items:center;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent)}.score-row__identity{display:grid;gap:4px}.score-row__identity h3{overflow:hidden;font-size:16px;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap}.score-row__identity p{color:var(--text-secondary);font-size:13px}.score-row__meta{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:0}.score-row__meta div{display:grid;gap:3px}.score-row__meta dd{margin:0;color:var(--text);font-family:Cascadia Code,Consolas,monospace;font-size:14px;font-weight:700}.score-row__actions{display:flex;align-items:center;gap:8px}.empty-state{display:grid;justify-items:start;gap:9px;min-height:240px;padding:44px;border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--text-secondary)}.empty-state>svg{margin-bottom:5px;color:var(--accent)}.empty-state strong{color:var(--text);font-size:18px}.empty-state p{max-width:52ch;font-size:14px;line-height:1.55}.empty-state .button{margin-top:12px}.empty-state--compact{min-height:0;padding:28px}.empty-state__actions,.library-import-actions{display:flex;flex-wrap:wrap;gap:9px}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.page--score-import-new,.page--score-import-detail{width:min(100% - 40px,1360px)}.score-import-page-header,.score-import-detail-header{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:56px;align-items:end;padding:12px 0 34px}.score-import-page-header>div:first-child,.score-import-detail-header>div:first-child{display:grid;justify-items:start;gap:10px}.score-import-page-header h1,.score-import-detail-header h1{max-width:820px;font-size:clamp(36px,5vw,58px);font-weight:650;letter-spacing:-.05em;line-height:1.05}.score-import-page-header>div:first-child>p:last-child,.score-import-detail-header>div:first-child>p:last-child{max-width:64ch;color:var(--text-secondary);font-size:15px;line-height:1.6}.score-import-safety-note{display:grid;gap:5px;padding:18px 0 2px 18px;border-left:3px solid var(--accent)}.score-import-safety-note strong{font-size:14px}.score-import-safety-note span{color:var(--text-secondary);font-size:12px;line-height:1.5}.score-import-create,.page--score-import-detail{display:grid;gap:18px}.score-import-card,.score-import-progress-card,.score-import-review-toolbar,.score-import-review-pane,.score-import-publish-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.score-import-card,.score-import-progress-card,.score-import-review-toolbar{display:grid;gap:22px;padding:24px}.score-import-meta-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.75fr);gap:14px}.score-import-dropzone{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:center;width:100%;min-height:106px;padding:20px;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);cursor:pointer;text-align:left;transition:border-color .15s ease,background-color .15s ease,transform .12s ease}.score-import-dropzone:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:var(--accent-soft)}.score-import-dropzone:active:not(:disabled){transform:translateY(1px)}.score-import-dropzone:disabled{cursor:not-allowed;opacity:.55}.score-import-dropzone__icon{display:grid;width:46px;height:46px;place-items:center;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent)}.score-import-dropzone>span:last-child{display:grid;gap:5px}.score-import-dropzone strong{font-size:14px}.score-import-dropzone small{color:var(--text-tertiary);font-size:12px;line-height:1.45}.score-import-files-empty{display:flex;align-items:center;gap:12px;min-height:76px;padding:16px 18px;border-radius:var(--radius);background:var(--surface-muted);color:var(--text-secondary)}.score-import-files-empty svg{flex:0 0 auto;color:var(--accent)}.score-import-files-empty p{font-size:13px;line-height:1.5}.score-import-file-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.score-import-file-list li{display:grid;grid-template-columns:64px 70px minmax(0,1fr) auto auto;gap:12px;align-items:center;min-height:72px;padding:8px 10px 8px 8px;border-radius:var(--radius);background:var(--surface-muted)}.score-import-file-preview{display:grid;width:64px;height:56px;overflow:hidden;place-items:center;border-radius:var(--radius);background:var(--surface-raised);color:var(--accent)}.score-import-file-preview img{width:100%;height:100%;object-fit:cover}.score-import-file-order{color:var(--text-secondary);font-family:Cascadia Code,Consolas,monospace;font-size:11px;font-weight:700}.score-import-file-name{display:grid;gap:3px;min-width:0}.score-import-file-name strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.score-import-file-name small{color:var(--text-tertiary);font-size:11px}.score-import-reorder{display:flex;gap:4px}.score-import-reorder button,.score-import-file-remove,.candidate-version>button{display:grid;width:32px;height:32px;place-items:center;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text-secondary);cursor:pointer}.score-import-reorder button:hover:not(:disabled),.candidate-version>button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.score-import-file-remove{color:var(--danger)}.score-import-file-remove:hover:not(:disabled){border-color:var(--danger);background:var(--danger-soft)}.score-import-reorder button:disabled,.score-import-file-remove:disabled{cursor:not-allowed;opacity:.36}.score-import-submit-card,.score-import-failure-card,.score-import-waiting,.score-import-published-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;padding:22px 24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-muted)}.score-import-submit-card>div,.score-import-waiting>div,.score-import-published-card>div:nth-child(2){display:grid;gap:5px}.score-import-submit-card strong,.score-import-waiting strong,.score-import-published-card strong{font-size:14px}.score-import-submit-card span,.score-import-waiting p,.score-import-published-card p{color:var(--text-secondary);font-size:12px;line-height:1.5}.score-import-detail-header{padding-bottom:18px}.score-import-status{display:inline-flex;justify-self:end;align-items:center;gap:8px;min-height:42px;padding:0 13px;border:1px solid var(--line-strong);border-radius:var(--radius);font-size:13px;font-weight:750}.score-import-status--active{border-color:color-mix(in srgb,var(--accent) 36%,var(--line));background:var(--accent-soft);color:var(--accent-text)}.score-import-status--success{border-color:color-mix(in srgb,var(--success) 35%,var(--line));background:var(--success-soft);color:var(--success)}.score-import-status--warning{border-color:color-mix(in srgb,var(--warning) 36%,var(--line));background:var(--warning-soft);color:var(--warning)}.score-import-status--danger{border-color:color-mix(in srgb,var(--danger) 36%,var(--line));background:var(--danger-soft);color:var(--danger)}.score-import-progress-card .section-heading--compact>strong{color:var(--accent);font-family:Cascadia Code,Consolas,monospace;font-size:20px}.score-import-progress-track{height:8px;overflow:hidden;border-radius:var(--radius);background:var(--surface-muted)}.score-import-progress-track span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .26s ease}.score-import-history{display:flex;gap:7px;margin:0;padding:2px 0 7px;overflow-x:auto;list-style:none;scrollbar-width:thin}.score-import-history li{display:inline-flex;flex:0 0 auto;align-items:center;gap:7px;min-height:34px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-tertiary);font-size:11px}.score-import-history li>span{font-family:Cascadia Code,Consolas,monospace;font-size:9px}.score-import-history li.is-current{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:var(--accent-soft);color:var(--accent-text)}.score-import-provenance{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding-top:18px;border-top:1px solid var(--line)}.score-import-provenance>div{display:grid;gap:4px;min-width:0;padding:0 13px;border-left:1px solid var(--line)}.score-import-provenance>div:first-child{padding-left:0;border-left:0}.score-import-provenance dt{color:var(--text-tertiary);font-size:10px;font-weight:700}.score-import-provenance dd{margin:0;overflow:hidden;font-family:Cascadia Code,Consolas,monospace;font-size:11px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.diagnostic-list,.candidate-diagnostics ul{display:grid;gap:5px;margin:0;padding-left:18px}.score-import-failure-card{grid-template-columns:auto minmax(0,1fr) auto;border-color:color-mix(in srgb,var(--danger) 32%,var(--line));background:var(--danger-soft);color:var(--danger)}.score-import-failure-card>div{display:grid;gap:4px}.score-import-failure-card p,.score-import-failure-card small{color:color-mix(in srgb,var(--danger) 74%,var(--text));font-size:12px;line-height:1.45}.score-import-waiting{grid-template-columns:auto minmax(0,1fr);min-height:128px;color:var(--accent)}.score-import-waiting p{color:var(--text-secondary)}.candidate-version-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px}.candidate-version{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:9px;align-items:center;min-height:64px;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-raised);cursor:pointer}.candidate-version.is-preview{border-color:color-mix(in srgb,var(--accent) 42%,var(--line))}.candidate-version input{width:17px;height:17px;accent-color:var(--accent)}.candidate-version>span{display:grid;gap:3px;min-width:0}.candidate-version strong{font-size:12px}.candidate-version small{overflow:hidden;color:var(--text-tertiary);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.candidate-version>button{width:auto;padding:0 8px;font-size:11px}.candidate-validation{display:inline-flex;align-items:center;gap:5px;color:var(--text-secondary);font-size:10px;font-style:normal;font-weight:750;white-space:nowrap}.candidate-validation--compatible{color:var(--success)}.candidate-validation--review_required{color:var(--warning)}.candidate-validation--invalid{color:var(--danger)}.score-import-review-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-width:0}.score-import-review-pane{min-width:0;overflow:hidden}.score-import-review-pane>header{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:66px;padding:12px 14px;border-bottom:1px solid var(--line)}.score-import-review-pane>header>div{display:flex;align-items:center;gap:9px;min-width:0}.score-import-review-pane>header svg{flex:0 0 auto;color:var(--accent)}.score-import-review-pane>header span{display:grid;gap:3px;min-width:0}.score-import-review-pane>header strong,.score-import-review-pane>header small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-import-review-pane>header strong{font-size:13px}.score-import-review-pane>header small{color:var(--text-tertiary);font-size:10px}.score-import-review-pane>header select{max-width:230px;min-height:36px;padding:0 30px 0 9px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);font-size:11px}.source-page-viewer,.musicxml-preview{position:relative;min-height:560px;overflow:auto;background:#f7f7f5}.source-page-viewer__meta{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;min-height:38px;padding:0 11px;border-bottom:1px solid #dde0e4;background:#f7f7f5f0;color:#454c58;font-size:10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.source-page-viewer__meta strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-page-viewer__meta small{margin-left:auto;white-space:nowrap}.source-page-viewer object{width:100%;height:70dvh;min-height:560px;border:0}.source-page-viewer__image{display:grid;min-height:560px;place-items:start center;padding:16px}.source-page-viewer__image img{width:auto;max-width:100%;height:auto;max-height:none;box-shadow:0 10px 28px #1d26361f}.score-import-hash{padding:10px 13px;overflow-wrap:anywhere;border-top:1px solid var(--line);color:var(--text-tertiary);font-family:Cascadia Code,Consolas,monospace;font-size:9px;line-height:1.45}.musicxml-preview__hint{position:sticky;top:0;z-index:1;margin:0;padding:8px 13px;border-bottom:1px solid #dde0e4;background:#f7f7f5f5;color:#5a6574;font-size:11px;line-height:1.45}.source-page-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:0 13px 12px;border-bottom:1px solid var(--line)}.source-page-tabs button{padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text-secondary);font-size:11px}.source-page-tabs button.is-active{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:var(--accent-soft);color:var(--accent);font-weight:600}.musicxml-preview__canvas{min-width:620px;min-height:560px;padding:12px 14px 36px;color:#17191d}.musicxml-preview__state,.score-import-preview-loading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:560px;color:#5a6574;font-size:12px}.musicxml-preview__state{position:absolute;inset:0;z-index:2;background:#f7f7f5f0}.musicxml-preview__state--failure{flex-direction:column;padding:22px;color:#a33a38;text-align:center}.musicxml-preview__state--failure span{max-width:48ch;line-height:1.5}.candidate-diagnostics{display:grid;gap:10px;padding:14px;border-top:1px solid var(--line)}.candidate-diagnostics header{display:flex;align-items:center;justify-content:space-between;gap:12px}.candidate-diagnostics code{overflow:hidden;color:var(--text-tertiary);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.candidate-diagnostics ul,.candidate-diagnostics p{color:var(--text-secondary);font-size:11px;line-height:1.5}.score-import-publish-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(330px,auto);gap:0;overflow:hidden}.score-import-correction,.score-import-publish-action{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px}.score-import-correction{border-right:1px solid var(--line)}.score-import-correction>div{display:grid;gap:4px}.score-import-correction strong{font-size:13px}.score-import-correction span,.score-import-publish-action>span{color:var(--text-secondary);font-size:11px;line-height:1.45}.score-import-publish-action{flex-direction:column;align-items:stretch;background:var(--surface-muted)}.score-import-publish-action>span{text-align:center}.score-import-published-card{grid-template-columns:auto minmax(0,1fr) auto;border-color:color-mix(in srgb,var(--success) 30%,var(--line));background:var(--success-soft);color:var(--success)}.score-import-published-card>div:last-child{display:flex;gap:8px}.empty-inline{padding:20px;border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--text-tertiary);font-size:13px;text-align:center}.practice-loading,.report-loading{display:flex;align-items:center;justify-content:center;gap:10px;min-height:50dvh;color:var(--text-secondary);font-size:14px}.practice-topline{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.practice-topline p{color:var(--text-tertiary);font-size:12px}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:13px;font-weight:700;text-decoration:none}.back-link:hover{color:var(--accent)}.page--practice>.notice{margin-bottom:14px}.practice-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}.page--practice>.virtual-piano{margin-top:16px}.practice-sidebar{display:grid;gap:12px;position:sticky;top:calc(var(--header-height) + 16px);max-height:calc(100dvh - var(--header-height) - 32px);overflow-y:auto;scrollbar-width:thin}.status-section,.practice-controls,.live-errors,.next-note-hint,.virtual-piano{display:grid;gap:15px;padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.input-mode-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:4px;border-radius:calc(var(--radius) + 2px);background:var(--surface-muted)}.input-mode-toggle__option{min-height:38px;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--text-secondary);font-size:12px;font-weight:750;cursor:pointer}.input-mode-toggle__option--active{border-color:color-mix(in srgb,var(--accent) 24%,var(--line));background:var(--surface);color:var(--accent);box-shadow:0 1px color-mix(in srgb,var(--text) 6%,transparent)}.mic-level{margin-top:.65rem;height:.55rem;width:100%;overflow:hidden;border-radius:999px;background:color-mix(in srgb,currentColor 16%,transparent)}.mic-level__fill{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#2f9e44,#f08c00 70%,#e03131);transition:width 80ms linear}.microphone-test{display:grid;gap:1rem}.microphone-controls{display:flex;flex-wrap:wrap;gap:.75rem}.microphone-status .status-indicator.active{color:#2f9e44;font-weight:600}.virtual-piano__board{position:relative;padding:10px 8px 8px;border-radius:calc(var(--radius) - 2px);background:linear-gradient(180deg,color-mix(in srgb,var(--surface-muted) 70%,var(--surface)) 0%,var(--surface-muted) 100%)}.virtual-piano__board--disabled{opacity:.58}.virtual-piano__whites{display:grid;gap:2px}.virtual-piano__blacks{position:absolute;inset:10px 8px auto;height:58%;pointer-events:none}.virtual-piano__key{position:relative;border:1px solid color-mix(in srgb,var(--text) 16%,var(--line));cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.virtual-piano__key:disabled{cursor:not-allowed}.virtual-piano__key--white{min-height:132px;border-radius:0 0 6px 6px;background:linear-gradient(180deg,#fff,#eceff3);color:var(--text-secondary);font-size:10px;font-weight:700}.virtual-piano__key--black{position:absolute;top:0;width:clamp(18px,4.8vw,28px);min-height:78px;margin-left:calc(clamp(18px,4.8vw,28px)/-2);border-radius:0 0 5px 5px;background:linear-gradient(180deg,#343942,#17191d);color:#f5f7fa;font-size:9px;font-weight:700;pointer-events:auto;z-index:1}.virtual-piano__key--active.virtual-piano__key--white{background:linear-gradient(180deg,#dfe8ff,#c8d5fb);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.virtual-piano__key--active.virtual-piano__key--black{background:linear-gradient(180deg,#566aa8,#33467a)}.virtual-piano__key span{position:absolute;left:50%;bottom:8px;transform:translate(-50%)}.connection-state{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border-radius:var(--radius);font-size:11px;font-weight:750;white-space:nowrap}.connection-state--ready{background:var(--success-soft);color:var(--success)}.connection-state--waiting{background:var(--surface-muted);color:var(--text-secondary)}.select-wrap{position:relative;display:grid}.select-wrap select{padding:0 36px 0 11px;appearance:none}.select-wrap>svg{position:absolute;top:50%;right:11px;pointer-events:none;transform:translateY(-50%)}.device-waiting{display:flex;align-items:center;gap:9px;min-height:44px;color:var(--text-secondary);font-size:12px}.field-error{display:flex;align-items:flex-start;gap:6px;color:var(--danger);font-size:12px;line-height:1.45}.position-readout{display:grid;gap:5px;padding:14px;border-radius:var(--radius);background:var(--surface-muted)}.position-readout span,.position-readout small{color:var(--text-tertiary);font-size:11px}.position-readout strong{color:var(--text);font-family:Cascadia Code,Consolas,monospace;font-size:15px;line-height:1.45}.socket-state{display:flex;align-items:center;gap:7px;color:var(--text-secondary);font-size:12px}.socket-state--online{color:var(--success)}.control-hint{color:var(--text-tertiary);font-size:11px;line-height:1.45;text-align:center}.error-stack{display:grid;gap:7px}.error-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;padding:10px;border-radius:var(--radius);background:var(--danger-soft);color:var(--danger)}.error-item>svg{margin-top:1px}.error-item>div{display:grid;gap:2px}.error-item strong{font-size:12px}.error-item span{color:color-mix(in srgb,var(--danger) 76%,var(--text));font-size:11px;line-height:1.4}.error-hint{color:color-mix(in srgb,var(--accent) 72%,var(--text));font-size:11px;font-style:normal;font-weight:650;line-height:1.35}.next-note-hint--alert{border-color:color-mix(in srgb,var(--danger) 34%,var(--line));background:color-mix(in srgb,var(--danger-soft) 68%,var(--surface))}.next-note-body{display:grid;gap:10px}.next-note-meta{display:inline-flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:12px;font-weight:650}.next-note-pitches{display:flex;flex-wrap:wrap;gap:8px}.pitch-chip{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);font-size:15px;font-weight:800;letter-spacing:.02em}.pitch-chip--pending{background:color-mix(in srgb,var(--success-soft) 84%,var(--surface));border-color:color-mix(in srgb,var(--success) 28%,var(--line));color:var(--success)}.pitch-chip--done{background:color-mix(in srgb,var(--success) 16%,var(--surface));border-color:color-mix(in srgb,var(--success) 34%,var(--line));color:color-mix(in srgb,var(--success) 72%,var(--text));opacity:.72;text-decoration:line-through}.pitch-chip--idle{background:var(--surface-muted);color:var(--text-secondary)}.next-note-subhint{margin:0;color:var(--text-tertiary);font-size:11px}.next-note-alert{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;padding:12px;border-radius:calc(var(--radius) - 2px);background:color-mix(in srgb,var(--danger-soft) 88%,var(--surface));color:var(--danger)}.next-note-alert strong{display:block;font-size:12px}.next-note-alert span{display:block;font-size:12px;line-height:1.45}.next-note-done{display:inline-flex;align-items:center;gap:8px;color:var(--success);font-size:12px;font-weight:650}.score-panel{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.score-panel__header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:17px 20px;border-bottom:1px solid var(--line)}.score-panel__header>div{display:grid;gap:5px}.score-panel__header h1{overflow:hidden;font-size:18px;letter-spacing:-.018em;text-overflow:ellipsis;white-space:nowrap}.score-panel__header p,.score-panel__scope{display:flex;align-items:center;gap:6px;color:var(--text-tertiary);font-size:11px}.score-panel__scope{flex:0 0 auto;padding:6px 8px;border-radius:var(--radius);background:var(--surface-muted)}.score-panel__scope--mapped{color:var(--accent);background:var(--accent-soft)}.score-error-rail{display:flex;align-items:center;gap:8px;padding:9px 20px;overflow-x:auto;border-bottom:1px solid color-mix(in srgb,var(--danger) 22%,var(--line));background:var(--danger-soft);color:var(--danger);font-size:11px;white-space:nowrap}.score-error-rail strong{padding-left:8px;border-left:1px solid color-mix(in srgb,var(--danger) 24%,transparent)}.score-canvas-wrap{position:relative;min-height:calc(100dvh - var(--header-height) - 102px);overflow:auto;background:#fdfdfc}.score-canvas{width:100%;min-width:680px;min-height:520px;padding:20px 18px 48px;color:#17191d}.score-canvas :is(svg,canvas){max-width:100%}.score-loading,.score-failure{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;gap:9px;min-height:420px;background:#fdfdfcf0;color:#5a6574;font-size:13px}.score-failure{flex-direction:column;padding:24px;color:#a33a38;text-align:center}.score-failure span{max-width:54ch;font-size:12px;line-height:1.5}.disconnect-banner{position:fixed;right:24px;bottom:24px;z-index:30;display:flex;align-items:center;gap:9px;max-width:440px;padding:13px 15px;border:1px solid color-mix(in srgb,var(--warning) 32%,var(--line));border-radius:var(--radius);background:var(--warning-soft);box-shadow:var(--shadow);color:var(--warning);font-size:13px;line-height:1.45}.report-header{display:flex;align-items:flex-end;justify-content:space-between;gap:36px;padding:28px 0 38px}.analyze-header{display:flex;align-items:flex-end;justify-content:space-between;gap:36px;padding:28px 0 34px}.analyze-header>div{display:grid;gap:11px}.analyze-header h1{font-size:clamp(34px,5vw,58px);font-weight:650;letter-spacing:-.05em}.analyze-header>div>p:last-child{color:var(--text-secondary);font-size:15px;line-height:1.6}.page--analyze>.notice{margin-bottom:16px}.analyze-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(330px,.85fr);gap:16px;align-items:start}.media-upload-card,.analysis-progress-card,.media-evidence,.analysis-report{display:grid;gap:22px;padding:24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.media-upload-form{display:grid;gap:13px}.media-drop-field{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:center;min-height:112px;padding:22px;overflow:hidden;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.media-drop-field:hover{border-color:color-mix(in srgb,var(--accent) 56%,var(--line));background:var(--accent-soft)}.media-drop-field>svg{color:var(--accent)}.media-drop-field>span{display:grid;gap:5px;min-width:0}.media-drop-field strong{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.media-drop-field small{color:var(--text-tertiary);font-size:12px;line-height:1.45}.media-drop-field input{position:absolute;inset:0;cursor:pointer;opacity:0}.media-drop-field:has(input:disabled){cursor:not-allowed;opacity:.58}.analysis-progress-card{position:sticky;top:calc(var(--header-height) + 16px)}.status-icon--success{color:var(--success)}.analysis-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.analysis-progress__track{height:8px;overflow:hidden;border-radius:var(--radius);background:var(--surface-muted)}.analysis-progress__track span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .3s ease}.analysis-progress>strong{min-width:42px;font-family:Cascadia Code,Consolas,monospace;font-size:12px;text-align:right}.analysis-stages{display:grid;gap:9px;margin:0;padding:0;list-style:none}.analysis-stages li{display:flex;align-items:center;gap:10px;color:var(--text-tertiary);font-size:12px}.analysis-stages li>span{display:grid;width:23px;height:23px;flex:0 0 auto;place-items:center;border:1px solid var(--line-strong);border-radius:50%;font-family:Cascadia Code,Consolas,monospace;font-size:10px}.analysis-stages li.is-active{color:var(--accent);font-weight:700}.analysis-stages li.is-active>span{border-color:var(--accent);background:var(--accent-soft)}.analysis-stages li.is-complete{color:var(--success)}.analysis-stages li.is-complete>span{border-color:color-mix(in srgb,var(--success) 45%,var(--line));background:var(--success-soft)}.analysis-session-id{overflow:hidden;color:var(--text-tertiary);font-family:Cascadia Code,Consolas,monospace;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.media-evidence,.analysis-report{margin-top:16px}.media-evidence .section-heading svg{color:var(--accent)}.media-evidence__player{width:100%;min-height:54px;border-radius:var(--radius);background:#0e1117}.media-evidence__player--video{max-height:min(68dvh,720px)}.analysis-report>.section-heading{padding-bottom:4px}.report-header>div{display:grid;gap:12px}.report-header h1{font-size:clamp(34px,5vw,58px);font-weight:650;letter-spacing:-.05em}.report-header>div>p:last-child{max-width:62ch;color:var(--text-secondary);font-size:15px;line-height:1.6}.report-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.42fr);gap:16px}.report-integrity-warning{display:grid;grid-column:1 / -1;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start;padding:16px 18px;border:1px solid color-mix(in srgb,var(--danger) 38%,var(--line));border-radius:var(--radius);background:var(--danger-soft);color:var(--danger)}.report-warning-list{display:grid;grid-column:1 / -1;grid-template-columns:auto minmax(0,1fr);gap:12px;padding:16px 18px;border:1px solid color-mix(in srgb,var(--warning) 34%,var(--line));border-radius:var(--radius);background:var(--warning-soft);color:var(--warning)}.report-warning-list>div{display:grid;gap:5px}.report-warning-list ul{display:grid;gap:4px;margin:0;padding-left:18px;color:var(--text-secondary);font-size:13px;line-height:1.5}.report-provenance{grid-column:1 / -1;padding:18px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.report-provenance dl{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr)) minmax(180px,1.7fr);gap:0;margin:0}.report-provenance dl>div{display:grid;gap:5px;min-width:0;padding:2px 14px;border-left:1px solid var(--line)}.report-provenance dl>div:first-child{padding-left:2px;border-left:0}.report-provenance dt{color:var(--text-tertiary);font-size:10px;font-weight:700}.report-provenance dd{margin:0;overflow:hidden;color:var(--text);font-family:Cascadia Code,Consolas,monospace;font-size:11px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.report-provenance__sha dd{overflow:visible;overflow-wrap:anywhere;text-overflow:clip;white-space:normal}.report-integrity-warning div{display:grid;gap:4px}.report-integrity-warning p{color:var(--text-secondary);font-size:13px;line-height:1.55}.report-overview,.problem-measures,.report-errors{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.report-overview{display:grid;grid-column:1 / -1;grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);overflow:hidden}.report-score{display:grid;align-content:center;gap:5px;min-height:210px;padding:30px;background:var(--accent-soft);color:var(--accent-text)}.report-score span,.report-score small{font-size:12px}.report-score strong{font-family:Cascadia Code,Consolas,monospace;font-size:clamp(54px,8vw,88px);font-weight:650;letter-spacing:-.08em;line-height:1}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));align-content:center;padding:20px}.metric-grid article{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 9px;padding:18px}.metric-grid article:nth-child(odd){border-right:1px solid var(--line)}.metric-grid article:nth-child(-n+2){border-bottom:1px solid var(--line)}.metric-grid svg{grid-row:1 / span 2;margin-top:2px;color:var(--accent)}.metric-grid span{color:var(--text-tertiary);font-size:11px}.metric-grid strong{font-family:Cascadia Code,Consolas,monospace;font-size:19px}.problem-measures,.report-errors{display:grid;align-content:start;gap:22px;padding:24px}.report-errors{min-width:0}.measure-rank{display:grid;gap:9px}.measure-rank article{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 14px;border-radius:var(--radius);background:var(--surface-muted);font-size:13px}.measure-rank strong{color:var(--danger);font-family:Cascadia Code,Consolas,monospace;font-size:12px;white-space:nowrap}.report-error-table{display:grid;min-width:520px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius)}.report-errors{overflow-x:auto}.report-error-table__head,.report-error-table__row{display:grid;grid-template-columns:1.1fr .72fr .65fr .65fr .9fr;gap:12px;align-items:center;min-height:42px;padding:0 13px;font-size:12px}.timestamp-link{padding:0;border:0;background:transparent;color:var(--accent);cursor:pointer;font-family:Cascadia Code,Consolas,monospace;font-size:11px;font-weight:700;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-underline-offset:3px}.timestamp-link:hover{color:var(--accent-hover)}.report-error-table__head{background:var(--surface-muted);color:var(--text-tertiary);font-weight:700}.report-error-table__row+.report-error-table__row{border-top:1px solid var(--line)}.report-error-table__row strong{color:var(--danger)}.not-found{justify-items:start}.not-found>svg{color:var(--accent)}.not-found h1{font-size:34px;letter-spacing:-.035em}.not-found p{color:var(--text-secondary)}@media(prefers-reduced-transparency:reduce){.app-header{background:var(--page);backdrop-filter:none;-webkit-backdrop-filter:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:1100px){.library-intro{grid-template-columns:minmax(0,1fr) 300px;gap:34px}.import-form{grid-template-columns:repeat(2,minmax(0,1fr))}.file-field{grid-column:1 / -1}.practice-grid{grid-template-columns:minmax(0,1fr) 300px}.report-layout{grid-template-columns:1fr}.report-provenance dl{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:18px}.report-provenance dl>div:nth-child(4){padding-left:2px;border-left:0}.score-import-review-grid,.score-import-publish-card{grid-template-columns:1fr}.score-import-correction{border-right:0;border-bottom:1px solid var(--line)}}@media(max-width:820px){.page{width:min(100% - 28px,1480px);padding-top:22px}.app-header__inner{width:min(100% - 28px,1480px)}.brand small,.app-nav__link span{display:none}.app-nav__link{width:38px;padding:0;justify-content:center}.library-intro{grid-template-columns:1fr;gap:28px;padding:22px 0 34px}.page--library{width:calc(100% - 28px)}.library-intro h1{font-size:clamp(35px,10vw,54px)}.score-row{grid-template-columns:auto minmax(0,1fr) auto}.score-row__actions{grid-column:1 / -1;justify-content:flex-end}.analyze-header{align-items:flex-start;flex-direction:column;padding-top:18px}.analyze-layout{grid-template-columns:1fr}.analysis-progress-card{position:static}.score-row__meta{display:none}.score-import-page-header,.score-import-detail-header{grid-template-columns:1fr;gap:20px;align-items:start;padding-top:0}.score-import-safety-note{max-width:620px}.score-import-status{justify-self:start}.score-import-provenance{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 0}.score-import-provenance>div:nth-child(4){padding-left:0;border-left:0}.practice-topline p{display:none}.practice-grid{grid-template-columns:1fr}.practice-sidebar{position:static;grid-template-columns:1fr 1fr;max-height:none;overflow:visible}.live-errors{grid-column:1 / -1}.score-canvas-wrap{min-height:520px;max-height:70dvh}.report-header{align-items:flex-start;flex-direction:column;padding-top:18px}.report-overview{grid-template-columns:1fr}}@media(max-width:600px){:root{--header-height: 62px}.brand__mark{width:34px;height:34px}.brand strong{font-size:14px}.import-panel,.score-library,.problem-measures,.report-errors{padding:18px}.import-form{grid-template-columns:1fr}.file-field{grid-column:auto}.import-form .button{width:100%}.library-import-actions,.empty-state__actions{display:grid;width:100%}.page--score-import-new,.page--score-import-detail{width:min(100% - 28px,1360px)}.score-import-page-header h1,.score-import-detail-header h1{font-size:36px}.score-import-card,.score-import-progress-card,.score-import-review-toolbar{padding:18px}.score-import-meta-fields{grid-template-columns:1fr}.score-import-file-list li{grid-template-columns:54px minmax(0,1fr) auto;gap:9px}.score-import-file-preview{width:54px;height:54px}.score-import-file-order{display:none}.score-import-reorder{grid-column:2}.score-import-file-remove{grid-column:3;grid-row:1 / span 2}.score-import-submit-card,.score-import-failure-card,.score-import-published-card{grid-template-columns:1fr;align-items:start}.score-import-submit-card .button,.score-import-failure-card .button{width:100%}.score-import-provenance{grid-template-columns:1fr 1fr}.score-import-provenance>div,.score-import-provenance>div:first-child,.score-import-provenance>div:nth-child(4){padding:0 9px;border-left:1px solid var(--line)}.score-import-provenance>div:nth-child(odd){padding-left:0;border-left:0}.candidate-version-list{grid-template-columns:1fr}.candidate-version{grid-template-columns:auto minmax(0,1fr) auto}.candidate-version .candidate-validation{grid-column:2}.candidate-version>button{grid-column:3;grid-row:1 / span 2}.score-import-review-pane>header{align-items:stretch;flex-direction:column}.score-import-review-pane>header select,.score-import-review-pane>header .button{width:100%;max-width:none}.source-page-viewer,.musicxml-preview,.source-page-viewer__image,.musicxml-preview__canvas,.musicxml-preview__state,.score-import-preview-loading{min-height:460px}.source-page-viewer object{height:64dvh;min-height:460px}.score-import-correction,.score-import-publish-action{align-items:stretch;flex-direction:column}.score-import-published-card>div:last-child{display:grid;width:100%}.score-row{grid-template-columns:auto minmax(0,1fr);padding:13px 4px}.score-row .button{width:100%}.score-row__actions{display:grid;grid-template-columns:1fr;width:100%}.media-upload-card,.analysis-progress-card,.media-evidence,.analysis-report{padding:18px}.report-provenance dl{grid-template-columns:1fr 1fr}.report-provenance dl>div,.report-provenance dl>div:first-child,.report-provenance dl>div:nth-child(4){padding:0 10px;border-left:1px solid var(--line)}.report-provenance dl>div:nth-child(odd){padding-left:0;border-left:0}.report-provenance__sha{grid-column:1 / -1}.practice-sidebar{grid-template-columns:1fr}.live-errors{grid-column:auto}.score-panel__header{display:grid}.score-panel__scope{justify-self:start}.score-canvas{min-width:620px}.disconnect-banner{right:14px;bottom:14px;left:14px}.metric-grid{grid-template-columns:1fr}.metric-grid article:nth-child(odd){border-right:0}.metric-grid article:not(:last-child){border-bottom:1px solid var(--line)}}.practice-immersive{--practice-bg: #0f1218;--practice-surface: #171b24;--practice-surface-2: #1f2531;--practice-line: #2a3140;--practice-text: #eef2f8;--practice-muted: #9aa6b8;--practice-accent: #3ecf8e;--practice-accent-blue: #5b8def;--practice-purple: #9b7fd4;--practice-success: #3ecf8e;--practice-warning: #f0a030;--practice-danger: #e85d5d;height:100dvh;max-height:100dvh;overflow:hidden;display:grid;grid-template-rows:auto 1fr auto;background:radial-gradient(1200px 500px at 50% -10%,color-mix(in srgb,var(--practice-accent-blue) 10%,transparent),transparent),radial-gradient(900px 400px at 100% 100%,color-mix(in srgb,var(--practice-purple) 8%,transparent),transparent),var(--practice-bg);color:var(--practice-text)}.practice-loading{min-height:60dvh;display:grid;place-items:center;gap:12px;color:var(--practice-muted)}.practice-header{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--practice-line);background:color-mix(in srgb,var(--practice-surface) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.practice-header__left{display:flex;align-items:center;gap:12px;min-width:0}.practice-header__back{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;color:var(--practice-text);background:var(--practice-surface-2);border:1px solid var(--practice-line)}.practice-header__title-block{min-width:0}.practice-header__title-block h1{margin:0;font-size:18px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.practice-header__title-block p{margin:4px 0 0;font-size:12px;color:var(--practice-muted)}.practice-header__midi-badge,.practice-header__settings{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 10px;border-radius:10px;border:1px solid var(--practice-line);background:var(--practice-surface-2);color:var(--practice-text)}.practice-header__settings{width:36px;justify-content:center;padding:0;cursor:pointer}.audio-input-status{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(120px,180px);gap:10px;align-items:center;padding:8px 12px;border-radius:12px;border:1px solid var(--practice-line);background:var(--practice-surface)}.audio-input-status--ok{border-color:color-mix(in srgb,var(--practice-success) 35%,var(--practice-line))}.audio-input-status--warn{border-color:color-mix(in srgb,var(--practice-warning) 35%,var(--practice-line))}.audio-input-status--danger{border-color:color-mix(in srgb,var(--practice-danger) 35%,var(--practice-line))}.audio-input-status__text strong{display:block;font-size:13px}.audio-input-status__text small{display:block;margin-top:2px;color:var(--practice-muted);font-size:11px}.audio-input-status__meter{position:relative;display:flex;align-items:center;gap:6px;height:8px;border-radius:999px;background:color-mix(in srgb,var(--practice-text) 8%,transparent);overflow:hidden;padding:0 8px}.audio-input-status__meter-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--practice-success),var(--practice-warning),var(--practice-danger));opacity:.85}.audio-input-status__meter-value{position:relative;z-index:1;margin-left:auto;font-size:10px;color:var(--practice-muted)}.practice-banner{margin:0 16px;padding:10px 12px;border-radius:10px;font-size:13px;display:flex;align-items:center;gap:8px}.practice-banner--warning{background:color-mix(in srgb,var(--practice-warning) 14%,var(--practice-surface));border:1px solid color-mix(in srgb,var(--practice-warning) 35%,var(--practice-line))}.practice-banner--danger{background:color-mix(in srgb,var(--practice-danger) 14%,var(--practice-surface));border:1px solid color-mix(in srgb,var(--practice-danger) 35%,var(--practice-line))}.practice-banner--info{background:color-mix(in srgb,var(--practice-accent-blue) 14%,var(--practice-surface));border:1px solid color-mix(in srgb,var(--practice-accent-blue) 35%,var(--practice-line))}.practice-status-bar{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--practice-line);background:color-mix(in srgb,var(--practice-bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.practice-status-bar__brand{display:inline-flex;align-items:center;gap:10px;flex-shrink:0;min-width:0}.practice-status-bar__brand-name{font-size:18px;font-weight:700;letter-spacing:-.02em;color:var(--practice-text);white-space:nowrap}.practice-status-bar__strip{flex:1 1 auto;min-width:0;display:flex;align-items:stretch;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;border:1px solid var(--practice-line);border-radius:14px;background:color-mix(in srgb,var(--practice-surface) 96%,#000)}.practice-status-bar__strip::-webkit-scrollbar{display:none}.practice-status-bar__back,.practice-status-bar__settings{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;color:var(--practice-text);background:var(--practice-surface-2);border:1px solid var(--practice-line);flex-shrink:0}.practice-status-bar__settings{cursor:pointer}.status-strip-metric{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-right:1px solid color-mix(in srgb,var(--practice-line) 85%,transparent);flex-shrink:0}.status-strip-metric__icon{display:inline-grid;place-items:center;color:color-mix(in srgb,var(--practice-text) 72%,var(--practice-muted))}.status-strip-metric__body{display:grid;gap:2px;min-width:0}.status-strip-metric__label{font-size:11px;line-height:1.1;color:var(--practice-muted);white-space:nowrap}.status-strip-metric__value{font-size:15px;line-height:1.15;font-weight:700;color:var(--practice-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.status-strip-metric--measure .status-strip-metric__icon{color:var(--practice-accent-blue)}.status-strip-metric--measure .status-strip-metric__label{color:color-mix(in srgb,var(--practice-accent-blue) 72%,var(--practice-muted))}.status-strip-metric--measure .status-strip-metric__value{font-size:28px;font-weight:800;color:#79a8ff;letter-spacing:-.03em}.status-strip-listening{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-right:1px solid color-mix(in srgb,var(--practice-line) 85%,transparent);flex-shrink:0}.status-strip-listening--ok{color:var(--practice-success)}.status-strip-listening--warn{color:var(--practice-warning)}.status-strip-listening--danger{color:var(--practice-danger)}.status-strip-listening--neutral{color:var(--practice-muted)}.status-strip-listening__icon{display:inline-grid;place-items:center}.status-strip-listening__text{display:grid;gap:2px;min-width:0}.status-strip-listening__text strong{font-size:14px;line-height:1.1;white-space:nowrap}.status-strip-listening__text small{font-size:11px;line-height:1.1;opacity:.88;white-space:nowrap}.status-strip-listening__waveform{display:flex;align-items:end;gap:2px;height:24px;min-width:56px}.status-strip-listening__waveform-bar{width:3px;height:100%;border-radius:999px;background:currentColor;transform-origin:bottom;opacity:.92}.status-strip-noise{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-right:1px solid color-mix(in srgb,var(--practice-line) 85%,transparent);flex-shrink:0}.status-strip-noise__label{font-size:11px;color:var(--practice-muted);white-space:nowrap}.status-strip-noise__meter{display:flex;align-items:end;gap:3px;height:22px}.status-strip-noise__bar{width:6px;height:100%;border-radius:2px;background:color-mix(in srgb,var(--practice-text) 10%,transparent)}.status-strip-noise__bar--low{background:#3ecf8e}.status-strip-noise__bar--mid{background:#f0a030}.status-strip-noise__bar--high{background:#e85d5d}.status-strip-noise__value{font-size:13px;font-weight:700;color:var(--practice-text);white-space:nowrap}.status-strip-accuracy{display:inline-flex;align-items:center;gap:10px;padding:8px 16px;flex-shrink:0}.status-strip-accuracy__text{display:grid;gap:2px}.status-strip-accuracy__label{font-size:11px;color:var(--practice-muted);white-space:nowrap}.status-strip-accuracy__value{font-size:22px;line-height:1;font-weight:800;color:var(--practice-text);white-space:nowrap}.confidence-ring{position:relative;display:grid;place-items:center;flex-shrink:0}.confidence-ring strong{position:absolute;font-size:11px;font-weight:700;color:var(--practice-success)}.confidence-ring__track{stroke:color-mix(in srgb,var(--practice-text) 12%,transparent)}.confidence-ring__value{stroke:var(--practice-success);stroke-linecap:round}.confidence-ring--uncertain .confidence-ring__value{stroke:#e8c547}.confidence-ring--uncertain strong{color:#e8c547}.audio-input-status{grid-template-columns:auto minmax(0,1fr) minmax(88px,120px) auto}.audio-input-status__waveform{display:flex;align-items:end;gap:2px;height:28px}.audio-input-status__waveform-bar{width:3px;height:100%;border-radius:999px;background:var(--practice-accent);transform-origin:bottom}.audio-input-status__noise{font-size:11px;color:var(--practice-muted);white-space:nowrap}.piano-guide__avatar{width:42px;height:42px;border-radius:999px;display:grid;place-items:center;font-size:22px;background:color-mix(in srgb,var(--practice-purple) 20%,var(--practice-surface-2))}.mini-staff-snippet{width:100%;margin-top:8px}.mini-staff-snippet__line{stroke:color-mix(in srgb,var(--practice-text) 25%,transparent);stroke-width:1}.mini-staff-snippet__note{fill:#b8f5d4}.mini-staff-snippet__note--wrong{fill:#e85d5d}.score-floating-tools{position:absolute;right:12px;bottom:12px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border-radius:8px;border:1px solid var(--practice-line);background:color-mix(in srgb,var(--practice-surface) 92%,transparent)}.score-floating-tools button{width:auto;min-width:30px;height:30px;padding:0 6px;border-radius:6px;border:1px solid var(--practice-line);background:var(--practice-surface-2);color:var(--practice-text);cursor:pointer;font-size:11px}.score-floating-tools span{min-width:42px;text-align:center;font-size:12px;color:var(--practice-muted)}.score-canvas-wrap--viewport{flex:1 1 auto;min-height:200px;max-height:100%;overflow:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;background:#12161f}.score-canvas-wrap--light{display:flex;flex-direction:column;background:#f5f7fb;height:100%}.score-canvas-wrap--viewport.score-canvas-wrap--light{position:relative;display:flex;flex-direction:column;min-height:0}.score-canvas-wrap--viewport .score-canvas{flex:1 1 auto;min-width:0;min-height:0;width:100%;max-width:100%;height:100%;padding:0;box-sizing:border-box;color:#eef2f8;display:block;overflow:hidden;position:relative}.score-canvas-wrap--viewport .score-osmd-host{display:block;position:absolute;top:0;left:0;width:100%;min-height:0!important;transform:translateY(var(--score-translate-y, 0));transform-origin:top center;will-change:transform}.score-canvas-wrap--viewport .score-playhead-layer{transform:translateY(var(--score-translate-y, 0))}.score-canvas-wrap--viewport .score-color-legend__item{pointer-events:auto}.score-canvas-wrap--viewport .score-color-legend{position:absolute;left:0;right:0;bottom:0;z-index:5;margin-top:0;pointer-events:none}.score-canvas-wrap--light .score-canvas{position:relative;flex:1 1 auto;min-height:0;padding:0;color:#1f2937}.score-canvas--light{background:#fff}.score-osmd-host{position:relative;z-index:1;min-height:100%}.score-playhead-layer{position:absolute;inset:0;z-index:2;pointer-events:none}.score-playhead-highlight{position:absolute;top:0;left:0;border-radius:8px;background:#3498db1f;border:1px solid rgba(52,152,219,.18);opacity:0;will-change:transform,width,height}.score-playhead-pillar{position:absolute;top:0;left:0;width:3px;background:linear-gradient(180deg,#5dade2,#3498db,#5dade2);box-shadow:0 0 12px #3498dba6,0 0 2px #3498dbe6;opacity:0;will-change:transform,height}.score-playhead-pillar__cap{position:absolute;left:50%;width:10px;height:10px;border-radius:50%;background:#3498db;box-shadow:0 0 10px #3498dbbf;transform:translate(-50%)}.score-playhead-pillar__cap--top{top:-4px}.score-playhead-pillar__cap--bottom{bottom:-4px}.score-color-legend{position:sticky;bottom:0;z-index:3;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin-top:auto;padding:10px 14px;border-top:1px solid #e5e7eb;background:#fffffff5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.score-color-legend__item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#4b5563;white-space:nowrap}.score-color-legend__swatch{width:16px;height:16px;border-radius:999px;box-shadow:0 0 0 1px #0000000f;display:inline-grid;place-items:center;color:#111827;font-size:11px;font-weight:800;line-height:1}.score-color-legend__swatch--ring{background-color:transparent!important;border:2px solid currentColor;color:var(--legend-color, #3498db)}.score-color-legend__swatch--cross{border-radius:4px}.score-color-legend__swatch--dash{border-radius:3px}.score-color-legend__swatch--pulse{border:1px dashed rgba(17,24,39,.55)}.score-canvas--light svg [data-note-glow=true]{filter:drop-shadow(0 0 2px currentColor)}.score-canvas--light svg [data-note-marker]{outline-offset:2px}.score-note-marker-layer{position:absolute;inset:0;z-index:4;pointer-events:none}.score-canvas-wrap--viewport .score-note-marker-layer{transform:translateY(var(--score-translate-y, 0))}.score-note-marker{position:absolute;width:18px;height:18px;transform:translate(-50%,-85%);display:inline-grid;place-items:center;border:2px solid var(--note-marker-color);background:#fffffff0;color:var(--note-marker-color);font-size:12px;font-weight:900;line-height:1;box-shadow:0 1px 4px #0f172a2e}.score-note-marker--ring,.score-note-marker--dot,.score-note-marker--pulse{border-radius:999px}.score-note-marker--cross{border-radius:4px}.score-note-marker--dash{width:20px;height:14px;border-radius:3px}.score-note-marker--pulse{border-style:dashed}.score-canvas-wrap--light .score-floating-tools{border-color:#d1d5db;background:#fffffff0;color:#1f2937}.score-canvas-wrap--light .score-floating-tools button{border-color:#d1d5db;background:#f9fafb;color:#1f2937}.score-canvas-wrap--light .score-floating-tools span{color:#6b7280}.score-canvas-wrap--light .score-loading,.score-canvas-wrap--light .score-failure{background:#fffffff0;color:#1f2937}.score-canvas-wrap--viewport .score-loading,.score-canvas-wrap--viewport .score-failure{background:color-mix(in srgb,var(--practice-surface) 94%,transparent)}.score-panel--immersive{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.score-canvas-wrap--immersive{position:relative;flex:1;min-height:0;height:100%}.practice-score-stage--loop{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--practice-accent-blue) 45%,transparent)}.practice-tech-notices{margin:0 16px;padding:8px 12px;border-radius:8px;display:flex;align-items:center;gap:8px;font-size:13px}.practice-tech-notices--warning{background:color-mix(in srgb,var(--practice-warning) 14%,var(--practice-surface));border:1px solid color-mix(in srgb,var(--practice-warning) 35%,var(--practice-line))}.practice-tech-notices--danger{background:color-mix(in srgb,var(--practice-danger) 14%,var(--practice-surface));border:1px solid color-mix(in srgb,var(--practice-danger) 35%,var(--practice-line))}.practice-tech-notices--info{background:color-mix(in srgb,var(--practice-accent-blue) 14%,var(--practice-surface));border:1px solid color-mix(in srgb,var(--practice-accent-blue) 35%,var(--practice-line))}.practice-tech-notices__content{flex:1;min-width:0}.practice-tech-notices__content p{margin:0}.practice-tech-notices__toggle{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:var(--practice-muted);cursor:pointer;font-size:12px}.practice-tech-notices__toggle .is-open{transform:rotate(180deg)}.piano-keyboard-guide__float-labels{position:absolute;inset:0 0 auto;height:22px;pointer-events:none}.piano-keyboard-guide__float-label{position:absolute;top:0;transform:translate(-50%);padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700}.piano-keyboard-guide__float-label--left{background:color-mix(in srgb,var(--practice-purple) 24%,var(--practice-surface));color:#d8c9ff}.piano-keyboard-guide__float-label--right{background:color-mix(in srgb,var(--practice-accent) 24%,var(--practice-surface));color:#b8f5d4}.practice-status-bar__confidence{display:grid;gap:2px;min-width:64px;text-align:center;padding:6px 10px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface-2)}.practice-status-bar__confidence span{font-size:11px;color:var(--practice-muted)}.practice-status-bar__confidence strong{font-size:16px;color:var(--practice-accent)}.practice-guide-rail{min-height:0;overflow:auto}.piano-guide{display:grid;gap:10px;height:100%}.piano-guide__header{display:flex;gap:10px;align-items:center;padding:12px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface)}.piano-guide__header h2{margin:0;font-size:16px}.piano-guide__header p{margin:4px 0 0;font-size:12px;color:var(--practice-muted)}.piano-guide__card{padding:12px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface)}.piano-guide__card--target{border-color:color-mix(in srgb,var(--practice-success) 40%,var(--practice-line));background:color-mix(in srgb,var(--practice-success) 10%,var(--practice-surface))}.piano-guide__card--mistake{border-color:color-mix(in srgb,var(--practice-danger) 40%,var(--practice-line));background:color-mix(in srgb,var(--practice-danger) 10%,var(--practice-surface))}.piano-guide__card--uncertain{border-color:color-mix(in srgb,#e8c547 40%,var(--practice-line));background:color-mix(in srgb,#e8c547 10%,var(--practice-surface))}.piano-guide__card--positive{border-color:color-mix(in srgb,var(--practice-success) 30%,var(--practice-line));background:color-mix(in srgb,var(--practice-success) 8%,var(--practice-surface))}.piano-guide__card--neutral{border-color:var(--practice-line)}.piano-guide__card--tip{border-color:color-mix(in srgb,var(--practice-purple) 35%,var(--practice-line));background:color-mix(in srgb,var(--practice-purple) 10%,var(--practice-surface))}.piano-guide__card--loop{border-color:color-mix(in srgb,var(--practice-accent-blue) 40%,var(--practice-line));background:color-mix(in srgb,var(--practice-accent-blue) 10%,var(--practice-surface))}.piano-guide__card h3{margin:0 0 8px;font-size:13px;color:var(--practice-muted);display:inline-flex;align-items:center;gap:6px}.piano-guide__chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.piano-guide__chip{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 12px;border-radius:8px;font-size:18px;font-weight:700}.piano-guide__chip--target{background:color-mix(in srgb,var(--practice-success) 22%,var(--practice-surface-2));border:1px solid color-mix(in srgb,var(--practice-success) 45%,var(--practice-line));color:#b8f5d4}.piano-guide__mistake-detail{margin:8px 0 0;display:flex;align-items:center;gap:6px;font-size:14px;color:#ffc9c9}.piano-guide__measure{margin:0;font-size:14px;color:var(--practice-accent-blue)}.piano-guide__notes{margin:8px 0 0;display:flex;align-items:center;gap:8px;font-size:22px;font-weight:700}.piano-guide__hand{display:inline-flex;margin-top:8px;padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--practice-purple) 18%,var(--practice-surface-2));color:#d8c9ff;font-size:12px}.piano-guide__performance{margin:0;font-size:18px;font-weight:700}.piano-guide__hand--target{background:color-mix(in srgb,var(--practice-success) 16%,var(--practice-surface-2));color:#b8f5d4}.piano-guide__card--tip p{margin:0;font-size:15px;line-height:1.5}.piano-guide__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.piano-guide__fingering{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.piano-guide__fingering span{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;border-radius:999px;border:1px solid color-mix(in srgb,var(--practice-accent-blue) 34%,var(--practice-line));background:color-mix(in srgb,var(--practice-accent-blue) 12%,var(--practice-surface-2));color:#c9d9ff;font-size:12px;font-weight:700}.piano-guide__actions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 10px;border-radius:8px;border:1px solid color-mix(in srgb,var(--practice-purple) 38%,var(--practice-line));background:color-mix(in srgb,var(--practice-surface-2) 88%,transparent);color:var(--practice-text);font-size:12px;font-weight:700;cursor:pointer}.piano-guide__actions button:hover:not(:disabled){border-color:color-mix(in srgb,var(--practice-purple) 58%,var(--practice-line));color:#d8c9ff}.piano-guide__actions button:disabled{opacity:.45;cursor:not-allowed}.piano-guide__loop-btn{margin-top:10px;display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 14px;border-radius:8px;border:1px solid color-mix(in srgb,var(--practice-accent-blue) 45%,var(--practice-line));background:linear-gradient(180deg,#6d9cf7,#4f7fe0);color:#fff;font-weight:600;cursor:pointer}.piano-guide__loop-btn--active{border-color:color-mix(in srgb,var(--practice-success) 55%,var(--practice-line));background:linear-gradient(180deg,#5ecf9a,#3da876);box-shadow:0 0 0 1px color-mix(in srgb,var(--practice-success) 35%,transparent)}.practice-bottom-dock{flex-shrink:0;border-top:1px solid var(--practice-line);background:color-mix(in srgb,var(--practice-bg) 92%,transparent);display:grid;gap:8px;padding:8px 12px calc(10px + env(safe-area-inset-bottom,0px))}.practice-bottom-dock__restore-keyboard{justify-self:center;min-height:34px;padding:0 12px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface-2);color:var(--practice-text);font-size:12px;font-weight:700;cursor:pointer}.practice-bottom-dock__restore-keyboard:hover{border-color:color-mix(in srgb,var(--practice-accent) 45%,var(--practice-line));color:#b8f5d4}.piano-keyboard-guide{--white-key-width: 36px;--white-key-height: 86px;--black-key-width: 22px;--black-key-height: 52px;display:grid;gap:0;min-height:0}.piano-keyboard-guide__viewport{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none}.piano-keyboard-guide__viewport::-webkit-scrollbar{display:none}.piano-keyboard-guide--compact .piano-keyboard-guide__board{padding:24px 10px 8px}.piano-keyboard-guide__hand-banners{position:absolute;inset:0 0 auto;height:22px;pointer-events:none}.piano-keyboard-guide__hand-banner{position:absolute;top:2px;display:flex;flex-direction:column;align-items:center;gap:4px;transform:translate(-50%)}.piano-keyboard-guide__hand-banner-label{font-size:10px;font-weight:700;line-height:1;white-space:nowrap}.piano-keyboard-guide__hand-banner-line{display:block;width:100%;height:2px;border-radius:999px}.piano-keyboard-guide__hand-banner--left .piano-keyboard-guide__hand-banner-label{color:#cbb8ff}.piano-keyboard-guide__hand-banner--left .piano-keyboard-guide__hand-banner-line{background:linear-gradient(90deg,transparent,#9b7fd4 12%,#9b7fd4 88%,transparent)}.piano-keyboard-guide__hand-banner--right .piano-keyboard-guide__hand-banner-label{color:#9ef0c8}.piano-keyboard-guide__hand-banner--right .piano-keyboard-guide__hand-banner-line{background:linear-gradient(90deg,transparent,#3ecf8e 12%,#3ecf8e 88%,transparent)}.piano-keyboard-guide__legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--practice-muted)}.piano-keyboard-guide__legend span{display:inline-flex;align-items:center;gap:6px}.piano-keyboard-guide__swatch{width:14px;height:14px;border-radius:4px;display:inline-block}.piano-keyboard-guide__swatch--expected{background:color-mix(in srgb,var(--practice-success) 70%,transparent);box-shadow:0 0 8px color-mix(in srgb,var(--practice-success) 50%,transparent)}.piano-keyboard-guide__swatch--correct{background:var(--practice-success)}.piano-keyboard-guide__swatch--wrong{background:var(--practice-danger)}.piano-keyboard-guide__swatch--uncertain{background:transparent;border:2px solid #e8c547}.piano-keyboard-guide__board{position:relative;width:max-content;min-width:min(100%,calc(var(--white-key-width) * var(--white-key-count, 15)));margin:0 auto;border-radius:10px;border:1px solid var(--practice-line);background:linear-gradient(180deg,#151922,#0d1017);padding:8px 10px 10px;box-shadow:inset 0 1px #ffffff0a}.piano-keyboard-guide__board--3d{transform:perspective(900px) rotateX(7deg);transform-origin:center bottom}.piano-keyboard-guide__board--dim{opacity:.75}.piano-keyboard-guide__whites{display:flex;gap:1px;width:calc(var(--white-key-width) * var(--white-key-count, 15))}.piano-keyboard-guide__blacks{position:absolute;left:10px;top:24px;width:calc(var(--white-key-width) * var(--white-key-count, 15));height:var(--black-key-height);pointer-events:none}.piano-keyboard-guide__key{position:relative;border:1px solid #2a3140;cursor:pointer;overflow:hidden}.piano-keyboard-guide__key--white{width:var(--white-key-width);height:var(--white-key-height);flex:0 0 var(--white-key-width);border-radius:0 0 5px 5px;background:linear-gradient(180deg,#f8fafc,#e2e8f0 55%,#cbd5e1);color:#1a1f2a;box-shadow:inset 0 -2px #0f121814}.piano-keyboard-guide__key--black{position:absolute;width:var(--black-key-width);height:var(--black-key-height);border-radius:0 0 4px 4px;background:linear-gradient(180deg,#4a5364,#171b24);color:#eef2f8;pointer-events:auto;box-shadow:0 3px 6px #00000059}.piano-keyboard-guide__key span{position:absolute;left:50%;bottom:6px;transform:translate(-50%);font-size:11px;font-weight:700;z-index:1}.piano-keyboard-guide__key--expected:before,.piano-keyboard-guide__key--correct:before,.piano-keyboard-guide__key--wrong:before,.piano-keyboard-guide__key--missing:after,.piano-keyboard-guide__key--uncertain:before{content:"";position:absolute;inset:0;pointer-events:none}.piano-keyboard-guide__key--expected:before{background:linear-gradient(180deg,rgba(46,204,113,.42) 0%,rgba(46,204,113,.08) 72%,transparent 100%)}.piano-keyboard-guide__key--correct:before{background:linear-gradient(180deg,rgba(46,204,113,.55) 0%,rgba(46,204,113,.12) 70%,transparent 100%)}.piano-keyboard-guide__key--wrong:before{background:linear-gradient(180deg,rgba(231,76,60,.5) 0%,rgba(231,76,60,.1) 70%,transparent 100%)}.piano-keyboard-guide__key--uncertain:before{background:linear-gradient(180deg,rgba(241,196,15,.45) 0%,rgba(241,196,15,.08) 70%,transparent 100%)}.piano-keyboard-guide__key--expected{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--practice-success) 70%,white),0 0 14px color-mix(in srgb,var(--practice-success) 28%,transparent);background:linear-gradient(180deg,#effdf5,#c9f5dd)}.piano-keyboard-guide__key--correct{background:linear-gradient(180deg,#9ef0bf,#3ecf8e);box-shadow:0 0 14px color-mix(in srgb,var(--practice-success) 35%,transparent)}.piano-keyboard-guide__key--wrong{animation:piano-key-flash .6s ease;background:linear-gradient(180deg,#ffb0b0,#e85d5d);box-shadow:0 0 14px color-mix(in srgb,var(--practice-danger) 35%,transparent)}.piano-keyboard-guide__key--missing:after{inset:3px;border:2px dashed var(--practice-warning);border-radius:inherit;box-shadow:0 0 12px color-mix(in srgb,var(--practice-warning) 32%,transparent)}.piano-keyboard-guide__key--uncertain{box-shadow:inset 0 0 0 2px #94a3b8,0 0 12px #94a3b840}.piano-keyboard-guide__key--left-hand.piano-keyboard-guide__key--expected{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--practice-purple) 70%,white),0 0 14px color-mix(in srgb,var(--practice-purple) 30%,transparent)}.piano-keyboard-guide__key--left-hand.piano-keyboard-guide__key--expected:before{background:linear-gradient(180deg,rgba(155,127,212,.42) 0%,rgba(155,127,212,.08) 72%,transparent 100%)}.piano-keyboard-guide__key--right-hand.piano-keyboard-guide__key--expected{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--practice-accent) 70%,white),0 0 14px color-mix(in srgb,var(--practice-accent) 30%,transparent)}@keyframes piano-key-flash{0%,to{filter:brightness(1)}50%{filter:brightness(1.35)}}.pause-coaching-card{position:fixed;left:50%;bottom:180px;transform:translate(-50%);z-index:35;width:min(520px,calc(100vw - 32px));display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:14px 16px;border-radius:8px;border:1px solid var(--practice-line);background:color-mix(in srgb,var(--practice-surface) 96%,transparent);box-shadow:0 12px 40px #00000059}.pause-coaching-card strong{display:block;font-size:15px}.pause-coaching-card p{margin:4px 0 0;font-size:14px;color:var(--practice-muted)}.pause-coaching-card button{min-height:36px;padding:0 14px;border-radius:8px;border:0;background:var(--practice-accent);color:#0f1218;font-weight:700;cursor:pointer}.practice-summary-overlay{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:color-mix(in srgb,#000 60%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.practice-summary-panel{width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:auto;padding:20px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface);display:grid;gap:16px}.practice-summary-panel header h2{margin:0;font-size:22px}.practice-summary-panel header p{margin:6px 0 0;color:var(--practice-muted)}.practice-summary-panel__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.practice-summary-panel__stats div{padding:12px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface-2);display:grid;gap:4px;justify-items:center;text-align:center}.practice-summary-panel__stats strong{font-size:24px;color:var(--practice-accent)}.practice-summary-panel__stats span{font-size:12px;color:var(--practice-muted)}.practice-summary-panel__section h3{margin:0 0 8px;display:flex;align-items:center;gap:6px;font-size:15px}.practice-summary-panel__section ul{margin:0;padding-left:18px}.practice-summary-panel__section p{margin:0;line-height:1.5}.practice-summary-panel__actions{display:flex;flex-wrap:wrap;gap:10px}.practice-summary-panel__primary,.practice-summary-panel__secondary{min-height:42px;padding:0 16px;border-radius:8px;cursor:pointer}.practice-summary-panel__primary{border:0;background:var(--practice-accent);color:#0f1218;font-weight:700}.practice-summary-panel__secondary{border:1px solid var(--practice-line);background:var(--practice-surface-2);color:var(--practice-text)}.score-panel--immersive .score-panel__header,.score-panel--immersive .score-error-rail{display:none}.practice-main{min-height:0;overflow:hidden;display:grid;grid-template-columns:minmax(0,7fr) minmax(280px,3fr);grid-template-rows:minmax(0,1fr);gap:12px;padding:12px 16px 8px}.practice-score-stage{min-height:0;min-width:0;height:100%;display:flex;flex-direction:column;border:1px solid var(--practice-line);border-radius:16px;background:var(--practice-surface);overflow:hidden}.practice-score-stage .score-panel{border:0;border-radius:0;background:transparent;flex:1 1 auto;min-height:0}.practice-guide-rail{min-height:0;min-width:0;overflow:auto}.practice-coaching-rail{min-height:0;display:grid;gap:12px;align-content:start;overflow:auto}.practice-coaching-rail .next-note-hint,.practice-coaching-rail .live-errors{background:var(--practice-surface);border-color:var(--practice-line);color:var(--practice-text)}.practice-control-bar{border-top:1px solid var(--practice-line);background:color-mix(in srgb,var(--practice-surface) 95%,transparent);padding:10px 16px 14px;display:grid;gap:10px}.practice-control-bar--single{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px}.practice-control-bar__left,.practice-control-bar__center,.practice-control-bar__right{display:flex;align-items:center;gap:8px}.practice-control-bar__center{justify-content:center;flex-wrap:wrap}.practice-control-bar__right{justify-content:flex-end}.practice-control-bar__metronome{display:inline-flex;align-items:stretch;gap:8px}.practice-control-bar__metronome--active{padding:4px;border-radius:14px;border:1px solid color-mix(in srgb,var(--practice-accent) 28%,var(--practice-line));background:color-mix(in srgb,var(--practice-accent) 6%,var(--practice-surface-2))}.practice-control-bar__metronome-panel{display:grid;gap:6px;align-content:center;min-width:118px}.practice-control-bar__bpm-stepper{display:inline-flex;align-items:center;gap:4px}.practice-control-bar__bpm-stepper button{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;border:1px solid var(--practice-line);background:var(--practice-surface);color:var(--practice-text);cursor:pointer}.practice-control-bar__bpm-value{display:inline-flex!important;flex-direction:column;align-items:center;justify-content:center;min-width:52px!important;height:34px!important;padding:0 6px!important;border-radius:8px!important;border:1px solid color-mix(in srgb,var(--practice-accent) 35%,var(--practice-line))!important;background:color-mix(in srgb,var(--practice-accent) 10%,var(--practice-surface))!important;color:var(--practice-text);font-size:16px;font-weight:800;line-height:1;cursor:pointer}.practice-control-bar__bpm-input-wrap{display:inline-flex;flex-direction:column;align-items:center;gap:1px;min-width:58px}.practice-control-bar__bpm-input{width:58px;height:30px;padding:0 4px;border-radius:8px;border:1px solid color-mix(in srgb,var(--practice-accent) 35%,var(--practice-line));background:color-mix(in srgb,var(--practice-accent) 10%,var(--practice-surface));color:var(--practice-text);font-size:16px;font-weight:800;text-align:center;appearance:textfield}.practice-control-bar__bpm-input::-webkit-outer-spin-button,.practice-control-bar__bpm-input::-webkit-inner-spin-button{appearance:none;margin:0}.practice-control-bar__bpm-input-wrap>span{font-size:9px;font-weight:700;color:var(--practice-muted);line-height:1}.practice-control-bar__metronome-actions{display:flex;align-items:center;gap:8px}.practice-control-bar__metronome-reset{min-height:28px;padding:0 8px;border-radius:999px;border:1px solid var(--practice-line);background:var(--practice-surface);color:var(--practice-muted);font-size:10px;cursor:pointer}.practice-control-bar__metronome-reset:disabled{opacity:.45;cursor:default}.practice-control-bar__metronome-reset:not(:disabled):hover{color:var(--practice-text);border-color:color-mix(in srgb,var(--practice-accent) 35%,var(--practice-line))}.practice-control-bar__metronome-volume{display:grid;grid-template-columns:auto 1fr;gap:6px;align-items:center;font-size:10px;color:var(--practice-muted)}.practice-control-bar__metronome-volume input[type=range]{width:100%;min-width:72px;accent-color:var(--practice-accent)}.practice-control-bar__tool--metronome-on{animation:metronome-pulse 1s ease-in-out infinite}@keyframes metronome-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--practice-accent) 20%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--practice-accent) 16%,transparent)}}.practice-control-bar__pause{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 18px;border:0;border-radius:12px;background:linear-gradient(180deg,#6d9cf7,#4f7fe0);color:#fff;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 8px 24px color-mix(in srgb,var(--practice-accent-blue) 35%,transparent)}.practice-control-bar__danger--prominent{min-height:42px;padding:0 16px;font-size:13px;font-weight:600}.practice-control-bar__socket{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.practice-bottom-dock .practice-control-bar{position:relative;border:1px solid var(--practice-line);border-radius:14px;padding:10px 12px;background:color-mix(in srgb,var(--practice-surface) 96%,transparent);box-shadow:0 8px 24px #0000002e}.practice-control-bar--dock{border-top:0;padding:0;background:transparent}.practice-control-bar__tool--stacked{flex-direction:column;justify-content:center;gap:4px;min-width:68px;min-height:58px;padding:8px 10px;border-radius:12px;background:transparent;border-color:transparent;color:var(--practice-muted)}.practice-control-bar__tool--stacked span{font-size:11px;line-height:1.1;white-space:nowrap}.practice-control-bar__tool--stacked:hover:not(:disabled){background:color-mix(in srgb,var(--practice-surface-2) 88%,transparent);border-color:var(--practice-line);color:var(--practice-text)}.practice-control-bar__tempo-presets{display:inline-flex;align-items:center;gap:4px;padding:4px;border:1px solid var(--practice-line);border-radius:10px;background:var(--practice-surface-2)}.practice-control-bar__tempo-presets button{min-width:42px;min-height:34px;padding:0 8px;border:0;border-radius:7px;background:transparent;color:var(--practice-muted);font-size:12px;font-weight:700;cursor:pointer}.practice-control-bar__tempo-presets button:hover{color:var(--practice-text)}.practice-control-bar__tempo-presets button.is-active{background:color-mix(in srgb,var(--practice-accent) 18%,var(--practice-surface-2));color:#b8f5d4}.practice-control-bar__segmented--hands{gap:0;border-radius:12px;overflow:hidden;background:var(--practice-surface-2)}.practice-control-bar__hand{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:58px;min-height:58px;padding:8px 10px;border:0;background:transparent;color:var(--practice-muted);font-size:11px;cursor:pointer}.practice-control-bar__hand.is-active{background:color-mix(in srgb,var(--practice-accent-blue) 18%,var(--practice-surface-2));color:#9ec0ff;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--practice-accent-blue) 45%,var(--practice-line))}.practice-control-bar__hand:nth-child(1).is-active{color:#d8c9ff;background:color-mix(in srgb,var(--practice-purple) 18%,var(--practice-surface-2));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--practice-purple) 45%,var(--practice-line))}.practice-control-bar__hand:nth-child(2).is-active{color:#b8f5d4;background:color-mix(in srgb,var(--practice-accent) 16%,var(--practice-surface-2));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--practice-accent) 45%,var(--practice-line))}.practice-control-bar__tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.practice-control-bar__tool,.practice-control-bar__secondary,.practice-control-bar__danger,.practice-control-bar__pause{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:10px;border:1px solid var(--practice-line);background:var(--practice-surface-2);color:var(--practice-text);font-size:12px;cursor:pointer}.practice-control-bar__tool--active,.practice-control-bar__segmented .is-active{border-color:color-mix(in srgb,var(--practice-accent) 40%,var(--practice-line));color:var(--practice-accent)}.practice-control-bar__tool:disabled{opacity:.45;cursor:not-allowed}.practice-control-bar__slider{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 10px;border-radius:10px;border:1px solid var(--practice-line);background:var(--practice-surface-2);font-size:12px}.practice-control-bar__slider input[type=range]{width:120px}.practice-control-bar__segmented{display:inline-flex;border:1px solid var(--practice-line);border-radius:10px;overflow:hidden}.practice-control-bar__segmented button{min-height:36px;padding:0 10px;border:0;background:var(--practice-surface-2);color:var(--practice-muted);font-size:12px;cursor:pointer}.practice-control-bar__primary{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.practice-control-bar__start{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 22px;border:0;border-radius:12px;background:linear-gradient(180deg,#72e8b2,#3ecf8e);color:#0f1218;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 8px 24px color-mix(in srgb,var(--practice-accent) 35%,transparent)}.practice-control-bar__start:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.practice-control-bar__danger{color:#ffd5d5;border-color:color-mix(in srgb,var(--practice-danger) 35%,var(--practice-line))}.practice-control-bar__socket{margin-left:auto;font-size:12px;color:var(--practice-muted)}.practice-control-bar__socket--online{color:var(--practice-success)}.calibration-overlay{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:color-mix(in srgb,#000 55%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.calibration-overlay__card{width:min(420px,calc(100vw - 32px));padding:28px 24px;border-radius:18px;border:1px solid var(--practice-line);background:var(--practice-surface);text-align:center;display:grid;gap:10px;justify-items:center}.calibration-overlay__countdown{font-size:64px;font-weight:800;line-height:1;color:var(--practice-accent)}.calibration-overlay__meter{width:100%;height:10px;border-radius:999px;background:color-mix(in srgb,var(--practice-text) 8%,transparent);overflow:hidden}.calibration-overlay__meter>span{display:block;height:100%;background:linear-gradient(90deg,var(--practice-success),var(--practice-accent))}.orientation-hint{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:8px;padding:8px 12px;background:color-mix(in srgb,var(--practice-warning) 18%,var(--practice-surface));border-bottom:1px solid color-mix(in srgb,var(--practice-warning) 35%,var(--practice-line));font-size:12px}.practice-settings-panel__backdrop{position:fixed;inset:0;z-index:50;background:color-mix(in srgb,#000 45%,transparent)}.practice-settings-panel__sheet{position:fixed;top:0;right:0;z-index:51;width:min(420px,100vw);height:100dvh;overflow:auto;padding:16px;background:var(--practice-surface);border-left:1px solid var(--practice-line)}.practice-settings-panel__sheet header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.practice-settings-panel__close{border:1px solid var(--practice-line);background:var(--practice-surface-2);color:var(--practice-text);border-radius:8px;min-height:32px;padding:0 10px;cursor:pointer}.practice-settings-panel__section{margin-top:12px;padding:12px;border:1px solid var(--practice-line);border-radius:8px;background:var(--practice-surface-2)}.practice-settings-panel__toggle{display:flex;align-items:center;gap:10px;color:var(--practice-text);cursor:pointer}.practice-settings-panel__toggle input{width:18px;height:18px;accent-color:var(--practice-accent-blue)}.practice-settings-panel__toggle span{display:grid;gap:3px}.practice-settings-panel__toggle strong{font-size:13px}.practice-settings-panel__toggle small{color:var(--practice-muted);font-size:12px;line-height:1.35}@media(max-width:1100px){.practice-main{grid-template-columns:1fr;grid-template-rows:minmax(220px,1fr) minmax(120px,auto)}.practice-score-stage{min-height:min(42dvh,420px)}.practice-guide-rail{max-height:32dvh}.practice-status-bar{gap:10px;padding:8px 12px}.practice-status-bar__brand-name{font-size:16px}}@media(max-width:760px){.practice-main{grid-template-rows:minmax(180px,38dvh) minmax(100px,auto);padding:8px 10px 6px;gap:8px}.practice-score-stage{min-height:max(180px,34dvh);border-radius:12px}.score-canvas-wrap--viewport{min-height:160px}.practice-guide-rail{max-height:26dvh}.practice-bottom-dock{padding:6px 8px calc(8px + env(safe-area-inset-bottom,0px))}.piano-keyboard-guide{--white-key-width: 30px;--white-key-height: 72px;--black-key-width: 18px;--black-key-height: 44px}.practice-control-bar__tool--stacked{min-width:56px;min-height:52px;padding:6px 8px}.practice-control-bar__hand{min-width:50px;min-height:52px}.practice-status-bar{flex-wrap:wrap;align-items:stretch}.practice-status-bar__brand{order:1}.practice-status-bar__back{order:0}.practice-status-bar__settings{order:2;margin-left:auto}.practice-status-bar__strip{order:3;flex:1 1 100%}.status-strip-metric__value{max-width:140px}.status-strip-metric--measure .status-strip-metric__value{font-size:24px}.status-strip-listening__waveform{display:none}.audio-input-status,.practice-control-bar--single{grid-template-columns:1fr}.practice-control-bar__left,.practice-control-bar__center,.practice-control-bar__right{justify-content:center}.pause-coaching-card{bottom:220px;grid-template-columns:1fr}}
