@font-face{font-family:Bravura;src:url(/fonts/Bravura.woff2) format("woff2");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Inter;src:url(/fonts/Inter-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-SemiBold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/IBMPlexSans-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/IBMPlexSans-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/IBMPlexSans-SemiBold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/IBMPlexSans-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-SemiBold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}.music-glyph{font-family:Bravura,serif;font-size:40px;line-height:1}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;overflow-x:hidden}#root{width:100%;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}@keyframes metro-beat-pulse{0%{opacity:1;transform:scale(1.18)}60%{opacity:.7;transform:scale(1)}to{opacity:1;transform:scale(1)}}@keyframes metro-downbeat-pulse{0%{opacity:1;transform:scale(1.3);color:var(--metro-downbeat-color, #f04e2e)}60%{opacity:.8;transform:scale(1);color:inherit}to{opacity:1;transform:scale(1);color:inherit}}.metro-pulse{animation:metro-beat-pulse .18s ease-out forwards}.metro-downbeat{animation:metro-downbeat-pulse .18s ease-out forwards}.note-display{margin-top:10px}.no-notes{padding:20px;text-align:center;color:#999;font-style:italic}.notes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:10px}.note-item{padding:10px;background:#fff;border:1px solid #e0e0e0;border-radius:4px;transition:border-color .2s,box-shadow .2s}.note-item:hover{border-color:#4caf50;box-shadow:0 2px 4px #4caf5033}.note-pitch{display:flex;align-items:baseline;gap:5px;margin-bottom:5px}.note-pitch strong{font-size:1.1em;color:#333}.midi-number{font-size:.75em;color:#999}.note-timing{display:flex;flex-direction:column;gap:3px;font-size:.8em;color:#666}.add-note-btn{width:100%;padding:8px;background:#f0f0f0;color:#666;border:2px dashed #ccc;border-radius:4px;cursor:pointer;font-size:.85em;transition:all .2s}.add-note-btn:hover{background:#e8f5e9;border-color:#4caf50;color:#4caf50}.add-note-form{padding:15px;background:#fff;border:2px solid #4CAF50;border-radius:4px}.add-note-form h6{margin:0 0 10px;font-size:.9em;color:#4caf50;text-transform:uppercase;font-weight:600}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:10px}.form-row label{display:flex;flex-direction:column;gap:5px;font-size:.85em;color:#666}.form-row input{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:.95em;transition:border-color .2s}.form-row input:focus{outline:none;border-color:#4caf50}.form-row input:disabled{background:#f5f5f5;cursor:not-allowed}.form-row small{font-size:.85em;color:#999}.form-actions{display:flex;gap:10px}.form-actions button{flex:1;padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:.9em;transition:background .2s}.form-actions button:first-child{background:#4caf50;color:#fff}.form-actions button:first-child:hover:not(:disabled){background:#45a049}.form-actions button:last-child{background:#f0f0f0;color:#666}.form-actions button:last-child:hover:not(:disabled){background:#e0e0e0}.form-actions button:disabled{opacity:.5;cursor:not-allowed}.error{padding:10px;margin-bottom:10px;background:#ffebee;color:#c62828;border-left:3px solid #c62828;border-radius:4px;font-size:.85em}.staff-notation-container{margin:15px 0;padding:10px;background:#fff;border:1px solid #e0e0e0;border-radius:4px;overflow-x:auto}.toggle-details-btn{width:100%;padding:8px;margin-bottom:10px;background:#f0f0f0;color:#666;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.85em;transition:all .2s}.toggle-details-btn:hover{background:#e8f5e9;border-color:#4caf50;color:#4caf50}.instrument-list{display:flex;flex-direction:column;gap:20px}.instrument-card{background:#fff;border:1px solid #ddd;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s}.instrument-card:hover{box-shadow:0 4px 8px #00000026}.instrument-header{display:flex;align-items:center;gap:10px;padding:15px 20px;background:#f8f9fa;cursor:pointer;user-select:none;transition:background .2s}.instrument-header:hover{background:#e9ecef}.expand-icon{color:#666;font-size:.9em}.instrument-header h3{flex:1;margin:0;font-size:1.3em;color:#333}.badge{padding:4px 12px;background:#e3f2fd;color:#1976d2;border-radius:12px;font-size:.85em;font-weight:600}.instrument-body{padding:20px;background:#fafafa}.staff-section{margin-bottom:20px;padding:15px;background:#fff;border-radius:6px;border:1px solid #e0e0e0}.staff-header{display:flex;align-items:center;gap:15px;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #e0e0e0}.staff-header h4{margin:0;font-size:1.1em;color:#555}.staff-info{display:flex;gap:10px;font-size:.85em;margin-left:auto}.staff-info span{padding:4px 8px;background:#f5f5f5;border-radius:4px;color:#666}.voice-section{margin-bottom:15px;padding:12px;background:#f9f9f9;border-radius:4px;border-left:3px solid #4CAF50}.voice-header{display:flex;align-items:center;gap:10px;margin-bottom:10px}.voice-header h5{margin:0;font-size:.95em;color:#666}.add-voice-btn,.add-staff-btn{width:100%;padding:10px;margin-top:10px;background:#f0f0f0;color:#666;border:2px dashed #ccc;border-radius:4px;cursor:pointer;font-size:.9em;transition:all .2s}.add-voice-btn:hover:not(:disabled),.add-staff-btn:hover:not(:disabled){background:#e3f2fd;border-color:#1976d2;color:#1976d2}.add-voice-btn:disabled,.add-staff-btn:disabled{opacity:.5;cursor:not-allowed}.error{padding:12px;margin-bottom:15px;background:#ffebee;color:#c62828;border-left:4px solid #c62828;border-radius:4px;font-size:.9em}.score-group{margin-top:.5rem}.score-group__summary{list-style:none;display:flex;align-items:center;gap:.4rem;padding:.4rem .25rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--dialog-subtext);cursor:pointer;user-select:none;border-radius:4px;transition:background .12s}.score-group__summary::-webkit-details-marker{display:none}.score-group__summary:before{content:"▶";font-size:.55rem;transition:transform .15s;display:inline-block}details[open] .score-group__summary:before{transform:rotate(90deg)}.score-group__summary:hover{background:var(--dialog-surface);color:var(--dialog-text)}.score-group__list{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}.user-score-list{border-top:1px solid var(--dialog-border);padding-top:.5rem;flex-shrink:0}.user-score-list__heading{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dialog-subtext);margin:0 0 .25rem;padding:0 1rem}.user-score-list__items{list-style:none;margin:0;padding:0}.user-score-item{display:flex;align-items:stretch;padding:.125rem 1rem;gap:.25rem}.user-score-item__btn{flex:1;display:flex;flex-direction:row;align-items:center;gap:.5rem;min-height:44px;padding:.5rem .75rem;background:none;border:none;border-radius:6px;font-family:inherit;color:var(--dialog-text);cursor:pointer;text-align:left;transition:background .12s}.user-score-item__btn:hover:not(:disabled){background:var(--dialog-surface)}.user-score-item__btn:active:not(:disabled){background:var(--dialog-surface-hover)}.user-score-item__btn:disabled{opacity:.4;cursor:not-allowed}.user-score-item__btn.user-score-item--selected{background:var(--dialog-selected-bg);color:var(--dialog-selected-text)}.user-score-item__name{font-size:.875rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:inherit}.user-score-item__date{font-size:.7rem;color:var(--dialog-subtext)}.user-score-item__delete-btn{flex-shrink:0;align-self:center;min-width:32px;min-height:32px;padding:0;background:none;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;line-height:1;color:var(--dialog-surface-active);transition:color .15s,background .15s;display:flex;align-items:center;justify-content:center}.user-score-item__delete-btn:hover:not(:disabled){color:var(--dialog-danger-text);background:var(--dialog-danger-bg)}.user-score-item__delete-btn:disabled{opacity:.3;cursor:not-allowed}.saved-practice-list{border-top:1px solid var(--dialog-border);padding-top:.5rem;flex-shrink:0}.saved-practice-list__summary{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dialog-subtext);margin:0;padding:0 1rem .25rem;cursor:pointer;user-select:none;list-style:none}.saved-practice-list__summary::-webkit-details-marker{display:none}.saved-practice-list__summary:before{content:"▸ ";display:inline-block;transition:transform .15s}.saved-practice-list[open]>.saved-practice-list__summary:before{transform:rotate(90deg)}.saved-practice-list__items{list-style:none;margin:0;padding:0}.saved-practice-item{display:flex;align-items:stretch;padding:.125rem 1rem;gap:.25rem}.saved-practice-item__btn{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;min-height:44px;padding:.5rem .75rem;background:none;border:none;border-radius:6px;font-family:inherit;color:var(--dialog-text);cursor:pointer;text-align:left;transition:background .12s}.saved-practice-item__btn:hover:not(:disabled){background:var(--dialog-surface)}.saved-practice-item__btn:active:not(:disabled){background:var(--dialog-surface-hover)}.saved-practice-item__btn:disabled{opacity:.4;cursor:not-allowed}.saved-practice-item__name{font-size:.85rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;color:inherit}.saved-practice-item__meta{display:flex;align-items:center;gap:.5rem}.saved-practice-item__date{font-size:.7rem;color:var(--dialog-subtext)}.saved-practice-item__badge--partial{font-size:.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.1rem .4rem;border-radius:3px;background:#ffa72633;color:#f57c00}.saved-practice-item__delete-btn,.saved-practice-item__session-link{flex-shrink:0;align-self:center;min-width:32px;min-height:32px;padding:0;background:none;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;line-height:1;color:var(--dialog-surface-active);transition:color .15s,background .15s;display:flex;align-items:center;justify-content:center}.saved-practice-item__session-link:hover:not(:disabled){color:var(--ls-cta-bg, #4caf50);background:#4caf501a}} .saved-practice-item__delete-btn:hover:not(:disabled){color:var(--dialog-danger-text);background:var(--dialog-danger-bg)}.saved-practice-item__delete-btn:disabled{opacity:.3;cursor:not-allowed}.load-score-dialog{border:none;border-radius:12px;padding:0;width:min(640px,95vw);max-height:80vh;overflow:hidden;background:var(--dialog-bg);color:var(--dialog-text);box-shadow:0 8px 32px #00000080}.load-score-dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}.load-score-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--dialog-border)}.load-score-dialog__title{margin:0;font-size:1.125rem;font-weight:700;color:var(--dialog-text)}.load-score-dialog__close-btn{background:none;border:none;color:var(--dialog-subtext);cursor:pointer;font-size:1rem;padding:.25rem .5rem;border-radius:4px;transition:color .15s,background .15s}.load-score-dialog__close-btn:hover:not(:disabled){color:var(--dialog-text);background:var(--dialog-surface)}.load-score-dialog__body{display:flex;gap:0;overflow:hidden}.load-score-dialog__panel{padding:1rem 1.25rem;overflow-y:auto}.load-score-dialog__panel--left{flex:1 1 60%;border-right:1px solid var(--dialog-border);min-width:200px}.load-score-dialog__panel--right{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:2.5rem;gap:.75rem;min-width:160px}@media(max-width:480px){.load-score-dialog__body{flex-direction:column}.load-score-dialog__panel--left{border-right:none;border-bottom:1px solid var(--dialog-border)}.load-score-dialog__panel--right{padding-top:1rem;align-items:flex-start;justify-content:flex-start}}.load-score-dialog__panel-heading{margin:0 0 .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--dialog-subtext)}.preloaded-score-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.preloaded-score-item{width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:.6rem .75rem;font-size:.875rem;color:var(--dialog-text);cursor:pointer;transition:background .12s}.preloaded-score-item:hover:not(:disabled){background:var(--dialog-surface)}.preloaded-score-item:disabled{opacity:.4;cursor:not-allowed}.preloaded-score-item--selected,.preloaded-score-item[data-selected=true]{background:var(--dialog-selected-bg);color:var(--dialog-selected-text);font-weight:600}.load-new-score-button{background:var(--dialog-surface);color:var(--dialog-text);border:1px dashed var(--dialog-surface-hover);border-radius:8px;padding:.75rem 1rem;font-size:.875rem;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.load-new-score-button:hover:not(:disabled){background:var(--dialog-surface-hover);border-color:var(--dialog-subtext)}.load-new-score-button:disabled{opacity:.4;cursor:not-allowed}.load-score-dialog__status{padding:.5rem 1.25rem;font-size:.875rem;color:var(--dialog-success-text);border-top:1px solid var(--dialog-border)}.load-score-dialog__error{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;border-top:1px solid var(--dialog-error-text);background:var(--dialog-error-bg);font-size:.875rem;color:var(--dialog-error-text)}.load-score-dialog__retry-btn{background:none;border:1px solid var(--dialog-error-text);border-radius:4px;color:var(--dialog-error-text);cursor:pointer;font-size:.8rem;padding:.25rem .6rem;white-space:nowrap;transition:background .15s}.load-score-dialog__retry-btn:hover{background:var(--dialog-danger-bg)}.load-score-dialog__footer{display:flex;justify-content:flex-end;padding:.75rem 1.25rem;border-top:1px solid var(--dialog-border)}.load-score-dialog__cancel-btn{background:var(--dialog-surface);color:var(--dialog-text);border:none;border-radius:6px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:background .15s}.load-score-dialog__cancel-btn:hover:not(:disabled){background:var(--dialog-surface-hover)}.load-score-dialog__cancel-btn:disabled{opacity:.4;cursor:not-allowed}body[data-landing-theme=ember]{--ls-bg: #FFF3E0;--ls-heading: #BF360C;--ls-body: #3E2723;--ls-cta-bg: #E64A19;--ls-cta-text: #FFFFFF;--ls-accent: #FF7043;--ls-navbar-bg: #FFE0B2;--ls-navbar-active: #E64A19;--ls-note-1: #E64A19;--ls-note-2: #FF8A65;--ls-note-3: #BF360C;--ls-font-heading: "Space Grotesk", system-ui, sans-serif;--ls-font-body: "Inter", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #4caf50}body[data-landing-theme=saffron]{--ls-bg: #FFFDE7;--ls-heading: #E65100;--ls-body: #212121;--ls-cta-bg: #F57F17;--ls-cta-text: #1A1A1A;--ls-accent: #FFB300;--ls-navbar-bg: #FFF9C4;--ls-navbar-active: #F57F17;--ls-note-1: #F57F17;--ls-note-2: #FFB300;--ls-note-3: #E65100;--ls-font-heading: "IBM Plex Sans", system-ui, sans-serif;--ls-font-body: "IBM Plex Sans", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #388E3C}body[data-landing-theme=sienna]{--ls-bg: #FBE9E7;--ls-heading: #6D4C41;--ls-body: #3E2723;--ls-cta-bg: #8D6E63;--ls-cta-text: #FFFFFF;--ls-accent: #A1887F;--ls-navbar-bg: #EFEBE9;--ls-navbar-active: #8D6E63;--ls-note-1: #8D6E63;--ls-note-2: #A1887F;--ls-note-3: #6D4C41;--ls-font-heading: "Inter", system-ui, sans-serif;--ls-font-body: "Inter", system-ui, sans-serif;--ls-heading-weight: 600;--ls-body-weight: 400;--ls-success: #558B2F}body[data-landing-theme=terracotta]{--ls-bg: #EFEBE9;--ls-heading: #4E342E;--ls-body: #3E2723;--ls-cta-bg: #D84315;--ls-cta-text: #FFFFFF;--ls-accent: #BF360C;--ls-navbar-bg: #D7CCC8;--ls-navbar-active: #D84315;--ls-note-1: #D84315;--ls-note-2: #FF7043;--ls-note-3: #BF360C;--ls-font-heading: "Space Grotesk", system-ui, sans-serif;--ls-font-body: "Space Grotesk", system-ui, sans-serif;--ls-heading-weight: 600;--ls-body-weight: 400;--ls-success: #2E7D32}body[data-landing-theme=paprika]{--ls-bg: #FCE4EC;--ls-heading: #880E4F;--ls-body: #1A1A1A;--ls-cta-bg: #C62828;--ls-cta-text: #FFFFFF;--ls-accent: #E91E63;--ls-navbar-bg: #F8BBD9;--ls-navbar-active: #C62828;--ls-note-1: #C62828;--ls-note-2: #E91E63;--ls-note-3: #880E4F;--ls-font-heading: "IBM Plex Sans", system-ui, sans-serif;--ls-font-body: "Inter", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #2E7D32}body[data-landing-theme=honey]{--ls-bg: #FFF8E1;--ls-heading: #E65100;--ls-body: #212121;--ls-cta-bg: #FF8F00;--ls-cta-text: #1A1A1A;--ls-accent: #FFB300;--ls-navbar-bg: #FFECB3;--ls-navbar-active: #FF8F00;--ls-note-1: #FF8F00;--ls-note-2: #FFB300;--ls-note-3: #E65100;--ls-font-heading: "Inter", system-ui, sans-serif;--ls-font-body: "Inter", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #388E3C}body[data-landing-theme=coral]{--ls-bg: #FFF0EC;--ls-heading: #BF360C;--ls-body: #3E2723;--ls-cta-bg: #FF5722;--ls-cta-text: #FFFFFF;--ls-accent: #FF7043;--ls-navbar-bg: #FFCCBC;--ls-navbar-active: #FF5722;--ls-note-1: #FF5722;--ls-note-2: #FF7043;--ls-note-3: #BF360C;--ls-font-heading: "Space Grotesk", system-ui, sans-serif;--ls-font-body: "IBM Plex Sans", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #4caf50}body[data-landing-theme=marigold]{--ls-bg: #FFFDE7;--ls-heading: #F57F17;--ls-body: #212121;--ls-cta-bg: #E65100;--ls-cta-text: #FFFFFF;--ls-accent: #FFB300;--ls-navbar-bg: #FFF9C4;--ls-navbar-active: #E65100;--ls-note-1: #E65100;--ls-note-2: #FF8F00;--ls-note-3: #F57F17;--ls-font-heading: "IBM Plex Sans", system-ui, sans-serif;--ls-font-body: "IBM Plex Sans", system-ui, sans-serif;--ls-heading-weight: 600;--ls-body-weight: 400;--ls-success: #388E3C}body[data-landing-theme=blush]{--ls-bg: #FFF9FB;--ls-heading: #880E4F;--ls-body: #212121;--ls-cta-bg: #AD1457;--ls-cta-text: #FFFFFF;--ls-accent: #E91E63;--ls-navbar-bg: #FCE4EC;--ls-navbar-active: #AD1457;--ls-note-1: #AD1457;--ls-note-2: #E91E63;--ls-note-3: #880E4F;--ls-font-heading: "Inter", system-ui, sans-serif;--ls-font-body: "Space Grotesk", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #388E3C}body[data-landing-theme=rust]{--ls-bg: #FBE9E7;--ls-heading: #4E342E;--ls-body: #3E2723;--ls-cta-bg: #BF360C;--ls-cta-text: #FFFFFF;--ls-accent: #8D6E63;--ls-navbar-bg: #EFEBE9;--ls-navbar-active: #BF360C;--ls-note-1: #BF360C;--ls-note-2: #FF7043;--ls-note-3: #8D6E63;--ls-font-heading: "Space Grotesk", system-ui, sans-serif;--ls-font-body: "Space Grotesk", system-ui, sans-serif;--ls-heading-weight: 700;--ls-body-weight: 400;--ls-success: #2E7D32}.landing-screen{position:fixed;inset:0;width:100%;height:100%;overflow:hidden;z-index:0;background:var(--ls-bg, #f5f5f5);cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none;user-select:none}.landing-note{position:absolute;font-size:4rem;cursor:pointer;user-select:none;touch-action:manipulation;transition:color .7s ease;transform:translate(-50%,-50%)}.landing-note:hover{transform:translate(-50%,-50%) scale(1.15)}.landing-screen--paused .landing-note{opacity:.45}.landing-actions{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;display:flex;flex-direction:row;align-items:center;gap:1.25rem}.landing-actions .load-score-button{border-radius:12px!important;padding:1.25rem 3rem!important;font-size:1.5rem!important;font-weight:700!important;box-shadow:0 4px 16px #4caf5073!important;letter-spacing:.03em!important;min-width:unset!important}.landing-screen .landing-headline{font-family:var(--ls-font-heading, system-ui, sans-serif);font-weight:var(--ls-heading-weight, 700);color:var(--ls-heading, inherit);letter-spacing:-.01em;line-height:1.2}.landing-screen .landing-body{font-family:var(--ls-font-body, system-ui, sans-serif);font-weight:var(--ls-body-weight, 400);color:var(--ls-body, inherit);font-size:1rem;line-height:1.5}@media(prefers-reduced-motion:reduce){.landing-note{transition:none}}.landing-plugin-btn{border-radius:12px;padding:1.25rem 2.5rem;font-size:1.5rem;font-weight:var(--ls-heading-weight, 700);letter-spacing:.03em;background:var(--ls-cta-bg, #5AC481);color:var(--ls-cta-text, #fff);border:none;cursor:pointer;box-shadow:0 4px 16px #5ac48173;min-width:unset;font-family:var(--ls-font-body, inherit)}.landing-plugin-btn:hover{background:var(--ls-accent, #3ea864)}.landing-instruments-btn{border-radius:12px;padding:1.25rem 2.5rem;font-size:1.5rem;font-weight:700;letter-spacing:.03em;background:#ff9800;color:#fff;border:none;cursor:pointer;box-shadow:0 4px 16px #ff980073;min-width:unset}.landing-instruments-btn:hover{background:#f57c00}.landing-content{max-width:1440px;margin:0 auto}@media(max-width:520px){.landing-actions{flex-direction:column;gap:.75rem}.landing-plugin-btn,.landing-instruments-btn,.landing-actions .load-score-button{padding:1rem 2rem!important;font-size:1.2rem!important}}.design-navbar{position:sticky;top:0;z-index:10;width:100%;background:var(--ls-navbar-bg, #f0f0f0);border-bottom:1px solid rgba(0,0,0,.08);box-shadow:0 1px 4px #0000000f}.design-navbar__strip{display:flex;flex-direction:row;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;padding:0 .25rem;gap:0}.design-navbar__strip::-webkit-scrollbar{display:none}.design-navbar__tab{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:.625rem 1rem;background:transparent;border:none;border-bottom:3px solid transparent;border-radius:0;font-size:.875rem;font-weight:500;font-family:var(--ls-font-body, system-ui, sans-serif);color:var(--ls-body, #555);cursor:pointer;white-space:nowrap;transition:border-color .2s ease,font-weight .15s ease,color .2s ease;outline:none;line-height:1.4}.design-navbar__swatch{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 1px #0000001f}.design-navbar__tab:hover{border-bottom-color:var(--ls-accent, #FF7043);opacity:.85}.design-navbar__tab.active{font-weight:700;border-bottom-color:var(--ls-navbar-active, #E64A19);color:var(--ls-navbar-active, #E64A19)}.design-navbar__tab:focus-visible{outline:3px solid var(--ls-accent, #FF7043);outline-offset:2px;border-radius:4px}@media(max-width:600px){.design-navbar__tab{padding:.5rem .75rem;font-size:.8125rem}}.volume-slider{position:relative;display:inline-flex;align-items:center;margin-left:8px}.volume-slider__icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;font-size:1.25rem;user-select:none;flex-shrink:0;cursor:pointer;background:none;border:none;padding:0}.volume-slider__popup{position:absolute;top:100%;left:50%;transform:translate(-50%);background:var(--toolbar-bg, #2a2a2a);border:1px solid var(--toolbar-border, #444);border-radius:8px;padding:12px 8px;box-shadow:0 2px 8px #0000004d;z-index:100}.volume-slider__range{writing-mode:vertical-lr;direction:rtl;width:4px;height:100px;cursor:pointer;accent-color:#4caf50}.score-viewer{max-width:1200px;margin:0 auto;padding:20px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.score-header{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.score-title-bar{padding:8px 12px;background-color:#f8f9fa;border-bottom:1px solid #e0e0e0;text-align:center}.score-title-text{font-size:1.1em;font-weight:600;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%}.score-header h1{margin:0 0 10px;font-size:2em;color:#333}.score-info{display:flex;gap:20px;font-size:.9em;color:#666}.score-info span{padding:5px 10px;background:#f5f5f5;border-radius:4px}.score-id{font-family:monospace;font-size:.85em}.add-instrument{display:flex;gap:10px;margin-bottom:30px}.add-instrument input{flex:1;padding:10px 15px;font-size:1em;border:1px solid #e0e0e0;border-radius:4px;background-color:#f5f5f5;color:#555;transition:all .2s}.add-instrument input:focus{outline:none;border-color:#4caf50;background-color:#fff}.add-instrument button{padding:10px 20px;font-size:1em;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.add-instrument button:hover:not(:disabled){background:#45a049}.add-instrument button:disabled{background:#ccc;cursor:not-allowed}.no-score,.no-instruments{text-align:center;padding:60px 20px;color:#666}.no-score h2{margin-bottom:20px;color:#333}.no-score button{padding:12px 24px;font-size:1.1em;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.no-score button:hover:not(:disabled){background:#45a049}.no-score button:disabled{background:#ccc;cursor:not-allowed}.initial-actions{display:flex;gap:20px;justify-content:center;align-items:center}.loading{text-align:center;padding:40px;font-size:1.2em;color:#666}.loading-overlay{position:fixed;inset:0;background:#fffc;display:flex;align-items:center;justify-content:center;font-size:1.5em;color:#333;z-index:1000}.error{padding:15px;margin:20px 0;background:#ffebee;color:#c62828;border-left:4px solid #c62828;border-radius:4px}.success{padding:15px;margin:20px 0;background:#e8f5e9;color:#2e7d32;border-left:4px solid #4CAF50;border-radius:4px}.score-viewer__back-btn{padding:8px 16px;font-size:.9em;font-weight:600;background:none;color:#555;border:1px solid #ccc;border-radius:6px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.score-viewer__back-btn:hover{background:#f0f0f0;border-color:#aaa}.score-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:15px 0;border-bottom:1px solid #e0e0e0}.toolbar-left{display:flex;align-items:center}.toolbar-right{display:flex;align-items:center;gap:8px}.record-view-debug-btn{padding:8px 16px;font-size:.9em;font-weight:600;background:#7c3aed;color:#fff;border:none;border-radius:6px;cursor:pointer;letter-spacing:.02em;transition:background .15s}.record-view-debug-btn:hover{background:#6d28d9}.record-view-debug-btn:active{background:#5b21b6}.score-actions{display:flex;gap:10px;align-items:center;margin-top:15px}.score-actions button,.score-actions .import-button{padding:10px 20px;font-size:1em;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.score-actions button:hover:not(:disabled),.score-actions .import-button:hover:not(:disabled){background:#45a049}.score-actions button:disabled,.score-actions .import-button:disabled{background:#ccc;cursor:not-allowed}.filename-input{padding:10px 15px;font-size:1em;border:1px solid #e0e0e0;border-radius:4px;background-color:#f5f5f5;color:#555;width:180px;margin-right:5px;transition:all .2s}.filename-input:focus{outline:none;border-color:#4caf50;background-color:#fff}.filename-input::placeholder{color:#999}.return-to-start-container{display:flex;justify-content:center;padding:24px 0 48px}.return-to-start-end-button{padding:14px 32px;font-size:16px;font-weight:600;border:none;border-radius:8px;cursor:pointer;background-color:#607d8b;color:#fff;box-shadow:0 2px 8px #0003;transition:all .2s ease}.return-to-start-end-button:hover{background-color:#546e7a;transform:translateY(-2px);box-shadow:0 4px 12px #00000040}.return-to-start-end-button:active{transform:translateY(0);box-shadow:0 2px 4px #00000026}.score-playback-bar{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.playback-btn{padding:6px 14px;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s}.playback-btn:disabled{opacity:.4;cursor:default}.playback-btn--play{background:#4caf50;color:#fff}.playback-btn--play:hover:not(:disabled){background:#43a047}.playback-btn--pause{background:#ff9800;color:#fff}.playback-btn--pause:hover{background:#fb8c00}.playback-btn--stop{background:#f44336;color:#fff}.playback-btn--stop:hover:not(:disabled){background:#e53935}.playback-tempo{margin-left:8px;font-size:.85rem;color:#555}.playback-error{margin-left:8px;font-size:.8rem;color:#f44336}.score-viewer__load-btn{padding:5px 12px;font-size:.85rem;border:1px solid #bbb;border-radius:6px;background:#fff;cursor:pointer;transition:background .15s}.score-viewer__load-btn:hover{background:#f0f0f0}.input-source-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.25rem .65rem;border-radius:999px;font-size:.78rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;flex-shrink:0}.input-source-badge--microphone{background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7}.input-source-badge--midi{background:#ede7f6;color:#5e35b1;border:1px solid #b39ddb}.recording-view{display:flex;flex-direction:column;min-height:100dvh;background:var(--color-surface, #1a1a1a);color:var(--color-text, #f0f0f0);font-family:var(--ls-font-body, "Segoe UI", system-ui, sans-serif)}.recording-view__header{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--color-surface-alt, #111);border-bottom:1px solid var(--color-border, #333);flex-shrink:0}.recording-view__back-btn{background:transparent;border:1px solid var(--color-border, #555);color:var(--color-text-secondary, #ccc);padding:.4rem .9rem;border-radius:6px;cursor:pointer;font-size:.875rem;white-space:nowrap;transition:border-color .15s,color .15s}.recording-view__back-btn:hover{border-color:var(--color-text-secondary, #aaa);color:var(--color-text, #fff)}.recording-view__title{font-size:1.1rem;font-weight:600;margin:0;flex:1;color:var(--color-text, #f0f0f0);font-family:var(--ls-font-heading, system-ui, sans-serif)}.recording-view__debug-badge{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:#ff6b00;color:#fff;padding:.2rem .5rem;border-radius:4px}.recording-view__body{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 1rem;flex:1}.recording-view__top-row{display:flex;align-items:center;gap:1rem}.recording-view__top-row .oscilloscope-canvas{flex:1;width:100%;border-radius:6px;border:1px solid var(--color-border, #333);background:color-mix(in srgb,var(--color-surface, #111) 85%,#000);display:block}.recording-view__controls{display:flex;align-items:center;gap:.75rem}.recording-view__toggle-btn{padding:.5rem 1.2rem;font-size:.9rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;transition:background .15s;background:var(--color-success, #2e7d32);color:#fff}.recording-view__toggle-btn:hover{background:color-mix(in srgb,var(--color-success, #2e7d32) 80%,#fff)}.recording-view__toggle-btn--stop{background:var(--color-danger, #b71c1c);color:#fff}.recording-view__toggle-btn--stop:hover{background:color-mix(in srgb,var(--color-danger, #b71c1c) 80%,#fff)}.recording-view__status{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--color-text-muted, #aaa)}.recording-view__status--active{color:var(--color-danger, #ef5350)}.recording-view__status-dot{width:10px;height:10px;border-radius:50%;background:var(--color-danger, #ef5350);animation:recording-pulse 1.2s ease-in-out infinite;flex-shrink:0}@keyframes recording-pulse{0%,to{opacity:1}50%{opacity:.3}}.recording-view__error{padding:.75rem 1rem;background:var(--color-danger-bg, rgba(183, 28, 28, .2));border:1px solid var(--color-danger, #b71c1c);border-radius:6px;color:color-mix(in srgb,var(--color-danger, #ef5350) 75%,#fff);font-size:.875rem}.recording-view__pitch-display{font-size:2rem;font-weight:700;line-height:1;color:var(--color-text, #f0f0f0);min-width:3.5rem;letter-spacing:.02em;font-family:var(--ls-font-heading, system-ui, sans-serif)}.recording-view__history-section{display:flex;flex-direction:column;gap:.5rem;flex:1;min-height:0}.recording-view__history-header{display:flex;align-items:center;justify-content:space-between}.recording-view__history-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted, #777)}.note-history-list__list{list-style:none;padding:0;margin:0;height:240px;overflow-x:auto;overflow-y:hidden;columns:120px;column-gap:0;column-fill:auto;border:1px solid var(--color-border, #2a2a2a);border-radius:4px}.note-history-list__entry{display:flex;align-items:center;gap:.3rem;padding:.08rem .25rem;font-size:.72rem;line-height:1.3;border-bottom:1px solid var(--color-border, #1c1c1c);border-right:1px solid var(--color-border, #1c1c1c);flex-wrap:nowrap;white-space:nowrap;overflow:hidden;background:var(--color-surface, #1a1a1a);break-inside:avoid}.note-history-list__entry-label{font-weight:600;color:var(--color-text, #e0e0e0);min-width:2.5ch}.note-history-list__entry-time{color:var(--color-text-muted, #555);font-variant-numeric:tabular-nums;min-width:3ch}.note-history-list__expand-btn{background:none;border:none;color:var(--color-text-muted, #555);padding:0;cursor:pointer;font-size:.6rem;line-height:1}.note-history-list__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.note-history-list__title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted, #777)}.note-history-list__clear-btn{background:transparent;border:1px solid var(--color-border, #444);color:var(--color-text-muted, #888);padding:.15rem .45rem;border-radius:4px;cursor:pointer;font-size:.7rem;line-height:1.4;transition:border-color .15s,color .15s}.note-history-list__clear-btn:hover{border-color:var(--color-text-secondary, #888);color:var(--color-text, #ddd)}.recording-view__clear-btn{background:transparent;border:1px solid var(--color-border, #444);color:var(--color-text-secondary, #aaa);padding:.25rem .6rem;border-radius:4px;cursor:pointer;font-size:.75rem;transition:border-color .15s,color .15s}.recording-view__clear-btn:hover{border-color:var(--color-text-secondary, #888);color:var(--color-text, #ddd)}.recording-staff{display:flex;flex-direction:column;gap:.5rem;padding:.75rem 0;border-top:1px solid var(--color-border, #2a2a2a);border-bottom:1px solid var(--color-border, #2a2a2a)}.recording-staff__header{display:flex;align-items:center;justify-content:space-between;padding:0 .25rem}.recording-staff__actions{display:flex;align-items:center;gap:.4rem}.recording-staff__label{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted, #777)}.recording-staff__clear-btn{background:transparent;border:1px solid var(--color-border, #444);color:var(--color-text-secondary, #aaa);padding:.25rem .6rem;border-radius:4px;cursor:pointer;font-size:.75rem;transition:border-color .15s,color .15s}.recording-staff__clear-btn:hover{border-color:var(--color-text-secondary, #888);color:var(--color-text, #ddd)}.recording-staff__play-btn{border:none;padding:.25rem .65rem;border-radius:4px;cursor:pointer;font-size:.75rem;font-weight:600;transition:opacity .15s,transform .1s}.recording-staff__play-btn:active{transform:scale(.96)}.recording-staff__play-btn--notes{background:var(--color-accent, #1565c0);color:var(--ls-cta-text, #fff)}.recording-staff__play-btn--notes:hover{opacity:.85}.recording-staff__play-btn--audio{background:var(--color-success, #2e7d32);color:#fff}.recording-staff__play-btn--audio:hover{opacity:.85}.recording-staff__play-btn--stop{background:var(--color-danger, #b71c1c);color:#fff}.recording-staff__play-btn--stop:hover{opacity:.85}.recording-staff__renderer{width:100%;overflow-x:auto;border-radius:6px;min-height:80px}.recording-staff__renderer svg{display:block}.recording-staff__status{font-size:.8rem;color:var(--color-text-muted, #aaa);padding:0 .25rem;min-height:1.2em}.recording-staff__status strong{color:var(--color-accent, #d4a0ff);font-weight:600}.recording-staff__status--muted{color:var(--color-text-muted, #555);font-style:italic}.note-history-list__entry-velocity{font-variant-numeric:tabular-nums;min-width:2.5ch;text-align:right;font-size:.7rem;color:var(--color-text-secondary, #aaa)}.note-history-list__velocity-bar-wrap{width:40px;height:4px;background:color-mix(in srgb,var(--color-border, #2a2a2a) 80%,#000);border-radius:2px;flex-shrink:0;overflow:hidden}.note-history-list__velocity-bar{height:100%;background-color:var(--color-success, #4caf50);border-radius:2px}.note-history-list__entry-channel{font-family:monospace;font-size:.65rem;color:var(--color-text-muted, #666)}.note-history-list__raw-bytes{font-family:monospace;font-size:.7rem;color:var(--color-text-muted, #aaa);display:block;overflow-wrap:break-word}.note-history-list__cc-log{max-height:150px;overflow-y:auto;list-style:none;padding:0;margin:0}.note-history-list__cc-entry{font-family:monospace;font-size:.7rem;color:var(--color-text-muted, #888);padding:2px 0}.offline-banner{position:fixed;top:0;left:0;right:0;z-index:9999;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:.75rem 1rem;box-shadow:0 2px 8px #00000026;animation:slideDown .3s ease-out}.offline-banner-content{display:flex;align-items:center;justify-content:center;gap:.75rem;max-width:1200px;margin:0 auto}.offline-icon{width:24px;height:24px;flex-shrink:0;animation:pulse 2s infinite}.offline-message{font-size:.95rem;font-weight:500;letter-spacing:.01em}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@media(max-width:640px){.offline-banner{padding:.5rem .75rem}.offline-message{font-size:.875rem}.offline-icon{width:20px;height:20px}}body:has(.offline-banner) .playback-controls.compact{padding-top:48px}@media(max-width:640px){body:has(.offline-banner) .playback-controls.compact{padding-top:40px}}.ios-install-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:1rem}.ios-install-modal__backdrop{position:absolute;inset:0;background:#000000b3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.ios-install-modal__content{position:relative;background:#fff;border-radius:16px;padding:2rem;max-width:480px;width:100%;box-shadow:0 20px 60px #0000004d;animation:modal-slide-up .3s ease-out}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.ios-install-modal__title{margin:0 0 1rem;font-size:1.5rem;font-weight:600;color:#1a1a1a;text-align:center}.ios-install-modal__description{margin:0 0 1.5rem;font-size:1rem;color:#4a4a4a;text-align:center;line-height:1.5}.ios-install-modal__steps{margin:0 0 2rem;padding-left:1.5rem;font-size:1rem;color:#1a1a1a;line-height:1.8}.ios-install-modal__steps li{margin-bottom:.5rem}.ios-install-modal__icon{display:inline-block;font-size:1.25rem;vertical-align:middle;margin:0 .25rem;font-weight:700}.ios-install-modal__button{display:block;width:100%;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;color:#fff;background:#6366f1;border:none;border-radius:8px;cursor:pointer;transition:background .2s ease;-webkit-tap-highlight-color:transparent}.ios-install-modal__button:hover{background:#4f46e5}.ios-install-modal__button:active{background:#4338ca;transform:scale(.98)}.ios-install-modal__button:focus{outline:2px solid #6366f1;outline-offset:2px}@media(min-width:768px){.ios-install-modal__content{max-width:560px;padding:2.5rem}.ios-install-modal__title{font-size:1.75rem}.ios-install-modal__description,.ios-install-modal__steps{font-size:1.125rem}}@media(min-width:1024px){.ios-install-modal__content{max-width:640px;padding:3rem}}@media(prefers-color-scheme:dark){.ios-install-modal__content{background:#2a2a2a}.ios-install-modal__title{color:#fff}.ios-install-modal__description{color:#ccc}.ios-install-modal__steps{color:#e0e0e0}}.android-install-banner{position:fixed;bottom:0;left:0;right:0;z-index:9998;display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#1e1e2e;border-top:1px solid rgba(99,102,241,.4);box-shadow:0 -4px 16px #0006;animation:banner-slide-up .25s ease-out}@keyframes banner-slide-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.android-install-banner__icon{font-size:1.5rem;flex-shrink:0}.android-install-banner__text{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.android-install-banner__title{font-size:.875rem;font-weight:600;color:#e8e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.android-install-banner__subtitle{font-size:.75rem;color:#9090a8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.android-install-banner__cta{flex-shrink:0;display:inline-flex;align-items:center;padding:.5rem 1rem;background:#6366f1;color:#fff;font-size:.8125rem;font-weight:600;text-decoration:none;border-radius:6px;transition:background .15s ease;white-space:nowrap}.android-install-banner__cta:hover,.android-install-banner__cta:focus{background:#4f52d9;outline:2px solid #6366f1;outline-offset:2px}.android-install-banner__cta:active{background:#4348c8}.android-install-banner__dismiss{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:transparent;border:none;color:#6060788a;font-size:.875rem;cursor:pointer;border-radius:50%;padding:0;transition:color .15s ease,background .15s ease}.android-install-banner__dismiss:hover,.android-install-banner__dismiss:focus{color:#e8e8f0;background:#ffffff14;outline:none}.guide-plugin{flex:1;min-height:0;overflow-y:auto;background:var(--color-surface, #fff);scrollbar-width:thin;scrollbar-color:var(--color-border, #ccc) transparent}.guide-plugin::-webkit-scrollbar{width:6px}.guide-plugin::-webkit-scrollbar-track{background:transparent}.guide-plugin::-webkit-scrollbar-thumb{background:var(--color-border, #ccc);border-radius:3px}.guide-plugin::-webkit-scrollbar-thumb:hover{background:var(--color-accent, #4a90e2)}.guide-plugin__inner{max-width:720px;margin:0 auto;padding:24px;box-sizing:border-box;font-size:1rem;line-height:1.6;word-wrap:break-word;color:var(--color-text-secondary, #555)}.guide-section{margin-bottom:2.5rem}.guide-section h2{font-size:1.25rem;font-weight:700;color:var(--color-text, #222);margin-top:0;margin-bottom:.75rem;padding-bottom:.25rem;border-bottom:2px solid var(--color-accent, #4a90e2)}.guide-section p{margin-top:0;margin-bottom:.75rem;color:var(--color-text-secondary, #555)}.guide-section li{margin-bottom:.4rem;color:var(--color-text-secondary, #555)}.guide-section ul,.guide-section ol{padding-left:1.5rem;margin-top:0;margin-bottom:.75rem}.guide-section strong{color:var(--color-text, #222)}.guide-section code{font-size:.875em;color:var(--color-text, #222);background:color-mix(in srgb,var(--color-border, #e0e0e0) 50%,transparent);border-radius:3px;padding:.1em .35em}.guide-section a{color:var(--color-accent, #4a90e2);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.guide-section a:hover{opacity:.8}@media(max-width:480px){.guide-plugin__inner{padding:16px}}.play-score-plugin{display:flex;flex-direction:column;width:100%;height:100%;background:var(--ls-bg, #fff);font-family:var(--ls-font-body, system-ui, -apple-system, sans-serif);color:var(--ls-body, #222)}.play-score__selection-screen{display:flex;flex-direction:column;height:100%;padding:24px 16px;overflow-y:auto;max-width:480px;margin:0 auto;width:100%}.play-score__section-label{margin:0 0 8px 4px;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ls-body, #888)}.play-score__score-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;border:1px solid rgba(0,0,0,.1);border-radius:12px;overflow:hidden}.play-score__score-item{display:flex;align-items:center;width:100%;padding:14px 16px;background:var(--ls-bg, #fff);border:none;border-bottom:1px solid rgba(0,0,0,.06);cursor:pointer;font-size:.95rem;color:var(--ls-heading, #222);text-align:left;min-height:50px;transition:background .12s}.play-score__score-list li:last-child .play-score__score-item{border-bottom:none}.play-score__score-item:hover,.play-score__score-item:focus-visible{background:color-mix(in srgb,var(--ls-cta-bg, #4a4a9a) 10%,var(--ls-bg, #fff));outline:none}.play-score__score-item-separator{height:1px;background:#00000014;margin:0;padding:0;list-style:none}.play-score__score-item--file{color:var(--ls-body, #555);font-style:italic}.play-score__player{display:flex;flex-direction:column;height:100%;position:relative}.play-score__score-area{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.play-score__loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--ls-body, #888);font-size:.9rem}.play-score__error{display:flex;align-items:center;justify-content:center;padding:24px;color:#c00;font-size:.9rem;text-align:center}.play-score__toolbar{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--ls-navbar-bg, #ffffff);border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0;min-height:48px}.play-score__toolbar-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:36px;border-radius:8px;border:none;cursor:pointer;font-size:.85rem;font-weight:600;padding:0 14px;white-space:nowrap;transition:filter .12s,opacity .12s;color:#fff}.play-score__toolbar-btn:hover:not(:disabled){filter:brightness(1.1)}.play-score__toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.play-score__toolbar-btn--back{background:color-mix(in srgb,var(--ls-heading, #4a4a5a) 60%,transparent);min-width:40px;padding:0 10px;font-size:1rem}.play-score__toolbar-btn--play{background:var(--ls-cta-bg, #22c55e);color:var(--ls-cta-text, #fff)}.play-score__toolbar-btn--pause{background:color-mix(in srgb,var(--ls-accent, #f59e0b) 80%,#fff)}.play-score__toolbar-btn--stop{background:var(--ls-accent, #ef4444)}.play-score__toolbar-btn--metronome{background:var(--ls-accent, #7c3aed);min-width:44px;padding:0 10px;font-size:1.4rem;line-height:1;border-radius:8px 0 0 8px}.play-score__metro-group{position:relative;display:flex;align-items:center;flex-shrink:0}.play-score__metro-chevron{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 6px;border:none;border-left:1px solid rgba(255,255,255,.25);border-radius:0 8px 8px 0;background:var(--ls-accent, #7c3aed);color:#fff;font-size:.75rem;cursor:pointer;transition:filter .12s}.play-score__metro-chevron:hover{filter:brightness(1.15)}.play-score__metro-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:120px;background:color-mix(in srgb,var(--ls-accent, #7c3aed) 15%,#111);border:1px solid var(--ls-accent, #7c3aed);border-radius:8px;padding:4px 0;box-shadow:0 4px 16px #00000073;z-index:100}.play-score__metro-menu-item{display:flex;align-items:center;gap:6px;width:100%;padding:8px 14px;border:none;background:transparent;color:#e2d9f3;font-size:.9rem;text-align:left;cursor:pointer;transition:background .1s;white-space:nowrap}.play-score__metro-menu-item:hover{background:color-mix(in srgb,var(--ls-accent, #7c3aed) 25%,transparent)}.play-score__metro-menu-item--active{color:#fff;font-weight:700}.play-score__metro-menu-check{color:var(--ls-accent, #a78bfa);font-size:.8rem;width:12px;flex-shrink:0}.play-score__toolbar-title{flex:1;font-size:.875rem;font-weight:700;color:var(--ls-heading, #111);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 4px}.play-score__toolbar-timer{font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.play-score__toolbar-timer-elapsed{color:var(--ls-accent, #3b82f6);font-weight:700}.play-score__toolbar-timer-total{color:var(--ls-body, #888)}.play-score__toolbar-tempo{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.play-score__toolbar-tempo-label{font-size:.7rem;font-weight:700;letter-spacing:.06em;color:var(--ls-body, #888);text-transform:uppercase;flex-shrink:0}.play-score__toolbar-tempo-slider{flex:1;min-width:60px;accent-color:var(--ls-accent, #3b82f6);cursor:pointer}.play-score__toolbar-tempo-slider:disabled{opacity:.4;cursor:not-allowed}.play-score__toolbar-bpm{font-size:.75rem;color:var(--ls-body, #888);font-variant-numeric:tabular-nums;flex-shrink:0;white-space:nowrap}.practice-plugin{display:flex;flex-direction:column;width:100%;height:100%;background:var(--ls-bg, #fff);font-family:var(--ls-font-body, system-ui, -apple-system, sans-serif)}.practice-plugin--phantom .layout-glyph.highlighted{opacity:.5}.practice-plugin__hold-indicator{height:6px;background:#0000001f;border-radius:3px;overflow:hidden;margin:0 12px 4px}.practice-plugin__hold-indicator-bar{height:100%;background:#4caf50;border-radius:3px;transition:width .05s linear}.practice-plugin__note-display{display:flex;align-items:center;justify-content:center;gap:6px;padding:4px 12px;font-size:.82rem;font-family:inherit;background:var(--vscode-editorWidget-background, rgba(0, 0, 0, .05));border-bottom:1px solid var(--vscode-editorWidget-border, rgba(0, 0, 0, .08));min-height:28px;flex-shrink:0}.practice-plugin__note-display-label{color:var(--vscode-descriptionForeground, #666);font-weight:500}.practice-plugin__note-display-sep{color:var(--vscode-descriptionForeground, #999);margin:0 2px}.practice-plugin__note-display-notes{font-weight:600;min-width:3em}.practice-plugin__note-display-notes--expected,.practice-plugin__note-display-notes--correct{color:var(--vscode-charts-green, #5AC481)}.practice-plugin__note-display-notes--wrong{color:var(--color-danger, #E55353)}.practice-plugin__score-area{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.practice-plugin__toolbar{display:flex;flex-direction:row;align-items:center;gap:8px;padding:8px 12px;background:var(--ls-navbar-bg, #f8f8f8);border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0;overflow:visible;min-height:52px}.practice-plugin__toolbar-btn{display:flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:8px;border:1px solid rgba(0,0,0,.15);background:var(--ls-bg, #fff);font-size:.875rem;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s;color:var(--ls-heading, #222);min-height:36px}.practice-plugin__toolbar-btn:hover:not(:disabled){background:#f0f4ff;border-color:#aac}.practice-plugin__toolbar-btn:disabled{opacity:.45;cursor:not-allowed}.practice-plugin__toolbar-btn--back{padding:6px 10px;font-size:1rem}.practice-plugin__toolbar-btn--play{color:var(--ls-cta-bg, #1a7a2a);border-color:var(--ls-cta-bg, #1a7a2a)}.practice-plugin__toolbar-btn--pause{color:color-mix(in srgb,var(--ls-accent, #f59e0b) 75%,#000);border-color:var(--ls-accent, #c5a800)}.practice-plugin__toolbar-btn--stop{color:color-mix(in srgb,var(--ls-accent, #ef4444) 75%,#000);border-color:var(--ls-accent, #c84040)}.practice-plugin__toolbar-btn--practice{color:var(--ls-cta-bg, #1a4a9a);border-color:var(--ls-cta-bg, #3060cc);font-weight:600}.practice-plugin__toolbar-btn--practice-active{background:var(--ls-cta-bg, #1a4a9a);color:var(--ls-cta-text, #fff);border-color:var(--ls-cta-bg, #1a4a9a);font-weight:600}.practice-plugin__toolbar-btn--practice-active:hover:not(:disabled){background:color-mix(in srgb,var(--ls-cta-bg, #1a4a9a) 80%,#000)}.practice-plugin__toolbar-btn--practice-complete{background:var(--ls-cta-bg, #1a7a2a);color:var(--ls-cta-text, #fff);border-color:var(--ls-cta-bg, #1a7a2a);font-weight:600}.practice-plugin__toolbar-title{font-size:.875rem;font-weight:600;color:var(--ls-heading, #333);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px;flex-shrink:1}.practice-plugin__task-tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;background:var(--ls-cta-bg, #1a4a9a);color:var(--ls-cta-text, #fff);font-size:.75rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;flex-shrink:0;letter-spacing:.01em;border:none;cursor:pointer;transition:opacity .12s}.practice-plugin__task-tag:hover{opacity:.85}.practice-plugin__toolbar-timer{font-size:.8rem;font-variant-numeric:tabular-nums;color:var(--ls-body, #555);white-space:nowrap;user-select:none}.practice-plugin__toolbar-timer-total{color:var(--ls-body, #999)}.practice-plugin__toolbar-tempo{display:flex;align-items:center;gap:6px;flex-shrink:0;min-width:220px}.practice-plugin__toolbar-tempo-label{font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ls-body, #999);white-space:nowrap}.practice-plugin__toolbar-tempo-slider{width:130px;accent-color:var(--ls-accent, #3060cc)}.practice-plugin__toolbar-bpm{font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--ls-body, #555);white-space:nowrap;min-width:2.5ch}.practice-plugin__staff-group{position:relative;display:flex;align-items:center;flex-shrink:0}.practice-plugin__staff-btn{display:flex;align-items:center;gap:6px;background:var(--ls-accent, #7c3aed);color:#fff;border:none;border-radius:8px;padding:0 12px;font-size:.8rem;min-height:36px;cursor:pointer;white-space:nowrap;transition:filter .12s}.practice-plugin__staff-btn:hover:not(:disabled){filter:brightness(1.18)}.practice-plugin__staff-btn:disabled{opacity:.5;cursor:default}.practice-plugin__staff-chevron{font-size:.7rem;opacity:.8}.practice-plugin__staff-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:140px;background:color-mix(in srgb,var(--ls-accent, #7c3aed) 15%,#111);border:1px solid var(--ls-accent, #7c3aed);border-radius:8px;padding:4px 0;box-shadow:0 4px 16px #00000073;z-index:200}.practice-plugin__staff-menu-item{display:flex;align-items:center;gap:6px;width:100%;padding:8px 14px;border:none;background:transparent;color:#e2d9f3;font-size:.9rem;text-align:left;cursor:pointer;transition:background .1s;white-space:nowrap}.practice-plugin__staff-menu-item:hover{background:color-mix(in srgb,var(--ls-accent, #7c3aed) 25%,transparent)}.practice-plugin__staff-menu-item--active{color:#fff;font-weight:700}.practice-plugin__staff-menu-check{color:var(--ls-accent, #a78bfa);font-size:.8rem;width:12px;flex-shrink:0}.practice-plugin__metro-group{position:relative;display:flex;align-items:center;flex-shrink:0}.practice-plugin__metro-btn{display:flex;align-items:center;justify-content:center;background:var(--ls-accent, #7c3aed);color:#fff;border:none;border-radius:8px 0 0 8px;min-width:40px;padding:0 10px;font-size:1.2rem;line-height:1;min-height:36px;cursor:pointer;white-space:nowrap;transition:filter .12s}.practice-plugin__metro-btn:hover{filter:brightness(1.18)}.practice-plugin__metro-btn:focus-visible{outline:2px solid rgba(255,255,255,.5);outline-offset:-2px}.practice-plugin__metro-btn--active,.practice-plugin__metro-btn--active:hover{background:var(--ls-accent, #7c3aed);animation:practice-metro-pulse .12s ease-out}.practice-plugin__metro-btn--downbeat,.practice-plugin__metro-btn--downbeat:hover{background:color-mix(in srgb,var(--ls-accent, #7c3aed) 80%,#000);animation:practice-metro-pulse-down .14s ease-out}@keyframes practice-metro-pulse{0%{filter:brightness(1.6)}to{filter:brightness(1)}}@keyframes practice-metro-pulse-down{0%{filter:brightness(2) saturate(1.4)}to{filter:brightness(1)}}.practice-plugin__metro-chevron{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 6px;border:none;border-left:1px solid rgba(255,255,255,.25);border-radius:0 8px 8px 0;background:var(--ls-accent, #7c3aed);color:#fff;font-size:.75rem;cursor:pointer;transition:filter .12s}.practice-plugin__metro-chevron:hover{filter:brightness(1.15)}.practice-plugin__metro-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:120px;background:color-mix(in srgb,var(--ls-accent, #7c3aed) 15%,#111);border:1px solid var(--ls-accent, #7c3aed);border-radius:8px;padding:4px 0;box-shadow:0 4px 16px #00000073;z-index:200}.practice-plugin__metro-menu-item{display:flex;align-items:center;gap:6px;width:100%;padding:8px 14px;border:none;background:transparent;color:#e2d9f3;font-size:.9rem;text-align:left;cursor:pointer;transition:background .1s;white-space:nowrap}.practice-plugin__metro-menu-item:hover{background:color-mix(in srgb,var(--ls-accent, #7c3aed) 25%,transparent)}.practice-plugin__metro-menu-item--active{color:#fff;font-weight:700}.practice-plugin__metro-menu-check{color:var(--ls-accent, #a78bfa);font-size:.8rem;width:12px;flex-shrink:0}.practice-plugin__no-midi-notice{font-size:.78rem;color:#b45309;background:#fef3c7;border:1px solid #fcd34d;border-radius:6px;padding:3px 10px;white-space:nowrap;flex-shrink:0}.practice-plugin__practice-btn-wrapper{display:inline-flex;align-items:center}.practice-plugin__toolbar-spacer{flex:1;min-width:0}.practice-plugin__midi-badge{display:inline-flex;align-items:center;font-size:.78rem;font-weight:700;color:var(--ls-cta-bg, #1a53c0);background:color-mix(in srgb,var(--ls-cta-bg, #1a53c0) 10%,var(--ls-bg, #fff));border:1px solid color-mix(in srgb,var(--ls-cta-bg, #1a53c0) 30%,transparent);border-radius:6px;padding:4px 10px;white-space:nowrap;flex-shrink:0;user-select:none}.practice-plugin__staff-picker{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--ls-heading, #333);white-space:nowrap;flex-shrink:0}.practice-plugin__staff-picker-label{font-weight:600;color:var(--ls-body, #555)}.practice-plugin__progress{font-size:.78rem;font-variant-numeric:tabular-nums;color:#555;white-space:nowrap;flex-shrink:0}.practice-plugin__replay-label{font-size:.78rem;font-weight:600;color:#1976d2;white-space:nowrap;flex-shrink:0;animation:practice-plugin__replay-pulse 1.2s ease-in-out infinite}@keyframes practice-plugin__replay-pulse{0%,to{opacity:1}50%{opacity:.5}}.practice-plugin--selection{justify-content:flex-start}.practice-results__backdrop,.practice-results__close{display:none}.practice-results{display:flex;flex-direction:column;gap:.875rem;padding:1rem;border:2px solid #e0e0e0;border-radius:12px;background:#fff;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:201;width:min(92vw,420px);max-height:calc(100dvh - 64px);overflow-y:auto;box-shadow:0 8px 32px #00000059;pointer-events:auto}.practice-plugin--results .practice-results__backdrop{display:block;position:fixed;inset:0;background:#00000073;z-index:200;pointer-events:none;-webkit-tap-highlight-color:transparent}.practice-plugin--results .practice-results__close{display:flex;align-items:center;justify-content:center;position:absolute;top:.5rem;right:.5rem;width:2rem;height:2rem;border:none;border-radius:50%;background:#0000001f;color:inherit;font-size:1.2rem;line-height:1;cursor:pointer;z-index:1}.practice-results__score-block{display:flex;align-items:center;gap:1.25rem}.practice-results__score-ring{display:flex;align-items:baseline;gap:.2rem;flex-shrink:0}.practice-results__score-number{font-size:3rem;font-weight:800;line-height:1}.practice-results__score-label{font-size:.85rem;color:#888}.practice-results__score-grade{font-size:1.05rem;font-weight:600}.practice-results__stats{display:flex;gap:1.5rem;justify-content:center;padding:.5rem 0}.practice-results__stat{display:flex;flex-direction:column;align-items:center;gap:.15rem}.practice-results__stat-value{font-size:1.5rem;font-weight:700;color:#222}.practice-results__stat-label{font-size:.75rem;color:#888;text-transform:uppercase;letter-spacing:.05em}.practice-results__stat-value--warn{color:#f57f17}.practice-results__stat-value--error{color:#c62828}.practice-results__time-comparison{display:flex;align-items:center;justify-content:center;gap:.75rem;font-size:.88rem;color:#333;padding:.4rem 0}.practice-results__time-separator{color:#999;font-size:.75rem;font-style:italic}.practice-results__details{border:1px solid #e0e0e0;border-radius:8px;overflow:hidden}.practice-results__details-summary{padding:.6rem .875rem;font-size:.875rem;font-weight:600;cursor:pointer;user-select:none;background:#f5f5f5;color:#222;list-style:none;display:flex;align-items:center;justify-content:space-between}.practice-results__details-summary::-webkit-details-marker{display:none}.practice-results__details[open] .practice-results__details-summary:after{content:"∧"}.practice-results__details:not([open]) .practice-results__details-summary:after{content:"∨"}.practice-results__table-wrapper{overflow-x:auto;overflow-y:auto;max-height:40vh;-webkit-overflow-scrolling:touch;touch-action:pan-y}.practice-results__table{width:100%;border-collapse:collapse;font-size:.8rem}.practice-results__table th{text-align:left;padding:.45rem .75rem;border-bottom:2px solid #e0e0e0;font-size:.75rem;color:#666;white-space:nowrap}.practice-results__table td{padding:.4rem .75rem;border-bottom:1px solid #f0f0f0;white-space:nowrap;color:#222}.practice-results__row--correct{background:#f1f8e9}.practice-results__row--correct-late{background:#fff8e1}.practice-results__row--wrong{background:#ffebee}.practice-results__status-icon{font-size:.85em;vertical-align:middle}.practice-results__hint{font-size:.85rem;color:#666;text-align:center;margin:0}.practice-results__replay-row{display:flex;justify-content:center;gap:8px;margin:12px 0 4px}.practice-results__replay-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 20px;font-size:.95rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;background:#1976d2;color:#fff;transition:background .15s ease}.practice-results__replay-btn:hover{background:#1565c0}.practice-results__replay-btn:active{background:#0d47a1}.practice-results__replay-btn--stop{background:#c62828}.practice-results__replay-btn--stop:hover{background:#b71c1c}.practice-results__replay-btn--stop:active{background:#8e0000}.practice-results__repractice-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 20px;font-size:.95rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;background:#2e7d32;color:#fff;transition:background .15s ease}.practice-results__repractice-btn:hover,.practice-results__repractice-btn:active{background:#1b5e20}.practice-results__save-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 20px;min-width:44px;min-height:44px;font-size:.95rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;background:#6a1b9a;color:#fff;transition:background .15s ease}.practice-results__save-btn:hover{background:#4a148c}.practice-results__save-btn:active{background:#38006b}.practice-results__save-btn--saved{background:#7cb342;cursor:default}.practice-results__save-btn--saved:hover{background:#7cb342}.practice-results__save-btn:disabled{opacity:.85;cursor:default}.practice-results__save-error{font-size:.75rem;color:#e53935;white-space:nowrap}.practice-results__session-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 20px;min-width:44px;min-height:44px;font-size:.95rem;font-weight:600;border:none;border-radius:8px;cursor:pointer;background:#00796b;color:#fff;transition:background .15s ease}.practice-results__session-btn:hover{background:#00695c}.practice-results__session-btn:active{background:#004d40}.practice-results__loop-slider-row{display:flex;align-items:center;gap:10px;margin:4px 0;padding:0 4px}.practice-results__loop-label{font-size:.85rem;color:#555;white-space:nowrap}.practice-results__loop-slider{flex:1;min-width:80px;accent-color:#2e7d32}@media(max-width:768px){.practice-results__score-number{font-size:2.25rem}}.train-plugin{display:flex;flex-direction:column;flex:1;min-height:0;box-sizing:border-box;overflow:hidden}.train-plugin__header{display:flex;align-items:center;padding:.6rem 1rem;background:var(--color-surface, #fff);border-bottom:1px solid var(--color-border, #e0e0e0);gap:.75rem;flex-shrink:0}.train-plugin__title{font-size:1.05rem;font-weight:700;margin:0;color:var(--color-text, #222)}.train-plugin__task-tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;background:var(--ls-cta-bg, #1a4a9a);color:var(--ls-cta-text, #fff);font-size:.75rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;flex-shrink:0;letter-spacing:.01em;border:none;cursor:pointer;transition:opacity .12s}.train-plugin__task-tag:hover{opacity:.85}.difficulty-tag{display:inline-block;font-size:.65rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.1rem .4rem;border-radius:4px;vertical-align:middle;line-height:1.4}.difficulty-tag--easy{background:#4caf5026;color:#2e7d32}.difficulty-tag--medium{background:#ff980026;color:#e65100}.difficulty-tag--hard{background:#f4433626;color:#c62828}.train-plugin__header-spacer{flex:1}.train-plugin__header-actions{display:flex;align-items:center;gap:.5rem}.train-plugin__header-btn{display:inline-flex;align-items:center;min-height:32px;padding:.25rem .75rem;border:1px solid var(--color-border, #d0d0d0);border-radius:6px;font-size:.82rem;font-weight:600;background:var(--color-surface-alt, #f8f8f8);color:var(--color-text, #333);cursor:pointer;transition:background .12s}.train-plugin__header-btn:hover{background:var(--color-border, #e8e8e8)}.train-plugin__back-btn{margin-right:.25rem;color:var(--color-text-secondary, #555)}.train-plugin__back-btn:hover{background:var(--color-border, #e0e0e0)}.train-plugin__header-btn--stop{background:var(--color-danger, #e53935);color:#fff;border-color:transparent}.train-plugin__header-btn--stop:hover{background:var(--color-danger-dark, #b71c1c)}.train-plugin__header-btn--start{background:var(--color-success, #43a047);color:#fff;border-color:transparent}.train-plugin__header-btn--start:hover{background:var(--color-success-dark, #2e7d32)}.train-plugin__header-btn--retry{background:var(--color-warning, #f57f17);color:#fff;border-color:transparent}.train-plugin__header-btn--retry:hover{background:var(--color-warning-dark, #e65100)}.train-plugin__header-btn--new{background:var(--color-accent, #4f8ef7);color:#fff;border-color:transparent}.train-plugin__level-label{font-size:.82rem;font-weight:600;color:var(--color-text-muted, #666);white-space:nowrap}.train-plugin__level-select{min-height:32px;padding:.2rem .5rem;border:1px solid var(--color-border, #d0d0d0);border-radius:6px;font-size:.82rem;font-weight:600;background:var(--color-surface-alt, #f8f8f8);color:var(--color-text, #333);cursor:pointer}.train-plugin__level-select:disabled{opacity:.5;cursor:not-allowed}.train-plugin__header-btn--new:hover{background:var(--color-accent-dark, #3a7bd5)}.train-mic-badge{display:inline-flex;align-items:center;padding:.25rem .625rem;border-radius:14px;font-size:.78rem;font-weight:500;background:var(--color-surface-alt, #f0f0f0);color:var(--color-muted, #888);border:1px solid var(--color-border, #e0e0e0);user-select:none}.train-mic-badge--active{background:#e8f5e9;color:#2e7d32;border-color:#a5d6a7}.train-mic-badge--error{background:#fde8e8;color:#c62828;border-color:#ef9a9a}.train-plugin__tips{display:flex;align-items:flex-start;gap:.75rem;padding:.625rem 1rem;background:color-mix(in srgb,var(--color-accent, #4f8ef7) 10%,var(--color-surface, #fff));border-bottom:1px solid color-mix(in srgb,var(--color-accent, #4f8ef7) 30%,var(--color-border, #e0e0e0));flex-shrink:0}.train-plugin__tips-list{flex:1;margin:0;padding:0 0 0 1.25rem;font-size:.82rem;color:var(--color-text, #222);list-style:disc;line-height:1.6}.train-plugin__tips-list li{margin-bottom:.1rem}.train-plugin__tips-dismiss{flex-shrink:0;align-self:center;padding:.3rem .75rem;border:1px solid color-mix(in srgb,var(--color-accent, #4f8ef7) 40%,var(--color-border, #e0e0e0));border-radius:6px;font-size:.8rem;font-weight:600;background:var(--color-surface, #fff);color:var(--color-text, #222);cursor:pointer;transition:background .12s}.train-plugin__tips-dismiss:hover{background:color-mix(in srgb,var(--color-accent, #4f8ef7) 15%,var(--color-surface, #fff))}.train-plugin__body{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden}.train-sidebar{width:200px;flex-shrink:0;border-right:1px solid var(--color-border, #e0e0e0);overflow-y:auto;overflow-x:hidden;background:var(--color-surface-alt, #f9f9f9);transition:width .2s ease;box-sizing:border-box}.train-sidebar--hidden{width:0;overflow:hidden;padding:0;border:none;min-width:0}.train-sidebar--collapsed{width:28px;overflow:hidden;padding:0;border-right:1px solid var(--color-border, #e0e0e0)}.train-sidebar--collapsed .train-sidebar__sections{height:0;overflow:hidden;pointer-events:none}.train-sidebar__toggle{display:flex;align-items:center;justify-content:center;width:28px;min-height:44px;flex-shrink:0;background:none;border:none;border-bottom:1px solid var(--color-border, #e0e0e0);color:var(--color-muted, #888);font-size:1rem;cursor:pointer;transition:background .12s;user-select:none;position:sticky;top:0;z-index:1;background:var(--color-surface-alt, #f9f9f9)}.train-sidebar__toggle:focus{outline:none}.train-sidebar__toggle:focus-visible{outline:2px solid var(--color-primary, #646cff);outline-offset:-2px}.train-sidebar__toggle:hover{background:var(--color-border, #efefef)}.train-sidebar__section{padding:.6rem .875rem;border-bottom:1px solid #efefef}.train-sidebar__section-title{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted, #999);margin:0 0 .35rem}.train-sidebar__radio-label{display:flex;align-items:center;gap:.4rem;font-size:.84rem;color:var(--color-text, #333);padding:.2rem 0;cursor:pointer;user-select:none}.train-sidebar__radio-label--disabled{opacity:.45;cursor:not-allowed}.train-sidebar__radio-label input[type=radio]{accent-color:var(--color-accent, #4f8ef7);cursor:inherit}.train-sidebar__slider-row{display:flex;align-items:center;gap:.4rem}.train-sidebar__slider-row input[type=range]{flex:1;accent-color:var(--color-accent, #4f8ef7);cursor:pointer}.train-sidebar__slider-row input[type=range]:disabled{opacity:.45;cursor:not-allowed}.train-sidebar__slider-value{font-size:.82rem;font-weight:600;min-width:28px;text-align:right;color:var(--color-text, #333)}.train-sidebar__slider-sublabel{font-size:.7rem;color:var(--color-muted, #999);margin:.1rem 0 0}.train-sidebar__select{width:100%;padding:.3rem .4rem;border:1px solid var(--color-border, #d0d0d0);border-radius:5px;font-size:.83rem;background:var(--color-surface, #fff);cursor:pointer;color:var(--color-text, #333)}.train-sidebar__select:disabled{opacity:.45;cursor:not-allowed}.train-plugin__main{flex:1;overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1rem;min-width:0;box-sizing:border-box;position:relative}.train-plugin__main--countdown{overflow-y:hidden;overflow-x:hidden}.train-plugin__mic-error{padding:.6rem .875rem;border-radius:8px;background:var(--color-danger-bg, #fde8e8);color:var(--color-danger, #c62828);font-size:.85rem;border:1px solid #ef9a9a}.train-countdown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:7rem;font-weight:800;color:var(--color-accent, #4f8ef7);background:#ffffffe0;z-index:10;letter-spacing:-.05em;animation:train-countdown-pulse .6s ease-in-out;border-radius:8px}@keyframes train-countdown-pulse{0%{transform:scale(1.3);opacity:.5}to{transform:scale(1);opacity:1}}.train-countdown--go{font-size:5rem;color:var(--color-success, #4caf50)}.train-staff-block{display:flex;flex-direction:column;gap:.25rem}.train-staff-label{display:flex;align-items:center;gap:.4rem;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted, #888);margin-left:.5rem}.train-staff-sound-btn{background:none;border:none;cursor:pointer;padding:0;font-size:.95rem;line-height:1;transition:opacity .12s;display:flex;align-items:center}.train-staff-sound-btn--muted{opacity:.35}.train-staff-wrapper{border:1px solid var(--color-border, #e0e0e0);border-radius:8px;overflow:hidden;min-height:80px}.train-staff-wrapper--playing{border-color:var(--color-accent, #4f8ef7);box-shadow:0 0 0 2px #4f8ef72e}.train-controls{display:flex;flex-direction:column;align-items:center;gap:.75rem}.train-start-prompt{font-size:1rem;color:var(--color-muted, #666);text-align:center;padding:.75rem 1rem;background:var(--color-surface-alt, #f8f8f8);border-radius:8px;border:1px solid var(--color-border, #e0e0e0);margin:0}.train-plugin__play-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:120px;padding:.5rem 1.5rem;border:none;border-radius:8px;font-size:.95rem;font-weight:700;cursor:pointer;transition:background .15s ease,transform .1s ease;background:var(--color-accent, #4f8ef7);color:#fff;user-select:none}.train-plugin__play-btn:hover{background:var(--color-accent-dark, #3a7bd5)}.train-plugin__play-btn:active{transform:scale(.97)}.train-plugin__play-btn--new{background:var(--color-surface-alt, #f0f0f0);color:var(--color-text, #333);border:1px solid var(--color-border, #d0d0d0)}.train-plugin__play-btn--new:hover{background:var(--color-border, #e0e0e0)}.train-results{display:flex;flex-direction:column;gap:.875rem;padding:1rem;border:2px solid var(--color-border, #e0e0e0);border-radius:12px;background:var(--color-surface, #fff)}.train-results__score-block{display:flex;align-items:center;gap:1.25rem}.train-results__score-ring{display:flex;align-items:baseline;gap:.2rem;flex-shrink:0}.train-results__score-number{font-size:3rem;font-weight:800;line-height:1}.train-results__score-label{font-size:.85rem;color:var(--color-muted, #888)}.train-results__score-grade{font-size:1.05rem;font-weight:600}.train-results__details{border:1px solid var(--color-border, #e0e0e0);border-radius:8px;overflow:hidden}.train-results__details-summary{padding:.6rem .875rem;font-size:.875rem;font-weight:600;cursor:pointer;user-select:none;background:var(--color-surface-alt, #f5f5f5);color:#222;list-style:none;display:flex;align-items:center;justify-content:space-between}.train-results__details-summary::-webkit-details-marker{display:none}.train-results__details[open] .train-results__details-summary:after{content:"∧"}.train-results__details:not([open]) .train-results__details-summary:after{content:"∨"}.train-results__table-wrapper{overflow-x:auto;overflow-y:auto;max-height:40vh;-webkit-overflow-scrolling:touch;touch-action:pan-y}.train-results__table{width:100%;border-collapse:collapse;font-size:.8rem}.train-results__table th{text-align:left;padding:.45rem .75rem;border-bottom:2px solid var(--color-border, #e0e0e0);font-size:.75rem;color:#666;white-space:nowrap}.train-results__table td{padding:.4rem .75rem;border-bottom:1px solid var(--color-border, #f0f0f0);white-space:nowrap;color:#222}.train-results__row--correct,.train-results__row--wrong-timing{background:#f1f8e9}.train-results__row--wrong-pitch{background:#fff8e1}.train-results__row--missed{background:#ffebee}.train-results__status-icon{font-size:.85em;vertical-align:middle}.train-results__extraneous{padding:.5rem .875rem;font-size:.82rem;color:var(--color-muted, #888);background:var(--color-surface-alt, #f5f5f5);border-top:1px solid var(--color-border, #e0e0e0)}.train-results__actions{display:flex;gap:.75rem;flex-wrap:wrap}.train-step-hint{padding:.5rem 1rem;border-radius:8px;background:#fff8e1;font-size:.9rem;font-weight:600;text-align:center;border:1px solid #ffe082;margin-top:.5rem}.train-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:80px;padding:.5rem 1.25rem;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s ease,transform .1s ease;user-select:none}.train-btn:active{transform:scale(.97)}.train-btn--primary{background:var(--color-accent, #4f8ef7);color:#fff}.train-btn--primary:hover{background:var(--color-accent-dark, #3a7bd5)}.train-btn--danger{background:var(--color-danger, #e53935);color:#fff}.train-btn--danger:hover{background:var(--color-danger-dark, #b71c1c)}.train-btn--secondary{background:var(--color-surface-alt, #f0f0f0);color:var(--color-text, #333);border:1px solid var(--color-border, #d0d0d0)}.train-btn--secondary:hover{background:var(--color-border, #e0e0e0)}.train-btn:disabled{opacity:.45;cursor:not-allowed}.train-mic-badge--midi{background:#e8f0fe;color:#1a53c0;border-color:#a8c0f8}.train-sidebar__sections{display:flex;flex-direction:column}@media(max-width:768px){.train-plugin__body{flex-direction:column}.train-sidebar{width:100%;height:auto;border-right:none;border-bottom:1px solid var(--color-border, #e0e0e0);overflow-x:auto;overflow-y:hidden;flex-shrink:0}.train-sidebar--collapsed,.train-sidebar--hidden{display:none}.train-sidebar__sections{flex-direction:row;align-items:flex-start;padding:.25rem 0;min-width:max-content}.train-sidebar__section{flex-shrink:0;min-width:110px;border-bottom:none;border-right:1px solid #efefef;padding:.4rem .75rem}.train-sidebar__section:last-of-type{border-right:none}.train-sidebar__slider-row input[type=range]{width:80px;flex:none}.train-plugin__main{padding:.75rem}.train-countdown{font-size:5rem}.train-results__score-number{font-size:2.25rem}}@media(max-width:480px){.train-sidebar__section{min-width:95px}}.train-score-disabled-label{display:block;font-size:.7rem;color:var(--color-text-muted, #888);font-style:italic;margin-top:.2rem}.train-control--disabled{opacity:.45;pointer-events:none}.train-sidebar__change-score-btn{display:block;width:100%;margin-top:.6rem;padding:.35rem .5rem;background:transparent;border:1px solid currentColor;border-radius:4px;font-size:.78rem;cursor:pointer;color:inherit;text-align:left;transition:opacity .15s}.train-sidebar__change-score-btn:disabled{opacity:.4;cursor:not-allowed}.train-sidebar__change-score-btn:not(:disabled):hover{opacity:.75}.train-level-selector{display:flex;gap:.4rem;flex-wrap:wrap}.train-level-btn{flex:1;min-width:3.5rem;padding:.45rem .3rem .4rem;background:transparent;border:1px solid currentColor;border-radius:4px;font-size:.78rem;cursor:pointer;color:inherit;text-align:center;opacity:.55;transition:opacity .15s,background .15s;line-height:1.2}.train-level-btn:not(:disabled):hover{opacity:.8}.train-level-btn--active{background:#ffffff26;opacity:1;font-weight:600;border-color:currentColor}.train-level-btn:disabled{opacity:.3;cursor:not-allowed}.train-level-btn__name{display:block}.train-level-btn__description{display:block;font-size:.68rem;opacity:.75;font-weight:400;margin-top:.15rem}.train-plugin__vkb-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:.25rem .5rem;border-radius:8px;border:1px solid var(--color-border, #e0e0e0);background:var(--color-surface-alt, #f0f0f0);color:var(--color-muted, #666);font-size:1.1rem;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.train-plugin__vkb-toggle:hover{background:var(--color-surface-hover, #e4e4e4)}.train-plugin__vkb-toggle--active{background:var(--color-accent, #4a90d9);color:#fff;border-color:var(--color-accent, #4a90d9)}.train-plugin__vkb-toggle--active:hover{background:var(--color-accent-dark, #3a7bd5);border-color:var(--color-accent-dark, #3a7bd5)}.train-mic-badge--suspended{opacity:.45;background:var(--color-surface-alt, #f0f0f0);color:var(--color-muted, #888);border-color:var(--color-border, #e0e0e0)}.train-plugin__vkb-panel{border-top:1px solid var(--color-border, #ddd);padding:8px 0 0;overflow-x:auto;overflow-y:hidden;flex-shrink:0;-webkit-overflow-scrolling:touch;background:var(--color-surface, #fff)}.train-results__backdrop,.train-results__close{display:none}@media(orientation:landscape)and (max-height:520px){.train-plugin--results .train-results__backdrop{display:block;position:fixed;inset:0;background:#00000073;z-index:200;cursor:pointer}.train-plugin--results .train-results{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:201;width:min(92vw,420px);max-height:calc(100dvh - 64px);overflow-y:auto;box-shadow:0 8px 32px #00000059;border-radius:16px;pointer-events:auto}.train-plugin--results .train-results__close{display:flex;align-items:center;justify-content:center;position:absolute;top:.5rem;right:.5rem;width:2rem;height:2rem;border:none;border-radius:50%;background:#0000001f;color:inherit;font-size:1.2rem;line-height:1;cursor:pointer;z-index:1}}.train-plugin--results .practice-results__backdrop{display:block;position:fixed;inset:0;background:#00000073;z-index:200;pointer-events:none;-webkit-tap-highlight-color:transparent}.train-plugin--results .practice-results__close{display:flex;align-items:center;justify-content:center;position:absolute;top:.5rem;right:.5rem;width:2rem;height:2rem;border:none;border-radius:50%;background:#0000001f;color:inherit;font-size:1.2rem;line-height:1;cursor:pointer;z-index:1}.train-plugin__metro-group{position:relative;display:flex;align-items:center;flex-shrink:0}.train-plugin__metro-btn{display:inline-flex;align-items:center;justify-content:center;background:var(--ls-accent, var(--color-accent, #7c3aed));color:#fff;border:none;border-radius:8px 0 0 8px;min-width:44px;padding:0 10px;font-size:1.2rem;line-height:1;min-height:36px;cursor:pointer;white-space:nowrap;transition:filter .12s}.train-plugin__metro-btn:hover{filter:brightness(1.18)}.train-plugin__metro-btn--active{background:var(--ls-accent, var(--color-accent, #7c3aed));animation:train-metro-pulse .12s ease-out}.train-plugin__metro-btn--downbeat{background:color-mix(in srgb,var(--ls-accent, var(--color-accent, #7c3aed)) 80%,#000);animation:train-metro-pulse-down .14s ease-out}@keyframes train-metro-pulse{0%{filter:brightness(1.6)}to{filter:brightness(1)}}@keyframes train-metro-pulse-down{0%{filter:brightness(2) saturate(1.4)}to{filter:brightness(1)}}.train-plugin__metro-chevron{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 6px;border:none;border-left:1px solid rgba(255,255,255,.25);border-radius:0 8px 8px 0;background:var(--ls-accent, var(--color-accent, #7c3aed));color:#fff;font-size:.75rem;cursor:pointer;transition:filter .12s}.train-plugin__metro-chevron:hover{filter:brightness(1.15)}.train-plugin__metro-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:120px;background:color-mix(in srgb,var(--ls-accent, var(--color-accent, #7c3aed)) 15%,#111);border:1px solid var(--ls-accent, var(--color-accent, #7c3aed));border-radius:8px;padding:4px 0;box-shadow:0 4px 16px #00000073;z-index:200}.train-plugin__metro-menu-item{display:flex;align-items:center;gap:6px;width:100%;padding:8px 14px;border:none;background:transparent;color:#e2d9f3;font-size:.9rem;text-align:left;cursor:pointer;transition:background .1s;white-space:nowrap}.train-plugin__metro-menu-item:hover{background:color-mix(in srgb,var(--ls-accent, var(--color-accent, #7c3aed)) 25%,transparent)}.train-plugin__metro-menu-item--active{color:#fff;font-weight:700}.train-plugin__metro-menu-check{color:var(--ls-accent, var(--color-accent, #a78bfa));font-size:.8rem;width:12px;flex-shrink:0}.train-vkb{display:flex;flex-direction:row;align-items:stretch;padding:4px 4px 8px;background:var(--color-surface, #fff);box-sizing:border-box;user-select:none;-webkit-user-select:none;gap:4px}.train-vkb__range-label--sr{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.train-vkb__octave-btn{width:44px;min-width:44px;flex-shrink:0;align-self:stretch;padding:0;border-radius:6px;border:1px solid var(--color-border, #ccc);background:var(--color-surface-alt, #f5f5f5);color:var(--color-text, #333);font-size:1rem;font-weight:700;cursor:pointer;transition:background .12s ease,opacity .12s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;display:flex;align-items:center;justify-content:center}.train-vkb__octave-btn:hover:not(:disabled){background:var(--color-surface-hover, #ebebeb)}.train-vkb__octave-btn:disabled{opacity:.35;cursor:not-allowed}.train-vkb__scroll{flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;-webkit-overflow-scrolling:touch;display:flex;justify-content:safe center;align-items:flex-start}.train-vkb__keyboard{position:relative;display:inline-flex;flex-direction:row;height:100px;user-select:none;-webkit-user-select:none;touch-action:manipulation}.train-vkb__key{position:relative;box-sizing:border-box;border-radius:0 0 4px 4px;cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:none}.train-vkb__key--white{width:44px;min-width:44px;height:100px;background:#f8f8f8;border:1px solid #bbb;z-index:1;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font-size:.58rem;color:#666;font-family:monospace}.train-vkb__key--white:active,.train-vkb__key--white.train-vkb__key--pressed{background:#b8d4ff;border-color:#59e;color:#36c}.train-vkb__key--black{position:absolute;top:0;width:26px;height:66px;background:#222;border:1px solid #111;border-radius:0 0 4px 4px;z-index:2;transform:translate(-50%)}.train-vkb__key--black:active,.train-vkb__key--black.train-vkb__key--pressed{background:#1a4fcf;border-color:#03a}@media(max-width:480px){.train-vkb__key--white{width:38px;min-width:38px;height:88px}.train-vkb__key--black{width:22px;height:58px}.train-vkb__keyboard{height:88px}}.virtual-keyboard{display:flex;flex-direction:column;align-items:center;padding:16px;background:#1a1a2e;min-height:100%;box-sizing:border-box}.virtual-keyboard__title{color:#e0e0e0;font-size:1.1rem;font-weight:600;margin:0 0 12px;letter-spacing:.05em}.virtual-keyboard__staff-header{width:100%;max-width:640px;display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.virtual-keyboard__staff-label{color:#a0a0c0;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.virtual-keyboard__clear-btn{padding:4px 12px;font-size:.75rem;font-weight:600;color:#e0e0ff;background:#ffffff1f;border:1px solid rgba(255,255,255,.25);border-radius:4px;cursor:pointer;letter-spacing:.04em;-webkit-touch-callout:none;touch-action:manipulation}.virtual-keyboard__clear-btn:active{background:#ffffff38}.virtual-keyboard__staff-area{width:100%;max-width:640px;min-height:80px;background:#fff;border-radius:4px;margin-bottom:16px;display:flex;align-items:center;justify-content:center;font-size:.85rem;color:#888;box-shadow:0 2px 8px #0003;overflow:hidden;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.virtual-keyboard__scroll{overflow-x:auto;overflow-y:hidden;max-width:100%;padding-bottom:8px;-webkit-overflow-scrolling:touch}.keyboard{position:relative;display:inline-flex;flex-direction:row;height:160px;user-select:none;-webkit-user-select:none;touch-action:manipulation}.key{position:relative;box-sizing:border-box;border-radius:0 0 4px 4px;cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:none}.key--white{width:44px;min-width:44px;height:160px;background:#f8f8f8;border:1px solid #bbb;z-index:1;display:flex;align-items:flex-end;justify-content:center;padding-bottom:6px;font-size:.6rem;color:#bbb;font-family:monospace}.key--white:active,.key--white.key--pressed{background:#b8d4ff;border-color:#59e}.key--black{position:absolute;top:0;width:26px;height:100px;background:#222;border:1px solid #111;border-radius:0 0 4px 4px;z-index:2;transform:translate(-50%)}.key--black:active,.key--black.key--pressed{background:#1a4fcf;border-color:#03a}.virtual-keyboard__note-display{width:100%;height:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:4px;padding:8px 12px;box-sizing:border-box;overflow:hidden}.virtual-keyboard__note-display--empty{color:#bbb;font-size:.85rem;pointer-events:none}.virtual-keyboard__note-chip{display:inline-flex;align-items:center;justify-content:center;background:#667eea;color:#fff;font-size:.75rem;font-weight:600;border-radius:50%;width:28px;height:28px;flex-shrink:0;font-family:monospace}@media(max-width:480px){.key--white{width:38px;min-width:38px;height:140px}.key--black{width:22px;height:88px}}.layout-renderer-svg,.score-scroll-container,.score-scroll-container *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}text.highlighted{fill:#f5a340!important}line.highlighted{stroke:#c07830!important;stroke-width:2!important}rect.highlighted{fill:#f5a340!important}polygon.highlighted{fill:#f5a340!important}.glyph-run text,.glyph-run line,.glyph-run rect,.glyph-run polygon{transition:fill 50ms ease-out,stroke 50ms ease-out}.layout-glyph.highlighted{fill:#f5a340!important;stroke:#f5a340!important;transition:fill 50ms ease-out,stroke 50ms ease-out}text.layout-glyph{transition:fill 50ms ease-out,stroke 50ms ease-out}.layout-glyph.pinned{fill:#5ac481!important;stroke:#5ac481!important}.layout-glyph.expected{fill:#5ac481!important;stroke:#5ac481!important;opacity:.4}.layout-glyph.error{fill:var(--color-danger, #E55353)!important;stroke:var(--color-danger, #E55353)!important}.loop-region{fill:#00b4501f;stroke:#00b45066;stroke-width:1}.score-renderer-bottom-bar{display:flex;flex-direction:row;border-top:1px solid color-mix(in srgb,var(--ls-accent, #1976d2) 20%,transparent)}.score-renderer-return-btn{display:block;flex:1;padding:12px 0;font-size:.9rem;font-weight:700;color:var(--ls-accent, #1976d2);background:var(--ls-bg, #fff);border:none;border-left:1px solid color-mix(in srgb,var(--ls-accent, #1976d2) 20%,transparent);cursor:pointer;text-align:center;letter-spacing:.03em;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:background .15s}.score-renderer-return-btn:hover{background:color-mix(in srgb,var(--ls-accent, #1976d2) 10%,var(--ls-bg, #fff))}.score-renderer-phrases-btn{display:block;flex:1;padding:12px 0;font-size:.9rem;font-weight:700;color:var(--ls-accent, #1976d2);background:var(--ls-bg, #fff);border:none;cursor:pointer;text-align:center;letter-spacing:.03em;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:background .15s}.score-renderer-phrases-btn:hover{background:color-mix(in srgb,var(--ls-accent, #1976d2) 10%,var(--ls-bg, #fff))}.score-renderer-phrases-btn.active{background:color-mix(in srgb,var(--ls-accent, #1976d2) 15%,var(--ls-bg, #fff))}.score-renderer-phrases-btn:disabled{opacity:.4;cursor:default}.score-renderer-nav-btn{display:block;flex:0 0 auto;padding:12px 16px;font-size:.85rem;font-weight:700;color:var(--ls-accent, #1976d2);background:var(--ls-bg, #fff);border:none;border-left:1px solid color-mix(in srgb,var(--ls-accent, #1976d2) 20%,transparent);cursor:pointer;text-align:center;letter-spacing:.03em;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:background .15s}.score-renderer-nav-btn:hover{background:color-mix(in srgb,var(--ls-accent, #1976d2) 10%,var(--ls-bg, #fff))}.list-dialog{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0000008c;backdrop-filter:blur(2px)}.list-dialog__card{background:var(--ls-bg, #fff);color:var(--ls-heading, #1a1a1a);border-radius:10px;box-shadow:0 8px 32px #00000040;width:min(420px,92vw);max-height:min(520px,80vh);padding:24px;display:flex;flex-direction:column;gap:16px;font-family:var(--ls-font-body, system-ui, sans-serif)}.list-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:8px}.list-dialog__title{margin:0;font-size:1.1rem;font-weight:700;color:var(--ls-heading, #1a1a1a);font-family:var(--ls-font-heading, system-ui, sans-serif)}.list-dialog__close{background:none;border:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--ls-body, #666);padding:2px 6px;border-radius:4px;transition:background .15s,color .15s}.list-dialog__close:hover{background:color-mix(in srgb,var(--ls-heading, #222) 10%,transparent);color:var(--ls-heading, #222)}.list-dialog__body{display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex:1;min-height:0;margin:0;padding:0;list-style:none}.list-dialog__item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--ls-heading, #222) 12%,transparent);border-radius:8px;background:color-mix(in srgb,var(--ls-heading, #222) 4%,var(--ls-bg, #fff))}.list-dialog__item-label{font-weight:600;font-size:.9rem;color:var(--ls-heading, #1a1a1a);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.list-dialog__item-icon{flex-shrink:0;font-size:1rem}.list-dialog__action-btn{padding:7px 16px;border:none;border-radius:6px;background:var(--ls-cta-bg, #4a90e2);color:var(--ls-cta-text, #fff);font-weight:600;font-size:.875rem;font-family:var(--ls-font-body, system-ui, sans-serif);cursor:pointer;transition:background .15s;flex-shrink:0}.list-dialog__action-btn:hover:not(:disabled){background:color-mix(in srgb,var(--ls-cta-bg, #4a90e2) 80%,#000)}.list-dialog__empty{margin:0;padding:16px 0;color:var(--ls-body, #666);font-size:.9rem;text-align:center}.list-dialog__footer{display:flex;flex-direction:column;gap:10px}.plugin-manager-dialog{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0000008c;backdrop-filter:blur(2px)}.plugin-manager-dialog__card{background:var(--ls-bg, #fff);color:var(--ls-heading, #1a1a1a);border-radius:10px;box-shadow:0 8px 32px #00000040;width:min(420px,92vw);max-height:min(520px,80vh);padding:24px;display:flex;flex-direction:column;gap:16px;font-family:var(--ls-font-body, system-ui, sans-serif)}.plugin-manager-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:8px}.plugin-manager-dialog__title{margin:0;font-size:1.1rem;font-weight:700;color:var(--ls-heading, #1a1a1a);font-family:var(--ls-font-heading, system-ui, sans-serif)}.plugin-manager-dialog__close{background:none;border:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--ls-body, #666);padding:2px 6px;border-radius:4px;transition:background .15s,color .15s}.plugin-manager-dialog__close:hover{background:color-mix(in srgb,var(--ls-heading, #222) 10%,transparent);color:var(--ls-heading, #222)}.plugin-manager-dialog__body{display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex:1;min-height:0;margin:0;padding:0;list-style:none}.plugin-manager-dialog__item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--ls-heading, #222) 12%,transparent);border-radius:8px;background:color-mix(in srgb,var(--ls-heading, #222) 4%,var(--ls-bg, #fff))}.plugin-manager-dialog__item-info{display:flex;flex-direction:column;gap:2px;min-width:0}.plugin-manager-dialog__item-name{font-weight:600;font-size:.9rem;color:var(--ls-heading, #1a1a1a);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plugin-manager-dialog__item-meta{font-size:.75rem;color:var(--ls-body, #888)}.plugin-manager-dialog__remove-btn{padding:7px 16px;border:none;border-radius:6px;background:var(--ls-accent, #e74c3c);color:#fff;font-weight:600;font-size:.875rem;font-family:var(--ls-font-body, system-ui, sans-serif);cursor:pointer;transition:background .15s;flex-shrink:0}.plugin-manager-dialog__remove-btn:hover:not(:disabled){background:color-mix(in srgb,var(--ls-accent, #e74c3c) 80%,#000)}.plugin-manager-dialog__remove-btn:disabled{background:color-mix(in srgb,var(--ls-heading, #999) 20%,var(--ls-bg, #fff));color:var(--ls-body, #888);cursor:not-allowed}.plugin-manager-dialog__empty{margin:0;padding:16px 0;color:var(--ls-body, #666);font-size:.9rem;text-align:center}.plugin-manager-dialog__error{margin:0;padding:10px 12px;border-radius:6px;font-size:.875rem;background:color-mix(in srgb,var(--ls-accent, #e74c3c) 10%,var(--ls-bg, #fff));border:1px solid color-mix(in srgb,var(--ls-accent, #e74c3c) 35%,transparent);color:var(--ls-accent, #c0392b)}.plugin-manager-dialog__footer{display:flex;flex-direction:column;gap:10px}.plugin-manager-dialog__import-row{display:flex;align-items:center;gap:10px}.plugin-manager-dialog__import-btn{padding:7px 16px;border:none;border-radius:6px;background:var(--ls-cta-bg, #4a90e2);color:var(--ls-cta-text, #fff);font-weight:600;font-size:.875rem;font-family:var(--ls-font-body, system-ui, sans-serif);cursor:pointer;transition:background .15s}.plugin-manager-dialog__import-btn:hover:not(:disabled){background:color-mix(in srgb,var(--ls-cta-bg, #4a90e2) 80%,#000)}.plugin-manager-dialog__import-btn:disabled{background:color-mix(in srgb,var(--ls-heading, #999) 20%,var(--ls-bg, #fff));color:var(--ls-body, #888);cursor:not-allowed}.plugin-manager-dialog__file-input--hidden{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.plugin-manager-dialog__filename{font-size:.8rem;color:var(--ls-body, #555);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px;opacity:.85}.plugin-manager-dialog__status{margin:0;color:var(--ls-body, #555);font-size:.9rem}.plugin-manager-dialog__confirm-actions{display:flex;gap:8px;align-items:center}.plugin-manager-dialog__confirm-text{margin:0;color:var(--ls-heading, #333);font-size:.9rem}.plugin-manager-dialog__btn{padding:7px 16px;border:1px solid color-mix(in srgb,var(--ls-heading, #999) 25%,transparent);border-radius:6px;background:var(--ls-bg, #fff);color:var(--ls-body, #444);cursor:pointer;font-size:.875rem;font-family:var(--ls-font-body, system-ui, sans-serif);transition:background .15s,border-color .15s}.plugin-manager-dialog__btn:hover:not(:disabled){background:color-mix(in srgb,var(--ls-heading, #222) 8%,var(--ls-bg, #fff))}.plugin-manager-dialog__btn--danger{background:var(--ls-accent, #e74c3c);color:#fff;border:none;font-weight:600}.plugin-manager-dialog__btn--danger:hover:not(:disabled){background:color-mix(in srgb,var(--ls-accent, #e74c3c) 80%,#000)}.score-selector-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0009;backdrop-filter:blur(4px);padding:1rem}.score-selector-panel{background:var(--dialog-bg);color:var(--dialog-text);border-radius:12px;box-shadow:0 8px 32px #00000080;width:100%;max-width:420px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.score-selector-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--dialog-border);flex-shrink:0}.score-selector-title{margin:0;font-size:1.125rem;font-weight:700;color:var(--dialog-text)}.score-selector-cancel{background:none;border:none;font-size:1rem;color:var(--dialog-subtext);cursor:pointer;padding:.25rem .5rem;border-radius:4px;line-height:1;transition:background .15s,color .15s}.score-selector-cancel:hover{background:var(--dialog-surface);color:var(--dialog-text)}.score-selector-error{margin:.75rem 1.25rem 0;padding:.5rem .75rem;background:var(--dialog-error-bg);border:1px solid var(--dialog-error-border);border-radius:6px;color:var(--dialog-error-text);font-size:.875rem;flex-shrink:0}.score-selector-loading{display:flex;align-items:center;gap:.75rem;padding:2rem 1.25rem;color:var(--dialog-subtext);font-size:.95rem;flex:1}.score-selector-spinner{display:inline-block;width:20px;height:20px;border:3px solid var(--dialog-spinner-track);border-top-color:var(--dialog-spinner-head);border-radius:50%;animation:score-selector-spin .7s linear infinite;flex-shrink:0}@keyframes score-selector-spin{to{transform:rotate(360deg)}}.score-selector-scroll{flex:1;overflow-y:auto;padding-bottom:.5rem}.score-selector-list{list-style:none;margin:0;padding:.5rem 0 0}.score-selector-item{padding:.25rem 1rem}.score-selector-item__btn{width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:.6rem .75rem;font-size:.875rem;font-family:inherit;color:var(--dialog-text);cursor:pointer;transition:background .12s}.score-selector-item__btn:hover{background:var(--dialog-surface)}.score-selector-item__btn:active{background:var(--dialog-surface-hover)}.score-selector-scroll .score-group{padding:0 1rem}.score-selector-scroll .score-group__summary{padding-left:0}.score-selector-scroll .score-group__list .preloaded-score-item{width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:.6rem .75rem;font-size:.875rem;font-family:inherit;color:var(--dialog-text);cursor:pointer;transition:background .12s}.score-selector-scroll .score-group__list .preloaded-score-item:hover{background:var(--dialog-surface)}.score-selector-scroll .score-group__list .preloaded-score-item:active{background:var(--dialog-surface-hover)}.score-selector-file-row{padding:.75rem 1.25rem 1rem;border-top:1px solid var(--dialog-border);flex-shrink:0}.score-selector-file-btn{width:100%;padding:.6rem 1rem;background:var(--dialog-surface);border:1.5px dashed var(--dialog-surface-hover);border-radius:8px;color:var(--dialog-text);font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;text-align:center;transition:background .14s,border-color .14s}.score-selector-file-btn:hover{background:var(--dialog-surface-hover);border-color:var(--dialog-subtext)}.score-selector-file-btn:active{background:var(--dialog-surface-active)}.app{min-height:100vh;width:100%;background:#f5f5f5;display:flex;flex-direction:column}.app-header{position:relative;z-index:10;width:100%;box-sizing:border-box;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:12px 20px;text-align:center;box-shadow:0 2px 10px #0000001a;transition:background .3s ease,color .3s ease}.app-header h1{margin:0;font-size:2em;font-weight:600;transition:color .3s ease,font-family .1s,font-weight .1s}.app-slogan{margin:2px 0 0;font-size:.75em;font-weight:400;letter-spacing:.04em;opacity:.8}.app-header-brand{display:inline-flex;flex-direction:column;align-items:flex-start}.app-header-title-row{display:flex;align-items:center;gap:6px}.app-logo{height:2em;width:auto;flex-shrink:0}.app-title-initial{color:var(--ls-accent, #FF7043)}body[data-landing-theme] .app-header{background:var(--ls-navbar-bg);color:var(--ls-heading);box-shadow:0 2px 8px #00000014}body[data-landing-theme] .app-header h1{color:var(--ls-heading);font-family:var(--ls-font-heading);font-weight:var(--ls-heading-weight, 700)}body[data-landing-theme] .app-header a{color:var(--ls-accent)}body[data-landing-theme] .app-slogan{font-family:var(--ls-font-body);color:var(--ls-body)}.plugin-nav{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;align-items:center;margin-top:4px;padding-bottom:2px}.plugin-manage-btns{position:absolute;right:20px;top:12px;display:flex;gap:4px}.plugin-nav-entry{display:inline-flex;align-items:center;gap:4px;min-width:0;min-height:24px;padding:3px 8px;font-size:.75rem;font-weight:500;color:#e0e0ff;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:4px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.plugin-nav-entry:hover{background:#fff3}.plugin-nav-entry--active{background:#ffffffe6;color:#4a0080;font-weight:700;border-color:#ffffffe6}.plugin-nav-entry__badge{font-size:.65rem;opacity:.7}.plugin-manage-btn{position:absolute;right:8px;top:10px;min-height:24px;border:1px solid rgba(255,255,255,.35);border-radius:4px;background:#ffffff1f;color:#e0e0ff;font-size:.75rem;font-weight:500;cursor:pointer;padding:3px 8px;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.plugin-manage-btn:hover{background:#ffffff38;border-color:#ffffff8c}body[data-landing-theme] .plugin-nav-entry{color:var(--ls-body);background:color-mix(in srgb,var(--ls-heading) 8%,var(--ls-navbar-bg));border-color:color-mix(in srgb,var(--ls-heading) 18%,transparent);font-family:var(--ls-font-body)}body[data-landing-theme] .plugin-nav-entry:hover{background:color-mix(in srgb,var(--ls-heading) 16%,var(--ls-navbar-bg));border-color:color-mix(in srgb,var(--ls-heading) 32%,transparent)}body[data-landing-theme] .plugin-nav-entry--active{background:var(--ls-cta-bg);color:var(--ls-cta-text);border-color:var(--ls-cta-bg);font-weight:var(--ls-heading-weight, 700)}body[data-landing-theme] .plugin-manage-btn{color:var(--ls-body);background:color-mix(in srgb,var(--ls-heading) 8%,var(--ls-navbar-bg));border-color:color-mix(in srgb,var(--ls-heading) 25%,transparent);font-family:var(--ls-font-body)}body[data-landing-theme] .plugin-manage-btn:hover{background:color-mix(in srgb,var(--ls-heading) 16%,var(--ls-navbar-bg));border-color:var(--ls-heading);color:var(--ls-heading)}:root{--dialog-bg: #1e1e2e;--dialog-text: #cdd6f4;--dialog-border: #313244;--dialog-surface: #313244;--dialog-surface-hover: #45475a;--dialog-surface-active: #585b70;--dialog-subtext: #6c7086;--dialog-selected-bg: #45475a;--dialog-selected-text: #cba6f7;--dialog-success-text: #a6e3a1;--dialog-error-bg: rgba(243, 139, 168, .08);--dialog-error-border: rgba(243, 139, 168, .35);--dialog-error-text: #f38ba8;--dialog-spinner-track: #313244;--dialog-spinner-head: #b4befe;--dialog-danger-text: #f38ba8;--dialog-danger-bg: rgba(243, 139, 168, .12)}body[data-landing-theme]{--color-surface: var(--ls-bg);--color-surface-alt: var(--ls-navbar-bg);--color-border: rgba(0, 0, 0, .08);--color-text: var(--ls-heading);--color-text-secondary: var(--ls-body);--color-text-muted: var(--ls-body);--color-muted: var(--ls-body);--color-accent: var(--ls-cta-bg);--color-accent-dark: color-mix(in srgb, var(--ls-cta-bg) 75%, #000);--color-primary: var(--ls-cta-bg);--color-danger: var(--ls-accent);--color-danger-dark: color-mix(in srgb, var(--ls-accent) 75%, #000);--color-danger-bg: color-mix(in srgb, var(--ls-accent) 10%, var(--ls-bg));--color-success: var(--ls-success, #4caf50);--color-success-bg: color-mix(in srgb, var(--ls-success, #4caf50) 12%, var(--ls-bg, #fff));--color-warning: color-mix(in srgb, var(--ls-accent) 80%, #fff);--color-warning-dark: var(--ls-accent);--dialog-bg: var(--ls-bg);--dialog-text: var(--ls-heading);--dialog-border: color-mix(in srgb, var(--ls-heading) 15%, transparent);--dialog-surface: color-mix(in srgb, var(--ls-heading) 8%, var(--ls-bg));--dialog-surface-hover: color-mix(in srgb, var(--ls-heading) 14%, var(--ls-bg));--dialog-surface-active: color-mix(in srgb, var(--ls-heading) 22%, var(--ls-bg));--dialog-subtext: var(--ls-body);--dialog-selected-bg: var(--ls-cta-bg);--dialog-selected-text: var(--ls-cta-text);--dialog-success-text: color-mix(in srgb, var(--ls-cta-bg) 80%, #000);--dialog-error-bg: color-mix(in srgb, var(--ls-accent) 10%, var(--ls-bg));--dialog-error-border: color-mix(in srgb, var(--ls-accent) 40%, transparent);--dialog-error-text: var(--ls-accent);--dialog-spinner-track: color-mix(in srgb, var(--ls-heading) 15%, transparent);--dialog-spinner-head: var(--ls-cta-bg);--dialog-danger-text: var(--ls-accent);--dialog-danger-bg: color-mix(in srgb, var(--ls-accent) 10%, var(--ls-bg))}main{padding:20px;flex:1;min-height:0}.note-head.highlighted{fill:#4caf50!important;opacity:.85;stroke:#2e7d32;stroke-width:2;transition:fill .1s ease-in-out,opacity .1s ease-in-out}@media(prefers-contrast:high){.note-head.highlighted{fill:#0f0!important;opacity:1;stroke:#000;stroke-width:3}}@keyframes note-highlight-pulse{0%,to{opacity:.85}50%{opacity:.95}}.note-head.highlighted{animation:note-highlight-pulse 1s ease-in-out infinite}body.fullscreen-play .app-header{display:none}body.fullscreen-play main{padding:0}body.fullscreen-play .score-viewer{max-width:100%;padding:0}body.fullscreen-play{overflow:visible;touch-action:pan-x pan-y pinch-zoom;place-items:stretch;background-color:#fff}body.fullscreen-play .app{width:100%;background:#fff}body.fullscreen-play main{touch-action:pan-x pan-y pinch-zoom}body.fullscreen-play .score-viewer,body.fullscreen-play svg{touch-action:pan-x pan-y pinch-zoom}
