@font-face{font-family:Nunito Sans;font-style:normal;font-weight:400 800;font-display:swap;src:url(/assets/NunitoSans-BWQ3gi2K.woff2) format("woff2")}:root{color-scheme:light;--bg: #faf8f3;--rail: #f6f4ef;--rail-ink: #1d1d1f;--rail-muted: #706e69;--card: #fffefb;--paper: #fffefb;--line: #e8e6e2;--line-strong: #c2c1bf;--text: #1d1d1f;--muted: #706e69;--accent: #1d1d1f;--accent-deep: #3a3a3c;--accent-text: #fff;--field: #fffefc;--button: #fffefb;--link: #1d1d1f;--danger: #ae443d;--ok: #3f7562;--warn: #88621f;--ink: #1d1d1f;--rail-width: 240px;--display: "Nunito Sans", "Segoe UI", sans-serif;--sans: "Nunito Sans", "Segoe UI", sans-serif;--shadow: 0 2px 3px #29303203, 0 12px 32px #29303204;font-family:var(--sans);font-size:16px;line-height:1.5;color:var(--text);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{min-width:280px}button,input,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;overflow-wrap:anywhere}button:disabled{opacity:.48;cursor:default}button,summary,a{-webkit-tap-highlight-color:transparent}a{color:var(--link);text-underline-offset:4px;overflow-wrap:anywhere}button,a,input,select,summary,[tabindex]{outline-offset:4px}:focus-visible{outline:2px solid var(--link)}[hidden],.score-file{display:none!important}h1,h2,h3,p,strong,small,dt,dd,label{overflow-wrap:anywhere}h1,h2,h3{font-family:var(--display);font-weight:750}h1{margin:0;font-size:clamp(30px,3vw,44px);line-height:1.2;letter-spacing:-.035em}h2{margin:0;font-size:28px;line-height:1.25;letter-spacing:-.025em}p{margin:0 0 12px}small,.small{font-size:13px;line-height:1.55}.muted,.subtle{color:var(--muted)}.subtle{font-size:13px;font-weight:400}.pad{padding:18px 22px}.icon{display:inline-block;width:18px;height:18px;flex:0 0 18px;vertical-align:middle}.skip{position:fixed;left:16px;top:-80px;z-index:60;padding:12px 16px;border:1px solid var(--line);border-radius:6px;background:var(--paper)}.skip:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.tutor-widget{position:fixed;right:20px;bottom:max(92px,env(safe-area-inset-bottom));z-index:15}.tutor-bubble{display:flex;align-items:center;gap:9px;min-height:48px;margin-left:auto;padding:10px 18px;border:1px solid var(--accent);border-radius:28px;background:var(--accent);color:#fff;box-shadow:0 4px 18px #1d1d1f26;font:inherit;font-size:13px;cursor:pointer}.tutor-bubble span{font-size:22px}.tutor-panel{width:min(420px,calc(100vw - 32px));max-height:min(680px,calc(100dvh - var(--tutor-bottom, 92px) - 88px));margin-bottom:10px;border:1px solid var(--line);border-radius:16px;background:var(--card);box-shadow:0 8px 32px #1d1d1f26;overflow:auto}.tutor-panel[hidden],.voice-coach-frame[hidden]{display:none}.tutor-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.tutor-head h2{margin:0;font-size:17px}.tutor-title{display:flex;align-items:center;gap:10px}.tutor-avatar{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:12px;background:#f3f0ea;color:var(--accent);font-size:24px}.tutor-head .small{font-size:10px}.tutor-content{padding:0 16px 12px}.tutor-welcome{padding:20px 2px 8px}.tutor-welcome h3{padding:0;margin:0 0 8px;font-size:19px}.tutor-welcome p{margin:0;font-size:13px;line-height:1.7;color:var(--muted)}.tutor-start{width:100%;margin-top:14px;border-radius:12px}.tutor-private{margin:10px 0 14px;font-size:11px;color:var(--muted);text-align:center}.tutor-privacy{padding:10px 0 4px;font-size:11px;color:var(--muted);border-top:1px solid var(--line)}.tutor-privacy summary{cursor:pointer}.tutor-privacy p{line-height:1.7}.tutor-panel.has-session{height:min(690px,calc(100dvh - var(--tutor-bottom, 92px) - 88px));display:flex;flex-direction:column}.tutor-panel.has-session .tutor-content{flex:1;min-height:0;display:flex;flex-direction:column}.tutor-prompts{display:flex;gap:6px;flex-wrap:wrap;padding-top:12px}.tutor-prompts button{padding:6px 10px;border:1px solid #eae5dc;border-radius:20px;color:var(--accent);background:#faf8f5;font:inherit;font-size:11px;cursor:pointer}.tutor-prompts button:hover{background:#f3f0ea}.voice-coach-frame{display:block;flex:1;min-height:200px;width:100%;border:0;margin:2px 0 0;background:var(--card)}.tutor-end{align-self:center;margin:5px 0 0;padding:4px;color:var(--muted);font-size:10px}.tutor-panel.has-session[hidden]{display:none}.btn{display:inline-flex;justify-content:center;align-items:center;gap:9px;min-height:44px;max-width:100%;padding:10px 16px;border:1px solid var(--line-strong);border-radius:10px;background:var(--button);color:var(--text);font-size:14px;font-weight:600;line-height:1.35;text-align:center;text-decoration:none;transition:background-color .12s ease,border-color .12s ease}.btn:hover:not(:disabled){background:#f5f2ed;border-color:#a9a7a4}.btn-primary,.btn-record{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover:not(:disabled),.btn-record:hover:not(:disabled){background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#8f342d;border-color:#8f342d}.btn-record:before,.btn-danger:before{content:"";width:9px;height:9px;flex:0 0 9px;background:currentColor}.btn-record:before{border-radius:50%}.btn-danger:before{border-radius:1px}.btn-ghost{background:transparent;border-color:transparent}.btn-block{width:100%}.btn-compact{padding:8px 12px;font-size:13px}.text-button,.text-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 0;border:0;background:transparent;color:var(--link);font-size:14px;text-align:left}.text-button:hover:not(:disabled){text-decoration:underline;text-underline-offset:4px}select,input:not([type=checkbox]):not([type=radio]):not([type=range]){display:block;width:100%;min-width:0;min-height:44px;margin-top:6px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:9px;background-color:var(--field);color:var(--text);font-size:15px;line-height:1.4}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:42px;text-overflow:ellipsis;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23596562' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}input[type=file]{padding:8px;font-size:13px;overflow:hidden}input[type=file]::file-selector-button{min-height:32px;padding:5px 9px;margin-right:10px;border:0;border-radius:3px;background:#f3f0ea;color:var(--text);font:inherit;font-weight:600;cursor:pointer}input:hover:not(:disabled),select:hover:not(:disabled){border-color:#a8a6a2}input:disabled,select:disabled{background-color:#f3f2ef;color:var(--muted)}input[type=checkbox]{width:18px;height:18px;margin:2px 0 0;flex:0 0 18px;accent-color:var(--accent)}summary{min-height:44px;padding:11px 0;cursor:pointer;color:var(--text)}.app{display:grid;grid-template-columns:var(--rail-width) minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100vh;height:100dvh}.app.is-library-collapsed{grid-template-columns:minmax(0,1fr)}.rail{display:flex;flex-direction:column;gap:24px;min-width:0;min-height:0;padding:28px 18px 16px;border-right:1px solid var(--line);background:var(--rail);color:var(--rail-ink)}.brand{display:flex;justify-content:space-between;align-items:start;gap:6px}.brand-mark{display:flex;align-items:center;gap:12px;min-width:0}.brand-logo{display:block;width:40px;height:40px;flex:0 0 40px;border-radius:10px}.brand strong{display:block;font:800 20px/1.15 var(--display);letter-spacing:-.04em}.brand small{display:block;margin-top:5px;color:var(--rail-muted);font-size:11px;letter-spacing:.025em}.rail-head{display:grid;gap:7px}.rail-head .btn-primary{background:var(--accent);border-color:var(--accent)}.rail-head .btn-primary:hover:not(:disabled){background:var(--accent-deep)}.rail-head>.text-button{justify-content:center;color:var(--muted);font-size:13px}.tempo-option{color:var(--rail-muted);font-size:12px}.tempo-option summary{min-height:38px;color:var(--rail-muted)}.tempo-option label{display:block;padding:0 4px 8px}.rail-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:none}.rail-scroll::-webkit-scrollbar{display:none}.rail-section{min-width:0}.pieces{margin-bottom:28px}.rail-label{display:flex;justify-content:space-between;gap:8px;margin:0 8px 12px;color:var(--rail-muted);font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.rail-label span{letter-spacing:0}.library-section-head{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:0 8px;margin-bottom:6px}.library-section-head .rail-label{margin:0 8px;flex:1}.library-section-head .text-button{font-size:12px;padding-inline:8px}.library-bulk{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px;margin-bottom:8px;border:1px solid #e1dbce;border-radius:10px;background:#fdfbf7}.library-bulk label{display:flex;align-items:center;gap:8px;min-height:44px;font-size:12px;flex:1 1 auto}.library-bulk small{flex-basis:100%;color:var(--muted);font-size:11px}.remove-action{color:var(--danger)}.library-selection{display:flex;align-items:center;gap:12px;min-height:58px;padding:10px;border-radius:8px;cursor:pointer}.library-selection:has(:checked){background:#ece8df}.library-selection>span{min-width:0}.library-selection strong{display:block;font-size:13px}.library-selection small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.recording-group-title{margin:16px 10px 6px;color:var(--accent-deep);font-size:13px;font-weight:750;letter-spacing:0}.score-list,.take-list{display:grid;gap:4px;min-width:0}.library-row{min-width:0;border:1px solid transparent;border-radius:6px}.library-row.is-active{background:#fffaf2;border-color:#e8e3d8;box-shadow:inset 2px 0 var(--accent)}.library-row-head{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:start}.library-open,.score-item{display:block;width:100%;min-width:0;min-height:52px;padding:11px 8px 11px 10px;border:0;border-radius:6px;background:transparent;color:inherit;text-align:left}.library-open:hover:not(:disabled),.score-item:hover:not(:disabled){background:#ffffff65}.library-open strong,.score-item strong{display:block;font:700 13px/1.5 var(--display);overflow-wrap:anywhere}.library-open small,.score-item small{display:block;margin-top:4px;color:var(--rail-muted);font-size:11px}.library-menu-toggle{display:grid;place-items:center;width:44px;min-height:44px;padding:0;margin-top:4px;border:0;border-radius:5px;background:transparent;color:var(--muted)}.library-menu-toggle:hover,.library-menu-toggle[aria-expanded=true]{background:#eae6dd;color:var(--text)}.library-menu{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px;border-top:1px solid var(--line)}.library-menu .btn{padding:8px;font-size:12px}.library-menu .remove-action{color:var(--danger)}.library-rename{min-width:0;padding:10px}.library-rename label{display:block;color:var(--muted);font-size:12px}.library-rename-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.library-empty,.demo-note{margin:10px 8px;color:var(--rail-muted);font-size:12px}.recordings>.text-button{margin:8px 8px 0;font-size:12px}.rail-foot{flex:0 0 auto;padding-top:16px;border-top:1px solid #e3dfd8}.legal-links{display:flex;gap:14px;padding:8px 8px 0 29px;font-size:11px}.legal-links a{color:var(--rail-muted);text-decoration:underline;text-underline-offset:2px}.legal-links a:hover,.legal-links a:focus-visible{color:var(--rail-ink)}.legal-links .text-button{min-height:0;padding:0;font-size:11px;color:var(--rail-muted);text-decoration:underline;text-underline-offset:2px}.consent{position:fixed;z-index:50;left:16px;right:16px;bottom:16px;max-width:520px;margin:0 auto;display:grid;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--text);box-shadow:0 12px 40px #1d1d1f24;font-size:14px}.consent p{margin:0}.consent a{color:inherit}.consent-actions{display:flex;justify-content:flex-end;gap:8px}.local-note{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin:0;padding:0 8px;color:var(--rail-muted);font-size:11px}.local-note .icon{width:13px;height:13px;flex-basis:13px}.library-toggle{display:inline-flex;padding-inline:12px;font-size:13px}.library-close,.library-backdrop,.mobile-library{display:none}.workspace{min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 20px;min-height:76px;padding:12px 32px;border-bottom:1px solid var(--line)}.studio-context{display:inline-flex;align-items:center;gap:9px;color:var(--muted);font:600 12px var(--display)}.studio-context .icon{width:16px;height:16px;color:#be7847}.view-switch{display:flex;gap:24px;align-self:stretch;align-items:stretch}.view-switch button{position:relative;min-height:44px;padding:6px 2px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:14px}.view-switch .is-current{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.session-chip{display:inline-flex;align-items:center;gap:8px;color:var(--danger);font-size:13px}main{min-width:0;min-height:0;overflow:auto;overscroll-behavior-y:contain;padding:30px 32px 88px;scroll-padding:24px}.page-head,.layout,main>.banner,.pdf-info,.preparation-status{max-width:1440px;margin-left:auto;margin-right:auto}.page-head{display:flex;justify-content:space-between;align-items:start;gap:12px 24px;margin-bottom:28px}.page-head>div{min-width:0}.page-head>a{flex-shrink:0}.eyebrow{margin:0 0 11px;color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.subtitle{max-width:55ch;margin:12px 0 0;color:var(--muted);font-size:14px}.practice-path{display:none}.banner{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin-bottom:16px;padding:14px 18px;border:1px solid var(--line);border-radius:6px;background:var(--card);font-size:13px;overflow-wrap:anywhere}.banner>.text-button{width:auto}.banner-error{background:#fff2ee;border-color:#e6c4bb;color:#853d34}.banner-warn{background:#fbf7eb;border-color:#e6dbb9;color:#735c2c}.pdf-info{margin-bottom:16px;font-size:12px;color:var(--muted)}.pdf-intro{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}.pdf-intro p{flex:1 1 250px;margin:0}.pdf-info summary{width:fit-content;color:var(--link)}.pdf-info summary span{color:var(--muted);font-weight:400}.pdf-details{max-width:80ch;padding:8px 16px;border-left:2px solid var(--line)}.pdf-details ul{padding-left:18px;margin:0 0 12px}.pdf-details li+li{margin-top:6px}.scan-links{display:flex;flex-wrap:wrap;gap:8px 20px}.preparation-status{margin-bottom:22px;padding:20px 22px;border:1px solid #cfcecc;border-radius:14px;background:#f7f4ef}.preparation-heading{display:flex;align-items:center;gap:12px;font-size:18px}.preparation-status p{margin:8px 0 16px;font-size:13px;color:var(--muted)}.preparation-status ol{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0;padding:0;list-style:none;font-size:12px}.preparation-status li{display:flex;align-items:center;gap:8px;color:var(--muted)}.preparation-status li>span{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--line-strong);border-radius:50%}.preparation-status .is-current{color:var(--accent-deep);font-weight:750}.preparation-status .is-current>span{color:#fff;background:var(--accent);border-color:var(--accent)}.preparation-status .is-done{color:var(--ok)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 276px;gap:22px;align-items:start}.canvas,.inspector{display:grid;gap:22px;min-width:0;align-content:start}.card{min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--card)}.card-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 14px;padding:18px 22px;border-bottom:1px solid var(--line);font:700 15px/1.4 var(--display)}.card-head>*{min-width:0}.card-head .subtle{font-family:var(--sans);font-size:11px}.score-card{background:var(--paper);box-shadow:var(--shadow)}.setup-panel>.card-head{background:#fff3d9;border-radius:14px 14px 0 0}.review-panel>.card-head{background:#eef4ec;border-radius:14px 14px 0 0}.score-card>.card-head{background:#f8f6f1;border-radius:14px 14px 0 0}.notation{position:relative;min-width:0;max-width:100%;padding:16px 18px 28px;overflow:auto;background:var(--paper);border-radius:0 0 14px 14px}.notation>svg{display:block;width:100%;min-width:610px;height:auto}.notation .selectable-note{cursor:pointer}.notation .note-hit{fill:transparent!important;stroke:none!important;pointer-events:all}.notation .slur{pointer-events:none}.notation.has-feedback .selectable-note:not(.issue-note):not(.selected-note){opacity:.4}.notation .chord.selectable-note .selectable-note{opacity:1}.notation.has-feedback .selectable-connection:not(.issue-note):not(.selected-note){opacity:.4}.notation .issue-note{color:var(--danger);fill:var(--danger);stroke:var(--danger)}.notation .selected-note{color:var(--link);fill:var(--link);stroke:var(--link);opacity:1}.notation-key{display:flex;flex-wrap:wrap;gap:6px 16px;margin:14px 22px 0;color:var(--muted);font-size:11px}.notation-key span:before{content:"";display:inline-block;width:6px;height:6px;margin-right:6px;border-radius:50%;background:#8b9687}.notation-key .key-issue{color:var(--danger)}.notation-key .key-issue:before{background:var(--danger)}.notation-key .key-selected{color:var(--link)}.notation-key .key-selected:before{background:var(--link)}.score-navigation{display:none}.empty{display:grid;justify-items:center;align-content:center;min-height:350px;padding:24px 24px 28px;text-align:center}.welcome-score{width:min(200px,100%);height:102px;margin-bottom:14px;color:#807e79}.empty h2{max-width:28ch;margin:0 0 13px;font-size:27px;letter-spacing:-.04em}.empty p{max-width:44ch;margin:0 auto 18px;color:var(--muted);font-size:14px}.empty-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}.empty .welcome-footnote{margin:18px 0 0;font:600 11px var(--display);color:#82807b}.roll,.trace{display:block;width:100%;max-width:100%;height:auto;padding:12px 14px}.roll line,.trace line{stroke:var(--line-strong);stroke-width:1}.roll text,.trace text{fill:var(--muted);font:11px var(--sans)}.roll rect{fill:var(--link);cursor:pointer}.roll rect.bad{fill:var(--danger)}.roll .quiet-note{fill:#8d9f91;opacity:.55}.roll rect.selected,.roll g:focus-visible rect{opacity:1;outline:2px solid color-mix(in srgb,var(--text) 50%,transparent);outline-offset:3px;border-radius:1px}.roll rect.missing{fill:transparent;stroke:var(--danger);stroke-width:2;stroke-dasharray:4 2}.roll .roll-hit{fill:transparent;stroke:none;pointer-events:all}.roll *{outline:none}.trace path{fill:none;stroke:var(--accent);stroke-width:1.8}.setup-panel{padding-bottom:20px}.setup-panel>label,.performance-input>label,.posture-review>label{display:block;margin:18px 22px 0;color:var(--muted);font-size:12px;font-weight:500}.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 22px 0}.field-row label{min-width:0;color:var(--muted);font-size:12px}.setup-panel>.btn{width:calc(100% - 44px);margin:20px 22px 0}.checkbox{display:flex!important;align-items:start;gap:10px;min-height:44px;color:var(--text)!important}.checkbox-copy{display:block}.checkbox-copy small{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-weight:400}.setup-lead,.setup-note,.next-step{margin:18px 22px 0;color:var(--muted);font-size:13px}.next-step{padding-left:12px;border-left:3px solid #e5b54b}.setup-note{font-size:11px}.steps{padding:4px 22px 0;margin:0;list-style:none;counter-reset:step}.steps li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;padding:20px 0;border-bottom:1px solid var(--line);counter-increment:step;font-size:14px}.steps li:last-child{border:0;padding-bottom:8px}.steps li:before{content:"0" counter(step);padding-top:3px;color:#979591;font-size:10px}.steps strong{display:block;font-weight:600}.steps p{margin:5px 0 0;color:var(--muted);font-size:12px}.fold{margin:18px 22px 0;padding-top:4px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.fold label{display:block;margin-top:12px;font-size:12px}.fold .fold{margin-inline:0}.performance-input{min-width:0;padding:8px 0 0}.performance-input>p{margin:0 0 12px}.performance-input>label{margin:14px 0 0}.performance-input>.btn{width:100%;margin-top:18px}.file-name{display:block;margin-top:6px;color:var(--text);font-size:11px;overflow-wrap:anywhere}.note{outline:none}.note-title{padding:22px 22px 0;font:400 38px/1.1 var(--display)}.note-title span{display:block;margin-top:8px;font:12px/1.5 var(--sans);color:var(--muted)}.plain-facts{margin:18px 22px 0;padding:0;list-style:none}.plain-facts li{padding:11px 0;border-top:1px solid var(--line);font-size:14px}.note-feedback{display:grid;gap:16px;margin:20px 22px 0}.note-feedback h3{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:13px}.note-feedback ul{padding:0;margin:0;list-style:none}.note-corrections{padding:16px;border:1px solid #e9c2af;border-left:4px solid #bf6b42;border-radius:10px;background:#fff0e6}.note-corrections h3{color:#89462f}.note-corrections li+li{margin-top:14px;padding-top:12px;border-top:1px solid #efd4c4}.note-corrections strong{display:block;font-size:14px}.note-corrections p{margin:4px 0 0;font-size:13px;color:#745549}.note-strengths{font-size:12px;color:var(--ok)}.note-strengths h3{margin-bottom:6px;font-size:12px}.note-strengths li{margin-top:4px}.note-strengths li span{margin-right:4px}.expression-facts{padding-left:16px}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0;font-size:12px}.metrics dt{color:var(--muted)}.metrics dd{margin:4px 0 0;font-weight:600;font-variant-numeric:tabular-nums}.sound-picture{margin:16px 22px 0}.sound-picture .btn{width:100%}.spectrogram{display:block;width:100%;margin-top:12px;border:1px solid var(--line);border-radius:4px}.tip{margin:0;padding:0 3px;color:var(--muted);font:400 12px/1.7 var(--display)}.unavailable{margin:0;padding:22px;color:var(--muted);font-size:14px}.tuner{padding-bottom:20px;text-align:center}.tuner-note{margin:24px 12px 8px;font:400 62px/1.1 var(--display)}.tuner-note.is-intune{color:var(--ok)}.tuner-cents{min-height:24px;font-size:15px}.tuner-detail{margin:4px 16px 0;color:var(--muted);font-size:12px}.tuner-scale{display:flex;align-items:center;gap:12px;padding:24px 24px 18px;color:var(--muted);font-size:11px}.tuner-track{position:relative;flex:1;height:2px;background:#e5e2dc}.tuner-track:before{content:"";position:absolute;top:-7px;left:50%;width:1px;height:16px;background:var(--ok)}.tuner-track i{position:absolute;top:-5px;width:12px;height:12px;margin-left:-6px;border:2px solid var(--paper);border-radius:50%;background:var(--ink)}.level{height:3px;margin:0 24px 16px;overflow:hidden;background:#ebe9e5}.level span{display:block;height:100%;background:var(--ok)}.tuner>p{margin:8px 22px 0;font-size:11px}.live-camera,.posture-review{padding:18px 22px 22px}.camera-view{position:relative;min-height:140px;overflow:hidden;border-radius:5px;background:#373633}.camera-view video{display:block;width:100%;max-height:440px;object-fit:contain}.camera-view canvas,.camera-view img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.live-camera p{margin:14px 0 0}.live-camera dl,.posture-review dl{margin:12px 0 0}.wrist-reading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;padding:12px 0;border-top:1px solid var(--line);font-size:13px}.wrist-reading dt{flex:1;min-width:0}.wrist-reading dd{margin:0;font-variant-numeric:tabular-nums}.wrist-reading small{width:100%;color:var(--muted)}.posture-review>label{margin:18px 0 0}.posture-review .rating{margin:4px 0 20px}.posture-review .fold{margin-inline:0}.rating-label{display:block;margin-top:5px;color:var(--muted);font-size:11px}.review-panel{padding-bottom:22px}.review-panel audio{display:block;width:calc(100% - 44px);height:44px;margin:22px}.review-video{display:block;width:calc(100% - 44px);max-height:440px;margin:18px 22px 0;background:#373633;border-radius:5px}.media-note{margin:8px 22px 14px}.review-panel>.banner,.setup-panel>.banner{margin:18px 22px}.stage-list{display:flex;flex-wrap:wrap;gap:8px 16px;margin:16px 22px}.stage{color:var(--muted);font-size:11px}.stage:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:5px;background:#b8bcb4}.stage.done{color:var(--ok)}.stage.done:before{background:var(--ok)}.stage.running{color:var(--warn)}.stage.running:before{background:var(--warn)}.stage.failed{color:var(--danger)}.stage.failed:before{background:var(--danger)}.analysis-progress{margin:16px 22px;font-size:12px;color:var(--muted)}.analysis-progress summary{padding-block:8px;min-height:38px;color:var(--muted)}.analysis-progress .stage-list{margin:8px 0}.tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:0 16px;border-bottom:1px solid var(--line)}.tabs button{min-height:48px;padding:10px 4px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:12px;line-height:1.4}.tabs .is-current{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.measurement-review-head{padding:20px 22px 12px}.review-panel .measurement-review-head h3{margin:0 0 8px;padding:0;font-size:15px;line-height:1.4}.measurement-review-head p{margin:0}.tutor-analysis-invite{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:16px 22px 20px;padding:16px;border:1px solid #e5ddcd;border-radius:14px;background:linear-gradient(115deg,#f5f2eb,#fbf1da);box-shadow:0 3px 12px #1d1d1f0a}.tutor-invite-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;color:#1d1d1f;background:#ffffffb0}.tutor-invite-icon svg{width:22px;height:22px}.tutor-analysis-invite>div{flex:1 1 180px}.tutor-analysis-invite strong{font-size:14px;color:#52504d}.tutor-analysis-invite p{margin:3px 0 0;font-size:11px;line-height:1.6;color:#7b7974}.tutor-analysis-invite .btn{color:#fff;border-color:#1d1d1f;background:#1d1d1f;border-radius:10px;min-height:42px;box-shadow:0 3px 9px #1d1d1f25}.tutor-analysis-invite .btn:hover{background:#676561;transform:translateY(-1px)}.rating{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin:26px 22px}.rating>strong{font:400 48px/1.1 var(--display);font-variant-numeric:tabular-nums;white-space:nowrap}.rating small{font:16px/1.5 var(--sans);color:var(--muted)}.rating>span{flex:1 1 180px;color:var(--muted);font-size:14px}.categories{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,100px),1fr));gap:1px;margin:0 22px 22px;border:1px solid var(--line);border-radius:4px;background:var(--line);overflow:hidden}.categories>div{min-width:0;padding:14px 12px;background:#f6f7ee}.categories>.has-finding{background:#fff0e5}.categories .has-finding strong{color:var(--danger)}.categories span,.categories small{display:block;color:var(--muted);font-size:11px}.categories strong{display:block;margin:5px 0;font:400 26px var(--display);font-variant-numeric:tabular-nums}.review-panel h3{margin:26px 22px 8px;font-size:22px}.analysis-summary{margin:18px 22px;color:var(--muted);font-size:13px}.target{display:block;width:calc(100% - 44px);padding:18px 0;margin:0 22px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left}.target:hover{background:#f9f7f3}.target span{color:var(--accent);font-size:11px;font-weight:600;letter-spacing:.02em}.target p{margin:8px 0 0;font-size:14px}.issue-list{padding:8px 22px}.issue-list button{display:block;width:100%;padding:18px 0;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.issue-list button.is-selected{color:var(--link);background:#f6f3ed}.issue-list strong,.issue-list small{display:block}.issue-list small{margin-top:5px;color:var(--muted)}.inset-btn{margin:0 22px 16px}.transport{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;padding:15px 36px max(15px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff9ee;z-index:2}.transport-title{display:flex;align-items:center;gap:14px;flex:1 1 180px;min-width:0}.transport-title>div{min-width:0}.transport-title strong{display:block;font:700 13px var(--display)}.transport-title small{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.transport-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:100%}.transport-actions .btn{min-width:152px}.transport-hint{margin-right:12px;align-self:center;color:var(--muted);font-size:11px}kbd{padding:2px 5px;border:1px solid var(--line);border-radius:3px;font:10px var(--sans)}.dot{display:inline-block;width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--ok)}.dot.is-live{background:var(--danger);box-shadow:0 0 0 4px #a7443b14}.spinner{display:inline-block;width:14px;height:14px;flex:0 0 14px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1400px){:root{--rail-width: clamp(280px, 20vw, 340px)}}@media(max-width:1199px){:root{--rail-width: 232px}.layout{grid-template-columns:minmax(0,1fr)}.inspector{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.inspector>.setup-panel:first-child{grid-row:span 2}.tip{grid-column:1 / -1}.studio-context{font-size:12px}}@media(max-width:899px){.app{grid-template-columns:minmax(0,1fr)}.rail{position:fixed;inset:0 auto 0 0;z-index:30;width:min(360px,calc(100vw - 24px));height:100dvh;transform:translate(-110%);visibility:hidden;transition:transform .16s ease}.rail.is-open{transform:translate(0);visibility:visible;box-shadow:12px 0 40px #29303220}.library-backdrop.is-open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;border:0;padding:0;background:#44434066}.library-toggle,.library-close{display:inline-flex}.library-toggle{padding-inline:12px;font-size:13px}.library-close{display:grid;place-items:center;width:44px;min-width:44px;height:44px;padding:0}.topbar{min-height:68px;padding:10px 20px;gap:10px 16px}.studio-context{margin-right:auto}main{padding:26px 24px 32px}.transport{padding-inline:24px}}@media(max-width:599px){.topbar{padding:8px 16px;gap:8px 12px}.studio-context{display:none}.view-switch{margin-left:auto;gap:18px}.session-chip{width:100%;justify-content:flex-end}main{padding:24px 16px 28px}.page-head{flex-wrap:wrap;gap:5px;margin-bottom:22px}.page-head>div{flex-basis:100%}.page-head>a{min-height:34px;font-size:12px}h1{font-size:31px}.eyebrow{font-size:9px}.layout,.canvas,.inspector{gap:18px}.inspector{grid-template-columns:minmax(0,1fr)}.inspector>.setup-panel:first-child{grid-row:auto}.card-head{padding:16px 18px}.empty{min-height:380px;padding:30px 18px}.empty h2{font-size:26px}.empty-actions{flex-direction:column;width:100%}.empty-actions .btn{width:100%}.welcome-score{width:200px;height:105px;margin-bottom:20px}.score-navigation{display:block;margin:10px 22px 0;color:var(--muted);font-size:11px}.notation>svg{min-width:560px}.tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.transport{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:12px 16px max(12px,env(safe-area-inset-bottom))}.transport-title{gap:10px}.transport-title>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 10px}.transport-title small{margin:0}.transport-actions{display:grid;grid-template-columns:minmax(0,1fr);width:100%}.transport-actions .btn{width:100%;min-width:0;min-height:46px}.transport-hint{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}.reference-playback{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}.reference-speaker{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:8px;border:0;border-radius:50%;background:transparent;color:var(--muted, #777571);cursor:pointer}.reference-speaker:hover,.reference-speaker[aria-pressed=true]{background:#f2f0eb;color:#75736e}.reference-speaker:focus-visible{outline:2px solid #83817c;outline-offset:2px}.reference-speaker:disabled{opacity:.4;cursor:default}.score-card>.card-head{align-items:center}.score-head-tools{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-left:auto;max-width:100%}.note-heading{display:flex;align-items:flex-start;gap:12px;padding:22px 22px 0}.note-heading .note-title{flex:1;min-width:0;padding:0}.note-heading .reference-playback{margin-top:3px}.tempo-editor{max-width:1440px;margin:0 auto 22px;font-size:13px}.tempo-editor label>.small{margin-left:8px}.tempo-editor-controls{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:6px}.tempo-editor-controls input{width:90px!important;margin:0!important}.vibrato-details{margin:16px 22px 0}.vibrato-details h3{margin:0 0 4px;font-size:13px}.vibrato-verdict{margin:0;font-size:13px}.vibrato-plot{margin:8px 0 0}.vibrato-plot svg{display:block;width:100%;height:auto}.vibrato-plot .axis{stroke:var(--line);stroke-width:1}.vibrato-plot .pitch{fill:none;stroke:var(--accent);stroke-width:1.6}.vibrato-plot .sine{fill:none;stroke:var(--warn);stroke-width:1.4;stroke-dasharray:4 3}.vibrato-plot figcaption{margin-top:4px;font-size:11px;color:var(--muted)}.vibrato-plot .pitch-key:before,.vibrato-plot .sine-key:before{content:"";display:inline-block;width:12px;margin-right:4px;vertical-align:middle;border-top:2px solid var(--accent)}.vibrato-plot .sine-key:before{border-top:2px dashed var(--warn)}.auth-page{min-height:100vh;display:grid;place-items:center;padding:32px 16px;background:var(--bg)}.auth-card{width:min(100%,420px);padding:32px 28px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:0 10px 40px #1d1d1f0f}.auth-card h1{font-size:28px;margin:18px 0 8px}.auth-card>p.muted{margin:0 0 20px;font-size:15px}.auth-card form{display:grid;gap:14px}.auth-card label{font-size:14px;font-weight:600}.auth-code{font-size:24px;letter-spacing:.3em;font-variant-numeric:tabular-nums}.auth-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 16px}.auth-legal{margin:22px 0 0;color:var(--muted);font-size:12px}.auth-legal a{color:inherit}.account-menu{padding:0 8px 10px;font-size:12px}.account-menu summary{cursor:pointer;color:var(--rail-ink);font-weight:600;overflow-wrap:anywhere}.account-actions{display:grid;gap:2px;padding-top:4px}.account-actions .text-button{min-height:32px;font-size:13px}.account-delete{display:grid;gap:8px;padding:10px;border:1px solid #e6c4bb;border-radius:8px;background:#fff7f4}.account-delete p{margin:0;color:#853d34}.account-error{color:var(--danger)}.account-guest p{margin:0 0 6px;color:var(--rail-ink)}.account-guest .btn{justify-self:start}.auth-back{margin-top:14px}.add-music{width:min(520px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--text);box-shadow:0 24px 64px #1d1d1f29}.add-music::backdrop{background:#1d1d1f59}.add-music form{display:grid;gap:14px;padding:20px 22px 22px}.add-music-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.add-music-head h2{font-size:22px}.add-music form>p{margin:-6px 0 0}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px;padding:4px;border-radius:8px;background:#f0ede7}.segmented button{min-height:38px;padding:6px 8px;border:0;border-radius:6px;background:transparent;font-size:14px;font-weight:600;color:var(--muted)}.segmented button.is-current{background:var(--paper);color:var(--text);box-shadow:0 1px 3px #1d1d1f1f}.add-music-field{display:grid;gap:6px;font-size:13px;font-weight:600}.add-music-kind{display:grid;gap:8px;margin:0;padding:0;border:0}.add-music-kind legend{margin-bottom:6px;font-size:13px;font-weight:600}.add-music-kind label{display:flex;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;cursor:pointer}.add-music-kind label:has(input:checked){border-color:var(--accent)}.add-music-kind input{margin-top:4px;accent-color:var(--accent)}.add-music-kind span{display:grid;gap:2px}.add-music-actions{display:flex;justify-content:flex-end;gap:8px}.add-music-rights{display:flex;gap:10px;font-size:13px;line-height:1.5}.scan-log{width:min(100%,560px);margin:14px auto 0;text-align:left;font-size:13px}.scan-log summary{cursor:pointer;color:var(--muted);text-align:center}.scan-log pre{max-height:220px;overflow:auto;margin:8px 0 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card, #fffefb);color:var(--text);font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.notation .play-bar{position:absolute;z-index:0;border-radius:6px;background:#f2c14e3d;box-shadow:inset 0 0 0 1.5px #d9a12c;pointer-events:none;transition:left .12s ease-out,top .12s ease-out}.notation .playing-note{opacity:1!important}.notation .note-name{fill:var(--muted);font-family:inherit;font-weight:600;pointer-events:none}.score-head-tools .toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);cursor:pointer}.segmented-compact{padding:2px;gap:2px}.segmented-compact button{min-height:28px;padding:3px 10px;font-size:13px}
