:root{--color-primary: #4f46e5;--color-primary-dark: #4338ca;--color-primary-light: #a5b4fc;--color-primary-bg: #eef2ff;--color-accent: #f59e0b;--color-accent-text: #b45309;--color-accent-light: #fef3c7;--color-success: #10b981;--color-success-light: #d1fae5;--color-success-dark: #047857;--color-danger: #ef4444;--color-danger-light: #fee2e2;--color-danger-dark: #b91c1c;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-secondary: #5f6e84;--color-text-muted: #5f738f;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.07), 0 2px 4px -2px rgba(0,0,0,.05);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.08), 0 4px 6px -4px rgba(0,0,0,.04);--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--sidebar-width: 280px}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:15px;line-height:1.6;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 var(--space-md);line-height:1.3;font-weight:700}h1{font-size:1.75rem}h2{font-size:1.35rem}h3{font-size:1.1rem}a{color:var(--color-primary);text-decoration:none;transition:color .15s}a:hover{color:var(--color-primary-dark)}p a:not([class]),li>a:not([class]){text-decoration:underline;text-underline-offset:.15em}button{font:inherit;cursor:pointer;border:none;border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);transition:all .15s}.app-shell{display:flex;min-height:100vh}.app-sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);overflow-y:auto;padding:var(--space-lg) 0;z-index:100;display:flex;flex-direction:column}.app-sidebar__logo{padding:0 var(--space-lg);margin-bottom:var(--space-xl);font-size:1.1rem;font-weight:800;color:var(--color-primary);display:flex;align-items:center;gap:var(--space-sm)}.app-sidebar__logo-icon{font-size:1.5rem}.app-main{margin-left:var(--sidebar-width);flex:1;padding:var(--space-xl) var(--space-2xl);max-width:900px}.app-nav{display:flex;flex-direction:column;gap:var(--space-xs);padding:0 var(--space-sm)}.app-nav a{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:.9rem;font-weight:500;transition:all .15s}.app-nav a:hover{background:var(--color-primary-bg);color:var(--color-primary)}.app-nav a[aria-current=page]{background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:600}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm)}.card--elevated{box-shadow:var(--shadow-md)}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);font-weight:600;font-size:.875rem}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-outline{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.btn-outline:hover{background:var(--color-bg);border-color:var(--color-primary-light)}.btn-success{background:var(--color-success-dark);color:#fff}.btn-success:hover{background:#065f46}.btn-danger{background:var(--color-danger-dark);color:#fff}.button-link{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;text-decoration:none;transition:background .15s}.button-link:hover{background:var(--color-primary-dark);color:#fff}.status-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.status-badge--not-started{background:var(--color-bg);color:var(--color-text-muted);border:1px solid var(--color-border)}.status-badge--in-progress{background:var(--color-accent-light);color:#92400e}.status-badge--completed{background:var(--color-success-light);color:var(--color-success-dark)}.progress-indicator{display:flex;flex-direction:column;gap:var(--space-xs);margin:var(--space-sm) 0 var(--space-md)}.progress-indicator--compact{margin:0;flex-direction:row;align-items:center;gap:var(--space-sm)}.progress-indicator__row{display:flex;align-items:center;gap:var(--space-sm)}.progress-indicator__label,.progress-indicator__percentage{font-size:.85rem;color:var(--color-text-secondary);font-weight:500}.progress-indicator__completed-badge{background:var(--color-success-dark);color:#fff;padding:2px 10px;border-radius:var(--radius-full);font-size:.75rem;font-weight:700}.progress-indicator__bar{width:100%;height:8px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-indicator--compact .progress-indicator__bar{width:60px;height:6px}.progress-indicator__fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));border-radius:var(--radius-full);transition:width .3s ease-out}.progress-indicator__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.metronome-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm);margin:var(--space-md) 0}.metronome-panel__bpm-form{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.metronome-panel__bpm-label{display:inline-flex;align-items:center;gap:var(--space-sm);font-weight:600;color:var(--color-text-secondary)}.metronome-panel__bpm-input{width:5rem;padding:var(--space-sm);font:inherit;font-size:1.1rem;font-weight:700;text-align:center;border:2px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color .15s}.metronome-panel__bpm-input:focus{outline:none;border-color:var(--color-primary)}.metronome-panel__controls{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.metronome-panel__controls button{background:var(--color-primary);color:#fff;font-weight:600;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm)}.metronome-panel__controls button:hover{background:var(--color-primary-dark)}.metronome-panel__beat-indicator{width:14px;height:14px;border-radius:50%;background:var(--color-border);margin-top:var(--space-sm);transition:background .1s}.metronome-panel__beat-indicator--running{background:var(--color-accent);box-shadow:0 0 8px var(--color-accent)}.metronome-panel__validation{color:var(--color-danger-dark);font-size:.8rem;margin-top:var(--space-xs)}.metronome-panel__audio-error{color:var(--color-danger-dark);font-size:.85rem}.metronome-panel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lesson-view__metronome-row{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:flex-start}.bpm-recent-display{font-size:.9rem;color:var(--color-text-secondary);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm);border:1px solid var(--color-border)}.goal-checklist{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-lg) 0;box-shadow:var(--shadow-sm)}.goal-checklist__heading{margin:0 0 var(--space-md);font-size:1.1rem;display:flex;align-items:center;gap:var(--space-sm)}.goal-checklist__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.goal-checklist__item{padding:var(--space-sm);border-radius:var(--radius-sm);transition:background .1s}.goal-checklist__item:hover{background:var(--color-bg)}.goal-checklist__row{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.goal-checklist__label{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;flex:1;min-width:0}.goal-checklist__label input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-success);cursor:pointer}.goal-checklist__description{font-size:.9rem}.goal-checklist__bpm-button{flex-shrink:0;padding:4px 12px;font-size:.78rem;font-weight:600;background:var(--color-primary-bg);color:var(--color-primary-dark);border:1px solid var(--color-primary-light);border-radius:var(--radius-full)}.goal-checklist__bpm-button:hover{background:var(--color-primary-light)}.goal-checklist__completed-at{margin-left:26px;font-size:.78rem;color:var(--color-success-dark)}.goal-checklist__item--focused{border-left:4px solid var(--color-primary);background:var(--color-primary-bg)}.goal-checklist__focus-button{flex-shrink:0;background:none;border:none;cursor:pointer;font-size:1.15rem;line-height:1;padding:2px;border-radius:var(--radius-sm)}.goal-checklist__focus-button:hover{background:var(--color-bg)}.focused-goal-banner{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;margin:var(--space-md) 0;padding:var(--space-sm) var(--space-md);background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-left:4px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.focused-goal-banner__label{flex-shrink:0;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary-dark)}.focused-goal-banner__text{flex:1 1 12rem;font-weight:600;min-width:0}.focused-goal-banner__bpm{flex-shrink:0;padding:4px 12px;font-size:.78rem;font-weight:600;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-full);cursor:pointer}.focused-goal-banner__bpm:hover{background:var(--color-primary-dark)}.lesson-progress-list__focus-marker{margin-right:4px}.notation-gallery__pages{display:flex;flex-direction:column;gap:var(--space-lg);margin:var(--space-md) 0}.notation-gallery__page{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);box-shadow:var(--shadow-sm)}.notation-gallery__page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.notation-gallery__page-caption{font-size:.85rem;color:var(--color-text-secondary);font-style:italic}.annotatable-image{margin:var(--space-sm) 0}.annotatable-image__toolbar{display:flex;gap:var(--space-md);margin-bottom:var(--space-sm);align-items:center;flex-wrap:wrap}.annotatable-image__group{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:2px;border-radius:var(--radius-sm);background:var(--color-bg)}.annotatable-image__tool{min-height:36px;padding:6px 12px;font-size:.82rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer}.annotatable-image__tool--active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary-dark);font-weight:600}.annotatable-image__tool:disabled{opacity:.4;cursor:not-allowed}.annotatable-image__swatch{width:28px;height:28px;border-radius:var(--radius-full);border:2px solid var(--color-border);cursor:pointer;padding:0}.annotatable-image__swatch--active{border-color:var(--color-text);box-shadow:0 0 0 2px var(--color-surface),0 0 0 4px var(--color-text)}.annotatable-image__zoom-level{font-size:.8rem;color:var(--color-text-secondary);min-width:3.2em;text-align:center}.annotatable-image__count{font-size:.75rem;color:var(--color-text-muted)}.annotatable-image__viewport{position:relative;width:100%;overflow:hidden;border-radius:var(--radius-sm);background:var(--color-bg)}.annotatable-image__stage{position:relative;width:100%;will-change:transform}.annotatable-image__img{display:block;width:100%;height:auto}.annotatable-image__canvas{position:absolute;top:0;left:0;touch-action:none}.annotatable-image__canvas[data-tool=pen],.annotatable-image__canvas[data-tool=highlighter]{cursor:crosshair}.annotatable-image__canvas[data-tool=eraser]{cursor:cell}.annotatable-image__canvas[data-tool=text]{cursor:text}.annotatable-image__canvas[data-tool=pan]{cursor:grab}.annotatable-image__text-input{position:absolute;z-index:2;font:600 18px system-ui,sans-serif;background:#ffffffe6;border:1px dashed var(--color-primary);border-radius:4px;padding:1px 4px;min-width:6rem}.lesson-notes{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-lg) 0;box-shadow:var(--shadow-sm)}.lesson-notes__heading{margin:0 0 var(--space-sm);font-size:1.1rem}.lesson-notes__textarea{width:100%;min-height:120px;padding:var(--space-md);font:inherit;font-size:.9rem;line-height:1.6;border:2px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;box-sizing:border-box;transition:border-color .15s}.lesson-notes__textarea:focus{outline:none;border-color:var(--color-primary)}.lesson-notes__status{margin:var(--space-xs) 0 0;font-size:.75rem;color:var(--color-success-dark)}.lesson-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.lesson-list__item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);transition:background .1s;flex-wrap:wrap}.lesson-list__item:hover{background:var(--color-bg)}.lesson-list__item a{font-weight:500}.method-book-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.method-book-list__item{padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:all .15s}.method-book-list__item:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary-light)}.method-book-list__item a{font-weight:600;font-size:1rem}.most-recent-lesson-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-md) 0;box-shadow:var(--shadow-md)}.most-recent-lesson-card__title{margin:0 0 var(--space-sm);font-size:1.2rem}.home-empty-state{display:flex;flex-direction:column;gap:var(--space-md);align-items:flex-start;padding:var(--space-xl);background:var(--color-primary-bg);border-radius:var(--radius-lg);border:1px dashed var(--color-primary-light)}.home-continue-link{margin-top:var(--space-md)}.home-continue-link a{font-weight:600}.status-summary,.goals-total-card,.bpm-total-card,.aggregated-bpm-chart,.lesson-link-list{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-md) 0;box-shadow:var(--shadow-sm)}.status-summary__heading,.goals-total-card__heading,.bpm-total-card__heading,.lesson-link-list__heading{margin:0 0 var(--space-md);font-size:1rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;font-weight:700;font-size:.8rem}.status-summary__list{display:flex;flex-wrap:wrap;gap:var(--space-xl)}.status-summary__row{display:flex;flex-direction:column}.status-summary__count{font-size:2rem;font-weight:800;color:var(--color-text);margin:0}.status-summary__label{font-size:.8rem;color:var(--color-text-secondary);margin:0}.status-summary__total{margin:var(--space-md) 0 0;font-size:.85rem;color:var(--color-text-muted)}.goals-total-card__summary,.bpm-total-card__summary{margin:0 0 var(--space-sm);font-size:.95rem}.goals-total-card__bar{width:100%;height:8px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.goals-total-card__fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));transition:width .3s}.lesson-link-list__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.lesson-link-list__item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;flex-wrap:wrap}.continue-view__lede{margin:0 0 var(--space-lg);color:var(--color-text-secondary);max-width:60ch}.continue-view__section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-md) 0;box-shadow:var(--shadow-sm)}.continue-view__section h2{margin:0 0 var(--space-xs);font-size:1.1rem}.continue-view__count{color:var(--color-text-muted);font-weight:500}.continue-view__hint{margin:0 0 var(--space-md);font-size:.85rem;color:var(--color-text-muted)}.lesson-progress-list__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.lesson-progress-list__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border);flex-wrap:wrap}.lesson-progress-list__item:last-child{border-bottom:none}.lesson-progress-list__link{display:flex;flex-direction:column;gap:2px;text-decoration:none;flex:1 1 14rem;min-width:0}.lesson-progress-list__book{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.lesson-progress-list__title{font-weight:600;color:var(--color-text)}.lesson-progress-list__empty{margin:0;font-size:.9rem;color:var(--color-text-muted)}.toaster{position:fixed;bottom:var(--space-lg);right:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);z-index:2000;max-width:380px}.toaster__toast{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);background:var(--color-text);color:#fff;box-shadow:var(--shadow-lg);animation:slideIn .2s ease-out}.toaster__toast--error{background:var(--color-danger)}.toaster__message{flex:1;font-size:.9rem}.toaster__close{padding:0;font-size:1.2rem;color:inherit;background:transparent;border:0;opacity:.7}.toaster__close:hover{opacity:1}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.loading-screen,.manifest-load-error-screen{max-width:480px;margin:6rem auto;padding:var(--space-xl);text-align:center}.manifest-load-error-screen__detail{margin:var(--space-md) 0;color:var(--color-danger-dark);word-break:break-word;font-size:.85rem}.delete-confirm-dialog__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:1500}.delete-confirm-dialog{background:var(--color-surface);padding:var(--space-xl);border-radius:var(--radius-lg);max-width:400px;width:calc(100% - 2rem);box-shadow:var(--shadow-lg)}.delete-confirm-dialog__title{margin:0 0 var(--space-sm)}.delete-confirm-dialog__message{margin:0 0 var(--space-lg);color:var(--color-text-secondary)}.delete-confirm-dialog__actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.delete-confirm-dialog__cancel{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text)}.delete-confirm-dialog__confirm{background:var(--color-danger-dark);color:#fff}.bpm-record-list{list-style:none;margin:var(--space-md) 0;padding:0}.bpm-record-list__item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);flex-wrap:wrap}.bpm-record-list__item:last-child{border-bottom:none}.bpm-record-list__bpm{font-weight:700;font-size:1rem;color:var(--color-primary-dark)}.bpm-record-list__source,.bpm-record-list__duration{font-size:.8rem;color:var(--color-text-muted)}.bpm-record-list__timestamp{font-size:.8rem;color:var(--color-text-secondary)}.bpm-record-list__delete{margin-left:auto;background:transparent;color:var(--color-danger-dark);border:1px solid var(--color-danger-light);font-size:.78rem;padding:2px 8px;border-radius:var(--radius-sm)}.bpm-record-list__delete:hover{background:var(--color-danger-light)}.bpm-history-chart,.aggregated-bpm-chart{margin:var(--space-md) 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.demo-player{margin:var(--space-md) 0}.demo-player__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.demo-player__title{font-size:.95rem;margin:0 0 var(--space-xs)}.demo-player__error{padding:var(--space-sm);background:var(--color-danger-light);border-radius:var(--radius-sm);font-size:.85rem}.resource-list{margin:var(--space-md) 0}.resource-list__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.resource-list__item a{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem;transition:all .15s}.resource-list__item a:hover{border-color:var(--color-primary-light);background:var(--color-primary-bg)}.course-nav{display:flex;flex-direction:column;padding:0 var(--space-sm)}.course-nav__back{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);font-size:.85rem;font-weight:600;color:var(--color-primary);border-radius:var(--radius-sm);transition:background .15s}.course-nav__back:hover{background:var(--color-primary-bg)}.course-nav__title{padding:0 var(--space-md);margin:0 0 var(--space-md);font-size:.85rem;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;line-height:1.4}.course-nav__lessons{display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1}.course-nav__lesson{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:.82rem;color:var(--color-text-secondary);text-decoration:none;transition:all .1s;line-height:1.3}.course-nav__lesson:hover{background:var(--color-bg);color:var(--color-text)}.course-nav__lesson--active{background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:600}.course-nav__lesson-number{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;background:var(--color-border);color:var(--color-text);border-radius:50%}.course-nav__lesson--active .course-nav__lesson-number{background:var(--color-primary);color:#fff}.course-nav__lesson-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-nav__lesson-progress{flex-shrink:0;font-size:.7rem;font-weight:600;color:var(--color-primary)}.course-nav__lesson-check{flex-shrink:0;font-size:.75rem;color:var(--color-success-dark);font-weight:700}.app-sidebar__spacer{flex:1}.user-menu{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-border);margin-top:var(--space-md)}.user-menu__sign-in{width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-primary);color:#fff;font-weight:600;font-size:.85rem;border-radius:var(--radius-sm);text-align:center}.user-menu__sign-in:hover{background:var(--color-primary-dark)}.user-menu__hint{margin:var(--space-sm) 0 0;font-size:.75rem;color:var(--color-text-secondary);line-height:1.4}.user-menu__info{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.user-menu__avatar{width:28px;height:28px;border-radius:50%}.user-menu__name{font-size:.82rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu__sync-status{display:block;font-size:.75rem;color:var(--color-success-dark);margin-bottom:var(--space-sm)}.user-menu__sign-out{width:100%;padding:4px var(--space-sm);background:transparent;border:1px solid var(--color-border);color:var(--color-text-secondary);font-size:.78rem;border-radius:var(--radius-sm);text-align:center}.user-menu__sign-out:hover{background:var(--color-bg)}.user-menu__loading{font-size:.8rem;color:var(--color-text-muted)}.home-landing{text-align:center;padding:var(--space-2xl) 0}.home-landing__title{font-size:2.2rem;margin-bottom:var(--space-sm)}.home-landing__subtitle{font-size:1.1rem;color:var(--color-text-secondary);max-width:500px;margin:0 auto var(--space-2xl);line-height:1.6}.home-landing__features{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-lg);margin-bottom:var(--space-2xl);text-align:left}.home-landing__feature{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm)}.home-landing__feature h3{margin:var(--space-sm) 0 var(--space-xs);font-size:1rem}.home-landing__feature p{margin:0;font-size:.85rem;color:var(--color-text-secondary);line-height:1.5}.home-landing__feature-icon{font-size:1.5rem}.home-landing__actions{display:flex;gap:var(--space-md);justify-content:center;flex-wrap:wrap}.home-landing__sign-in{padding:var(--space-md) var(--space-xl);font-size:1rem}.auth-gate{text-align:center;padding:var(--space-2xl);max-width:400px;margin:var(--space-2xl) auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.auth-gate h2{margin-bottom:var(--space-md)}.auth-gate p{color:var(--color-text-secondary);margin-bottom:var(--space-lg);line-height:1.5}.auth-gate__guest-hint{margin-top:var(--space-sm);font-size:.78rem;color:var(--color-text-muted)}.adv-metronome{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-md) 0;box-shadow:var(--shadow-sm)}.adv-metronome__bpm-section{display:flex;align-items:center;justify-content:center;gap:var(--space-md);margin-bottom:var(--space-lg)}.adv-metronome__bpm-btn{width:40px;height:40px;border-radius:50%;background:var(--color-bg);border:2px solid var(--color-border);font-size:1.3rem;font-weight:700;display:flex;align-items:center;justify-content:center;color:var(--color-text)}.adv-metronome__bpm-form{display:flex;align-items:baseline;gap:var(--space-xs)}.adv-metronome__bpm-input{width:80px;font-size:2rem;font-weight:800;text-align:center;border:none;border-bottom:3px solid var(--color-primary);background:transparent;color:var(--color-text);padding:0}.adv-metronome__bpm-label{font-size:.9rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase}.adv-metronome__pattern{display:flex;gap:var(--space-sm);justify-content:center;flex-wrap:wrap;margin-bottom:var(--space-xs)}.adv-metronome__beat{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;transition:all .1s;border:2px solid transparent}.adv-metronome__beat--accent{background:var(--color-primary);color:#fff;border-color:var(--color-primary-dark)}.adv-metronome__beat--normal{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.adv-metronome__beat--mute{background:transparent;color:var(--color-text-muted);border-color:var(--color-border);border-style:dashed}.adv-metronome__beat--active{transform:scale(1.3);box-shadow:0 0 12px var(--color-accent);border-color:var(--color-accent)!important}.adv-metronome__pattern-hint{text-align:center;font-size:.75rem;color:var(--color-text-muted);margin:var(--space-xs) 0 var(--space-md)}.adv-metronome__muted-text{color:var(--color-text-muted);text-decoration:line-through}.adv-metronome__row{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);flex-wrap:wrap}.adv-metronome__row-label{font-size:.8rem;font-weight:600;color:var(--color-text-secondary);min-width:80px}.adv-metronome__chips{display:flex;gap:4px;flex-wrap:wrap}.adv-metronome__chip{padding:4px 10px;font-size:.75rem;font-weight:500;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-full);color:var(--color-text-secondary)}.adv-metronome__chip:hover{border-color:var(--color-primary-light);color:var(--color-primary)}.adv-metronome__chip--active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary-dark);font-weight:700}.adv-metronome__controls{display:flex;gap:var(--space-md);margin-top:var(--space-lg);justify-content:center}.adv-metronome__start-btn{padding:var(--space-md) var(--space-2xl);font-size:1rem;font-weight:700;background:var(--color-success-dark);color:#fff;border-radius:var(--radius-full)}.adv-metronome__save-btn{padding:var(--space-sm) var(--space-lg);font-size:.85rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary)}.adv-metronome__save-btn:hover{border-color:var(--color-primary-light);color:var(--color-primary)}@media (max-width: 768px){:root{--sidebar-width: 0px}.app-sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;height:auto;border-right:none;border-top:1px solid var(--color-border);padding:0;flex-direction:row;overflow:visible;z-index:200;background:var(--color-surface);box-shadow:0 -2px 8px #0000000f}.app-sidebar__logo,.app-sidebar__spacer,.user-menu{display:none}.app-nav{flex-direction:row;justify-content:space-around;padding:var(--space-sm) 0;gap:0;width:100%}.app-nav a{flex-direction:column;align-items:center;gap:2px;padding:var(--space-xs) var(--space-sm);font-size:.7rem;text-align:center}.course-nav{flex-direction:row;align-items:center;padding:var(--space-sm);overflow-x:auto;gap:var(--space-sm)}.course-nav__back{margin-bottom:0;white-space:nowrap;font-size:.75rem;padding:var(--space-xs) var(--space-sm)}.course-nav__title{display:none}.course-nav__lessons{flex-direction:row;overflow-x:auto;gap:var(--space-xs);flex:1}.course-nav__lesson{white-space:nowrap;padding:var(--space-xs) var(--space-sm);font-size:.72rem;min-width:fit-content}.course-nav__lesson-title{max-width:80px}.app-main{margin-left:0;padding:var(--space-md);padding-bottom:80px;max-width:100%}h1{font-size:1.4rem}h2{font-size:1.15rem}.home-landing{padding:var(--space-lg) 0}.home-landing__title{font-size:1.6rem}.home-landing__subtitle{font-size:.95rem}.home-landing__features{grid-template-columns:1fr 1fr;gap:var(--space-md)}.home-landing__feature{padding:var(--space-md)}.home-landing__actions{flex-direction:column;align-items:stretch}.home-landing__sign-in,.adv-metronome{padding:var(--space-md)}.adv-metronome__bpm-input{font-size:1.6rem;width:70px}.adv-metronome__bpm-btn{width:36px;height:36px;font-size:1.1rem}.adv-metronome__pattern{gap:6px}.adv-metronome__beat{width:32px;height:32px;font-size:.75rem}.adv-metronome__row{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.adv-metronome__row-label{min-width:auto}.adv-metronome__chips{flex-wrap:wrap}.adv-metronome__controls{flex-direction:column;align-items:stretch}.adv-metronome__start-btn,.goal-checklist{padding:var(--space-md)}.goal-checklist__row{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.goal-checklist__bpm-button{margin-left:26px}.notation-gallery__page{padding:var(--space-sm)}.card{padding:var(--space-md)}.status-summary__list{gap:var(--space-md)}.status-summary__count{font-size:1.5rem}.method-book-list__item{padding:var(--space-md)}.lesson-list__item{padding:var(--space-sm);gap:var(--space-sm)}.bpm-record-list__item{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.bpm-record-list__delete{margin-left:0}.delete-confirm-dialog{margin:var(--space-md);max-width:calc(100vw - 2rem)}.auth-gate{margin:var(--space-lg) auto;padding:var(--space-lg)}.toaster{bottom:70px;right:var(--space-sm);left:var(--space-sm);max-width:none}.lesson-notes{padding:var(--space-md)}.lesson-notes__textarea{min-height:100px}}@media (max-width: 400px){.home-landing__features{grid-template-columns:1fr}.adv-metronome__beat{width:28px;height:28px;font-size:.7rem}.adv-metronome__chip{font-size:.68rem;padding:3px 8px}}.custom-goals{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-lg) 0;box-shadow:var(--shadow-sm)}.custom-goals__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md)}.custom-goals__heading{margin:0;font-size:1rem;display:flex;align-items:center;gap:var(--space-sm)}.custom-goals__count{font-size:.8rem;font-weight:600;color:var(--color-primary);background:var(--color-primary-bg);padding:2px 8px;border-radius:var(--radius-full)}.custom-goals__add-btn{padding:var(--space-xs) var(--space-md);font-size:.8rem;font-weight:600;background:var(--color-primary-bg);color:var(--color-primary-dark);border:1px solid var(--color-primary-light);border-radius:var(--radius-full)}.custom-goals__add-btn:hover{background:var(--color-primary-light)}.custom-goals__form{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md);padding:var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm)}.custom-goals__input{width:100%;padding:var(--space-sm) var(--space-md);font:inherit;font-size:.9rem;border:2px solid var(--color-border);border-radius:var(--radius-sm);box-sizing:border-box}.custom-goals__input:focus{outline:none;border-color:var(--color-primary)}.custom-goals__bpm-input{width:160px;padding:var(--space-sm) var(--space-md);font:inherit;font-size:.85rem;border:2px solid var(--color-border);border-radius:var(--radius-sm)}.custom-goals__bpm-input:focus{outline:none;border-color:var(--color-primary)}.custom-goals__form-actions{display:flex;gap:var(--space-sm)}.custom-goals__save,.custom-goals__cancel{padding:var(--space-xs) var(--space-md);font-size:.85rem}.custom-goals__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.custom-goals__item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-sm);transition:background .1s}.custom-goals__item:hover{background:var(--color-bg)}.custom-goals__item--done .custom-goals__text{text-decoration:line-through;color:var(--color-text-muted)}.custom-goals__label{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;flex:1;min-width:0}.custom-goals__label input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-success);cursor:pointer;flex-shrink:0}.custom-goals__text{font-size:.9rem}.custom-goals__bpm-badge{flex-shrink:0;font-size:.72rem;font-weight:600;padding:2px 8px;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:var(--radius-full)}.custom-goals__delete{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:var(--color-text-muted);background:transparent;border:none;border-radius:50%;padding:0}.custom-goals__delete:hover{color:var(--color-danger-dark);background:var(--color-danger-light)}.custom-goals__empty{font-size:.85rem;color:var(--color-text-muted);margin:0}.adv-metronome--fixed{position:fixed;top:var(--space-lg);right:var(--space-lg);z-index:150;width:220px;box-shadow:var(--shadow-lg);margin:0}.adv-metronome{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);box-shadow:var(--shadow-sm)}.adv-metronome__sticky-bar{display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap}.adv-metronome__dots{display:flex;gap:3px;align-items:center;margin:0 var(--space-xs)}.adv-metronome__dot{width:8px;height:8px;border-radius:50%;transition:all .1s}.adv-metronome__dot--accent{background:var(--color-primary)}.adv-metronome__dot--normal{background:var(--color-border)}.adv-metronome__dot--mute{background:transparent;border:1px dashed var(--color-border)}.adv-metronome__dot--active{transform:scale(1.6);box-shadow:0 0 6px var(--color-accent);background:var(--color-accent)!important}.adv-metronome__timer{font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-success-dark);background:var(--color-success-light);padding:1px 6px;border-radius:var(--radius-full)}.adv-metronome__toggle{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:.6rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:50%;color:var(--color-text-muted);margin-left:auto;flex-shrink:0}.adv-metronome__toggle:hover{color:var(--color-primary);border-color:var(--color-primary-light)}.adv-metronome__expanded{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border)}.adv-metronome__bpm-section{display:none}.adv-metronome__bpm-input{width:45px;font-size:1.1rem;font-weight:800;text-align:center;border:none;border-bottom:2px solid var(--color-primary);background:transparent;color:var(--color-text);padding:0}.adv-metronome__bpm-input:focus{outline:none;border-bottom-color:var(--color-primary-dark)}.adv-metronome__bpm-label{font-size:.65rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase}.adv-metronome__bpm-form{display:flex;align-items:baseline;gap:2px}.adv-metronome__bpm-btn{width:26px;height:26px;border-radius:50%;background:var(--color-bg);border:1px solid var(--color-border);font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;color:var(--color-text);padding:0}.adv-metronome__bpm-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.adv-metronome__start-btn{width:30px;height:30px;border-radius:50%;font-size:.8rem;font-weight:700;background:var(--color-success-dark);color:#fff;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0}.adv-metronome__start-btn:hover{background:#065f46}.adv-metronome__start-btn--running{background:var(--color-danger)}.adv-metronome__start-btn--running:hover{background:#991b1b}@media (max-width: 768px){.adv-metronome--fixed{top:auto;bottom:70px;right:var(--space-sm);width:200px}}.warmup-view__header{margin-bottom:var(--space-lg)}.warmup-view__header h1{margin-bottom:var(--space-xs)}.warmup-view__subtitle{color:var(--color-text-secondary);margin:0}.warmup-view__tabs{display:flex;gap:var(--space-xs);margin-bottom:var(--space-xl);border-bottom:2px solid var(--color-border);padding-bottom:var(--space-xs)}.warmup-view__tab{padding:var(--space-sm) var(--space-md);background:transparent;color:var(--color-text-secondary);font-weight:500;font-size:.9rem;border-radius:var(--radius-sm) var(--radius-sm) 0 0;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.warmup-view__tab:hover{color:var(--color-primary);background:var(--color-primary-bg)}.warmup-view__tab--active{color:var(--color-primary-dark);border-bottom-color:var(--color-primary);font-weight:600}.warmup-daily__streak{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);padding:var(--space-md) var(--space-lg);background:linear-gradient(135deg,#fef3c7,#fed7aa);border-radius:var(--radius-md)}.warmup-daily__streak-icon{font-size:1.5rem}.warmup-daily__streak-count{font-weight:700;font-size:1.1rem;color:#92400e}.warmup-daily__today-badge{margin-left:auto;padding:2px 10px;background:var(--color-success-dark);color:#fff;border-radius:var(--radius-full);font-size:.78rem;font-weight:600}.warmup-daily__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.warmup-daily__empty{text-align:center;padding:var(--space-2xl);color:var(--color-text-secondary);background:var(--color-bg);border-radius:var(--radius-md);border:1px dashed var(--color-border)}.exercise-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;transition:all .15s;box-shadow:var(--shadow-sm)}.exercise-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary-light)}.exercise-card--completed{border-color:var(--color-success-light);background:linear-gradient(135deg,var(--color-surface),var(--color-success-light))}.exercise-card__header{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);cursor:pointer}.exercise-card__number{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:50%;font-size:.8rem;font-weight:700;flex-shrink:0}.exercise-card--completed .exercise-card__number{background:var(--color-success-dark);color:#fff}.exercise-card__info{flex:1;min-width:0}.exercise-card__title{margin:0 0 var(--space-xs);font-size:.95rem;font-weight:600}.exercise-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-sm);font-size:.75rem}.exercise-card__category{padding:1px 8px;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:var(--radius-full);font-weight:500}.exercise-card__level{padding:1px 8px;background:var(--color-bg);color:var(--color-text-secondary);border-radius:var(--radius-full);font-weight:500;text-transform:capitalize}.exercise-card__duration{color:var(--color-text-muted)}.exercise-card__bpm{color:var(--color-accent-text);font-weight:600}.exercise-card__status{flex-shrink:0}.exercise-card__check{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--color-success-dark);color:#fff;border-radius:50%;font-size:.85rem;font-weight:700}.exercise-card__body{padding:0 var(--space-lg) var(--space-lg);border-top:1px solid var(--color-border);margin-top:0;padding-top:var(--space-md)}.exercise-card__instructions{font-size:.88rem;line-height:1.7;color:var(--color-text-secondary);white-space:pre-wrap}.exercise-card__instructions p{margin:0 0 var(--space-xs)}.exercise-card__bpm-history{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm);font-size:.82rem;color:var(--color-primary-dark);font-weight:500}.exercise-card__mastery-info{margin-top:var(--space-sm);font-size:.78rem;color:var(--color-text-muted)}.exercise-card__complete-btn{margin-top:var(--space-md)}.complete-form{margin-top:var(--space-md);padding:var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:var(--space-md)}.complete-form__field label{display:block;font-size:.82rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--space-xs)}.complete-form__field input{width:100px;padding:var(--space-sm);font:inherit;border:2px solid var(--color-border);border-radius:var(--radius-sm)}.complete-form__field input:focus{outline:none;border-color:var(--color-primary)}.complete-form__ratings{display:flex;gap:var(--space-sm)}.complete-form__rating{padding:var(--space-sm) var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.82rem;transition:all .15s}.complete-form__rating:hover{border-color:var(--color-primary-light)}.complete-form__rating--active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary-dark);font-weight:600}.warmup-browse__filters{display:flex;gap:var(--space-md);margin-bottom:var(--space-md);flex-wrap:wrap}.warmup-browse__filter-group{display:flex;flex-direction:column;gap:var(--space-xs)}.warmup-browse__filter-group label{font-size:.78rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.warmup-browse__filter-group select{padding:var(--space-sm) var(--space-md);font:inherit;font-size:.88rem;border:2px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer}.warmup-browse__filter-group select:focus{outline:none;border-color:var(--color-primary)}.warmup-browse__count{font-size:.85rem;color:var(--color-text-muted);margin-bottom:var(--space-md)}.warmup-browse__list{display:flex;flex-direction:column;gap:var(--space-md)}.warmup-progress__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-md);margin-bottom:var(--space-xl)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);text-align:center;box-shadow:var(--shadow-sm)}.stat-card__value{display:block;font-size:1.5rem;font-weight:800;color:var(--color-primary-dark);margin-bottom:var(--space-xs)}.stat-card__label{font-size:.78rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;font-weight:600}.warmup-progress__categories{display:flex;flex-direction:column;gap:var(--space-md)}.category-progress-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-sm)}.category-progress-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-sm)}.category-progress-card__header h3{margin:0;font-size:.95rem}.category-progress-card__level{padding:2px 10px;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:var(--radius-full);font-size:.72rem;font-weight:600;text-transform:capitalize}.category-progress-card__bar{width:100%;height:8px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-xs)}.category-progress-card__fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));border-radius:var(--radius-full);transition:width .3s ease-out}.category-progress-card__detail{font-size:.78rem;color:var(--color-text-muted)}.mastery-badge{font-size:1.2rem}.exercise-card__notation{margin-top:var(--space-lg)}.exercise-card__notation-heading{font-size:.9rem;font-weight:700;color:var(--color-text-secondary);margin:0 0 var(--space-sm)}.exercise-card__notation-images{display:flex;flex-direction:column;gap:var(--space-md)}.exercise-card__notation-figure{margin:0;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-sm);overflow:hidden}.exercise-card__notation-img{width:100%;height:auto;display:block;border-radius:var(--radius-sm)}.exercise-card__notation-caption{margin-top:var(--space-xs);font-size:.78rem;color:var(--color-text-muted);font-style:italic;text-align:center}.exercise-card__metronome{margin-top:var(--space-lg);padding:var(--space-md);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md)}.exercise-card__metronome-heading{font-size:.9rem;font-weight:700;color:var(--color-text-secondary);margin:0 0 var(--space-sm);display:flex;align-items:baseline;gap:var(--space-sm);flex-wrap:wrap}.exercise-card__metronome-preset{font-size:.75rem;font-weight:500;color:var(--color-primary)}.exercise-card__bpm-targets{display:flex;gap:var(--space-md);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border);font-size:.75rem;color:var(--color-text-muted)}.exercise-card__bpm-target--current{color:var(--color-primary-dark);font-weight:700}.theory-panel{margin:var(--space-lg) 0;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #fbbf24;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.theory-panel__toggle{width:100%;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:transparent;border:none;text-align:left;cursor:pointer;transition:background .15s}.theory-panel__toggle:hover{background:#ffffff4d}.theory-panel__toggle-icon{font-size:.9rem;color:#92400e;font-weight:700}.theory-panel__toggle-label{font-weight:700;font-size:1rem;color:#78350f}.theory-panel__toggle-hint{margin-left:auto;font-size:.82rem;color:#92400e;font-weight:500}.theory-panel__body{padding:var(--space-lg);background:var(--color-surface);border-top:1px solid #fbbf24}.theory-panel__content{font-size:.95rem;line-height:1.7}.theory-panel__content h2{margin-top:var(--space-xl);color:var(--color-primary-dark);border-bottom:2px solid var(--color-primary-bg);padding-bottom:var(--space-xs)}.theory-panel__content h3{margin-top:var(--space-lg);color:var(--color-text);font-size:1.05rem}.theory-panel__content h4{margin-top:var(--space-md);color:var(--color-primary-dark);font-size:.95rem}.theory-panel__content code{background:var(--color-primary-bg);color:var(--color-primary-dark);padding:1px 6px;border-radius:3px;font-size:.88em;font-family:var(--font-mono)}.theory-panel__content pre{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-md);overflow-x:auto;font-size:.85rem;line-height:1.5}.theory-panel__content pre code{background:transparent;padding:0;color:var(--color-text)}.theory-panel__content blockquote{margin:var(--space-md) 0;padding:var(--space-sm) var(--space-md);background:var(--color-accent-light);border-left:4px solid var(--color-accent);color:#78350f;border-radius:0 var(--radius-sm) var(--radius-sm) 0}.theory-panel__content table{width:100%;border-collapse:collapse;margin:var(--space-md) 0;font-size:.9rem}.theory-panel__content th,.theory-panel__content td{border:1px solid var(--color-border);padding:var(--space-xs) var(--space-sm);text-align:left}.theory-panel__content th{background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:700}.quiz-panel{margin:var(--space-lg) 0;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border:1px solid #60a5fa;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.quiz-panel__toggle{width:100%;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:transparent;border:none;text-align:left;cursor:pointer;transition:background .15s}.quiz-panel__toggle:hover{background:#ffffff4d}.quiz-panel__toggle-icon{font-size:.9rem;color:#1e40af;font-weight:700}.quiz-panel__toggle-label{font-weight:700;font-size:1rem;color:#1e3a8a}.quiz-panel__toggle-hint{margin-left:auto;font-size:.82rem;color:#1e40af;font-weight:600}.quiz-panel__body{padding:var(--space-lg);background:var(--color-surface);border-top:1px solid #60a5fa}.quiz-panel__description{color:var(--color-text-secondary);margin:0 0 var(--space-md);font-size:.9rem}.quiz-panel__topics{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm)}.quiz-panel__topics-label{font-size:.78rem;font-weight:700;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.quiz-panel__topic-chip{padding:2px 10px;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.quiz-panel__score{padding:var(--space-md);margin-bottom:var(--space-md);border-radius:var(--radius-sm);font-size:1rem;text-align:center}.quiz-panel__score--good{background:var(--color-success-light);color:var(--color-success-dark);border:1px solid var(--color-success)}.quiz-panel__score--ok{background:var(--color-accent-light);color:#92400e;border:1px solid var(--color-accent)}.quiz-panel__score--poor{background:var(--color-danger-light);color:#991b1b;border:1px solid var(--color-danger)}.quiz-panel__questions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-lg)}.quiz-panel__actions{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.quiz-panel__progress-text{font-size:.85rem;color:var(--color-text-secondary)}.quiz-question{padding:var(--space-md);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius-md);transition:all .2s}.quiz-question--correct{border-color:var(--color-success);background:var(--color-success-light)}.quiz-question--incorrect{border-color:var(--color-danger);background:var(--color-danger-light)}.quiz-question__header{display:flex;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-sm)}.quiz-question__number{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--color-primary);color:#fff;border-radius:50%;font-size:.82rem;font-weight:700}.quiz-question--correct .quiz-question__number{background:var(--color-success)}.quiz-question--incorrect .quiz-question__number{background:var(--color-danger)}.quiz-question__prompt{flex:1}.quiz-question__topic{display:inline-block;padding:1px 8px;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:var(--radius-full);font-size:.7rem;font-weight:600;margin-bottom:var(--space-xs);text-transform:uppercase;letter-spacing:.03em}.quiz-question__text{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);line-height:1.5}.quiz-question__result-icon{flex-shrink:0;font-size:1.3rem;font-weight:900}.quiz-question--correct .quiz-question__result-icon{color:var(--color-success-dark)}.quiz-question--incorrect .quiz-question__result-icon{color:var(--color-danger-dark)}.quiz-question__choices{display:flex;flex-direction:column;gap:var(--space-xs)}.quiz-choice{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.quiz-choice:hover:not(.quiz-choice--submitted){border-color:var(--color-primary-light);background:var(--color-primary-bg)}.quiz-choice--selected{border-color:var(--color-primary);background:var(--color-primary-bg)}.quiz-choice--submitted{cursor:default}.quiz-choice--correct{border-color:var(--color-success);background:var(--color-success-light)}.quiz-choice--wrong{border-color:var(--color-danger);background:var(--color-danger-light)}.quiz-choice input[type=radio]{display:none}.quiz-choice__letter{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--color-bg);border:2px solid var(--color-border);border-radius:50%;font-size:.8rem;font-weight:700;color:var(--color-text-secondary)}.quiz-choice--selected .quiz-choice__letter{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.quiz-choice--correct .quiz-choice__letter{background:var(--color-success-dark);color:#fff;border-color:var(--color-success)}.quiz-choice--wrong .quiz-choice__letter{background:var(--color-danger-dark);color:#fff;border-color:var(--color-danger)}.quiz-choice__text{flex:1;font-size:.9rem}.quiz-choice__badge{flex-shrink:0;padding:2px 10px;background:var(--color-success-dark);color:#fff;border-radius:var(--radius-full);font-size:.72rem;font-weight:700}.quiz-choice__badge--wrong{background:var(--color-danger)}.quiz-question__explanation{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-primary-bg);border-left:4px solid var(--color-primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:.88rem;line-height:1.6;color:var(--color-text)}.tools-view__header{margin-bottom:var(--space-xl)}.tools-view__subtitle{color:var(--color-text-secondary);margin:0}.tools-view__back{display:inline-flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-md);padding:var(--space-xs) var(--space-md);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:.85rem;cursor:pointer;transition:all .15s}.tools-view__back:hover{background:var(--color-primary-bg);color:var(--color-primary);border-color:var(--color-primary-light)}.tools-view__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-md);margin-bottom:var(--space-2xl)}.tool-card{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s;font:inherit;color:inherit;width:100%}.tool-card:hover:not(.tool-card--disabled){border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.tool-card--disabled{opacity:.5;cursor:not-allowed}.tool-card__emoji{font-size:2.5rem;margin-bottom:var(--space-sm)}.tool-card__title{margin:0;font-size:1.1rem;font-weight:700}.tool-card__technique{margin:var(--space-xs) 0 var(--space-sm);padding:2px 10px;background:var(--color-primary-bg);color:var(--color-primary-dark);border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.tool-card__description{margin:0 0 var(--space-md);color:var(--color-text-secondary);font-size:.88rem;line-height:1.5}.tool-card__cta{margin-top:auto;color:var(--color-primary-dark);font-weight:600;font-size:.85rem}.tool-card__status{margin-top:auto;color:var(--color-text-muted);font-size:.85rem;font-style:italic}.tools-view__intro{background:var(--color-bg);padding:var(--space-lg) var(--space-xl);border-radius:var(--radius-md);border-left:4px solid var(--color-primary)}.tools-view__intro h2{margin-top:0;font-size:1.05rem;color:var(--color-primary-dark)}.tools-view__intro p{color:var(--color-text-secondary);font-size:.9rem;line-height:1.6;margin:var(--space-sm) 0 0}.scales-view__header{margin-bottom:var(--space-lg)}.scales-view__subtitle{color:var(--color-text-secondary);margin:0;max-width:60ch}.scales-view__tabs{display:flex;gap:var(--space-xs);margin-bottom:var(--space-xl);border-bottom:2px solid var(--color-border);padding-bottom:var(--space-xs)}.scales-view__tab{padding:var(--space-sm) var(--space-md);background:transparent;color:var(--color-text-secondary);font-weight:500;font-size:.9rem;border-radius:var(--radius-sm) var(--radius-sm) 0 0;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:all .15s}.scales-view__tab:hover{color:var(--color-primary);background:var(--color-primary-bg)}.scales-view__tab--active{color:var(--color-primary-dark);border-bottom-color:var(--color-primary);font-weight:600}.scales-list{list-style:none;margin:0 0 var(--space-xl);padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.scales-methods__intro{color:var(--color-text-secondary);font-size:.9rem;line-height:1.6;margin:0 0 var(--space-md);max-width:62ch}.scale-card{background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-sm)}.scale-card--beginner{border-left-color:var(--color-success)}.scale-card--intermediate{border-left-color:var(--color-primary)}.scale-card--advanced{border-left-color:#b45309}.scale-card--method{border-left-color:var(--color-primary)}.scale-card__header{display:flex;align-items:center;gap:var(--space-md);width:100%;background:none;border:none;padding:0;cursor:pointer;text-align:left}.scale-card__number{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-full);background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:700}.scale-card__heading{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.scale-card__title{font-weight:600;font-size:1.05rem}.scale-card__meta{display:flex;align-items:center;gap:var(--space-sm);font-size:.78rem;color:var(--color-text-muted)}.scale-card__level{padding:1px 8px;border-radius:var(--radius-full);font-weight:600;text-transform:uppercase;letter-spacing:.03em;font-size:.68rem}.scale-card__level--beginner{background:var(--color-success-light);color:var(--color-success-dark)}.scale-card__level--intermediate{background:var(--color-primary-bg);color:var(--color-primary-dark)}.scale-card__level--advanced{background:#fef3c7;color:#92400e}.scale-card__exercise-label{font-weight:600;color:var(--color-primary-dark)}.scale-card__chevron{flex-shrink:0;color:var(--color-text-muted);font-size:.75rem}.scale-card__summary{margin:var(--space-sm) 0 0;color:var(--color-text-secondary);font-size:.9rem;line-height:1.55}.scale-card__body{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-lg)}.scale-card__subheading{margin:0 0 var(--space-sm);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.scale-card__scale-list{margin:0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:4px;font-size:.9rem}.scale-card__focus-list{margin:0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);font-size:.88rem;line-height:1.5;color:var(--color-text-secondary)}.scale-card__notation-img{width:100%;height:auto;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.scales-view__intro{background:var(--color-bg);padding:var(--space-lg) var(--space-xl);border-radius:var(--radius-md);border-left:4px solid var(--color-primary)}.scales-view__intro h2{margin-top:0;font-size:1.05rem;color:var(--color-primary-dark)}.scales-view__intro p{color:var(--color-text-secondary);font-size:.9rem;line-height:1.6;margin:var(--space-sm) 0 0}.scales-view__sources{font-size:.82rem}.tremolo-lab__header{margin-bottom:var(--space-lg)}.tremolo-lab__subtitle{color:var(--color-text-secondary);margin:0}.tremolo-lab__panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-xl);margin-bottom:var(--space-md);box-shadow:var(--shadow-sm)}.tremolo-lab__error{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-md);margin-bottom:var(--space-md);background:var(--color-danger-light);border:1px solid var(--color-danger);border-radius:var(--radius-md);color:#991b1b;font-size:.9rem}.tremolo-lab__error-dismiss{margin-left:auto;padding:0;background:transparent;border:0;color:inherit;cursor:pointer;font-size:1.1rem}.tremolo-lab__intro h2{margin-top:0}.tremolo-lab__steps{margin:0 0 var(--space-lg);padding-left:var(--space-lg)}.tremolo-lab__steps li{margin-bottom:var(--space-sm);line-height:1.6}.tremolo-lab__tips{background:var(--color-bg);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-sm);margin-bottom:var(--space-lg)}.tremolo-lab__tips h3{margin-top:0;font-size:.95rem;color:var(--color-primary-dark)}.tremolo-lab__tips ul{margin:0;padding-left:var(--space-lg);color:var(--color-text-secondary);font-size:.88rem;line-height:1.7}.tremolo-lab__start-btn{font-size:1rem;padding:var(--space-md) var(--space-xl)}.tremolo-lab__calibration h2{margin-top:0}.tremolo-lab__cal-progress{width:100%;height:12px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden;margin:var(--space-lg) 0 var(--space-sm)}.tremolo-lab__cal-progress-bar{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));transition:width .2s}.tremolo-lab__cal-status{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-lg);font-size:.9rem;color:var(--color-text-secondary)}.tremolo-lab__cal-finger{display:inline-block;padding:2px 14px;background:var(--color-accent-text);color:#fff;border-radius:var(--radius-full);font-size:1rem;font-weight:800;margin-left:var(--space-xs)}.tremolo-lab__level{margin:var(--space-md) 0}.tremolo-lab__level-label{font-size:.78rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:4px}.tremolo-lab__level-bar{height:6px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.tremolo-lab__level-fill{height:100%;background:linear-gradient(90deg,var(--color-success),var(--color-accent),var(--color-danger));transition:width .05s}.tremolo-lab__live-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-lg)}.tremolo-lab__live-header h2{margin:0}.tremolo-lab__live-cycles{font-size:.85rem;color:var(--color-text-secondary);font-weight:500}.tremolo-lab__trends{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-md);margin-bottom:var(--space-lg)}.tremolo-lab__trend-card{display:flex;flex-direction:column;padding:var(--space-md);background:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border)}.tremolo-lab__trend-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.tremolo-lab__trend-value{font-size:1.5rem;font-weight:800;color:var(--color-primary-dark);line-height:1.2;margin:4px 0}.tremolo-lab__trend-meta{font-size:.78rem;color:var(--color-text-secondary)}.tremolo-lab__history{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.tremolo-lab__history-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm);font-size:.85rem}.tremolo-lab__history-date{color:var(--color-text-secondary)}.tremolo-lab__history-stats{font-family:var(--font-mono);color:var(--color-primary-dark);font-weight:600}.tremolo-lab__no-history{text-align:center;color:var(--color-text-muted);padding:var(--space-xl)}.tremolo-lab__action-row{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.tremolo-canvas{display:block;width:100%;background:#fefce8;border:1px solid var(--color-border);border-radius:var(--radius-md)}.tremolo-live__head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-md)}.tremolo-live__head h2{margin:0}.tremolo-live__rec-time{font-family:var(--font-mono);font-weight:700;color:var(--color-danger-dark);font-size:.95rem}.tremolo-live__actions{display:flex;gap:var(--space-md);margin:var(--space-md) 0 var(--space-lg);flex-wrap:wrap}.tremolo-lab__goals{margin-top:var(--space-lg);padding:var(--space-md) var(--space-lg);background:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border)}.tremolo-lab__goals h3{margin:0 0 var(--space-sm);font-size:1rem}.tremolo-lab__goals-list{margin:0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.tremolo-lab__goals-list li{font-size:.9rem;line-height:1.55;color:var(--color-text)}.tremolo-lab__goals-list strong{color:var(--color-primary-dark)}.tremolo-takes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.tremolo-takes__item{display:grid;grid-template-columns:auto auto 1fr auto;gap:var(--space-md);align-items:center;width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem;text-align:left;cursor:pointer;transition:all .15s}.tremolo-takes__item:hover{border-color:var(--color-primary);background:var(--color-primary-bg)}.tremolo-takes__date{color:var(--color-text-secondary);font-weight:500}.tremolo-takes__duration{font-family:var(--font-mono);color:var(--color-primary-dark)}.tremolo-takes__notes{color:var(--color-text-muted);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tremolo-takes__open{color:var(--color-primary);font-weight:600;font-size:.85rem}.tremolo-take__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md);margin-bottom:var(--space-md)}.tremolo-take__header h2{margin:0;font-size:1.1rem}.tremolo-take__meta{margin:4px 0 0;font-size:.85rem;color:var(--color-text-muted)}.tremolo-take__controls{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-md);flex-wrap:wrap}.tremolo-take__play{min-width:110px}.tremolo-take__speeds{display:inline-flex;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.tremolo-take__speed-btn{padding:6px 14px;background:transparent;border:none;font-size:.88rem;font-weight:600;color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-mono);transition:all .15s}.tremolo-take__speed-btn:hover{background:var(--color-primary-bg);color:var(--color-primary-dark)}.tremolo-take__speed-btn.is-active{background:var(--color-primary);color:#fff}.tremolo-take__hint{margin-top:var(--space-sm);font-size:.85rem;color:var(--color-text-muted);line-height:1.5}.tremolo-take__notes{margin-top:var(--space-lg);display:flex;flex-direction:column;gap:6px}.tremolo-take__notes label{font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.tremolo-take__notes textarea{font-family:inherit;font-size:.9rem;padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical;background:var(--color-surface);color:var(--color-text)}.tremolo-take__footer{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end}.btn-danger-outline{background:transparent;color:var(--color-danger-dark);border:1px solid var(--color-danger);padding:8px 16px;border-radius:var(--radius-sm);font-size:.88rem;font-weight:600;cursor:pointer;transition:all .15s}.btn-danger-outline:hover{background:var(--color-danger-dark);color:#fff}.user-menu__sync{margin-bottom:var(--space-sm)}.user-menu__sync .user-menu__sync-status{margin:0;line-height:1.4}.user-menu__sync--busy .user-menu__sync-status,.user-menu__sync-status--muted,.user-menu__sync--offline .user-menu__sync-status{color:var(--color-text-secondary)}.user-menu__sync--error .user-menu__sync-status{color:var(--color-danger-dark);font-weight:600}.user-menu__sync-detail{display:block;font-weight:400;font-size:.7rem;color:var(--color-text-secondary)}.user-menu__sync-detail--warn{color:var(--color-danger-dark)}.user-menu__sync-retry{margin-top:var(--space-xs);padding:2px var(--space-sm);border:1px solid var(--color-danger);border-radius:var(--radius-sm);background:var(--color-danger-light);color:var(--color-danger-dark);font-size:.75rem;font-weight:600;cursor:pointer}.user-menu__sync-retry:focus-visible,.user-menu__sign-out:focus-visible,.user-menu__sign-in:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.user-menu__guest{margin-top:var(--space-sm)}.app-nav__badge{margin-left:auto;min-width:1.5em;padding:0 6px;border-radius:var(--radius-full);background:var(--color-accent);color:var(--color-text);font-size:.7rem;font-weight:700;line-height:1.6;text-align:center;font-variant-numeric:tabular-nums}.app-nav a:focus-visible,.app-nav__more:focus-visible,.app-more__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.app-nav__more,.app-more__panel,.app-mobile-status{display:none}@media (max-width: 768px){.app-nav{position:relative}.app-nav a{position:relative;flex:1 1 0;min-width:0}.app-nav a.app-nav__link--secondary{display:none}.app-nav__badge{position:absolute;top:0;left:calc(50% + 6px);margin:0;font-size:.6rem}.app-nav__more{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-xs) var(--space-sm);background:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:.7rem;font-weight:500}.app-nav__more[aria-expanded=true],.app-nav__more--active{background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:600}.app-more__panel{display:block;position:fixed;right:var(--space-sm);bottom:calc(64px + env(safe-area-inset-bottom,0px));width:min(18rem,calc(100vw - 2 * var(--space-sm)));max-height:calc(100vh - 96px);overflow-y:auto;padding:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:210}.app-more__list{list-style:none;margin:0;padding:0}.app-more__link{display:flex;align-items:center;gap:var(--space-sm);min-height:44px;padding:0 var(--space-md);border-radius:var(--radius-sm);color:var(--color-text);font-weight:500}.app-more__link[aria-current=page]{background:var(--color-primary-bg);color:var(--color-primary-dark);font-weight:600}.app-more__account{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border)}.app-more__panel .user-menu{display:block;margin-top:0;padding:var(--space-sm);border-top:none}.app-mobile-status{display:block;margin-bottom:var(--space-sm);font-size:.8rem}.app-mobile-status:empty{display:none}}.lesson-progress-list__main{display:flex;flex-direction:column;gap:2px;flex:1 1 14rem;min-width:0}.lesson-progress-list__main>.lesson-progress-list__link{flex:none}.lesson-progress-list__link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.lesson-progress-list__detail{font-size:.78rem;color:var(--color-text-secondary)}.due-for-review{border-left:4px solid var(--color-accent)}.due-for-review__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.due-for-review__item{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border)}.due-for-review__item:last-child{border-bottom:none}.due-for-review__link{display:flex;flex-direction:column;gap:2px;flex:1 1 14rem;min-width:0}.due-for-review__link:focus-visible,.due-for-review__toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.due-for-review__book{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.due-for-review__title{font-weight:600;color:var(--color-text)}.due-for-review__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);font-size:.78rem}.due-for-review__due{font-weight:600;color:var(--color-text-secondary)}.due-for-review__due--overdue{color:#92400e}.due-for-review__last{padding:1px 8px;border-radius:var(--radius-full);background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-secondary)}.due-for-review__last--lost{background:var(--color-danger-light);border-color:transparent;color:#991b1b}.due-for-review__last--shaky{background:var(--color-accent-light);border-color:transparent;color:#92400e}.due-for-review__empty{margin:0;font-size:.9rem;color:var(--color-text-secondary)}.due-for-review__toggle{margin-top:var(--space-sm)}.check-in-due-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);border:1px solid var(--color-accent);background:var(--color-accent-light);color:#92400e;font-size:.75rem;font-weight:600;white-space:nowrap}.insights-card,.insights-empty{--insights-empty-cell: var(--color-border);--insights-gridline: #edf1f5;--insights-baseline: #cbd5e1;--insights-track: #cde2fb;--insights-fill: #2a78d6;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-md) 0;box-shadow:var(--shadow-sm);min-width:0}.insights-card--loading{transition:opacity .2s}.insights-card__header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs) var(--space-md);margin-bottom:var(--space-md)}.insights-card__heading{margin:0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.insights-card__subtitle{margin:0;font-size:.8rem;color:var(--color-text-secondary)}.insights-card__range{white-space:nowrap}.insights-card__subheading{margin:var(--space-lg) 0 var(--space-sm);font-size:.9rem;font-weight:600;color:var(--color-text)}.insights-card__note{margin:var(--space-sm) 0 0;font-size:.85rem;line-height:1.5;color:var(--color-text-secondary)}.insights-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:var(--space-md);margin:0}.insights-tile{padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm)}.insights-tile__label{font-size:.78rem;color:var(--color-text-secondary)}.insights-tile__value{margin:2px 0 0;font-size:1.75rem;font-weight:700;line-height:1.2;color:var(--color-text)}.insights-tile__unit{font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.insights-tile__note{margin:2px 0 0;font-size:.78rem;color:var(--color-text-secondary)}.insights-heatmap,.insights-weekly{width:100%;min-width:0}.insights-chart-focus{display:block;max-width:100%;overflow-x:auto;border-radius:var(--radius-sm)}.insights-chart-focus:focus{outline:none}.insights-chart-focus:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}.insights-heatmap__svg,.insights-weekly__svg{display:block;overflow:visible}.insights-axis-label{font-family:var(--font-sans);font-size:11px;fill:var(--color-text-muted)}.insights-axis-label--tick{font-variant-numeric:tabular-nums}.insights-gridline{stroke:var(--insights-gridline);stroke-width:1;shape-rendering:crispEdges}.insights-baseline{stroke:var(--insights-baseline);stroke-width:1;shape-rendering:crispEdges}.insights-heatmap__cell{cursor:pointer}.insights-heatmap__cell--today{stroke:var(--color-text-secondary);stroke-width:1.5}.insights-heatmap__cell--active{stroke:var(--color-text);stroke-width:2}.insights-weekly__bar--active{filter:brightness(1.15)}.insights-weekly__band--active{fill:#2a78d614}.insights-readout{min-height:1.5em;margin:var(--space-xs) 0 0;font-size:.82rem;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.insights-legend{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);margin:var(--space-sm) 0 0;padding:0;list-style:none;font-size:.75rem;color:var(--color-text-secondary)}.insights-legend__item{display:inline-flex;align-items:center;gap:6px}.insights-legend__swatch{display:inline-block;width:12px;height:12px;border-radius:3px}.insights-table-toggle{margin-top:var(--space-md);padding:4px 12px;font-size:.8rem;font-weight:600;color:var(--color-primary-dark);background:var(--color-surface);border:1px solid var(--color-border)}.insights-table-toggle:hover{border-color:var(--color-primary-light)}.insights-table-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.insights-table-wrap{margin-top:var(--space-sm);max-width:100%;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-sm)}.insights-table-wrap:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.insights-table{width:100%;border-collapse:collapse;font-size:.8rem;font-variant-numeric:tabular-nums}.insights-table th,.insights-table td{padding:4px 8px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--color-border)}.insights-table thead th{font-weight:600;color:var(--color-text-secondary);background:var(--color-bg)}.insights-table th[scope=row],.insights-table thead th:first-child{text-align:left}.insights-table abbr{text-decoration:none}.insights-table tbody tr:last-child th,.insights-table tbody tr:last-child td{border-bottom:none}.insights-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:0 var(--space-md);align-items:start}.insights-segmented{display:inline-flex;margin:0 0 var(--space-md);padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-bg)}.insights-segmented__option{position:relative;padding:2px 14px;font-size:.8rem;font-weight:600;color:var(--color-text-secondary);border-radius:var(--radius-full);cursor:pointer}.insights-segmented__option input{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;cursor:pointer}.insights-segmented__option--selected{color:var(--color-text);background:var(--color-surface);box-shadow:var(--shadow-sm)}.insights-segmented__option:focus-within{outline:2px solid var(--color-primary);outline-offset:1px}.insights-balance{display:flex;flex-direction:column;gap:var(--space-md);margin:0;padding:0;list-style:none}.insights-balance__text{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--space-sm);font-size:.88rem}.insights-balance__label{font-weight:600;color:var(--color-text)}.insights-balance__value{color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.insights-balance__track{height:8px;margin-top:4px;background:var(--insights-track);border-radius:var(--radius-full);overflow:hidden}.insights-balance__fill{height:100%;background:var(--insights-fill);border-radius:var(--radius-full);transition:width .3s}.insights-balance__detail{display:block;margin-top:2px;font-size:.75rem;color:var(--color-text-secondary)}.insights-reflections{display:flex;flex-direction:column;gap:var(--space-sm);margin:0;padding:0;list-style:none}.insights-reflections__item{padding:var(--space-sm) var(--space-md);border-left:3px solid var(--color-primary-light);background:var(--color-bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.insights-reflections__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs) var(--space-sm);font-size:.75rem;color:var(--color-text-secondary)}.insights-reflections__meta time{font-weight:600;color:var(--color-text)}.insights-reflections__kind{padding:0 6px;font-size:.68rem;font-weight:600;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full)}.insights-reflections__lesson{font-weight:600;overflow-wrap:anywhere}.insights-reflections__fields{margin:var(--space-xs) 0 0;display:grid;gap:2px}.insights-reflections__field{display:grid;grid-template-columns:7rem 1fr;gap:var(--space-sm);font-size:.85rem;line-height:1.5}.insights-reflections__field dt{font-weight:600;color:var(--color-text-secondary)}.insights-reflections__field dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.insights-empty{background:var(--color-primary-bg);border:1px dashed var(--color-primary-light);box-shadow:none}.insights-empty__heading{margin:0 0 var(--space-sm);font-size:1.1rem}.insights-empty p{margin:0 0 var(--space-sm);max-width:60ch;color:var(--color-text-secondary)}.insights-empty__links{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-lg);margin:var(--space-md) 0 0;padding:0;list-style:none;font-weight:600}@media (max-width: 480px){.insights-card,.insights-empty{padding:var(--space-md)}.insights-tile__value{font-size:1.4rem}.insights-reflections__field{grid-template-columns:1fr;gap:0}}@media (prefers-reduced-motion: reduce){.insights-balance__fill,.insights-card--loading{transition:none}}@media (forced-colors: active){.insights-balance__fill{background:Highlight}.insights-legend__swatch,.insights-balance__track{border:1px solid CanvasText}}.budget-picker{margin:0;padding:0;border:none;min-width:0}.budget-picker__legend{padding:0;margin-bottom:var(--space-xs);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.budget-picker__options{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.budget-picker__option{position:relative;display:inline-flex;align-items:center;min-height:36px;padding:0 var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-secondary);font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.budget-picker__option:hover{border-color:var(--color-primary-light);color:var(--color-primary-dark)}.budget-picker__option--checked{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.budget-picker__option--checked:hover{color:#fff}.budget-picker__input{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;cursor:pointer}.budget-picker__option:has(.budget-picker__input:focus-visible){outline:2px solid var(--color-primary);outline-offset:2px}.budget-picker:disabled .budget-picker__option{opacity:.6;cursor:default}.today-plan{list-style:none;margin:var(--space-md) 0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.plan-block{background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-primary-light);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-sm)}.plan-block--in-progress{border-left-color:var(--color-accent)}.plan-block--done{border-left-color:var(--color-success);background:linear-gradient(0deg,#10b9810a,#10b9810a),var(--color-surface)}.plan-block--skipped{border-left-color:var(--color-border);opacity:.75}.plan-block__header{display:flex;align-items:flex-start;gap:var(--space-sm)}.plan-block__step{flex-shrink:0;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-primary-bg);color:var(--color-primary-dark);font-size:.85rem;font-weight:700}.plan-block--done .plan-block__step{background:var(--color-success-light);color:var(--color-success-dark)}.plan-block__heading{min-width:0;flex:1}.plan-block__title{margin:0;font-size:1.05rem;overflow-wrap:anywhere}.plan-block__meta{margin:2px 0 0;font-size:.8rem;color:var(--color-text-secondary)}.plan-block__status{font-weight:600}.plan-block__status--done{color:var(--color-success-dark)}.plan-block__status--in-progress{color:#92400e}.plan-block__goal{margin:var(--space-sm) 0 0;font-size:.95rem;line-height:1.5;overflow-wrap:anywhere}.plan-block__items{list-style:none;margin:var(--space-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:2px}.plan-block__item{display:flex;align-items:baseline;gap:var(--space-sm);font-size:.875rem}.plan-block__item-check{flex-shrink:0;width:1em;text-align:center;color:var(--color-text-muted)}.plan-block__item--done .plan-block__item-check{color:var(--color-success-dark);font-weight:700}.plan-block__item-link,.plan-block__item-text{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-sm);min-width:0}.plan-block__item-link:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.plan-block__item-label{overflow-wrap:anywhere}.plan-block__item--done .plan-block__item-label{color:var(--color-text-secondary)}.plan-block__item-detail{font-size:.78rem;color:var(--color-text-secondary)}.plan-block__why{margin:var(--space-sm) 0 0;font-size:.8rem;color:var(--color-text-secondary)}.plan-block__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-top:var(--space-md)}.plan-block__actions .btn,.plan-block__actions .button-link{min-height:36px}.plan-block__start--quiet{font-weight:600;font-size:.875rem;padding:var(--space-sm) 0}.plan-block__actions .btn:focus-visible,.plan-block__actions a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.plan-block__actions [aria-disabled=true]{opacity:.6;cursor:progress}.plan-block__error{margin:var(--space-sm) 0 0;font-size:.85rem;color:var(--color-danger-dark)}.session-reflection{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);box-shadow:var(--shadow-sm);scroll-margin-top:var(--space-lg)}.session-reflection__title{margin:0 0 var(--space-xs);font-size:1.1rem}.session-reflection__hint{margin:0 0 var(--space-md);font-size:.85rem;color:var(--color-text-secondary)}.session-reflection__subtitle{margin:0 0 var(--space-xs);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.session-reflection__earlier{margin-bottom:var(--space-md)}.session-reflection__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.session-reflection__entry{display:flex;flex-direction:column;gap:2px;padding:var(--space-sm);background:var(--color-bg);border-radius:var(--radius-sm);font-size:.875rem;overflow-wrap:anywhere}.session-reflection__time{font-size:.75rem;color:var(--color-text-secondary)}.session-reflection__prompt{font-weight:600;color:var(--color-text-secondary)}.session-reflection__field{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-md)}.session-reflection__label{font-size:.875rem;font-weight:600}.session-reflection__input,.session-reflection__select{width:100%;font:inherit;font-size:.95rem;padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.session-reflection__input{resize:vertical;min-height:3.2em}.session-reflection__input:focus,.session-reflection__select:focus{outline:2px solid var(--color-primary);outline-offset:1px;border-color:var(--color-primary-light)}.session-reflection__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.session-reflection__actions .btn:disabled{opacity:.5;cursor:not-allowed}.session-reflection__status{margin:0;font-size:.85rem;color:var(--color-success-dark)}.session-reflection__error{margin:0 0 var(--space-sm);font-size:.85rem;color:var(--color-danger-dark)}.today-summary{background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-primary);border-radius:var(--radius-md);padding:var(--space-lg);margin:var(--space-md) 0;box-shadow:var(--shadow-md)}.today-summary__title{margin:0 0 var(--space-xs);font-size:1.15rem}.today-summary__lede{margin:0;color:var(--color-text-secondary);font-size:.9rem}.today-summary__next{margin:var(--space-md) 0 0;padding:var(--space-sm) var(--space-md);background:var(--color-primary-bg);border-radius:var(--radius-sm)}.today-summary__next-label{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary-dark)}.today-summary__next-title{display:block;font-weight:700}.today-summary__next-goal{display:block;margin-top:2px;font-size:.875rem;color:var(--color-text-secondary);overflow-wrap:anywhere}.today-summary__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md);margin-top:var(--space-md)}.today-summary__actions a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.today-summary__badges{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:var(--space-md) 0 0;padding:0}.today-summary__badge{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:32px;padding:0 var(--space-md);border-radius:var(--radius-full);background:var(--color-accent-light);color:#92400e;font-size:.82rem;font-weight:600}.today-summary__badge:hover{color:#78350f}.today-summary__badge:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.today-summary__badge-count{font-variant-numeric:tabular-nums}@media (max-width: 768px){.plan-block,.session-reflection,.today-summary{padding:var(--space-md)}}@media (prefers-reduced-motion: reduce){.budget-picker__option{transition:none}}.adv-metronome--fixed.adv-metronome--reflecting{width:min(320px,calc(100vw - 2 * var(--space-sm)))}.quick-reflection{margin-top:var(--space-sm);padding:var(--space-sm);background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm)}.quick-reflection__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.quick-reflection__title{margin:0;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary-dark)}.quick-reflection__close{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1rem;line-height:1;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:50%;flex-shrink:0}.quick-reflection__close:hover{color:var(--color-primary-dark);border-color:var(--color-primary-light)}.quick-reflection__context{margin:2px 0 var(--space-xs);font-size:.72rem;line-height:1.4;color:var(--color-text-secondary)}.quick-reflection__field{margin-top:var(--space-xs)}.quick-reflection__label{display:block;margin-bottom:2px;font-size:.75rem;font-weight:600;color:var(--color-text)}.quick-reflection__input{width:100%;box-sizing:border-box;padding:4px var(--space-sm);font:inherit;font-size:.8rem;line-height:1.4;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical}.quick-reflection__input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-light)}.quick-reflection__input[readonly]{background:var(--color-bg)}.quick-reflection__error{margin:var(--space-xs) 0 0;font-size:.72rem;font-weight:600;line-height:1.4;color:#b91c1c}.quick-reflection__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-sm)}.quick-reflection__actions .btn{padding:4px 12px;font-size:.75rem}.quick-reflection__save:disabled,.quick-reflection__save[aria-disabled=true]{opacity:.55;cursor:not-allowed}.quick-reflection__snooze{background:var(--color-surface)}.quick-reflection__close:focus-visible,.quick-reflection__actions .btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.quick-reflection-saved{margin:var(--space-xs) 0 0;padding:var(--space-xs) var(--space-sm);font-size:.72rem;font-weight:600;line-height:1.4;color:var(--color-success-dark);background:var(--color-success-light);border-radius:var(--radius-sm)}@media (forced-colors: active){.quick-reflection{border-color:CanvasText}}.adv-metronome--fixed{max-height:calc(100vh - 2 * var(--space-lg));overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}@media (max-width: 768px){.adv-metronome--fixed{max-height:calc(100vh - 70px - var(--space-lg))}}.speed-trainer{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--color-border)}.speed-trainer__toggle{display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px var(--space-xs);width:100%;padding:var(--space-xs) 0;background:transparent;color:var(--color-text);text-align:left;font-size:.8rem;font-weight:700}.speed-trainer__toggle:hover .speed-trainer__toggle-label{color:var(--color-primary)}.speed-trainer__toggle-label{grid-column:1;grid-row:1}.speed-trainer__badge{grid-column:1 / -1;grid-row:2;justify-self:start;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 6px;font-size:.65rem;font-weight:600;color:var(--color-text-secondary);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-full)}.speed-trainer__badge--on{color:var(--color-primary-dark);background:var(--color-primary-bg);border-color:var(--color-primary-light)}.speed-trainer__chevron{grid-column:2;grid-row:1;color:var(--color-text-muted);font-size:.7rem}.speed-trainer__body{padding-top:var(--space-xs)}.speed-trainer__note{margin:0 0 var(--space-sm);padding:var(--space-xs) var(--space-sm);font-size:.72rem;color:var(--color-text-secondary);background:var(--color-accent-light);border-radius:var(--radius-sm)}.speed-trainer__fieldset,.speed-trainer__modes{margin:0;padding:0;border:0;min-width:0}.speed-trainer__fieldset:disabled{opacity:.6}.speed-trainer__legend{padding:0;margin-bottom:var(--space-xs);font-size:.7rem;font-weight:600;color:var(--color-text-secondary)}.speed-trainer__segmented{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-full);overflow:hidden}.speed-trainer__segment{position:relative;flex:1 1 0;padding:6px 4px;font-size:.72rem;font-weight:600;text-align:center;color:var(--color-text-secondary);background:var(--color-bg);cursor:pointer;-webkit-user-select:none;user-select:none}.speed-trainer__segment+.speed-trainer__segment{border-left:1px solid var(--color-border)}.speed-trainer__segment input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;margin:0;cursor:inherit}.speed-trainer__segment--active{color:var(--color-primary-dark);background:var(--color-primary-bg)}.speed-trainer__segment:focus-within{outline:2px solid var(--color-primary);outline-offset:-2px}.speed-trainer__fieldset:disabled .speed-trainer__segment{cursor:not-allowed}.speed-trainer__explain{margin:var(--space-sm) 0;font-size:.72rem;line-height:1.45;color:var(--color-text-secondary)}.speed-trainer__fields{display:flex;flex-direction:column;gap:var(--space-sm)}.speed-trainer__field{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:var(--space-sm)}.speed-trainer__label{font-size:.75rem;font-weight:600;color:var(--color-text)}.speed-trainer__control{display:inline-flex;align-items:baseline;gap:4px}.speed-trainer__input,.speed-trainer__select{font:inherit;font-size:.85rem;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.speed-trainer__input{width:4.2em;padding:3px 6px;text-align:right;font-variant-numeric:tabular-nums}.speed-trainer__input:focus-visible,.speed-trainer__select:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px;border-color:var(--color-primary)}.speed-trainer__input[aria-invalid=true]{border-color:var(--color-danger);background:var(--color-danger-light)}.speed-trainer__select{grid-column:1 / -1;margin-top:4px;padding:4px 6px;font-size:.75rem}.speed-trainer__unit{min-width:3.6em;font-size:.65rem;font-weight:600;color:var(--color-text-secondary)}.speed-trainer__hint,.speed-trainer__error{grid-column:1 / -1;margin:2px 0 0;font-size:.68rem;line-height:1.35}.speed-trainer__hint{color:var(--color-text-secondary)}.speed-trainer__hint:has(>.sr-only:only-child){margin:0}.speed-trainer__error{color:#b91c1c;font-weight:600}.speed-trainer__quick{align-self:flex-start;padding:3px 10px;font-size:.72rem;color:var(--color-primary-dark);background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-full)}.speed-trainer__quick:hover{border-color:var(--color-primary)}.speed-trainer-live{--speed-trainer-secondary: #475569;margin-top:var(--space-sm);padding:var(--space-sm);background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-md)}.speed-trainer-live__tempo{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px}.speed-trainer-live__bpm{font-size:1.5rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--color-text)}.speed-trainer-live__target{font-size:.72rem;font-weight:600;color:var(--speed-trainer-secondary)}.speed-trainer-live__next{margin-left:auto;font-size:.68rem;font-weight:700;color:var(--color-primary-dark)}.speed-trainer-live__progress{height:6px;margin:var(--space-xs) 0;background:var(--color-surface);border-radius:var(--radius-full);overflow:hidden}.speed-trainer-live__progress-fill{display:block;height:100%;background:var(--color-primary);border-radius:inherit;transition:width .3s ease}.speed-trainer-live__streak{display:flex;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-xs);font-size:.7rem;color:var(--speed-trainer-secondary)}.speed-trainer-live__dots{display:inline-flex;flex-wrap:wrap;gap:3px}.speed-trainer-live__dot{width:10px;height:10px;border-radius:50%;background:var(--color-surface);border:1px solid var(--color-success);transition:background .15s}.speed-trainer-live__dot--filled{background:var(--color-success)}.speed-trainer-live__reps{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-xs)}.speed-trainer-live__rep{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:52px;padding:var(--space-xs) 2px;line-height:1.2;font-size:.85rem;font-weight:700;color:#fff;border-radius:var(--radius-md);touch-action:manipulation}.speed-trainer-live__rep-label{white-space:nowrap}.speed-trainer-live__rep:focus-visible,.speed-trainer-live__dismiss:focus-visible{outline:3px solid var(--color-text);outline-offset:2px}.speed-trainer-live__rep:active{transform:scale(.97)}.speed-trainer-live__rep--clean{background:#047857}.speed-trainer-live__rep--clean:hover{background:#065f46}.speed-trainer-live__rep--flub{background:#b91c1c}.speed-trainer-live__rep--flub:hover{background:#991b1b}.speed-trainer-live__kbd{padding:0 4px;font-family:var(--font-mono);font-size:.6rem;font-weight:600;line-height:1.5;border:1px solid rgba(255,255,255,.6);border-radius:3px;opacity:.85}.speed-trainer-live__warning{margin:var(--space-xs) 0 0;font-size:.7rem;font-weight:600;color:#b91c1c}.speed-trainer-live__stats,.speed-trainer-live__step-status,.speed-trainer-live__summary-line{margin:var(--space-xs) 0 0;font-size:.7rem;line-height:1.4;color:var(--speed-trainer-secondary);font-variant-numeric:tabular-nums}.speed-trainer-live__step-status{font-weight:600;color:var(--color-text)}.speed-trainer-live__reached{margin:var(--space-xs) 0 0;font-size:.7rem;font-weight:700;color:var(--color-success-dark)}.speed-trainer-live__reached:before{content:"✓ "}.speed-trainer-live--summary{background:var(--color-bg);border-color:var(--color-border)}.speed-trainer-live__summary-title{margin:0;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--speed-trainer-secondary)}.speed-trainer-live__summary-line{font-size:.85rem;font-weight:700;color:var(--color-text)}.speed-trainer-live__muted{font-size:.7rem;font-weight:500;color:var(--speed-trainer-secondary)}.speed-trainer-live__details{margin-top:var(--space-xs);font-size:.7rem;color:var(--speed-trainer-secondary)}.speed-trainer-live__details summary{cursor:pointer;font-weight:600}.speed-trainer-live__tempo-list{margin:4px 0 0;padding:0;list-style:none;font-variant-numeric:tabular-nums}.speed-trainer-live__tempo-list li{display:flex;justify-content:space-between}.speed-trainer-live__dismiss{margin-top:var(--space-sm);padding:4px 12px;font-size:.72rem;color:var(--speed-trainer-secondary);background:var(--color-surface);border:1px solid var(--color-border)}.speed-trainer-live__dismiss:hover{color:var(--color-primary);border-color:var(--color-primary-light)}.speed-trainer-notice{margin:var(--space-xs) 0 0;padding:var(--space-xs) var(--space-sm);font-size:.7rem;line-height:1.4;color:#92400e;background:var(--color-accent-light);border-radius:var(--radius-sm)}@media (max-width: 768px){.speed-trainer-live__rep{font-size:.78rem}}@media (prefers-reduced-motion: reduce){.speed-trainer-live__progress-fill,.speed-trainer-live__dot{transition:none}.speed-trainer-live__rep:active{transform:none}}.custom-goals__field-label{display:block;margin:0 0 2px;font-size:.75rem;font-weight:600;color:var(--color-text-secondary)}.custom-goals__error{margin:var(--space-xs) 0;font-size:.8rem;color:var(--color-danger-dark)}.custom-goals__heading:focus{outline:none}.custom-goals__heading:focus-visible,.custom-goals__delete:focus-visible,.custom-goals__add-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.custom-goals__add-btn:disabled{opacity:.6;cursor:not-allowed}.best-bpm-meter{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;font-size:.75rem;color:var(--color-text-secondary)}.best-bpm-meter__text{font-variant-numeric:tabular-nums}.best-bpm-meter__track{flex:0 0 6rem;height:6px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.best-bpm-meter__fill{height:100%;background:var(--color-primary);border-radius:var(--radius-full);transition:width .3s ease-out}.best-bpm-meter--met .best-bpm-meter__fill{background:var(--color-success)}.best-bpm-meter--met .best-bpm-meter__text{color:var(--color-success-dark);font-weight:600}@media (prefers-reduced-motion: reduce){.best-bpm-meter__fill{transition:none}}.goal-checklist__explainer{margin:calc(-1 * var(--space-sm)) 0 var(--space-md);font-size:.82rem;color:var(--color-text-secondary)}.goal-checklist__explainer summary{cursor:pointer;width:fit-content;font-weight:600;color:var(--color-primary-dark);border-radius:var(--radius-sm)}.goal-checklist__explainer summary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.goal-checklist__explainer p{margin:var(--space-xs) 0 0;max-width:62ch}.goal-checklist__badges{display:inline-flex;flex-wrap:wrap;gap:var(--space-xs);flex-shrink:0}.goal-stage-badge{display:inline-flex;align-items:center;padding:1px 8px;border-radius:var(--radius-full);font-size:.7rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}.goal-stage-badge--achieved{background:var(--color-success-light);color:var(--color-success-dark)}.goal-stage-badge--consolidated{background:var(--color-success-dark);color:#fff;border:1px solid var(--color-success-dark)}.goal-stage-badge--needs-work{background:var(--color-accent-light);color:#92400e;border:1px dashed #b45309}.goal-checklist__item--needs-work{box-shadow:inset 3px 0 0 var(--color-accent)}.goal-checklist__mastery{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);margin:2px 0 0 26px}.goal-checklist__status{font-size:.78rem;color:var(--color-text-secondary)}.goal-checklist__status .goal-checklist__completed-at{margin-left:0}.goal-checklist__consolidated-at{color:var(--color-success-dark);font-weight:600}.goal-checklist__needs-work-at{color:#92400e}.goal-checklist__hint{color:var(--color-text-secondary)}.goal-checklist__recheck{padding:2px 10px;font-size:.75rem;font-weight:600;background:var(--color-surface);color:var(--color-success-dark);border:1px solid var(--color-success);border-radius:var(--radius-full)}.goal-checklist__recheck:hover{background:var(--color-success-light)}.goal-checklist__recheck:focus-visible,.goal-checklist__bpm-button:focus-visible,.goal-checklist__focus-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.goal-checklist__recheck[aria-disabled=true]{opacity:.6;cursor:progress}.goal-checklist__item>.best-bpm-meter{margin:var(--space-xs) 0 0 26px}.goal-checklist__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 768px){.goal-checklist__badges{margin-left:26px}.goal-checklist__recheck{min-height:2.25rem}}.todays-focus{margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm)}.todays-focus__label{display:block;margin-bottom:var(--space-xs);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-primary-dark)}.todays-focus__row{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.todays-focus__input{flex:1 1 14rem;min-width:0;padding:6px var(--space-sm);font:inherit;font-size:.9rem;color:var(--color-text);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color .15s}.todays-focus__input:focus{outline:none;border-color:var(--color-primary)}.todays-focus__input[readonly]{background:var(--color-bg)}.todays-focus__row .btn{padding:6px var(--space-md)}.todays-focus__set:disabled,.todays-focus__set[aria-disabled=true]{opacity:.55;cursor:not-allowed}.todays-focus__suggestion{margin:var(--space-xs) 0 0;font-size:.8rem;line-height:1.5;color:var(--color-text-secondary)}.todays-focus__suggestion-text{color:var(--color-text);font-weight:600}.todays-focus__use,.todays-focus__link{padding:0 2px;font-size:.8rem;font-weight:600;color:var(--color-primary-dark);background:transparent;border-radius:var(--radius-sm);text-decoration:underline;text-underline-offset:2px}.todays-focus__use:hover,.todays-focus__link:hover{color:var(--color-primary)}.todays-focus__current{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs) var(--space-md)}.todays-focus__current-text{margin:0;min-width:0;overflow-wrap:anywhere}.todays-focus__current .todays-focus__label{display:inline;margin:0 var(--space-xs) 0 0}.todays-focus__value{font-size:.95rem;font-weight:600;color:var(--color-text)}.todays-focus__actions{display:flex;gap:var(--space-sm)}.todays-focus__error,.reflection-timeline__error{margin:var(--space-xs) 0 0;font-size:.8rem;font-weight:600;color:var(--color-danger-dark)}.reflection-timeline{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.reflection-timeline__heading{margin:0 0 var(--space-sm);font-size:.95rem}.reflection-timeline__heading:focus{outline:none}.reflection-timeline__heading:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.reflection-timeline__empty{margin:0;font-size:.85rem;color:var(--color-text-secondary)}.reflection-timeline__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.reflection-timeline__item{position:relative;padding:var(--space-sm) var(--space-md);border-left:3px solid var(--color-primary-light);background:var(--color-bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.reflection-timeline__item:focus{outline:none}.reflection-timeline__item:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.reflection-timeline__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs) var(--space-sm);font-size:.75rem;color:var(--color-text-secondary)}.reflection-timeline__time{font-weight:600;color:var(--color-text)}.reflection-timeline__kind{padding:0 6px;font-size:.68rem;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full)}.reflection-timeline__delete{margin-left:auto;padding:0 var(--space-xs);font-size:.72rem;font-weight:600;color:var(--color-text-secondary);background:transparent;text-decoration:underline;text-underline-offset:2px}.reflection-timeline__delete:hover{color:var(--color-danger-dark)}.reflection-timeline__fields{margin:var(--space-xs) 0 0;display:grid;gap:2px}.reflection-timeline__field{display:grid;grid-template-columns:8rem 1fr;gap:var(--space-sm);font-size:.85rem;line-height:1.5}.reflection-timeline__field dt{font-weight:600;color:var(--color-text-secondary)}.reflection-timeline__field dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.reflection-timeline__more{margin-top:var(--space-sm);padding:4px 12px;font-size:.8rem;font-weight:600;color:var(--color-primary-dark);background:var(--color-surface);border:1px solid var(--color-border)}.reflection-timeline__more:hover{border-color:var(--color-primary-light)}.todays-focus__use:focus-visible,.todays-focus__link:focus-visible,.todays-focus__row .btn:focus-visible,.reflection-timeline__delete:focus-visible,.reflection-timeline__more:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media (max-width: 480px){.todays-focus__row .btn{flex:1 1 auto}.reflection-timeline__field{grid-template-columns:1fr;gap:0}}.lesson-notes__header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-xs) var(--space-md);margin-bottom:var(--space-sm)}.lesson-notes__header .lesson-notes__heading{margin:0}.lesson-notes__header .lesson-notes__status{display:inline-flex;align-items:center;gap:var(--space-sm);margin:0;font-size:.78rem}.lesson-notes__status--muted,.lesson-notes__status--saving,.lesson-notes__status--saved{color:var(--color-text-secondary)}.lesson-notes__status--synced{color:var(--color-success-dark)}.lesson-notes__status--error{color:var(--color-danger-dark);font-weight:600}.lesson-notes__retry{padding:2px var(--space-sm);border:1px solid currentColor;border-radius:var(--radius-sm);background:transparent;color:inherit;font-size:.75rem;font-weight:600;cursor:pointer}.lesson-notes__retry:focus-visible,.lesson-notes__conflict-actions .btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.lesson-notes__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.lesson-notes__textarea[readonly]{background:var(--color-bg)}.lesson-notes__conflict{margin-bottom:var(--space-md);padding:var(--space-md);border:1px solid var(--color-accent);border-radius:var(--radius-sm);background:var(--color-accent-light)}.lesson-notes__conflict-title{margin:0;font-weight:600;font-size:.9rem}.lesson-notes__conflict-hint{margin:var(--space-xs) 0 var(--space-sm);font-size:.82rem;color:var(--color-text-secondary)}.lesson-notes__conflict-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.lesson-notes__count{margin:var(--space-xs) 0 0;font-size:.75rem;color:var(--color-text-secondary);text-align:right}@media (max-width: 480px){.lesson-notes__conflict-actions .btn{flex:1 1 100%}}.symbol-palette{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-sm);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.symbol-palette__row{display:flex;align-items:center;gap:4px;overflow-x:auto;scrollbar-width:thin}.symbol-palette__strip{flex-wrap:nowrap;min-height:48px;padding-bottom:2px}.symbol-palette__strip .symbol-palette__set{flex:none;flex-wrap:nowrap}.symbol-palette__footer{gap:var(--space-sm);overflow:visible}.symbol-palette__sizes{flex:none;flex-wrap:nowrap}.symbol-palette__size{min-width:32px;min-height:32px;padding:2px 6px;font-size:.75rem;font-weight:600;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer}.symbol-palette__set{display:flex;flex-wrap:wrap;gap:4px;padding:2px;border-radius:var(--radius-sm);background:var(--color-bg)}.symbol-palette__category{flex:none;min-height:32px;padding:4px 10px;font-size:.78rem;background:transparent;border:1px solid transparent;border-radius:var(--radius-full);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap}.symbol-palette__category:hover{background:var(--color-bg)}.symbol-palette__category--active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary-dark);font-weight:600}.symbol-palette__symbol{flex:none;min-width:40px;min-height:40px;padding:4px 8px;font-size:.82rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer}.symbol-palette__symbol:hover{border-color:var(--color-primary-light)}.symbol-palette__symbol--active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary-dark);box-shadow:0 0 0 1px var(--color-primary)}.symbol-palette__hint{flex:1 1 auto;min-width:0;margin:0;font-size:.75rem;color:var(--color-text-muted)}.symbol-glyph{font-size:1.15rem;line-height:1}.symbol-glyph--finger,.symbol-glyph--practice{font-family:system-ui,-apple-system,sans-serif;font-weight:700}.symbol-glyph--rightHand{font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:600}.symbol-glyph--string{display:inline-flex;align-items:center;justify-content:center;width:1.4em;height:1.4em;font-size:.9rem;font-weight:700;border:1.5px solid currentColor;border-radius:50%}.symbol-glyph--position{font-family:Georgia,Times New Roman,serif;font-weight:700;font-size:1rem}.symbol-glyph--dynamic{font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:700}.symbol-glyph--technique{font-family:Georgia,Times New Roman,serif;font-style:italic;font-size:.95rem}.symbol-palette__hint .symbol-glyph{font-size:.95rem;color:var(--color-text)}.annotatable-image__canvas[data-tool=symbol]{cursor:copy}.annotatable-image__canvas[data-tool=pin]{cursor:crosshair}.annotatable-image__canvas[data-dragging=true]{cursor:grabbing}.pin-popover{position:absolute;z-index:3;width:min(320px,calc(100% - 16px));padding:var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg)}.pin-popover__title{margin:0 0 var(--space-xs);font-size:.8rem;font-weight:600;color:var(--color-text-secondary)}.pin-editor{display:flex;flex-direction:column;gap:var(--space-xs)}.pin-editor__textarea{width:100%;min-height:4.5em;padding:6px 8px;font:inherit;font-size:.9rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);resize:vertical}.pin-editor__textarea:focus{outline:2px solid var(--color-primary);outline-offset:1px;border-color:var(--color-primary)}.pin-editor__actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.pin-editor__button{min-height:32px;padding:4px 12px;font-size:.8rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer}.pin-editor__button:disabled{opacity:.45;cursor:not-allowed}.pin-editor__button--primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.pin-editor__button--danger{color:var(--color-danger-dark)}.pin-editor__count,.pin-editor__keys{font-size:.72rem;color:var(--color-text-muted)}.pin-editor__keys{margin-left:auto}.pin-notes{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.pin-notes__heading{margin:0 0 var(--space-xs);font-size:.9rem}.pin-notes__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.pin-notes__item{display:flex;gap:var(--space-sm);padding:6px;border-radius:var(--radius-sm)}.pin-notes__item--selected{background:var(--color-primary-bg)}.pin-notes__badge{flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-top:2px;font-size:.75rem;font-weight:700;color:#fff;border-radius:50%}.pin-notes__body{flex:1;min-width:0}.pin-notes__text{margin:0;font-size:.9rem;white-space:pre-wrap;overflow-wrap:anywhere}.pin-notes__editing{margin:2px 0 0;font-size:.75rem;font-style:italic;color:var(--color-text-muted)}.pin-notes__actions{display:flex;gap:6px;margin-top:4px}.pin-notes__empty{margin:var(--space-xs) 0 0;font-size:.8rem;color:var(--color-text-muted)}@media (max-width: 600px){.pin-editor__keys{display:none}}.pin-anchor{position:absolute;width:1px;height:1px;pointer-events:none}.quiz-panel .quiz-choice{position:relative}.quiz-panel .quiz-choice input[type=radio]{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:inherit}.quiz-panel .quiz-choice:focus-within{outline:2px solid var(--color-primary);outline-offset:2px}.quiz-panel .quiz-choice:has(input:focus:not(:focus-visible)){outline:none}.quiz-panel__toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.quiz-panel__deck:empty{display:none}.quiz-panel__deck{margin:0 0 var(--space-md)}.quiz-panel__deck p{margin:0;font-size:.88rem}.quiz-panel__deck-due{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm);background:var(--color-primary-bg);color:var(--color-primary-dark)}.quiz-panel__deck-due a{font-weight:700;text-decoration:underline;text-underline-offset:2px}.quiz-panel__deck-due a:focus-visible,.quiz-question__guess-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.quiz-panel__deck-note{color:var(--color-text-secondary)}.quiz-panel__deck-due+.quiz-panel__deck-note{margin-top:var(--space-xs)}.quiz-panel__deck-note--error{color:var(--color-danger-dark);font-weight:600}.quiz-panel__guess-hint{margin:0 0 var(--space-md);font-size:.85rem;color:var(--color-text-secondary)}.quiz-question__guess{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm)}.quiz-question__guess-toggle{min-height:36px;padding:var(--space-xs) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-secondary);font-size:.8rem;font-weight:600}.quiz-question__guess-toggle:hover{border-color:var(--color-accent)}.quiz-question__guess-toggle[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent-light);color:#92400e}.quiz-question__guess-note{font-size:.78rem;color:var(--color-text-secondary)}.goal-evidence-prompt{position:fixed;left:calc(var(--sidebar-width) + var(--space-lg));bottom:var(--space-lg);z-index:1500;width:min(30rem,calc(100vw - var(--sidebar-width) - 2 * var(--space-lg)));pointer-events:none}.goal-evidence-prompt__card{pointer-events:auto;display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-primary-light);border-left:4px solid var(--color-success);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:goal-evidence-prompt-in .2s ease-out}.goal-evidence-prompt__message{margin:0;font-weight:600;line-height:1.45}.goal-evidence-prompt__why{margin:0;font-size:.82rem;color:var(--color-text-secondary)}.goal-evidence-prompt__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.goal-evidence-prompt__actions .btn{min-height:2.5rem}.goal-evidence-prompt__actions .btn[aria-disabled=true]{opacity:.6;cursor:progress}.goal-evidence-prompt__actions .btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@keyframes goal-evidence-prompt-in{0%{transform:translateY(.75rem);opacity:0}to{transform:translateY(0);opacity:1}}@media (prefers-reduced-motion: reduce){.goal-evidence-prompt__card{animation:none}}@media (max-width: 768px){.goal-evidence-prompt{left:var(--space-sm);right:var(--space-sm);width:auto;bottom:calc(76px + env(safe-area-inset-bottom,0px))}.goal-evidence-prompt__actions .btn{flex:1 1 8rem;justify-content:center}}.maintenance-banner{display:flex;flex-direction:column;gap:var(--space-sm);margin:var(--space-md) 0;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.maintenance-banner--done{border-left-color:var(--color-success)}.maintenance-banner__header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm)}.maintenance-banner__label{margin:0;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.maintenance-banner__due{font-size:.78rem;font-weight:600;color:#92400e}.maintenance-banner__why,.maintenance-banner__result{margin:0;font-size:.9rem}.maintenance-banner__result:focus{outline:none}.maintenance-banner__result:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.maintenance-banner__ratings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm)}.maintenance-banner__rating{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.maintenance-banner__button{min-height:2.75rem;font-weight:700;background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border)}.maintenance-banner__button:hover{border-color:var(--color-primary-light)}.maintenance-banner__button--solid:hover{background:var(--color-success-light)}.maintenance-banner__button--shaky:hover{background:var(--color-accent-light)}.maintenance-banner__button--lost:hover{background:var(--color-danger-light)}.maintenance-banner__button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.maintenance-banner__button[aria-disabled=true]{opacity:.6;cursor:progress}.maintenance-banner__hint{font-size:.75rem;color:var(--color-text-secondary);line-height:1.35}@media (max-width: 560px){.maintenance-banner{padding:var(--space-md)}.maintenance-banner__ratings{grid-template-columns:1fr}.maintenance-banner__rating{flex-direction:row;align-items:center;gap:var(--space-sm)}.maintenance-banner__button{flex:0 0 6.5rem}}.review-view{max-width:760px}.review-view__header{margin-bottom:var(--space-lg)}.review-view__header h1:focus{outline:none}.review-view__header h1:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-sm)}.review-view__subtitle{margin:0;max-width:60ch;color:var(--color-text-secondary)}.review-view__loading{color:var(--color-text-secondary)}.review-view__notice{margin:0 0 var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:.9rem}.review-view__notice--error{background:var(--color-danger-light);border:1px solid var(--color-danger);color:#991b1b}.review-view__notice--warning{background:var(--color-accent-light);border:1px solid var(--color-accent);color:#92400e}.review-home,.review-summary,.review-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-lg);margin-bottom:var(--space-md)}.review-home__title,.review-summary__title{margin:0 0 var(--space-md);font-size:1.1rem}.review-summary__title:focus{outline:none}.review-summary__title:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-sm)}.review-home__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm);margin:0 0 var(--space-md)}.review-stat{padding:var(--space-sm) var(--space-md);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.review-stat dt{font-size:.75rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--color-text-secondary)}.review-stat dd{margin:0;font-size:1.6rem;font-weight:800;line-height:1.2;color:var(--color-text);font-variant-numeric:tabular-nums}.review-stat dd.review-stat__text{font-size:1rem;font-weight:700;padding-top:.35rem}.review-home__note,.review-home__hint{margin:0 0 var(--space-md);font-size:.85rem;color:var(--color-text-secondary)}.review-home__hint{margin:var(--space-sm) 0 0}.review-home__caught-up{margin:0 0 var(--space-md);padding:var(--space-md);background:var(--color-success-light);border:1px solid var(--color-success);border-radius:var(--radius-sm);color:var(--color-success-dark)}.review-home__empty{margin:0 0 var(--space-md);padding:var(--space-md);background:var(--color-primary-bg);border-radius:var(--radius-sm)}.review-home__empty p{margin:0 0 var(--space-sm)}.review-home__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.review-home__actions .btn,.review-card__actions .btn,.review-card__error .btn,.review-settings .btn,.review-session__end{min-height:44px}.review-view .btn:focus-visible,.review-view .button-link:focus-visible,.review-view a:focus-visible,.review-view summary:focus-visible,.review-settings input:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.review-settings,.review-view__why{margin-bottom:var(--space-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.review-settings summary,.review-view__why summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs) var(--space-sm);padding:var(--space-md) var(--space-lg);font-weight:700;cursor:pointer;border-radius:var(--radius-md)}.review-settings__current{font-size:.82rem;font-weight:500;color:var(--color-text-secondary)}.review-settings__form{display:grid;gap:var(--space-md);padding:0 var(--space-lg) var(--space-lg)}.review-settings__field{display:grid;gap:var(--space-xs)}.review-settings__field label{font-weight:600;font-size:.9rem}.review-settings__field input{width:8rem;min-height:44px;padding:var(--space-xs) var(--space-sm);font:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.review-settings__field input[aria-invalid=true]{border-color:var(--color-danger)}.review-settings__hint{margin:0;font-size:.8rem;color:var(--color-text-secondary);max-width:60ch}.review-settings__error{margin:0;font-size:.82rem;font-weight:600;color:var(--color-danger-dark)}.review-settings__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.review-settings__status{font-size:.85rem;color:var(--color-text-secondary)}.review-view__why ul{margin:0;padding:0 var(--space-lg) var(--space-lg) calc(var(--space-lg) + var(--space-md));display:grid;gap:var(--space-sm);font-size:.9rem;color:var(--color-text-secondary)}.review-view__why strong{color:var(--color-text)}.review-session__bar{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md)}.review-session__count{flex-shrink:0;font-size:.85rem;font-weight:600;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.review-session__progress{flex:1;min-width:4rem;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:var(--radius-full);background:var(--color-border);overflow:hidden}.review-session__progress::-webkit-progress-bar{background:var(--color-border);border-radius:var(--radius-full)}.review-session__progress::-webkit-progress-value{background:var(--color-primary);border-radius:var(--radius-full)}.review-session__progress::-moz-progress-bar{background:var(--color-primary);border-radius:var(--radius-full)}.review-session__end{flex-shrink:0}.review-card__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);margin-bottom:var(--space-sm);font-size:.8rem}.review-card__lesson{color:var(--color-text-secondary);font-weight:600}.review-card__topic,.review-card__tag{padding:1px 8px;border-radius:var(--radius-full);font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;background:var(--color-primary-bg);color:var(--color-primary-dark)}.review-card__tag{background:var(--color-success-light);color:var(--color-success-dark)}.review-card__tag--again{background:var(--color-accent-light);color:#92400e}.review-card__prompt{margin:0 0 var(--space-md);font-size:1.15rem;line-height:1.45}.review-card__prompt:focus{outline:none}.review-card__prompt:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-sm)}.review-card__choices{display:grid;gap:var(--space-sm)}.review-choice{display:flex;align-items:center;gap:var(--space-sm);width:100%;min-height:48px;padding:var(--space-sm) var(--space-md);text-align:left;color:var(--color-text);background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius-sm);line-height:1.4}.review-choice--open:hover{border-color:var(--color-primary-light);background:var(--color-primary-bg)}.review-choice:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.review-choice[aria-disabled=true]{cursor:default}.review-choice__key{flex-shrink:0;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid var(--color-border);background:var(--color-bg);color:var(--color-text-secondary);font-size:.8rem;font-weight:700}.review-choice__text{flex:1;min-width:0;overflow-wrap:anywhere}.review-choice__badge{flex-shrink:0;padding:2px 10px;border-radius:var(--radius-full);background:var(--color-success-dark);color:#fff;font-size:.72rem;font-weight:700}.review-choice__badge--wrong{background:var(--color-danger)}.review-choice--correct{border-color:var(--color-success);background:var(--color-success-light)}.review-choice--correct .review-choice__key{background:var(--color-success-dark);border-color:var(--color-success);color:#fff}.review-choice--wrong{border-color:var(--color-danger);background:var(--color-danger-light)}.review-choice--wrong .review-choice__key{background:var(--color-danger-dark);border-color:var(--color-danger);color:#fff}.review-choice--other{color:var(--color-text-secondary)}.review-card__feedback:empty{display:none}.review-feedback{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-left:4px solid var(--color-primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--color-primary-bg);font-size:.92rem}.review-feedback--correct{border-left-color:var(--color-success)}.review-feedback--wrong{border-left-color:var(--color-danger)}.review-feedback p{margin:0 0 var(--space-xs)}.review-feedback p:last-child{margin-bottom:0}.review-feedback__verdict{font-weight:700}.review-feedback__source{font-size:.85rem;color:var(--color-text-secondary)}.review-card__error{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-danger);border-radius:var(--radius-sm);background:var(--color-danger-light);color:#991b1b;font-size:.88rem}.review-card__actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.review-grade{flex-direction:column;align-items:flex-start;gap:0;line-height:1.25}.review-grade[aria-disabled=true]{opacity:.7;cursor:progress}.review-grade__hint{font-size:.72rem;font-weight:500;opacity:.85}.review-card__keys{margin:var(--space-md) 0 0;font-size:.75rem;color:var(--color-text-secondary)}.review-card__keys kbd{padding:0 5px;border:1px solid var(--color-border);border-bottom-width:2px;border-radius:4px;background:var(--color-bg);font-family:var(--font-mono);font-size:.72rem;color:var(--color-text-secondary)}.review-summary__missed h3{margin:0 0 var(--space-sm);font-size:.95rem}.review-summary__missed ul{list-style:none;margin:0 0 var(--space-md);padding:0;display:grid;gap:var(--space-sm)}.review-summary__missed li{display:grid;gap:2px;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-left:4px solid var(--color-danger);border-radius:var(--radius-sm);font-size:.9rem}.review-summary__missed li a{font-size:.82rem}@media (max-width: 560px){.review-home,.review-summary,.review-card{padding:var(--space-md)}.review-home__stats{grid-template-columns:1fr}.review-stat{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm)}.review-stat dd{font-size:1.25rem}.review-stat dd.review-stat__text{padding-top:0}.review-session__bar{flex-wrap:wrap}.review-session__progress{order:3;flex-basis:100%}.review-session__end{margin-left:auto}.review-card__actions .btn{flex:1 1 100%}.review-choice{flex-wrap:wrap}.review-choice__badge{margin-left:calc(26px + var(--space-sm))}}@media (hover: none) and (pointer: coarse){.review-card__keys{display:none}}@media (prefers-reduced-motion: reduce){.review-choice{transition:none}}.scale-log{margin-top:var(--space-md);padding:var(--space-md);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.scale-log__title{margin:0 0 var(--space-sm);font-size:.95rem}.scale-log__fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--space-sm) var(--space-md)}.scale-log__field{display:flex;flex-direction:column;gap:2px;min-width:0}.scale-log__field--wide{grid-column:1 / -1}.scale-log__field label{font-size:.8rem;font-weight:600;color:var(--color-text-secondary)}.scale-log__field select,.scale-log__field input{width:100%;min-height:36px;font:inherit;font-size:.9rem;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.scale-log__field select:focus,.scale-log__field input:focus{outline:2px solid var(--color-primary);outline-offset:1px}.scale-log__field input[aria-invalid=true]{border-color:var(--color-danger)}.scale-log__invalid{font-size:.75rem;color:var(--color-danger-dark)}.scale-log__hint{font-size:.75rem;color:var(--color-text-secondary)}.scale-log__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md);margin-top:var(--space-md)}.scale-log__actions .btn{min-height:36px}.scale-log__actions .btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.scale-log__actions [aria-disabled=true]{opacity:.6}.scale-log__status{margin:0;font-size:.85rem;color:var(--color-success-dark)}.scale-log__error{margin:var(--space-sm) 0 0;font-size:.85rem;color:var(--color-danger-dark)}.scale-log-list{margin-top:var(--space-md)}.scale-log-list__title{margin:0 0 var(--space-xs);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary)}.scale-log-list__title:focus-visible,.scale-log-list__removed:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.scale-log-list__removed{margin:var(--space-sm) 0 0;font-size:.85rem;color:var(--color-text-secondary)}.scale-log-list__items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-xs)}.scale-log-list__item{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs) var(--space-sm);font-size:.875rem}.scale-log-list__time{font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.scale-log-list__text{flex:1 1 12rem;min-width:0;overflow-wrap:anywhere}.scale-log-list__confirm{display:inline-flex;gap:var(--space-xs)}.scale-log-list__button{padding:2px var(--space-sm);font-size:.78rem}.scale-log-list__button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.scale-card--highlight{box-shadow:0 0 0 3px var(--color-primary-light)}.scale-card__header:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.scale-card__today{margin:var(--space-xs) 0 0;font-size:.8rem;font-weight:600;color:var(--color-success-dark)}.scale-card__variation-pick{margin:0 0 var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-primary-bg);border-radius:var(--radius-sm);font-size:.875rem}.scale-card__tempo-hint{margin:var(--space-xs) 0 0;font-size:.8rem;color:var(--color-text-secondary)}.today-view__header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-md)}.today-view__title{margin:0}.today-view__date{margin:0;color:var(--color-text-secondary)}.today-view__loading{padding:var(--space-lg);color:var(--color-text-secondary)}.today-view__error{margin:var(--space-sm) 0;font-size:.875rem;color:var(--color-danger-dark)}.today-view__welcome{margin:var(--space-md) 0;padding:var(--space-md) var(--space-lg);background:var(--color-primary-bg);border:1px dashed var(--color-primary-light);border-radius:var(--radius-md)}.today-view__welcome p{margin:0}.today-view__reflection{margin-top:var(--space-xl);scroll-margin-top:var(--space-lg)}.today-progress{padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.today-progress__numbers{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-xs) var(--space-md)}.today-progress__summary,.today-progress__next{margin:0;font-size:.9rem}.today-progress__summary{font-weight:600}.today-progress__next{color:var(--color-text-secondary)}.today-progress__bar{margin-top:var(--space-sm);height:8px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-full);overflow:hidden}.today-progress__fill{height:100%;background:var(--color-success);border-radius:var(--radius-full);transition:width .3s ease}.today-notes{margin:var(--space-md) 0;padding:var(--space-md) var(--space-lg);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.9rem}.today-notes__title{margin:0 0 var(--space-xs);font-size:.95rem}.today-notes__list{margin:0 0 var(--space-sm);padding-left:var(--space-lg)}.today-notes__detail{color:var(--color-text-secondary)}.today-notes__deferred{margin:var(--space-sm) 0 0;color:var(--color-text-secondary)}.today-notes .btn:focus-visible,.today-notes a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.today-settings{margin:var(--space-md) 0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.today-settings__summary{padding:var(--space-sm) var(--space-lg);font-weight:600;cursor:pointer;border-radius:var(--radius-md)}.today-settings__summary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.today-settings__body{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:var(--space-md);padding:0 var(--space-lg) var(--space-lg)}.today-settings__field{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.today-settings__field label{font-size:.875rem;font-weight:600}.today-settings__field select{width:100%;font:inherit;font-size:.9rem;padding:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.today-settings__field select:focus{outline:2px solid var(--color-primary);outline-offset:1px}.today-settings__hint{margin:0;font-size:.8rem;color:var(--color-text-secondary)}@media (max-width: 768px){.today-view__header{align-items:flex-start;flex-direction:column}.today-progress,.today-notes{padding:var(--space-md)}.today-settings__summary{padding:var(--space-sm) var(--space-md)}.today-settings__body{padding:0 var(--space-md) var(--space-md)}}@media (prefers-reduced-motion: reduce){.today-progress__fill{transition:none}}
