@view-transition{navigation:auto}::view-transition-old(main-content){animation:.2s ease-out both fade-out}::view-transition-new(main-content){animation:.3s ease-in both fade-in}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.db-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:28px;min-height:64px;padding:0 5vw;background:color-mix(in srgb,var(--paper) 92%,transparent);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.db-brand{display:inline-flex;align-items:center;gap:9px;color:var(--ink);font-weight:800;font-size:1.18rem;text-decoration:none;letter-spacing:-.02em}.db-brand img{width:28px;height:28px}.db-nav{display:flex;align-items:center;gap:4px}.db-nav a{display:inline-flex;align-items:center;gap:7px;padding:9px 12px;color:var(--text-secondary);border-radius:9px;text-decoration:none;font-weight:650}.db-nav a:hover,.db-nav a.active{color:var(--primary-hover);background:var(--accent-10)}.db-actions{margin-left:auto;display:flex;align-items:center;gap:9px}.midi-diagnostics{position:relative}.midi-status-dot{position:absolute;right:5px;bottom:5px;width:8px;height:8px;border:2px solid var(--paper);border-radius:50%}.midi-status-dot.unavailable{background:var(--error)}.icon-button{display:inline-grid;place-items:center;width:35px;height:35px;color:var(--text-secondary);background:transparent;border:1px solid var(--line);border-radius:9px;cursor:pointer}.icon-button:hover{color:var(--primary-hover);border-color:var(--primary-light)}.db-user{max-width:120px;overflow:hidden;color:var(--ink);border-radius:999px;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:700;text-decoration:none}.db-account-link{display:inline-flex;min-height:35px;align-items:center;justify-content:center;gap:7px;padding:7px 11px;color:var(--text-secondary);border:1px solid var(--line);border-radius:9px;background:transparent;font-size:.85rem;font-weight:700;text-decoration:none;white-space:nowrap}.db-account-link:hover,.db-account-link:focus-visible,.db-account-link.active{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-10);text-decoration:none}.db-user{display:inline-flex;align-items:center;gap:.35rem;padding:2px 6px 2px 2px}.db-user .user-avatar{flex-basis:1.9rem}.db-user-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.db-user:hover,.db-user:focus-visible{color:var(--primary-hover);background:var(--accent-10);text-decoration:none}.db-app{flex:1 0 auto;width:min(1280px,calc(100% - 32px));min-width:0;max-width:100%;margin:0 auto;padding:42px 0 10px}.learning-page{display:grid;gap:var(--page-section-gap)}.learning-intro{max-width:700px}.learning-intro h1{margin:7px 0 10px;font-size:clamp(2rem,5vw,3.4rem);line-height:1.02;letter-spacing:-.045em}.learning-intro p{max-width:620px;color:var(--text-secondary);font-size:1.05rem;line-height:1.6}.course-grid,.progress-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:16px}.db-course-card,.progress-card{min-height:204px;text-align:left;padding:22px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 6px 22px var(--ink-4);cursor:pointer;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.db-course-card:hover{transform:translateY(-3px);border-color:var(--primary-light);box-shadow:0 12px 30px var(--accent-15)}.db-course-card h2,.progress-card h2{margin:16px 0 8px;font-size:1.1rem}.db-course-card p{min-height:44px;margin:0;color:var(--text-secondary);line-height:1.45}.course-visibility,.block-kind{display:inline-block;color:var(--primary-hover);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em}.course-open{display:flex;align-items:center;gap:4px;margin-top:18px;color:var(--primary-hover);font-size:.85rem;font-weight:750}.curriculum-panel,.lesson-viewer{padding:28px;background:var(--paper);border:1px solid var(--line);border-radius:18px}.curriculum-panel header{border-bottom:1px solid var(--line);padding-bottom:17px}.curriculum-panel h2,.lesson-viewer h2{margin:5px 0 7px}.curriculum-panel header p,.lesson-viewer>p{margin:0;color:var(--text-secondary)}.curriculum-section{margin-top:28px}.curriculum-section>p{margin-top:-5px;color:var(--muted)}.curriculum-level{margin:17px 0 0;padding:15px;border:1px solid var(--line);border-radius:12px}.curriculum-level h4{margin:0 0 9px}.lesson-card{display:flex;align-items:center;width:100%;gap:10px;padding:12px 8px;color:var(--ink);text-align:left;background:transparent;border:0;border-top:1px solid var(--line);cursor:pointer}.lesson-card:hover strong{color:var(--primary-hover)}.lesson-card span:nth-child(3){display:grid;gap:3px;flex:1}.lesson-card small{color:var(--muted)}.lesson-number{color:var(--muted);font-size:.82rem}.lesson-status{width:9px;height:9px;border:2px solid var(--muted);border-radius:50%}.lesson-status.in_progress{border-color:var(--warning);background:var(--warning)}.lesson-status.completed{border-color:var(--ok);background:var(--ok)}.lesson-status.locked{border-color:var(--line);background:var(--line)}.lesson-viewer{display:grid;gap:18px}.lesson-block{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px;border:1px solid var(--line);border-radius:12px}.lesson-block h3{margin:5px 0}.lesson-block p{margin:0;color:var(--text-secondary)}.practice-action{display:grid;gap:7px;flex:0 0 auto}.practice-action button,.db-state button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 14px;color:#fff;background:var(--primary);border:0;border-radius:9px;cursor:pointer;font-weight:750}.practice-action button:disabled{opacity:.7}.practice-action small{max-width:210px;color:var(--error)}.practice-shell{display:grid;gap:14px}.back-link{justify-self:start;display:inline-flex;align-items:center;gap:5px;color:var(--primary-hover);background:none;border:0;cursor:pointer;font-weight:700}.db-state{display:flex;align-items:center;justify-content:center;gap:10px;min-height:150px;padding:22px;color:var(--text-secondary);text-align:center;background:var(--paper);border:1px solid var(--line);border-radius:16px}.db-state.error{display:grid;color:var(--error)}.db-state.error p{margin:0;color:var(--text-secondary)}.db-state.error button{justify-self:center}.db-spinner{width:20px;height:20px;border:3px solid var(--accent-20);border-top-color:var(--primary);border-radius:50%;animation:db-spin .7s linear infinite}@keyframes db-spin{to{transform:rotate(360deg)}}.progress-card strong{font-size:1.8rem}.progress-bar{height:8px;margin:15px 0 10px;overflow:hidden;background:var(--accent-10);border-radius:999px}.progress-bar span{display:block;height:100%;background:var(--primary);border-radius:inherit}.progress-card p{min-height:38px;color:var(--text-secondary)}.progress-card a{display:inline-flex;align-items:center;gap:3px;color:var(--primary-hover);font-weight:700;text-decoration:none}@media(max-width:480px){.db-account-link{width:36px;height:36px;min-height:36px;padding:0}.db-account-link span{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}}.course-menu{position:relative}.course-menu>summary{display:inline-flex;align-items:center;gap:7px;padding:9px 12px;color:var(--text-secondary);border-radius:9px;cursor:pointer;font-weight:650;list-style:none}.course-menu>summary::-webkit-details-marker{display:none}.course-menu>summary:hover,.course-menu.active>summary,.course-menu[open]>summary{color:var(--primary-hover);background:var(--accent-10)}.course-menu>summary svg:last-child{transition:transform .16s ease}.course-menu[open]>summary svg:last-child{transform:rotate(180deg)}.course-menu-popover{position:absolute;top:calc(100% + 12px);left:0;z-index:30;display:grid;width:min(340px,calc(100vw - 32px));padding:8px;background:var(--paper);border:1px solid var(--line);border-radius:13px;box-shadow:0 18px 42px var(--ink-15)}.course-menu-heading{padding:8px 10px 6px;color:var(--muted);font-size:.69rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.course-menu-popover button,.course-menu-progress{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:10px;color:var(--ink);text-align:left;background:transparent;border:0;border-radius:8px;cursor:pointer;font:inherit;font-size:.88rem}.course-menu-popover button:hover,.course-menu-popover button.selected,.course-menu-progress:hover,.course-menu-progress.selected{color:var(--primary-hover);background:var(--accent-10)}.course-menu-popover button span,.course-menu-progress span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-menu-popover small{flex:0 0 auto;color:var(--primary-hover);font-size:.68rem;font-weight:750}.course-menu-state{padding:10px;color:var(--muted);font-size:.84rem}.course-menu-progress{justify-content:flex-start;margin-top:6px;border-top:1px solid var(--line);text-decoration:none}.course-menu-progress small{margin-left:auto;max-width:155px;overflow:hidden;color:var(--muted);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.compact-curriculum{padding:0;overflow:hidden}.compact-curriculum>.course-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,.62fr);gap:32px;align-items:end;padding:28px 30px 24px;background:linear-gradient(135deg,var(--paper),var(--accent-6))}.midi-learning-note{display:grid;gap:5px;margin:0;padding:15px 18px;border-left:3px solid var(--primary);background:color-mix(in srgb,var(--accent-6) 72%,var(--paper))}.midi-learning-note header{padding:0;border:0}.midi-learning-note h2{margin:0;color:var(--primary-hover);font-size:1.05rem;line-height:1.3}.midi-learning-note p{max-width:880px;margin:0;color:var(--text-secondary);font-size:.88rem;line-height:1.5}.midi-learning-note-mobile-title,.midi-learning-note-mobile-copy{display:none}.connection-notice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:13px;margin:24px 30px 0;padding:17px 19px;background:linear-gradient(135deg,var(--gold-10),var(--accent-5));border:1px solid var(--gold-25);border-radius:14px}.connection-notice-icon{display:grid;place-items:center;width:42px;height:42px;color:var(--primary-hover);background:var(--paper);border:1px solid var(--accent-15);border-radius:12px}.connection-notice-copy{display:grid;gap:5px}.connection-notice-copy .eyebrow{color:var(--primary-hover)}.connection-notice-copy h2{margin:0;font-size:1.05rem}.connection-notice-copy p{max-width:820px;margin:0;color:var(--text-secondary);line-height:1.5}.connection-notice-link{display:inline-flex;align-items:center;justify-self:start;gap:3px;margin-top:3px;color:var(--primary-hover);font-size:.86rem;font-weight:800;text-decoration:underline;text-underline-offset:3px}.connection-notice-link:hover{color:var(--primary)}.connection-notice-link:focus-visible{outline:3px solid var(--primary-light);outline-offset:3px;border-radius:4px}.course-overview h1{margin:4px 0 7px;font-size:clamp(1.55rem,3vw,2.15rem);letter-spacing:-.035em}.course-overview p{max-width:670px;margin:0;color:var(--text-secondary);line-height:1.55}.course-metrics{align-self:center}.course-metrics>strong{display:block;font-size:1.45rem}.course-metrics>strong small{color:var(--muted);font-size:.8rem;font-weight:600}.course-metrics .progress-bar{margin:9px 0}.next-lesson{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:.78rem}.next-lesson a{color:var(--primary-hover);font-weight:700;text-decoration:underline;text-underline-offset:2px}.next-lesson a:hover{color:var(--primary)}.curriculum-stream{display:grid;gap:24px;padding:24px 30px 30px}.compact-curriculum .curriculum-section{margin:0}.compact-curriculum .curriculum-section>header{display:flex;gap:14px;align-items:flex-start;padding:0 0 13px;border-bottom:1px solid var(--line)}.section-label{padding-top:4px;color:var(--primary-hover);font-size:.67rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.compact-curriculum .curriculum-section h2{margin:0;font-size:1.15rem}.compact-curriculum .curriculum-section header p{margin:4px 0 0;color:var(--muted);font-size:.86rem}.compact-curriculum .curriculum-level{margin:13px 0 0;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:11px}.level-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 14px;background:var(--accent-5)}.level-heading>div{display:flex;align-items:baseline;gap:8px}.level-heading span{color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.level-heading h3{margin:0;font-size:.92rem}.level-heading>small{color:var(--muted);font-size:.75rem}.lesson-list{display:grid}.compact-curriculum .lesson-card{min-height:58px;gap:11px;padding:9px 14px;border-top:1px solid var(--line)}.compact-curriculum .lesson-card:first-child{border-top:0}.compact-curriculum .lesson-card:hover,.compact-curriculum .lesson-card.selected{background:var(--accent-6)}.compact-curriculum .lesson-card.selected{box-shadow:inset 3px 0 0 var(--primary)}.lesson-copy{display:grid;min-width:0;gap:2px;flex:1}.lesson-copy strong,.lesson-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-copy strong{font-size:.88rem}.lesson-copy small{color:var(--muted);font-size:.76rem}.lesson-state{min-width:74px;color:var(--muted);font-size:.74rem;text-align:right}.lesson-status{display:inline-grid;place-items:center;flex:0 0 10px;color:var(--ok)}.lesson-status.completed{width:14px;height:14px;border:0;background:transparent}.lesson-number{min-width:21px}.lesson-viewer{padding:25px 30px}.lesson-content{display:grid;gap:12px}.progress-page{max-width:760px}.selected-course-progress{min-height:auto;max-width:560px;cursor:default}.selected-course-progress strong{display:block;margin-top:10px}.selected-course-progress p a{color:var(--primary-hover);font-weight:700;text-decoration:underline;text-underline-offset:2px}.selected-course-progress p a:hover{color:var(--primary)}.selected-course-progress .full-course-link{margin:.35rem 0 0}.selected-course-progress .full-course-link span{color:var(--text-secondary)}@media(max-width:720px){.course-menu-popover{left:-58px}.connection-notice{grid-template-columns:1fr;margin:16px 19px 0;padding:16px}.connection-notice-icon{width:38px;height:38px}.midi-learning-note{margin:0;padding:14px 15px}.midi-learning-note-desktop-title,.midi-learning-note-desktop-copy{display:none}.midi-learning-note-mobile-title,.midi-learning-note-mobile-copy{display:block}.midi-learning-note h2{font-size:.98rem}.midi-learning-note p{font-size:.84rem}.compact-curriculum>.course-overview{grid-template-columns:1fr;gap:16px;padding:21px 19px}.curriculum-stream{padding:19px;gap:20px}.lesson-state{display:none}.compact-curriculum .lesson-card{padding:10px}.lesson-copy strong{font-size:.84rem}.lesson-viewer{padding:20px 19px}}@media(max-width:720px){.db-brand-name{display:none}.db-topbar{gap:8px;padding:0 4vw}.db-nav{min-width:0;gap:2px}.db-nav a,.course-menu>summary{gap:6px;padding:8px 7px;font-size:.82rem;white-space:nowrap}.db-nav a svg,.course-menu>summary svg{width:18px;height:18px}.course-menu>summary svg:last-child{display:block;width:14px;height:14px}.db-user{display:none}.db-app{padding-top:28px}.lesson-block{align-items:flex-start;flex-direction:column}.practice-action,.practice-action button{width:100%}.curriculum-panel,.lesson-viewer{padding:19px}}@media(max-width:720px)and (orientation:portrait){.course-menu>summary svg:first-child,.journey-nav-link svg{display:none}}.admin-preview-indicator{display:inline-flex;align-items:center;gap:7px;margin-left:auto;padding:6px 8px 6px 10px;border:1px solid color-mix(in srgb,var(--primary) 45%,var(--line));border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs);font-weight:800;white-space:nowrap}.admin-preview-indicator button{padding:4px 9px;border:0;border-radius:999px;color:var(--text-inverse);background:var(--primary);font:inherit;font-size:var(--text-xs);font-weight:800;cursor:pointer}.admin-preview-indicator button:hover{background:var(--primary-hover)}@media(max-width:700px){.admin-preview-indicator span{display:none}}:root{color-scheme:light;--primary: #28768A;--primary-hover: #236A7C;--primary-light: #78B7C5;--accent-warm: #FFC857;--accent-gold: #E1BD6D;--success: #0B775E;--error: #C93312;--warning: #8F5700;--bg: #FAF5EC;--paper: rgba(255, 255, 255, .92);--ink: #242424;--muted: #56666B;--accent: #28768A;--accent-deep: #236A7C;--accent-soft: rgba(40, 118, 138, .12);--line: rgba(36, 36, 36, .12);--ok: #0B775E;--warn: #8F5700;--text-secondary: #3D4649;--accent-strong: var(--accent-deep);--danger: var(--error);--paper-alt: rgba(255, 255, 255, .96);--surface-muted: #EFE8DE;--border: rgba(36, 36, 36, .16);--text-inverse: #fff;--ink-8: rgba(36, 36, 36, .08);--ink-20: rgba(36, 36, 36, .2);--accent-18: rgba(40, 118, 138, .18);--accent-3: rgba(40, 118, 138, .03);--accent-5: rgba(40, 118, 138, .05);--accent-6: rgba(40, 118, 138, .06);--accent-8: rgba(40, 118, 138, .08);--accent-10: rgba(40, 118, 138, .1);--accent-12: rgba(40, 118, 138, .12);--accent-15: rgba(40, 118, 138, .15);--accent-20: rgba(40, 118, 138, .2);--accent-25: rgba(40, 118, 138, .25);--accent-30: rgba(40, 118, 138, .3);--accent-35: rgba(40, 118, 138, .35);--accent-40: rgba(40, 118, 138, .4);--gold-6: rgba(255, 200, 87, .06);--gold-8: rgba(255, 200, 87, .08);--gold-10: rgba(255, 200, 87, .1);--gold-12: rgba(255, 200, 87, .12);--gold-15: rgba(255, 200, 87, .15);--gold-18: rgba(255, 200, 87, .18);--gold-20: rgba(255, 200, 87, .2);--gold-25: rgba(255, 200, 87, .25);--ink-3: rgba(36, 36, 36, .03);--ink-4: rgba(36, 36, 36, .04);--ink-5: rgba(36, 36, 36, .05);--ink-6: rgba(36, 36, 36, .06);--ink-10: rgba(36, 36, 36, .1);--ink-15: rgba(36, 36, 36, .15);--white-4: rgba(255, 255, 255, .04);--white-6: rgba(255, 255, 255, .06);--white-8: rgba(255, 255, 255, .08);--white-45: rgba(255, 255, 255, .45);--white-50: rgba(255, 255, 255, .5);--white-56: rgba(255, 255, 255, .56);--white-60: rgba(255, 255, 255, .6);--white-80: rgba(255, 255, 255, .8);--surface: #F5CDB4;--border-warm: #D9B382;--star-3: #FFC857;--star-2: #E1BD6D;--star-1: #D9B382;--star-3-bg: rgba(255, 200, 87, .2);--star-2-bg: rgba(225, 189, 109, .18);--star-1-bg: rgba(217, 179, 130, .14);--piano-key-white: #fff;--piano-key-black: #242424;--piano-key-stroke: #A7B1B4;--piano-label-muted: #39464A;--piano-label-strong: #1E2629;--piano-right-text: #236A7C;--piano-left-text: #8F5700;--piano-right-stroke: #28768A;--piano-left-stroke: #8F5700;--piano-right-fill: #c8e2ea;--piano-left-fill: #f5dfc5;--piano-right-chord: #8ec5d0;--piano-left-chord: #e5c8a0;--piano-right-black-chord: #2d7a8f;--piano-left-black-chord: #c47a1a;--piano-pressed: #F5CDB4;--piano-wrong-fill: #fdd5cc;--piano-wrong-text: #C93312;--piano-wrong-black-stroke: #8a2510;--piano-key-shadow: rgba(0, 0, 0, .06);--piano-key-black-top: #3a3a3a;--piano-key-black-bottom: #1a1a1a;--player-screen-bg: #d7e4e8;--player-surface: #cfdee3;--player-panel: #c8dbe1;--player-border: #86aab4;--player-tabs: #8fb4bf;--player-tab-text: #244e5a;--player-tab-active-bg: #f7fbfc;--player-tab-active-text: #0c2831;--player-tab-hover-bg: #b9d1d8;--player-tab-hover-text: #102f39;--player-preview-bg: #177e96;--player-preview-border: #176f85;--player-previewing-bg: #c8622e;--player-previewing-border: #a64d21;--player-control-bg: #f2f8f9;--player-control-text: #0e5365;--player-next-bg: #b9dce4;--player-next-text: #07546a;--player-midi-bg: #f3fafb;--player-midi-text: #07566c;--player-midi-border: #167f98;--player-connected-bg: #08785f;--player-connected-border: #07644f;--player-score-bg: #f8fbfc;--player-score-control-bg: rgba(207, 226, 231, .95);--player-score-control-border: #78a5b1;--player-score-control-text: #123f4a;--player-follow-bg: #087d95;--player-tab-shadow: rgba(21, 75, 90, .28);--player-preview-shadow: rgba(13, 78, 94, .3);--player-score-shadow: rgba(19, 68, 81, .2);--rh-next: #78B7C5;--lh-next: #F1BB7B;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;--font-display: "Playfair Display", "Georgia", serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;--text-2xs: .68rem;--text-xs: .75rem;--text-sm: .82rem;--text-base: .9rem;--text-md: .95rem;--text-lg: 1.1rem;--text-xl: 1.35rem;--text-2xl: 1.8rem;--text-3xl: clamp(3.2rem, 8vw, 5.8rem);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 72px;--page-section-gap: 3px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-xl: 24px;--radius-pill: 999px;--shadow-sm: 0 2px 8px rgba(50, 42, 25, .06);--shadow-md: 0 8px 24px rgba(50, 42, 25, .08);--shadow-lg: 0 16px 40px rgba(50, 42, 25, .1);--shadow-xl: 0 24px 64px rgba(50, 42, 25, .12);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .4s cubic-bezier(.16, 1, .3, 1);line-height:1.5;font-weight:400;color:var(--ink);background:radial-gradient(circle at top left,var(--accent-5),transparent 32%),radial-gradient(circle at bottom right,rgba(241,187,123,.06),transparent 28%),linear-gradient(180deg,#faf5ec,#f5ede0)}.shelf-cell,.shelf-cell-wide,.song-card,.exercise-table-row,.course-meta-line,.breadcrumbs,.top-nav{line-height:1.3}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:rgba(49,49,49,.15) transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#31313126;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:#31313147}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh}a{color:inherit;text-decoration:none}p,ul,ol,h1,h2,h3,h4{margin-top:0}p{margin-bottom:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.skip-link:focus{position:fixed;top:8px;left:8px;z-index:10000;width:auto;height:auto;padding:12px 24px;background:var(--accent);color:#fff;border-radius:8px;font-weight:600;text-decoration:none}#root{display:flex;flex-direction:column;min-height:100vh}#root:fullscreen{width:100%;max-width:100%;min-height:100dvh;overflow:auto;background:var(--paper)}.app-shell{width:min(1320px,calc(100vw - 48px));margin:0 auto;padding:var(--space-2xl) 0 var(--space-3xl)}.top-nav{position:sticky;top:0;z-index:50;height:56px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--paper);border-bottom:1px solid var(--line);padding:0 24px;display:flex;align-items:center;gap:24px}.top-nav-logo{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:1.3rem;font-weight:700;color:var(--ink);text-decoration:none;flex-shrink:0;transition:opacity var(--transition-fast)}.top-nav-logo:hover{opacity:.8}.top-nav-logo-icon{border-radius:4px}.top-nav-links{display:flex;gap:24px;margin:0 auto}.top-nav-links a{position:relative;color:var(--muted);text-decoration:none;font-size:var(--text-md);font-weight:600;padding-bottom:2px;transition:color var(--transition-fast)}.top-nav-links a:after{content:"";position:absolute;bottom:-4px;left:50%;width:0;height:2px;background:var(--accent);border-radius:1px;transition:all .25s cubic-bezier(.16,1,.3,1);transform:translate(-50%)}.top-nav-links a.active:after{width:100%}.top-nav-links a:hover:after{width:60%}.top-nav-links a:hover,.top-nav-links a.active{color:var(--ink)}.top-nav-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.hero-panel{position:relative;border-bottom:1px solid var(--line);background-color:#edf5f7;background-image:linear-gradient(135deg,#3b9ab252,#ffc85733 40%,#f1bb7b47);width:100%}.hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:var(--space-xl);max-width:1320px;margin:0 auto;padding:var(--space-3xl) var(--space-2xl) var(--space-2xl);overflow:hidden}.hero-inner:before{content:"";position:absolute;top:50%;left:0;right:0;height:80px;transform:translateY(-50%);background:repeating-linear-gradient(to bottom,transparent,transparent 15px,rgba(59,154,178,.12) 15px,rgba(59,154,178,.12) 16px);pointer-events:none;z-index:0;mask-image:linear-gradient(90deg,transparent 0%,black 15%,black 85%,transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0%,black 15%,black 85%,transparent 100%)}.hero-inner:after{content:"";position:absolute;bottom:0;left:0;right:0;height:4px;background:repeating-linear-gradient(90deg,transparent 0px,transparent 18px,var(--line) 18px,var(--line) 19px,transparent 19px,transparent 30px,rgba(49,49,49,.06) 30px,rgba(49,49,49,.06) 31px);opacity:.7;pointer-events:none}.hero-mascot-area{display:flex;align-items:center;justify-content:center;position:relative;min-height:280px}.hero-mascot-area:before{content:"";position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(59,154,178,.18) 0%,rgba(255,200,87,.06) 50%,transparent 70%)}.hero-mascot-area:after{content:"";position:absolute;width:380px;height:380px;border-radius:50%;border:2px solid rgba(59,154,178,.25);pointer-events:none;box-shadow:0 0 40px #3b9ab214}.panel{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.surface-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--shadow-sm)}.hero-copy{position:relative;z-index:1;animation:hero-enter .7s cubic-bezier(.16,1,.3,1) both}@keyframes hero-enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.hero-copy h1{margin-bottom:8px;font-family:var(--font-display);font-size:clamp(3.2rem,8vw,5.8rem);font-weight:800;line-height:.9;letter-spacing:-.03em;background:linear-gradient(135deg,var(--ink) 30%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-stat-line{font-size:var(--text-base);font-weight:600;color:var(--accent-gold);letter-spacing:.02em;margin-bottom:var(--space-lg)}.hero-copy .hero-tagline{max-width:42ch;font-size:1.3rem;font-weight:500;color:var(--text-secondary);line-height:1.65;margin-bottom:var(--space-xl);letter-spacing:-.01em}.hero-right{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-sm);position:relative;z-index:1}.midi-indicator{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:600;transition:all var(--transition-base)}.midi-indicator.ok{background:#0b775e1a;color:var(--ok)}.midi-indicator.warn{background:#dd8d291a;color:var(--warn)}.midi-dot{width:6px;height:6px;border-radius:50%;background:currentColor;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.panel{padding:var(--space-lg)}.status-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:var(--space-lg);display:grid;gap:12px}.eyebrow{display:inline-block;margin-bottom:12px;color:var(--accent);font-size:var(--text-sm);font-weight:700;letter-spacing:.14em;text-transform:uppercase}.status{display:inline-flex;align-items:center;width:fit-content;padding:8px 14px;border-radius:var(--radius-pill);font-weight:700;font-size:var(--text-md)}.status.ok{background:#0b775e1f;color:var(--ok)}.status.warn{background:#dd8d2924;color:var(--warn)}.lead,.support-copy,.course-nav-meta,.preview-list span,.meta-row,.detail-label,.muted-note,.breadcrumbs,.outline-copy span,.section-head p{color:var(--muted)}.browser-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:var(--space-md);align-items:start}.browser-sidebar{display:grid;gap:var(--space-md)}.browser-sidebar>.panel{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border:none;border-right:1px solid var(--line);border-radius:0;background:#faf5eb66;padding-left:0}.browser-sidebar .eyebrow{font-size:var(--text-xs);letter-spacing:.12em}.browser-sidebar .section-head h2{font-family:inherit;font-size:var(--text-lg);font-weight:700;letter-spacing:-.01em}.browser-main{min-width:0;display:grid;gap:16px;view-transition-name:main-content}.section-head{display:flex;gap:16px;justify-content:space-between;align-items:flex-start}.section-head h2,.section-head h3,.exercise-head h4,.outline-panel h3{margin-bottom:0}.section-head h2{font-family:var(--font-display);font-size:1.8rem;letter-spacing:-.02em}.plain-link{color:var(--accent-deep);font-weight:700;transition:color var(--transition-fast)}.plain-link:hover{color:var(--accent);text-decoration:underline}.hero-panel+.browser-layout .breadcrumbs{display:none}.breadcrumbs{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:var(--text-md)}.breadcrumbs a{color:var(--accent-deep);font-weight:700;transition:color var(--transition-fast)}.breadcrumbs a:hover{color:var(--accent)}.course-nav{display:grid;gap:10px}.course-nav-link,.outline-link{transition:transform var(--transition-base),background var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base)}.course-nav-link{display:block;padding:12px 14px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;transition:background var(--transition-base),border-color var(--transition-base),transform var(--transition-base),box-shadow var(--transition-base)}.course-nav-link:hover{background:var(--white-60);border-color:var(--line);transform:translate(2px)}.outline-link:hover,.action-link:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}.course-nav-link.active{background:var(--accent-soft);border-color:var(--accent-25);box-shadow:var(--shadow-sm)}.course-nav-title{display:block;margin-bottom:2px;font-weight:600;font-size:var(--text-base)}.course-nav-meta{display:block;font-size:var(--text-sm)}.screen-stack{display:grid;gap:var(--page-section-gap)}.metric-grid,.detail-grid{display:grid;gap:12px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:20px}.metric-card,.detail-stat,.goal-panel,.license-panel{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--white-56);transition:box-shadow var(--transition-base),transform var(--transition-base)}.metric-card:hover,.detail-stat:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.metric-card,.detail-stat{padding:16px}.metric-label,.detail-label{display:block;margin-bottom:8px;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.1em;font-weight:600;color:var(--muted)}.metric-card strong{font-family:var(--font-display);font-size:1.6rem;letter-spacing:-.03em;color:var(--accent-gold)}.progress-stat-value{font-family:var(--font-display);font-size:2.2rem;font-weight:800;letter-spacing:-.04em;line-height:1;color:var(--accent-gold)}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px}.course-card{display:flex;flex-direction:column;gap:12px;padding:28px;transition:transform var(--transition-slow),box-shadow var(--transition-slow)}.course-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-xl)}.course-card-head,.exercise-head{display:flex;gap:12px;justify-content:space-between;align-items:flex-start}.pill{align-self:flex-start;padding:6px 12px;border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-deep);font-size:var(--text-sm);font-weight:700}.course-card-summary{font-size:var(--text-md);color:var(--muted);line-height:1.55;flex:1}.course-card h3{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.01em}.tag-row,.meta-row,.action-row,.pager-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.tag{display:inline-flex;padding:6px 10px;border-radius:var(--radius-pill);background:var(--ink-5);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.preview-list{margin:0;padding-left:20px;display:grid;gap:10px}.preview-list strong{display:block;margin-bottom:2px}.btn-base,.action-link,.action-button,.secondary-button,.celebration-btn,.start-perform-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 20px;border:1px solid transparent;border-radius:8px;font-weight:600;font-size:var(--text-md);letter-spacing:.01em;cursor:pointer;font-family:inherit;text-decoration:none;transition:transform var(--transition-base),background var(--transition-base),border-color var(--transition-base),box-shadow var(--transition-base)}.action-link.primary,.action-button,.celebration-btn.primary,.start-perform-btn{background:var(--accent);color:#fff;font-weight:700;box-shadow:0 4px 14px var(--accent-30)}.action-link.primary:hover,.action-button:hover:not(:disabled),.celebration-btn.primary:hover,.start-perform-btn:hover{background:var(--accent-deep);box-shadow:0 6px 20px var(--accent-40);transform:translateY(-2px)}.action-link.secondary,.secondary-button,.celebration-btn.secondary{background:var(--white-60);border:1.5px solid var(--line);border-radius:6px;color:var(--ink)}.action-link.secondary:hover,.secondary-button:hover:not(:disabled),.celebration-btn.secondary:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 16px;border-radius:6px}.btn-ghost:hover{background:var(--accent-5)}.action-link.danger{border-color:var(--error);color:var(--error);background:#c9331214}.action-link.danger:hover{background:#c9331226}.action-button:disabled,.secondary-button:disabled,.start-perform-btn:disabled{cursor:not-allowed;opacity:.55}.hero-copy .action-link.primary{padding:16px 36px;font-size:1.05rem;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--accent) 0%,#2d8fa0 50%,var(--accent-deep) 100%);background-size:200% 200%;animation:gradient-shift 4s ease infinite;box-shadow:0 4px 20px #3b9ab259;letter-spacing:.02em}@keyframes gradient-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.hero-copy .action-link.primary:hover{box-shadow:0 6px 28px #3b9ab259,0 0 0 4px #ffc8571f;transform:translateY(-3px)}.hero-cta{display:inline-flex}.hero-resume-hint{font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-sm)}.hero-steps{display:flex;gap:var(--space-xl);padding:var(--space-xl) 0 0;margin-top:var(--space-lg);border-top:1px solid var(--line)}.hero-step{flex:1;display:flex;flex-direction:column;gap:var(--space-xs);color:var(--muted)}.hero-step svg{color:var(--accent)}.hero-step h3{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;margin:0;color:var(--ink)}.hero-step p{font-size:var(--text-base);margin:0;line-height:1.4}@media(max-width:860px){.hero-steps{flex-direction:column;gap:var(--space-md)}}.action-row.compact{justify-content:flex-end}.detail-panel,.empty-panel{display:grid;gap:var(--space-md)}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.detail-stat strong{display:block;font-size:1rem}.course-meta-line{display:flex;align-items:center;gap:12px;font-size:var(--text-md);color:var(--muted)}.course-meta-line strong{font-family:var(--font-display);font-size:var(--text-lg);color:var(--accent);margin-right:2px}.course-meta-dot{width:4px;height:4px;border-radius:50%;background:var(--muted);opacity:.4}.exercise-stack{display:grid;gap:12px}.exercise-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;padding:18px 0;border-top:1px solid var(--line);transition:background var(--transition-fast)}.exercise-card:first-child{padding-top:0;border-top:0}.exercise-rank,.outline-index{display:grid;place-items:center;font-weight:700}.exercise-rank{width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent-deep);font-size:var(--text-md);transition:background var(--transition-fast),color var(--transition-fast)}.exercise-copy,.outline-copy{min-width:0;display:grid}.exercise-copy{gap:12px}.goal-copy{padding:14px 16px;border-radius:var(--radius-md);background:var(--ink-4);font-size:var(--text-md);color:var(--text-secondary)}.goal-panel,.license-panel{padding:18px}.license-panel p+p{margin-top:8px}.outline-compact-grid{display:grid;grid-template-columns:repeat(auto-fill,36px);gap:6px;padding:4px 0}.outline-compact-item{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:var(--text-sm);font-weight:600;color:var(--muted);background:#00000008;border:1.5px solid transparent;text-decoration:none;transition:all var(--transition-fast);cursor:pointer}.outline-compact-item:hover{background:var(--accent-8);color:var(--ink)}.outline-compact-item.active{background:var(--accent);color:#fff;border-color:var(--accent-deep);font-weight:700}.outline-compact-item.done{background:var(--ok);color:#fff}.outline-compact-item.done.active{background:var(--accent)}[data-theme=dark] .outline-compact-item{background:#ffffff0d}.outline-list{margin:0;padding:0;list-style:none;display:grid;gap:10px}.outline-link{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;transition:background var(--transition-base),border-color var(--transition-base),transform var(--transition-base),box-shadow var(--transition-base)}.outline-link:hover{background:var(--white-50);border-color:var(--line)}.outline-link.active{background:var(--accent-soft);border-color:var(--accent-25)}.outline-index{width:30px;height:30px;border-radius:var(--radius-pill);background:var(--ink-6);font-size:var(--text-sm)}.outline-copy{gap:4px}.muted-note{display:inline-flex;align-items:center;min-height:42px;font-size:var(--text-md)}@media(min-width:1081px){.browser-sidebar{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto}}@media(max-width:1080px){.browser-layout{grid-template-columns:1fr}}@media(max-width:860px){.app-shell{width:min(100vw - 20px,1320px);padding:20px 0 40px}.hero-inner{grid-template-columns:1fr;padding:var(--space-xl)}.hero-mascot-area{min-height:auto}.hero-mascot-area .mascot{height:120px}.browser-sidebar{display:none}.metric-grid,.course-grid,.detail-grid{grid-template-columns:1fr}.section-head,.course-card-head,.exercise-head{flex-direction:column;align-items:flex-start}.action-row.compact{justify-content:flex-start}.exercise-card{grid-template-columns:1fr}.exercise-rank{width:36px;height:36px}}.diagnostics-grid,.practice-grid,.practice-status-row,.session-grid{display:grid;gap:12px}.diagnostics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.diagnostics-header{display:grid;gap:var(--space-md)}.diagnostics-page h1,.diagnostics-page h2{font-family:inherit;font-size:1.5rem;letter-spacing:-.01em;font-style:normal}.meta-label{display:block;font-size:var(--text-sm);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.session-grid,.practice-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.practice-status-row{grid-template-columns:repeat(2,minmax(0,1fr))}.empty-state{display:grid;gap:8px;padding:18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--white-45)}.input-list{margin:0;padding:0;list-style:none;display:grid;gap:12px}.input-card{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;padding:16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--white-56)}.input-meta{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.pill.muted{background:var(--ink-6);color:var(--muted)}.event-table{display:grid;gap:8px}.event-row{display:grid;grid-template-columns:120px minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:start;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.event-row-header{background:transparent;border:0;padding:0 4px;border-radius:0;font-size:var(--text-sm);font-weight:700;color:var(--muted)}.event-chip{display:inline-flex;padding:6px 10px;border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:700}.event-chip.note-on{background:#0b775e1f;color:var(--ok)}.event-chip.note-off{background:var(--ink-6);color:var(--ink)}.event-chip.sustain{background:var(--accent-12);color:var(--accent-deep)}.mono{display:inline-flex;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-mono);font-size:var(--text-base)}.connection-guide{display:grid;gap:var(--space-md)}.connection-guide>p,.connection-guide li{color:var(--text-secondary);line-height:1.6}.connection-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.connection-guide-grid article{padding:16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--white-50)}.connection-guide-grid h3{margin:0 0 8px;font-size:var(--text-md)}.connection-guide-grid p,.connection-guide-sources{margin:0}.connection-guide-steps{display:grid;gap:8px;margin:0;padding-left:22px}.connection-guide-sources{font-size:var(--text-sm)}.practice-panel{display:grid;gap:16px}@media(max-width:860px){.diagnostics-grid,.practice-status-row,.connection-guide-grid,.event-row{grid-template-columns:1fr}.input-card{flex-direction:column}.input-meta{justify-content:flex-start}}.exercise-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}.exercise-main{display:flex;flex-direction:column;gap:12px;min-width:0}.exercise-header{padding:20px 24px 16px;border-bottom:1px solid var(--line)}.exercise-header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.back-link{font-size:var(--text-base);color:var(--muted);text-decoration:none;transition:color var(--transition-fast)}.back-link:hover{color:var(--accent)}.exercise-pager{display:flex;align-items:center;gap:8px}.pager-link{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent);font-size:var(--text-md);text-decoration:none;font-weight:600;transition:background var(--transition-fast),color var(--transition-fast)}.pager-link:hover{background:var(--accent);color:#fff}.pager-link.disabled{opacity:.3;cursor:default;pointer-events:none}.pager-count{font-size:var(--text-sm);color:var(--muted);min-width:36px;text-align:center}.exercise-header-body{margin-bottom:12px}.exercise-title{font-family:var(--font-display);font-size:1.6rem;font-weight:700;letter-spacing:-.02em;margin-bottom:4px;view-transition-name:page-title;color:var(--ink)}.exercise-goal{font-size:var(--text-md);color:var(--muted);margin:0}.exercise-chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:var(--text-sm);font-weight:600;padding:4px 10px;border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-deep)}.score-viewer-wrap{background:#fff;border-radius:4px;border:1px solid var(--line);overflow:hidden;box-shadow:0 8px 32px #322a191a,0 2px 8px #322a190d,0 0 0 1px #3b9ab20f;transition:box-shadow var(--transition-slow)}.score-viewer-wrap:hover{box-shadow:0 8px 32px #322a191f,0 2px 8px #322a190f,0 0 0 1px #3b9ab21a}.score-viewer-stage{position:relative;width:100%;min-width:0}.score-viewer{width:100%}.practice-range-overlay{position:absolute;z-index:6;inset:0;pointer-events:none}.practice-range-selected-measure{position:absolute;border-radius:3px;background:color-mix(in srgb,#3267c8 6%,transparent)}.practice-range-measure-target{position:absolute;z-index:3;padding:0;border:0;border-radius:3px;background:transparent;cursor:crosshair;pointer-events:auto;touch-action:pan-y}.practice-range-measure-target:hover,.practice-range-measure-target:focus-visible{outline:2px solid color-mix(in srgb,#3267c8 72%,transparent);outline-offset:-2px;background:color-mix(in srgb,#3267c8 10%,transparent)}.practice-range-marker{--practice-range-marker-color: #3267c8;position:absolute;z-index:5;width:32px;min-width:32px;min-height:32px;padding:0;transform:translate(-50%);border:0;outline:0;background:transparent;cursor:grab;pointer-events:auto;touch-action:none}.practice-range-marker:before{position:absolute;top:0;bottom:0;left:calc(50% - 1px);width:2px;background:var(--practice-range-marker-color);box-shadow:0 0 0 1px #ffffffb8;content:""}.practice-range-marker-flag{position:absolute;top:-1px;width:14px;height:12px;background:var(--practice-range-marker-color);filter:drop-shadow(0 1px 1px rgba(20,44,94,.2))}.practice-range-marker-start .practice-range-marker-flag{left:50%;clip-path:polygon(0 0,100% 50%,0 100%)}.practice-range-marker-end .practice-range-marker-flag{right:50%;clip-path:polygon(100% 0,0 50%,100% 100%)}.practice-range-marker-tooltip{position:absolute;top:-31px;left:50%;padding:4px 7px;transform:translate(-50%) translateY(3px);border-radius:5px;color:#fff;background:#181e24e6;box-shadow:0 2px 7px #00000038;font-size:.72rem;font-weight:700;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast),transform var(--transition-fast)}.practice-range-marker:hover .practice-range-marker-tooltip,.practice-range-marker:focus-visible .practice-range-marker-tooltip,.practice-range-marker:active .practice-range-marker-tooltip{transform:translate(-50%);opacity:1}.practice-range-marker:active{cursor:grabbing}.practice-range-marker.is-selected:before{width:3px;left:calc(50% - 1.5px);box-shadow:0 0 0 4px color-mix(in srgb,var(--practice-range-marker-color) 20%,transparent),0 0 0 6px #ffffffd1}.practice-range-marker.is-selected .practice-range-marker-flag{transform:scale(1.18);transform-origin:top center;filter:drop-shadow(0 2px 2px rgba(20,44,94,.3))}.practice-range-marker:focus-visible:before{box-shadow:0 0 0 3px color-mix(in srgb,var(--practice-range-marker-color) 30%,transparent),0 0 0 5px #ffffffe6}.practice-range-reset,.practice-range-unavailable{position:absolute;z-index:4;top:8px;right:8px;max-width:calc(100% - 16px);padding:5px 8px;border:1px solid var(--accent-35);border-radius:7px;color:var(--accent-deep);background:color-mix(in srgb,var(--paper) 88%,var(--accent-soft));box-shadow:0 2px 8px #18566929;font:inherit;font-size:var(--text-sm);font-weight:700}.practice-range-reset{cursor:pointer;pointer-events:auto}.practice-range-reset:hover{border-color:var(--accent)}.practice-range-unavailable{color:var(--muted);border-color:var(--line)}@media(max-width:767px){.practice-range-marker{width:36px;min-width:36px;min-height:40px}.practice-range-marker-tooltip{font-size:.68rem}.practice-range-reset,.practice-range-unavailable{top:5px;right:5px;padding:4px 6px;font-size:.7rem}}.score-placeholder,.score-loading{display:flex;align-items:center;justify-content:center;min-height:180px;color:var(--muted);font-size:var(--text-md)}.practice-bar{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);flex-wrap:wrap}.practice-bar-midi{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.midi-connect-btn{padding:7px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--accent);background:transparent;color:var(--accent);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast);white-space:nowrap}.midi-connect-btn:hover:not(:disabled){background:var(--accent);color:#fff;box-shadow:0 2px 8px #3b9ab24d}.midi-connect-btn.connected{background:var(--ok);border-color:var(--ok);color:#fff}.midi-connect-btn:disabled{opacity:.5;cursor:default}.midi-label-compact{display:none}.device-chip{font-size:var(--text-sm);padding:3px 10px;border-radius:var(--radius-pill);background:#0b775e1f;color:var(--ok);font-weight:600}.bar-warn{font-size:var(--text-sm);color:var(--warn);font-weight:500}.practice-bar-progress{display:flex;align-items:center;gap:10px;flex:1;flex-wrap:wrap}.tempo-indicator{display:inline-flex;align-items:center;flex:0 0 auto;gap:5px;min-height:28px;padding:4px 9px;border:1px solid var(--accent-30);border-radius:var(--radius-pill);color:var(--accent-deep);background:var(--accent-10);font-size:var(--text-sm);font-weight:600;line-height:1;white-space:nowrap}.tempo-indicator-icon{font-size:1rem;line-height:1}.tempo-indicator strong{color:var(--ink);font-weight:800}.tempo-indicator-scale{color:var(--muted);font-weight:600}.progress-fraction{font-size:1.6rem;font-weight:800;letter-spacing:-.04em;color:var(--ink);line-height:1}.progress-sep{color:var(--muted);font-weight:400;margin:0 1px}.progress-label{font-size:var(--text-sm);color:var(--muted);font-weight:500}.practice-focus-selector{display:inline-flex;align-items:center;flex-wrap:wrap;gap:2px;padding:2px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--ink-3)}.practice-focus-selector button{border:0;border-radius:var(--radius-pill);padding:5px 8px;color:var(--muted);background:transparent;font:inherit;font-size:var(--text-xs);font-weight:700;cursor:pointer;white-space:nowrap}.practice-focus-selector button:hover,.practice-focus-selector button.active{color:var(--accent-deep);background:var(--accent-soft)}.practice-focus-setting{align-items:flex-start}.practice-focus-setting .practice-focus-selector{flex:1 1 220px}.practice-readiness-setting{align-items:flex-start}.practice-timing-feedback,.practice-duration-feedback{display:inline-flex;align-items:center;padding:3px 8px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:700;white-space:nowrap}.practice-timing-early{color:#8a5a00;background:#dd8d2924}.practice-timing-late{color:var(--error);background:#c933121a}.practice-timing-steady{color:var(--ok);background:#0b775e1f}.practice-duration-release-early,.practice-duration-hold-long{color:#8a5a00;background:#dd8d2924}.practice-duration-steady{color:var(--ok);background:#0b775e1f}.practice-feedback-notice{display:inline-flex;align-items:center;padding:3px 8px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:700;white-space:nowrap}.practice-feedback-steady{color:var(--ok);background:#0b775e1f}.practice-feedback-early,.practice-feedback-late,.practice-feedback-release-early,.practice-feedback-hold-long,.practice-feedback-wrong-key,.practice-feedback-missed-note,.practice-feedback-missing-chord{color:var(--error);background:#c933121a}.practice-feedback-extra-note,.practice-feedback-uneven-chord{color:#8a5a00;background:#dd8d2924}.practice-readiness-panel{display:grid;align-items:center;gap:8px;flex-wrap:wrap;flex-basis:100%;padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-alt);color:var(--muted);font-size:var(--text-sm)}.practice-readiness-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.practice-readiness-panel strong{color:var(--ink)}.practice-readiness-heading b{color:var(--accent-deep);font-size:1.05rem}.practice-readiness-track{width:100%;height:12px;overflow:hidden;border-radius:var(--radius-pill);background:var(--line)}.practice-readiness-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--ok));transition:width .24s ease-out}.practice-readiness-caption{color:var(--muted);font-size:var(--text-xs);font-weight:700}.next-note-chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-base);padding:6px 14px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-deep);font-weight:600;animation:chip-pulse 2s ease-in-out infinite}@keyframes chip-pulse{0%,to{box-shadow:0 0 #3b9ab200}50%{box-shadow:0 0 0 4px #3b9ab21f}}.next-note-chip strong{font-weight:700}.next-note-icon{flex:0 0 auto;font-size:.72em;line-height:1}.complete-chip{font-size:var(--text-sm);padding:5px 12px;border-radius:var(--radius-sm);background:#0b775e1f;color:var(--ok);font-weight:700;animation:celebrate .4s ease-out}.result-chip{font-size:var(--text-sm);font-weight:600;padding:3px 10px;border-radius:var(--radius-pill);transition:opacity var(--transition-fast)}.result-matched{background:#0b775e1f;color:var(--ok)}.result-wrong-note{background:#c933121a;color:var(--error)}.result-extra-note{background:#dd8d291a;color:var(--warn)}.result-chord-progress{background:#0b775e14;color:var(--ok)}.keyboard-area{position:relative}.piano-keyboard-wrap{background:linear-gradient(180deg,#f0e8dc,#e2d9cc 40%,#d4cbbe);border-radius:var(--radius-lg);padding:10px 10px 8px;box-shadow:0 8px 24px #322a191f,0 2px 6px #322a1914,inset 0 1px #ffffff80;border:1px solid var(--ink-6);transition:box-shadow var(--transition-slow)}.piano-keyboard-wrap:hover{box-shadow:0 12px 32px #322a1926,0 3px 8px #322a191a,inset 0 1px #ffffff80}.piano-keyboard-svg{display:block;width:auto;max-width:100%;height:auto;border-radius:4px}.keyboard-viewport{width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-gutter:stable both-edges;scroll-behavior:smooth}.keyboard-viewport .piano-keyboard-wrap{width:max-content;padding-right:8px;padding-left:8px}.keyboard-viewport-rail{display:flex;width:max-content;min-width:100%;justify-content:center}.keyboard-viewport .piano-keyboard-svg{width:auto;max-width:none;height:84px}@media(prefers-reduced-motion:reduce){.keyboard-viewport{scroll-behavior:auto}}.velocity-meter{position:absolute;right:20px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;z-index:2}.velocity-bar-track{position:relative;width:10px;height:64px;background:#899da433;border-radius:5px;overflow:hidden}.velocity-zone{position:absolute;left:0;right:0;background:#0b775e4d;border-radius:3px}.velocity-marker{position:absolute;left:-1px;right:-1px;height:3px;background:#fff;border-radius:1.5px;transition:bottom .06s ease-out;box-shadow:0 1px 3px #0003}.velocity-dynamic-label{font-size:11px;font-weight:700;font-style:italic;color:var(--accent-gold);opacity:.85}.swing-badge{display:inline-flex;align-items:center;padding:2px 8px;background:#6b5b951f;color:#6b5b95;border-radius:6px;font-weight:700;font-size:var(--text-sm);font-style:italic}.dynamic-badge{display:inline-flex;align-items:center;padding:3px 10px;background:#e1bd6d2e;color:var(--accent-gold);border-radius:6px;font-weight:700;font-size:var(--text-sm);font-style:italic}.velocity-hint{font-size:var(--text-xs);font-weight:600;padding:2px 8px;border-radius:var(--radius-pill);background:#dd8d291f;color:var(--warn)}.score-velocity{font-size:var(--text-sm);color:var(--accent-gold);font-weight:600}.pedal-indicator{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;z-index:2;opacity:.7;transition:opacity var(--transition-fast)}.pedal-indicator.engaged{opacity:1}.pedal-label{font-size:11px;font-weight:700;font-style:italic}.pedal-bar{width:80px;height:6px;background:#899da433;border-radius:3px;overflow:hidden}.pedal-bar-fill{height:100%;background:#899da466;border-radius:3px;transition:width .08s ease-out}.pedal-indicator.correct .pedal-bar-fill{background:#0b775e80}.pedal-indicator.mismatch .pedal-bar-fill{background:#dd8d2980}.pedal-indicator.mismatch .pedal-label{color:var(--warn)}.pedal-indicator.correct .pedal-label{color:var(--ok)}.pedal-hint{font-size:var(--text-xs);font-weight:600;padding:2px 8px;border-radius:var(--radius-pill);background:#dd8d291f;color:var(--warn)}.score-pedal{font-size:var(--text-sm);color:var(--warn);font-weight:600}.practice-bar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex-basis:100%;padding-top:10px;margin-top:2px;border-top:1px solid var(--line)}.tempo-display{font-size:var(--text-sm);color:var(--muted);white-space:nowrap;font-weight:600}.reset-btn{padding:6px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:transparent;color:var(--muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:border-color var(--transition-fast),color var(--transition-fast);margin-left:auto}.reset-btn:hover{border-color:var(--accent);color:var(--accent)}.outline-panel{padding:20px;position:sticky;top:16px}@media(max-width:1080px){.exercise-layout{grid-template-columns:1fr}.outline-panel{position:static}}.mode-tabs{display:flex;gap:2px;background:var(--accent-soft);border-radius:var(--radius-pill);padding:3px;width:fit-content}.mode-tab{padding:5px 14px;border-radius:var(--radius-pill);border:1px solid transparent;background:transparent;color:var(--muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast),border-color var(--transition-fast)}.mode-tab.active{background:#fff;color:var(--ink);font-weight:700;border-color:var(--accent-15);box-shadow:0 1px 4px #0000001a}.mode-tab:not(.active):hover{color:var(--ink);background:var(--accent-5)}.mode-label-compact{display:none}.mode-note-shortcut{display:inline-flex;align-items:center;justify-content:center;min-width:2.1em;margin-left:6px;padding:2px 5px;border:1px solid var(--accent-20);border-radius:5px;color:var(--accent-strong);background:var(--accent-soft);font:inherit;font-size:.78em;line-height:1.1;letter-spacing:.02em}.practice-together-screen{display:grid;gap:var(--page-section-gap)}.practice-together-heading,.practice-together-group>header,.practice-together-notifications>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.practice-together-heading h1,.practice-together-group h2,.practice-together-notifications h2{margin:4px 0}.practice-together-heading p,.practice-together-empty p,.practice-together-discovery-group p,.practice-together-discovery-links p{color:var(--muted);max-width:680px}.practice-together-notification-badge{display:inline-flex;align-items:center;gap:6px;min-width:42px;justify-content:center;padding:8px 11px;border:1px solid var(--line);border-radius:999px;color:var(--primary-hover);background:var(--accent-6);font-weight:750}.practice-together-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.practice-together-card{display:grid;gap:12px}.practice-together-card>header,.practice-together-target,.practice-together-person,.practice-together-discovery-person,.practice-together-notification{display:flex;align-items:center;gap:10px}.practice-together-card>header,.practice-together-notifications>header{border-bottom:1px solid var(--line);padding-bottom:10px}.practice-together-person{min-width:0;flex:1}.practice-together-profile-link{color:inherit;text-decoration:none}.practice-together-profile-link:hover strong,.practice-together-profile-link:focus-visible strong{color:var(--primary-hover);text-decoration:underline;text-underline-offset:2px}.practice-together-person>div,.practice-together-target>div,.practice-together-discovery-person>span{display:grid;gap:2px;min-width:0}.practice-together-person small,.practice-together-target small,.practice-together-discovery-person small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-together-avatar{display:inline-grid;place-items:center;width:34px;height:34px;flex:0 0 auto;border-radius:50%;color:var(--primary-hover);background:var(--accent-10)}.practice-together-target{padding:10px;border-radius:10px;color:var(--primary-hover);background:var(--accent-6)}.practice-together-target strong,.practice-together-target small{color:var(--text)}.practice-together-state{padding:5px 9px;border-radius:999px;color:var(--muted);background:var(--wash);font-size:var(--text-xs);white-space:nowrap}.practice-together-state-pending{color:var(--primary-hover);background:var(--accent-10)}.practice-together-state-active{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--paper))}.practice-together-coarse-status,.practice-together-deadline{display:flex;align-items:center;gap:6px;margin:0;color:var(--muted);font-size:var(--text-sm)}.practice-together-status-copy{margin:-4px 0 0;color:var(--text-secondary);font-weight:700}.practice-together-participant-statuses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none}.practice-together-participant-statuses li{display:flex;align-items:center;gap:8px;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-muted)}.practice-together-participant-statuses li>span:last-child{display:grid;gap:2px;min-width:0}.practice-together-participant-statuses strong,.practice-together-participant-statuses small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-together-participant-statuses small{color:var(--muted);font-size:var(--text-xs)}.practice-together-progress-icon{display:inline-grid;place-items:center;width:20px;height:20px;flex:0 0 auto;border-radius:50%;font-size:var(--text-xs);font-weight:800}.practice-together-progress-icon-pending{color:var(--primary-hover);background:var(--accent-10)}.practice-together-progress-icon-not_started{color:var(--muted);background:var(--wash)}.practice-together-progress-icon-active{color:var(--primary-hover);background:var(--accent-10)}.practice-together-progress-icon-qualified{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,var(--paper))}.practice-together-atmosphere{margin:0;padding:9px 10px;border-left:3px solid var(--accent);color:var(--text-secondary);background:var(--accent-6);font-size:var(--text-sm);line-height:1.45}.practice-together-actions,.practice-together-discovery-links>div,.journey-practice-together-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.practice-together-actions .icon-button{margin-left:auto}.practice-together-state{display:grid;justify-items:center;gap:10px;margin:32px auto;max-width:560px;text-align:center}.practice-together-discovery,.practice-together-discovery-group{display:grid;gap:14px}.practice-together-discovery-person{justify-content:space-between;padding:10px 0;border-top:1px solid var(--line)}.practice-together-discovery-person-profile{display:flex;flex:1 1 auto;align-items:center;min-width:0;color:inherit;text-decoration:none}.practice-together-discovery-person-profile>span{display:grid;gap:2px;min-width:0}.practice-together-discovery-person small{display:flex;align-items:center;gap:5px}.practice-together-notifications{display:grid;gap:10px}.practice-together-notification{justify-content:space-between;padding:8px 0;border-top:1px solid var(--line);color:var(--text-secondary)}.practice-together-notification .action-link{min-height:28px;padding:4px 9px;font-size:var(--text-xs)}.practice-together-rhythm-panel{display:grid;gap:14px;background:linear-gradient(145deg,var(--paper),var(--accent-4))}.practice-together-rhythm-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.practice-together-rhythm-panel>header h2{margin:4px 0}.practice-together-rhythm-panel>header p{max-width:700px;margin:0;color:var(--muted);line-height:1.5}.practice-together-rhythm-panel>header>svg{flex:0 0 auto;color:var(--primary-hover)}.practice-together-rhythm-list{display:grid;gap:8px}.practice-together-rhythm-pair{display:grid;grid-template-columns:minmax(170px,.8fr) minmax(220px,1.6fr) auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.practice-together-rhythm-person{display:flex;align-items:center;gap:9px;min-width:0}.practice-together-rhythm-person>div{display:grid;min-width:0;gap:2px}.practice-together-rhythm-person strong,.practice-together-rhythm-person small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-together-rhythm-person small,.practice-together-rhythm-copy span{color:var(--muted);font-size:var(--text-xs)}.practice-together-rhythm-copy{display:grid;gap:3px;min-width:0}.practice-together-rhythm-copy strong{color:var(--ink)}.practice-together-rhythm-copy span{line-height:1.4}.practice-together-rhythm-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.practice-together-rhythm-actions .action-link{min-height:30px;padding:5px 9px;font-size:var(--text-xs);white-space:nowrap}.practice-together-rhythm-empty{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding-top:10px;border-top:1px solid var(--line);color:var(--text-secondary);font-size:var(--text-sm)}.practice-together-rhythm-empty>svg{flex:0 0 auto;color:var(--primary)}.practice-together-rhythm-empty span{flex:1 1 260px}.practice-together-rhythm-empty .action-link{min-height:30px;padding:5px 9px;font-size:var(--text-xs)}@media(max-width:720px){.practice-together-rhythm-pair{grid-template-columns:1fr;gap:8px}.practice-together-rhythm-actions{justify-content:flex-start}}.journey-practice-together-dialog{width:min(520px,calc(100vw - 28px));display:grid;gap:14px;padding:22px;border:1px solid var(--line);border-radius:16px;background:var(--paper);box-shadow:var(--shadow-lg)}.journey-practice-together-dialog>header{display:flex;justify-content:space-between;gap:12px}.journey-practice-together-dialog h2{margin:4px 0 0}.journey-practice-together-target{display:flex;align-items:center;gap:10px;padding:12px;border-radius:10px;color:var(--primary-hover);background:var(--accent-6)}.journey-practice-together-target div{display:grid;gap:3px}.journey-practice-together-target small{color:var(--muted)}.journey-practice-together-dialog p,.journey-practice-together-dialog li{color:var(--text-secondary);line-height:1.55}.journey-practice-together-dialog ul{margin:0;padding-left:20px}.practice-call-score-anchor{position:relative}.practice-call-floating{position:absolute;top:12px;right:14px;z-index:5;display:grid;justify-items:end}.practice-call-floating-trigger{position:relative;display:grid;width:44px;height:44px;place-items:center;padding:0;border:1px solid color-mix(in srgb,var(--accent) 46%,var(--line));border-radius:50%;color:var(--primary-hover);background:color-mix(in srgb,var(--paper) 92%,var(--accent-6));box-shadow:0 7px 20px var(--ink-20);cursor:pointer}.practice-call-floating.is-eligible .practice-call-floating-trigger{color:#fff;border-color:transparent;background:linear-gradient(135deg,#fbbf24,#f97316 56%,#ea580c);box-shadow:0 8px 22px #ea580c57,0 2px 6px var(--ink-20)}.practice-call-floating-trigger:hover,.practice-call-floating-trigger:focus-visible{color:var(--primary);border-color:var(--primary);background:var(--paper);transform:translateY(-1px)}.practice-call-floating.is-eligible .practice-call-floating-trigger:hover,.practice-call-floating.is-eligible .practice-call-floating-trigger:focus-visible{color:#fff;border-color:#fb923c;background:linear-gradient(135deg,#f59e0b,#ea580c 58%,#c2410c)}.practice-call-floating-trigger:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent);outline-offset:3px}.practice-call-floating.is-published .practice-call-floating-trigger{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 42%,var(--line))}.practice-call-floating-pulse{position:absolute;inset:-5px;border:2px solid #f97316;border-radius:50%;opacity:0;pointer-events:none}.practice-call-floating.is-eligible .practice-call-floating-pulse{animation:practice-call-pulse 2.8s ease-out 1}@keyframes practice-call-pulse{0%{transform:scale(.82);opacity:.75}70%,to{transform:scale(1.28);opacity:0}}.practice-call-floating-callout{position:absolute;top:calc(100% + 10px);right:0;display:grid;gap:10px;width:min(340px,calc(100vw - 32px));padding:14px;border:1px solid color-mix(in srgb,#f97316 42%,var(--line));border-radius:14px;color:var(--text);background:linear-gradient(145deg,color-mix(in srgb,#fff7ed 90%,var(--paper)),var(--paper) 72%);box-shadow:0 16px 38px #ea580c2e,0 8px 20px var(--ink-20)}.practice-call-floating-callout>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.practice-call-floating-callout>header>div{display:grid;gap:3px;min-width:0}.practice-call-floating-callout h3{margin:0;color:var(--ink);font-family:var(--font-display);font-size:var(--text-md);line-height:1.2}.practice-call-floating-callout p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5}.practice-call-floating-callout .eyebrow{color:#c2410c}.practice-call-floating-action{justify-content:center;width:100%}.practice-call-caption-preview{display:block;width:100%;min-height:4.25rem!important;margin:.15rem 0 0;padding:.7rem .75rem;resize:none!important;border:1px solid var(--line);border-radius:.75rem;outline:0;color:var(--ink);background:var(--paper-alt);font:inherit;font-size:var(--text-sm);line-height:1.45}.practice-call-caption-preview:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px var(--accent-10)}.practice-call-caption-suggestions{grid-column:auto;display:grid;min-width:0;gap:.32rem}.practice-call-caption-suggestions>span{color:var(--muted);font-size:var(--text-xs);font-weight:650}.practice-call-caption-suggestions>div{display:flex;gap:.35rem;overflow-x:auto;padding:0 0 .12rem;scrollbar-width:thin}.practice-call-caption-suggestions button{flex:0 0 auto;min-height:1.9rem;padding:.28rem .58rem;border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));border-radius:999px;color:var(--text-secondary);background:var(--paper-alt);font:inherit;font-size:var(--text-xs);cursor:pointer}.practice-call-caption-suggestions button:hover,.practice-call-caption-suggestions button:focus-visible,.practice-call-caption-suggestions button.selected{border-color:#f97316;color:#c2410c;background:color-mix(in srgb,#fff7ed 78%,var(--paper))}.practice-call-notice{margin:0;padding:8px 0;color:var(--text-secondary);font-size:var(--text-sm)}.journey-practice-call-card{display:grid;gap:.8rem;padding:1rem;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:var(--radius-md);background:linear-gradient(135deg,var(--accent-6),var(--paper))}.journey-practice-call-heading{display:flex;align-items:center;gap:.65rem}.journey-practice-call-heading>div{min-width:0}.journey-practice-call-heading h3,.journey-practice-call-heading p{margin:0}.journey-practice-call-heading h3{margin-top:.2rem;font-size:1.15rem}.journey-practice-call-heading p{margin-top:.2rem;color:var(--muted);font-size:var(--text-sm)}@media(min-width:641px){.immersive-player-panel .practice-call-floating{position:sticky;top:12px;width:max-content;margin:12px 14px -54px auto}}@media(max-width:640px){.practice-call-floating{top:8px;right:8px}.practice-call-floating-trigger{width:40px;height:40px}.practice-call-floating-callout{width:min(320px,calc(100vw - 24px));padding:12px}.immersive-player-panel .practice-call-floating{position:sticky;top:8px;width:max-content;margin:8px 8px -48px auto}}@media(prefers-reduced-motion:reduce){.practice-call-floating.is-eligible .practice-call-floating-pulse{animation:none}.practice-call-floating-trigger:hover,.practice-call-floating-trigger:focus-visible{transform:none}}.perform-panel{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);padding:20px 24px;display:flex;flex-direction:column;gap:16px}p.perform-intro{font-size:var(--text-sm);font-weight:400;color:var(--muted);margin:0}.perform-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.perform-panel-idle,.perform-panel-callout-open{overflow:visible}.start-perform-wrap,.retry-perform-wrap{position:relative;display:inline-flex;flex:0 0 auto}.hands-free-start-hint{position:absolute;z-index:3;right:auto;bottom:calc(100% + 6px);left:50%;display:inline-flex;align-items:center;justify-content:center;gap:7px;width:max-content;max-width:calc(100vw - 24px);padding:8px 12px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));border-radius:9px;color:var(--ink);background:color-mix(in srgb,var(--paper) 94%,var(--accent));box-shadow:var(--shadow-lg);font-size:var(--text-sm);font-weight:700;line-height:1.2;pointer-events:none;animation:fade-in .2s ease-out}.hands-free-start-hint:after{position:absolute;bottom:-7px;left:0;width:0;height:0;border-top:7px solid color-mix(in srgb,var(--paper) 94%,var(--accent));border-right:7px solid transparent;border-left:7px solid transparent;content:"";transform:translate(-50%);z-index:1}.hands-free-start-hint:before{position:absolute;bottom:-8px;left:0;width:0;height:0;border-top:8px solid color-mix(in srgb,var(--accent) 42%,var(--line));border-right:8px solid transparent;border-left:8px solid transparent;content:"";transform:translate(-50%);z-index:0}.hands-free-retry-hint{transform:translate(-50%)}.hands-free-retry-hint:after,.hands-free-retry-hint:before{left:50%;transform:translate(-50%)}.hands-free-hint-compact{display:none}.perform-preparing{color:var(--muted)}.start-perform-btn{gap:6px;padding:10px 24px;font-size:var(--text-md)}.start-perform-btn:active{transform:scale(.98)}.perform-options-row{display:flex;align-items:center;gap:8px}.perform-scoring-options{display:grid;gap:8px;min-width:0;margin:0;padding:10px;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent-soft) 38%,var(--paper))}.perform-scoring-options legend{padding:0 6px;color:var(--accent-deep);font-size:var(--text-xs);font-weight:800}.perform-scoring-options .perform-options-row,.perform-scoring-options .tempo-select-row{min-width:0}.perform-options-toggle{display:inline-flex;align-items:center;gap:4px}.perform-background-toggle{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:var(--text-sm)}.perform-background-toggle input{accent-color:var(--accent)}.player-options-dialog{box-sizing:border-box;width:min(440px,calc(100vw - 32px));max-height:min(78dvh,620px);margin:auto;padding:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--line) 72%,var(--primary));border-radius:16px;color:var(--ink);background:var(--paper);box-shadow:0 24px 64px #10182261}.player-options-dialog::backdrop{background:#101822a3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.player-options-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid var(--line);background:var(--paper-alt)}.player-options-dialog>header strong{font-size:var(--text-base)}.player-options-dialog>header button{display:inline-grid;width:36px;height:36px;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--paper);cursor:pointer}.player-options-dialog-content{display:grid;gap:12px;padding:16px;overflow-y:auto}.player-options-dialog-content .tool-group{display:flex;flex-wrap:wrap;width:100%;padding:0 0 12px;margin:0;border-right:0;border-bottom:1px solid var(--line)}.player-options-dialog-content .tool-group:last-child{padding-bottom:0;border-bottom:0}.player-options-dialog-content .perform-options-row,.player-options-dialog-content .tempo-select-row{flex-wrap:wrap}.player-options-dialog-content .reset-btn{margin-left:0}.replay-backdrop{position:fixed;inset:0;z-index:40;background:#10182280;display:grid;place-items:center;padding:20px}.replay-viewer{width:min(620px,100%);max-height:min(720px,90dvh);overflow:auto;display:grid;gap:16px}.replay-viewer{width:min(1120px,100%)}.replay-panel-header{display:flex;justify-content:space-between;align-items:start;gap:16px}.replay-viewer h2{margin:2px 0 0}.replay-viewer header p{margin:6px 0 0;color:var(--muted);font-size:var(--text-sm)}.replay-timeline{display:grid;gap:6px;color:var(--muted);font-size:var(--text-sm)}.replay-timeline progress{width:100%;accent-color:var(--accent)}.replay-control-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.replay-control-row .start-perform-btn{width:auto;min-width:0;margin:0}.replay-share-actions{display:flex;align-items:stretch;gap:6px}.replay-share-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:38px;min-height:38px;padding:6px 8px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--paper);cursor:pointer}.replay-share-button:hover:not(:disabled){border-color:var(--accent);color:var(--primary-hover)}.replay-share-button:disabled{cursor:wait;opacity:.55}.replay-share-button small{font-size:var(--text-xs);font-weight:700}.journey-share-button{border-color:color-mix(in srgb,var(--accent) 62%,var(--line));color:var(--accent-strong);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 16%,var(--paper)),var(--paper));box-shadow:0 3px 10px color-mix(in srgb,var(--accent) 22%,transparent)}.journey-share-button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-strong);background:color-mix(in srgb,var(--accent) 22%,var(--paper));box-shadow:0 5px 14px color-mix(in srgb,var(--accent) 32%,transparent);transform:translateY(-1px)}.journey-share-icon{color:var(--accent-warm);filter:drop-shadow(0 1px 3px color-mix(in srgb,var(--accent-warm) 45%,transparent));stroke-width:2.5}@media(max-width:600px)and (orientation:portrait){.journey-share-button{width:40px;min-width:40px;min-height:38px;padding:6px}.journey-share-button small{display:none}.journey-share-button .journey-share-icon{width:18px;height:18px}}.replay-revoke-button{align-self:center;padding:4px 5px;border:0;color:var(--muted);background:transparent;font-size:var(--text-xs);cursor:pointer;text-decoration:underline}.replay-revoke-button:hover:not(:disabled){color:var(--danger, #a33)}.replay-revoke-button:disabled{cursor:wait;opacity:.55}.replay-brand-glyph{display:inline-grid;width:16px;height:16px;place-items:center;border-radius:4px;color:#fff;font:800 12px/1 Arial,sans-serif}.replay-facebook-glyph{background:#1877f2}.replay-zalo-glyph{background:#087cff}.replay-achievement{display:grid;gap:3px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent) 8%,var(--paper))}.replay-achievement strong{color:var(--primary-hover);font-family:var(--font-display);font-size:var(--text-lg)}.replay-achievement span{font-weight:800}.replay-achievement small{color:var(--muted)}.replay-live-feedback{display:flex;align-items:center;flex:1 1 auto;flex-wrap:nowrap;gap:8px 16px;min-width:max-content;min-height:28px;color:var(--muted);font-size:var(--text-sm);white-space:nowrap}.replay-live-feedback>span{display:inline-flex;align-items:center;gap:4px}.replay-score-source{font-weight:750;color:var(--ink)}.replay-live-feedback strong{color:var(--ink)}.replay-summary-good{color:var(--success, #16865e)!important}.replay-summary-wrong{color:var(--danger, #b64436)!important}.replay-share-notice{margin:0;padding:9px 11px;border-radius:var(--radius-sm);color:var(--primary-hover);background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:var(--text-sm)}.replay-showcase-page{box-sizing:border-box;display:grid;gap:var(--page-section-gap);width:100%;min-height:100dvh;margin:0;padding:28px 0 48px;align-content:start}.replay-showcase-app{padding-top:12px}.replay-showcase-card{width:min(920px,100%);max-height:none;margin:0 auto}.replay-showcase-card .replay-score{min-height:420px}.replay-showcase-explanation{margin:-6px 0 0;padding:10px 12px;border-left:3px solid var(--accent);color:var(--muted);background:color-mix(in srgb,var(--accent) 7%,transparent);font-size:var(--text-sm);line-height:1.5}.replay-guidance{margin:-4px 0 0}.replay-loading{min-height:180px;place-items:center;align-content:center;text-align:center}.replay-score{min-height:320px;border:1px solid var(--line);border-radius:var(--radius-md);overflow:auto;background:var(--paper)}.replay-score .score-viewer-wrap{min-height:300px}.replay-keyboard-area{display:grid;gap:7px}.replay-keyboard-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;max-width:min(100%,1120px);margin:0 auto}.replay-keyboard-heading h3{margin:0;color:var(--player-control-text, var(--ink));font-size:var(--text-sm)}.replay-keyboard-heading span{color:var(--player-control-text, var(--muted));font-size:var(--text-xs)}.replay-keyboard-area .keyboard-viewport{max-width:min(100%,1120px);margin:0 auto}.replay-keyboard-area .piano-keyboard-wrap{box-shadow:0 3px 12px #322a191a}.replay-pedal-indicator{bottom:10px}.replay-history-tools{display:flex;justify-content:flex-end}.replay-history-toggle{display:inline-flex;align-items:center;gap:6px}.replay-history{min-width:0;display:grid;gap:8px}.replay-history-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.replay-history-heading h3{margin:0;font-size:var(--text-base);letter-spacing:-.01em}.replay-history-heading span{color:var(--muted);font-size:var(--text-xs)}.replay-events{margin:0;padding:2px;list-style:none;display:grid;grid-template-columns:1fr;gap:8px;max-height:240px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.replay-events li{min-width:0;display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"time note velocity" "kind note velocity";column-gap:9px;align-items:center;padding:10px 11px;background:var(--paper-alt);border:1px solid var(--line);border-radius:var(--radius-sm)}.replay-events time{grid-area:time;color:var(--muted);font:600 var(--text-xs)/1.15 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}.replay-events li>span{grid-area:kind;color:var(--muted);font-size:var(--text-xs);line-height:1.15}.replay-events strong{grid-area:note;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);letter-spacing:.01em}.replay-events small{grid-area:velocity;color:var(--muted);font:500 var(--text-xs)/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:nowrap}@media(max-width:560px){.replay-control-row{align-items:stretch}.replay-control-row .start-perform-btn{flex:0 1 auto}.replay-control-row .replay-live-feedback{flex:1 1 auto;justify-content:flex-start}.replay-share-actions{flex:0 1 auto}.replay-share-button{flex:1}.replay-share-button small{display:inline}.replay-history-tools{justify-content:stretch}.replay-history-toggle{justify-content:center;width:100%}.replay-showcase-page{padding-top:16px}}.attempt-history-screen{display:grid;gap:var(--page-section-gap)}.attempt-history-screen h1{margin:2px 0}.attempt-history-screen header p{margin:4px 0 0;color:var(--muted)}.attempt-history-list{margin:0;padding:0;list-style:none;display:grid;gap:8px}.attempt-history-list li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-sm)}.attempt-history-list li>div:first-child{display:grid;gap:3px}.attempt-history-list li>div:first-child span{color:var(--muted);font-size:var(--text-sm)}.attempt-group-list{display:grid;gap:10px}.attempt-group{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper-alt)}.attempt-group-summary{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:15px;border:0;color:inherit;background:transparent;font:inherit;text-align:left;cursor:pointer}.attempt-group-summary>span:first-child{display:grid;gap:5px;min-width:0}.attempt-group-summary strong{overflow:hidden;color:var(--primary-hover);font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap}.attempt-group-summary small,.attempt-group-summary time{color:var(--muted);font-size:var(--text-xs)}.attempt-group-context{width:fit-content;padding:3px 7px;border-radius:999px;color:var(--primary-hover)!important;background:color-mix(in srgb,var(--primary) 11%,transparent);font-size:10px!important;font-weight:750;letter-spacing:.055em;text-transform:uppercase}.attempt-group-stats{display:grid;justify-items:end;gap:3px;flex:0 0 auto}.attempt-group-stats b{font-size:var(--text-sm)}.attempt-group .attempt-history-list{padding:0 12px 12px}.attempt-group .attempt-history-list li{background:var(--paper)}.attempt-history-more{justify-self:center}.perform-midi-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.perform-countdown{display:flex;box-sizing:border-box;align-items:center;justify-content:center;min-height:44px;padding:6px 12px;gap:10px}.count-number{font-size:1.55rem;font-weight:800;letter-spacing:-.06em;color:var(--accent);line-height:1;animation:pulse-count .3s ease-out}@keyframes pulse-count{0%{transform:scale(1.3);opacity:.6}to{transform:scale(1);opacity:1}}.count-label{font-size:var(--text-sm);color:var(--muted);margin:0}.perform-first-note-ready .count-number{font-size:1.2rem}.perform-playing{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.playing-indicator{font-size:var(--text-base);font-weight:700;color:var(--ok);animation:blink 1.2s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.4}}.playing-progress{display:flex;align-items:baseline;gap:6px}.perform-score{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.perform-score-summary-row{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;line-height:1.1}.score-summary-text{color:var(--muted);font-size:var(--text-md);font-weight:600;white-space:nowrap}.score-summary-text strong{color:var(--error);font-size:inherit;font-weight:600;letter-spacing:normal}.score-summary-percent{color:var(--error)}.perform-score-summary-row .reset-btn{min-height:34px;margin-left:0;padding:4px 10px;line-height:1.1}.score-circle{display:flex;align-items:baseline;gap:2px;line-height:1}.score-number{font-size:4rem;font-weight:800;letter-spacing:-.05em;color:var(--ink)}.score-pct{font-size:1.5rem;font-weight:700;color:var(--muted)}.score-breakdown{display:flex;gap:16px;font-size:var(--text-base)}.score-hit,.score-miss,.score-wrong{display:inline-flex;align-items:center;gap:4px;font-weight:600}.score-hit{color:var(--ok)}.score-miss{color:var(--warn)}.score-wrong{color:var(--error)}.score-zoom-controls{display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;width:fit-content;max-width:100%;padding:6px 10px;border-bottom:1px solid var(--line);background:#ffffff80}.score-zoom-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;border:1px solid var(--line);background:var(--white-80);color:var(--ink);font-size:1rem;font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);line-height:1}.score-zoom-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.score-zoom-btn:disabled{opacity:.35;cursor:default}.score-zoom-label{font-size:var(--text-sm);color:var(--muted);min-width:36px;text-align:center;font-weight:600}@media(pointer:coarse){.score-viewer-wrap{touch-action:pan-y}.score-viewer-wrap .score-zoom-controls{display:none}}.mode-tabs-row{display:flex;align-items:center;gap:12px}.preview-btn{display:inline-flex;align-items:center;gap:5px;padding:7px 14px;border-radius:9px;border:1px solid var(--line);background:#ffffffa6;color:var(--ink);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.preview-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.preview-btn.previewing{opacity:.6;cursor:default}.preview-tab{display:inline-flex;align-items:center;justify-content:center;min-width:36px;padding:5px 10px}.preview-tab.previewing{color:var(--accent-deep);background:var(--accent-10)}.preview-tab.preparing{opacity:.62}.keyboard-visibility-toggle{display:inline-flex;min-height:34px;align-items:center;justify-content:center;gap:6px;border-color:var(--line);background:var(--paper-alt);color:var(--muted);white-space:nowrap}.keyboard-visibility-toggle:hover{border-color:var(--accent);color:var(--accent-deep)}.keyboard-visibility-toggle.keyboard-hidden{border-color:var(--accent-30);background:var(--accent-soft);color:var(--accent-deep)}.keyboard-visibility-toggle svg{flex:0 0 auto}.practice-bar-wrap{position:relative;border-radius:var(--radius-md);overflow:hidden;background:var(--paper);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow-sm)}.practice-bar-fill{position:absolute;top:0;left:0;bottom:0;background:linear-gradient(90deg,#3b9ab20f,#3b9ab21f);pointer-events:none;transition:width .4s cubic-bezier(.16,1,.3,1);border-radius:0}.practice-bar-wrap .practice-bar{position:relative;background:transparent;border:none;border-radius:0;-webkit-backdrop-filter:none;backdrop-filter:none}.wrong-tally-chip,.wrong-count-chip{font-size:var(--text-sm);padding:3px 8px;border-radius:var(--radius-pill);background:#c933121a;color:var(--error);font-weight:600}.practice-hint{font-size:var(--text-xs);color:var(--muted);font-style:italic}.next-note-hand-icon{display:block;flex:0 0 16px;width:16px;height:16px;margin-left:2px}.next-note-hand-icon-left{color:var(--warning);transform:scaleX(-1)}.next-note-hand-icon-right{color:var(--accent-deep)}.next-exercise-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;min-height:unset;font-size:var(--text-sm);border-radius:var(--radius-sm)}.tempo-select-row{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.tempo-select-label{font-size:var(--text-sm);color:var(--muted);margin-right:4px;font-weight:600}.tempo-select-bpm{font-size:var(--text-sm);color:var(--muted);margin-left:4px;white-space:nowrap;font-weight:600}.tempo-qualification-note{display:flex;align-items:center;gap:6px;margin:0;min-height:calc(2.7em + 14px);padding:7px 8px;border:1px solid color-mix(in srgb,var(--gold) 35%,var(--line));border-radius:8px;color:var(--muted);background:color-mix(in srgb,var(--gold-12) 62%,var(--paper));font-size:var(--text-xs);line-height:1.35}.tempo-qualification-note svg{flex:0 0 auto;margin-top:1px;color:var(--warning)}.tempo-qualification-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:700;white-space:nowrap}.tempo-qualification-badge.qualifies{color:var(--ok);background:#0b775e1a}.tempo-qualification-badge.insufficient{color:var(--warn);background:var(--gold-12)}.tempo-select-btn{padding:5px 9px;border-radius:7px;border:1px solid var(--line);background:#fff9;color:var(--muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.tempo-select-btn:hover{border-color:var(--accent);color:var(--accent-deep)}.tempo-select-btn.active{background:var(--accent-soft);border-color:var(--accent-30);color:var(--accent-deep)}.metronome-btn,.sight-reading-btn,.note-labels-btn,.auto-loop-btn{padding:5px 11px;border-radius:7px;border:1px solid var(--line);background:#fff9;color:var(--muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);white-space:nowrap}.metronome-btn:hover,.sight-reading-btn:hover,.note-labels-btn:hover,.auto-loop-btn:hover{border-color:var(--accent);color:var(--accent-deep)}.metronome-btn.active,.sight-reading-btn.active,.note-labels-btn.active,.auto-loop-btn.active{background:var(--accent-soft);border-color:var(--accent-35);color:var(--accent-deep)}.perform-score-actions{display:flex;gap:10px;align-items:center;margin-top:4px}.perform-result-status-row{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;flex-wrap:wrap}.perform-result-status-row .replay-share-actions{justify-content:center}.perform-stars{font-size:var(--text-md)}.panel-toggle-btn{padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--line);background:transparent;color:var(--muted);font-size:var(--text-base);cursor:pointer;font-family:inherit;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast);line-height:1}.panel-toggle-btn:hover{border-color:var(--accent);color:var(--accent)}.panel-toggle-btn.expand{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.sidebar-nav-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sidebar-group{display:grid;gap:6px}.sidebar-group+.sidebar-group{margin-top:10px}.sidebar-group-label{padding:6px 0 2px;font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);display:flex;align-items:center;gap:10px}.sidebar-group-label:after{content:"";flex:1;height:1px;background:var(--line)}.course-progress-bar-wrap{height:6px;border-radius:var(--radius-pill);background:var(--accent-8);overflow:hidden;margin-top:auto;padding-top:0}.course-progress-bar-fill{height:100%;border-radius:var(--radius-pill);background:var(--accent);transition:width .4s cubic-bezier(.16,1,.3,1)}.course-progress-label{display:block;font-size:var(--text-sm);color:var(--muted);margin-top:6px;font-weight:500}.progress-ring{position:relative;width:48px;height:48px;flex-shrink:0}.progress-ring svg{transform:rotate(-90deg);width:48px;height:48px}.progress-ring-bg{fill:none;stroke:var(--accent-10);stroke-width:3.5}.progress-ring-fill{fill:none;stroke:var(--accent);stroke-width:3.5;stroke-linecap:round;transition:stroke-dashoffset .6s cubic-bezier(.16,1,.3,1)}.progress-ring-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;color:var(--accent-deep)}.course-nav-progress{height:2px;border-radius:var(--radius-pill);background:var(--accent-8);overflow:hidden;margin-top:8px}.course-nav-progress-fill{height:100%;border-radius:var(--radius-pill);background:var(--accent);transition:width .4s cubic-bezier(.16,1,.3,1)}.browser-layout.no-sidebar,.exercise-layout.no-outline{grid-template-columns:1fr}.kbd-hints{display:inline-flex;align-items:center;gap:3px;font-size:var(--text-sm);color:var(--muted);margin-left:4px}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;border:1px solid var(--line);border-radius:4px;background:var(--white-60);box-shadow:0 1px #0000000f;color:var(--text-secondary)}.theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;font-family:inherit;transition:all var(--transition-fast);line-height:1}.top-nav-settings{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;text-decoration:none;transition:all var(--transition-fast)}.top-nav-settings:hover{background:var(--accent-soft);color:var(--accent)}.theme-toggle-btn:hover{background:var(--accent-soft);color:var(--accent);border-color:transparent}.notification-bell,.notification-bell-trigger{position:relative}.notification-badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;display:inline-grid;place-items:center;color:#fff;background:var(--danger, #b94a48);border:2px solid var(--paper);border-radius:999px;font-size:10px;font-weight:850;line-height:1}.notification-bell-popover{position:absolute;z-index:40;top:calc(100% + 10px);right:0;width:min(390px,calc(100vw - 24px));overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 42px #231d172e}.notification-bell-popover>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line)}.notification-bell-popover>header>div{display:grid;gap:3px}.notification-bell-popover>header strong{font-size:1rem}.notification-bell-popover .plain-link{display:inline-flex;align-items:center;gap:5px;padding:0;border:0;background:transparent;color:var(--primary-hover);cursor:pointer;font:inherit;font-size:.78rem;font-weight:800}.notification-bell-popover .plain-link:disabled{opacity:.45;cursor:default}.notification-preview-list{display:grid;max-height:390px;overflow:auto}.notification-preview-item{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:70px;width:100%;padding:8px 16px;color:var(--ink);text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line);cursor:pointer}.notification-preview-item:hover,.notification-preview-item:focus-visible{background:var(--accent-5)}.notification-preview-item.read{opacity:.72}.notification-preview-item>span:nth-child(2){display:grid;gap:2px;min-width:0;max-height:56px;overflow:hidden}.notification-preview-item strong{display:-webkit-box;overflow:hidden;font-size:.86rem;font-weight:400;line-height:1.25;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.notification-preview-item small{color:var(--muted);font-size:.74rem}.notification-unread-indicator{display:block;width:8px;height:8px;background:#1877f2;border:0;border-radius:50%}.notification-unread-indicator.is-read{visibility:hidden}.notification-preview-avatar{display:grid;width:52px;height:52px;place-items:center;color:var(--primary-hover);background:var(--accent-10);border-radius:50%}.notification-preview-avatar .user-avatar{width:52px;height:52px}.notification-empty{margin:0;padding:22px 16px;color:var(--muted);font-size:.86rem;text-align:center}.notification-view-all{display:flex;align-items:center;justify-content:center;gap:4px;padding:12px 16px;color:var(--primary-hover);font-size:.82rem;font-weight:800;text-decoration:none}.notification-view-all:hover{background:var(--accent-5)}.notifications-screen{display:grid;gap:var(--page-section-gap)}.notifications-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:2px 2px 4px}.notifications-heading h1{margin:4px 0}.notifications-heading p{margin:0;color:var(--muted)}.notifications-heading>svg{flex:0 0 auto;color:var(--primary)}.notifications-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--line)}.notifications-tabs{display:flex;align-items:center;gap:4px}.notifications-tabs button{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;color:var(--muted);background:transparent;border:0;border-radius:8px;cursor:pointer;font:inherit;font-weight:800}.notifications-tabs button:hover,.notifications-tabs button.active{color:var(--primary-hover);background:var(--accent-5)}.notifications-tabs button span{display:inline-grid;min-width:19px;height:19px;place-items:center;padding:0 4px;color:#fff;background:var(--primary);border-radius:999px;font-size:.68rem}.notifications-list{display:grid;gap:8px}.notification-row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:74px;width:100%;padding:9px 16px;color:var(--ink);text-align:left;background:var(--paper);border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.notification-row:hover,.notification-row:focus-visible{background:var(--accent-5);border-color:var(--primary-light);transform:translateY(-1px)}.notification-row.read{opacity:.68}.notification-row-avatar{display:grid;width:56px;height:56px;place-items:center;border-radius:50%}.notification-row-avatar .user-avatar{width:56px;height:56px}.notification-row-fallback{display:grid;width:56px;height:56px;place-items:center;color:var(--primary-hover);background:var(--accent-10);border-radius:50%}.notification-row-copy{display:grid;gap:2px;min-width:0;max-height:58px;overflow:hidden}.notification-row-copy strong{display:-webkit-box;overflow:hidden;font-size:.92rem;font-weight:400;line-height:1.25;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.notification-row-copy small{color:var(--muted);font-size:.78rem}.notifications-empty,.notifications-state{display:grid;justify-items:center;gap:8px;padding:44px 22px;color:var(--muted);text-align:center}.notifications-empty h2,.notifications-state h1,.notifications-state p{margin:0}.notifications-empty svg,.notifications-state svg{color:var(--primary)}.notifications-sentinel{display:grid;min-height:24px;place-items:center;color:var(--muted)}.spin{animation:notification-spin .85s linear infinite}@keyframes notification-spin{to{transform:rotate(360deg)}}@media(max-width:600px){.notification-bell-popover{position:fixed;top:67px;right:12px}.notifications-toolbar{align-items:stretch;flex-direction:column}.notifications-toolbar>.action-link{align-self:flex-start}}.catalog-group{display:grid;gap:24px;padding-top:var(--space-2xl)}.catalog-group:first-child{padding-top:var(--space-lg)}.catalog-group+.catalog-group{border-top:1px solid var(--line)}.catalog-group-heading{font-family:var(--font-display);font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin-bottom:0;display:flex;align-items:center;gap:12px}.catalog-group-heading:after{content:"";flex:1;height:1px;background:var(--line)}.practice-repeat-pass{width:fit-content;margin:0 auto 6px;padding:3px 10px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--text-secondary);font-size:.8rem;font-weight:700}.catalog-shelves{gap:var(--space-lg)}.shelf-section{padding:var(--space-xl) var(--space-xl) var(--space-lg)}.shelf-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-lg)}.shelf-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;letter-spacing:-.02em;margin:0}.shelf-stats{font-size:var(--text-sm);color:var(--muted);margin-top:2px}.shelf-header-bar{width:120px;height:4px;background:var(--line);border-radius:2px;overflow:hidden;flex-shrink:0;margin-bottom:6px}.shelf-header-bar-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--primary),var(--primary-light));transition:width .4s ease}.shelf-grid{display:grid;gap:8px;row-gap:4px}.shelf-col-header{text-align:center;font-size:var(--text-xs);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;padding-bottom:6px}.shelf-row-label{display:flex;align-items:center;justify-content:center;min-height:88px}.shelf-level-link{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;font-family:var(--font-display);font-size:1rem;font-weight:700;color:var(--muted);text-decoration:none;transition:all var(--transition-fast);border:1.5px solid transparent}.shelf-level-link:hover{background:var(--primary);color:#fff;border-color:var(--primary);transform:scale(1.1)}.shelf-level-num{font-family:var(--font-display);font-size:1rem;font-weight:700;color:var(--muted)}.shelf-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:12px 6px 8px;border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:all var(--transition-base);cursor:pointer;min-height:88px;border:1.5px solid transparent;position:relative;background-image:radial-gradient(circle 60px at var(--mx, 50%) var(--my, 50%),rgba(255,200,87,0),transparent)}.shelf-cell:hover{background-image:radial-gradient(circle 60px at var(--mx, 50%) var(--my, 50%),rgba(255,200,87,.18),transparent);transform:translateY(-5px) scale(1.03);box-shadow:var(--shadow-lg);z-index:2}.hover-note{position:absolute;top:-4px;right:6px;font-size:16px;color:var(--accent-gold);opacity:0;pointer-events:none;z-index:3}.hover-note:before{content:"♪"}.shelf-cell:hover .hover-note,.song-card:hover .hover-note{animation:note-rise .7s ease-out forwards}@keyframes note-rise{0%{opacity:.7;transform:translateY(0)}to{opacity:0;transform:translateY(-14px)}}.shelf-cell-label{font-size:var(--text-base);font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}.shelf-cell-fraction{font-size:var(--text-2xs);color:var(--muted);font-weight:600}.shelf-cell-stars{display:flex;align-items:center;gap:2px;font-size:.58rem;font-weight:700;color:var(--star-3)}.shelf-cell-bar{width:75%;height:3px;background:#0000000f;border-radius:2px;overflow:hidden;margin-top:2px}.shelf-cell-bar-fill{height:100%;border-radius:2px;background:var(--primary);transition:width .3s ease;animation:bar-grow .6s cubic-bezier(.16,1,.3,1) both}@keyframes bar-grow{0%{width:0!important}}.shelf-pending{background:var(--ink-3);border-color:transparent;filter:saturate(.5)}.shelf-pending .shelf-cell-label{color:var(--muted);opacity:1}.shelf-pending:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);z-index:2;filter:saturate(1)}.shelf-pending:hover .shelf-cell-label{opacity:1}.shelf-pending .trophy-icon{display:none}.shelf-progress{position:relative;background:linear-gradient(145deg,#3b9ab20f,#3b9ab21f);border-color:#3b9ab233;animation:shelf-breathe 3s ease-in-out 1}@keyframes shelf-breathe{0%,to{border-color:#3b9ab226;box-shadow:0 0 #3b9ab200}50%{border-color:#3b9ab266;box-shadow:0 0 12px #3b9ab20f}}.shelf-progress:after{content:"";position:absolute;bottom:0;left:0;right:0;background:var(--accent-8);border-radius:0 0 var(--radius-md) var(--radius-md);pointer-events:none;height:var(--fill-pct, 0%);transition:height .4s ease}.shelf-progress .trophy-icon{opacity:.8;transform:scale(1.05)}.shelf-progress .shelf-cell-bar-fill{background:linear-gradient(90deg,var(--primary),var(--primary-light))}.shelf-complete{position:relative;background:linear-gradient(145deg,#ffc85733,#ffc85761);border-color:var(--gold-25);box-shadow:inset 0 0 16px #ffc85733,0 0 20px #ffc8571f,var(--shadow-sm);animation:shelf-complete-in .6s cubic-bezier(.34,1.56,.64,1) both}.shelf-complete:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,transparent 30%,rgba(255,255,255,.2) 50%,transparent 70%);background-size:250% 250%;animation:shelf-shimmer 4s ease-in-out 1;pointer-events:none;z-index:1}@keyframes shelf-shimmer{0%,to{background-position:0% 0%}50%{background-position:100% 100%}}.shelf-complete .trophy-icon{transform:scale(1.3);filter:drop-shadow(0 2px 8px rgba(255,200,87,.6)) drop-shadow(0 0 4px rgba(255,200,87,.3))}@keyframes shelf-complete-in{0%{transform:scale(.9);opacity:.5}to{transform:scale(1);opacity:1}}.shelf-cell:hover .trophy-icon{animation:trophy-wiggle .4s ease}@keyframes trophy-wiggle{0%{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}to{transform:rotate(0)}}.shelf-complete .shelf-cell-bar-fill{background:var(--accent-warm)}.shelf-complete .shelf-cell-label{color:var(--accent-gold)}.shelf-placeholder{min-height:88px;border-radius:var(--radius-sm);background:#00000004;opacity:.5}.shelf-row-full{padding:0}.shelf-cell-wide{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:all var(--transition-base);cursor:pointer;border:1.5px solid transparent}.shelf-cell-wide:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.shelf-row-level{font-family:var(--font-display);font-size:1.5rem;font-weight:700;color:var(--muted);width:36px;height:36px;display:flex;align-items:center;justify-content:center;text-align:center;flex-shrink:0;background:#00000008;border-radius:50%}[data-theme=dark] .shelf-row-level{background:#ffffff0d}.shelf-wide-title{flex:1;font-size:var(--text-base);font-weight:600}.shelf-wide-progress{font-size:var(--text-sm);color:var(--muted);font-weight:600;white-space:nowrap}.shelf-wide-bar{width:80px;flex-shrink:0}.shelf-tier-beginner{padding:20px 16px}.shelf-tier-mastery{border-top:2px solid var(--accent)}.shelf-tier-mastery .shelf-cell-label{font-weight:800}.shelf-tier-beginner.shelf-pending{background:var(--accent-5)}.shelf-tier-intermediate.shelf-pending{background:linear-gradient(145deg,var(--accent-6),var(--gold-6))}.shelf-tier-mastery.shelf-pending{background:linear-gradient(145deg,var(--gold-8),rgba(241,187,123,.08))}.shelf-tier-mastery{border-top-color:var(--accent-gold)}@keyframes cellEnter{0%{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.catalog-triptych .shelf-cell,.catalog-triptych .shelf-cell-wide{animation:cellEnter .4s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--cell-idx, 0) * 30ms + .2s)}.catalog-triptych .song-card{animation:cellEnter .4s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--cell-idx, 0) * 60ms + .2s)}.song-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.song-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:var(--space-lg) var(--space-md);border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:all var(--transition-base);cursor:pointer;border:1.5px solid transparent;text-align:center;position:relative;background-image:radial-gradient(circle 60px at var(--mx, 50%) var(--my, 50%),rgba(255,200,87,0),transparent)}.song-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);background-image:radial-gradient(circle 60px at var(--mx, 50%) var(--my, 50%),rgba(255,200,87,.18),transparent)}.song-card-emoji{display:flex;align-items:center;justify-content:center;color:var(--accent-gold);opacity:.7;transition:opacity var(--transition-base),transform var(--transition-base)}.song-card:hover .song-card-emoji{opacity:1;transform:scale(1.1)}.song-card-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;margin:0}.song-card-level{font-size:var(--text-xs);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.song-card-fraction{font-size:var(--text-sm);color:var(--muted);font-weight:600}.song-card-bar{width:60%}.shelf-method{border-left:4px solid var(--primary);background:linear-gradient(135deg,rgba(59,154,178,.04) 0%,var(--paper) 100%)}.shelf-method .shelf-title{color:var(--primary)}.shelf-technique{border-left:4px solid var(--warning);background:linear-gradient(135deg,rgba(221,141,41,.04) 0%,var(--paper) 100%)}.shelf-technique .shelf-title{color:var(--warning)}.shelf-songs{border-left:4px solid var(--accent-warm);background:linear-gradient(135deg,rgba(255,200,87,.04) 0%,var(--paper) 100%)}.shelf-songs .shelf-title{color:var(--accent-warm)}.shelf-method .shelf-pending{background:var(--accent-8);border-color:var(--accent-10)}.shelf-technique .shelf-pending{background:#dd8d2912;border-color:#dd8d291a}.shelf-songs .shelf-pending,.shelf-songs .song-card.shelf-pending{background:var(--gold-8);border-color:var(--gold-10)}[data-theme=dark] .shelf-pending{background:var(--white-4);border-color:transparent}[data-theme=dark] .shelf-method .shelf-pending{background:var(--accent-8);border-color:var(--accent-10)}[data-theme=dark] .shelf-technique .shelf-pending{background:#dd8d2914;border-color:#dd8d291a}[data-theme=dark] .shelf-songs .shelf-pending,[data-theme=dark] .shelf-songs .song-card.shelf-pending{background:var(--gold-8);border-color:var(--gold-10)}[data-theme=dark] .shelf-pending .shelf-cell-label{color:var(--muted)}[data-theme=dark] .shelf-progress{background:linear-gradient(145deg,#78b7c514,#78b7c529);border-color:#78b7c538;animation-name:shelf-breathe-dark}@keyframes shelf-breathe-dark{0%,to{border-color:#78b7c526;box-shadow:0 0 #78b7c500}50%{border-color:#78b7c566;box-shadow:0 0 12px #78b7c50f}}[data-theme=dark] .shelf-complete{background:linear-gradient(145deg,#ffc8571f,#ffc85740);border-color:var(--gold-20);box-shadow:inset 0 0 12px #ffc85726,0 0 16px #ffc85714,var(--shadow-sm)}[data-theme=dark] .shelf-complete .shelf-cell-label{color:var(--accent-gold)}[data-theme=dark] .shelf-placeholder{border-color:#faefd10f}[data-theme=dark] .shelf-cell-bar{background:#ffffff14}[data-theme=dark] .shelf-cell-wide{background:#ffffff0a;border-color:#faefd10f}[data-theme=dark] .shelf-cell-wide:hover{background:#ffffff12}[data-theme=dark] .song-card.shelf-pending{background:#ffffff0a;border-color:#faefd114}[data-theme=dark] .shelf-tier-beginner.shelf-pending{background:var(--accent-6)}[data-theme=dark] .shelf-tier-intermediate.shelf-pending{background:linear-gradient(145deg,var(--accent-8),var(--gold-6))}[data-theme=dark] .shelf-tier-mastery.shelf-pending{background:linear-gradient(145deg,var(--gold-10),rgba(241,187,123,.06))}@media(max-width:640px){.shelf-grid{gap:4px}.shelf-cell{min-height:72px;padding:8px 4px 6px}.shelf-cell .trophy-icon{width:20px;height:20px}.shelf-cell-fraction,.shelf-cell-stars{display:none}.song-grid{grid-template-columns:1fr;gap:8px}.song-card{flex-direction:row;text-align:left;gap:12px}.song-card-title{flex:1}}.progress-empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-lg);padding:var(--space-3xl) var(--space-xl);border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--accent-3)}.progress-empty-state h3{font-family:var(--font-display);font-size:1.4rem;margin:0}.progress-empty-state p{color:var(--text-secondary);max-width:40ch;margin:0}.progress-header{display:grid;gap:var(--space-lg);margin-bottom:var(--space-xl)}.progress-header .section-head{padding:0}.progress-header .progress-actions .secondary{font-size:var(--text-sm);padding:6px 14px}.progress-journey{display:grid;gap:var(--space-md);padding:var(--space-xl);background:linear-gradient(135deg,#3b9ab214,#ffc8570f);border-radius:var(--radius-xl);border:1px solid var(--line)}.journey-bar{height:8px;background:#0000000f;border-radius:4px;overflow:hidden}.journey-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--primary),var(--accent-warm));transition:width .6s cubic-bezier(.16,1,.3,1)}.journey-stats{display:flex;align-items:center;gap:16px;font-size:var(--text-base);color:var(--muted)}.journey-stat strong{font-family:var(--font-display);font-size:1.3rem;color:var(--accent-gold);margin-right:4px}.journey-dot{width:4px;height:4px;border-radius:50%;background:var(--muted);opacity:.3}[data-theme=dark] .progress-journey{background:linear-gradient(135deg,#78b7c51f,#ffc85714);border-color:#faefd114}[data-theme=dark] .journey-bar{background:#ffffff14}.player-profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin-bottom:var(--space-2xl)}.player-profile-card{display:grid;gap:var(--space-sm);padding:var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}.player-profile-card p{margin:0;color:var(--muted);font-size:var(--text-sm)}.player-profile-number{font-family:var(--font-display);font-size:2.25rem;line-height:1;color:var(--accent-gold)}.player-profile-label{color:var(--muted);font-size:var(--text-sm)}.player-component,.player-quest,.player-history-row{display:flex;justify-content:space-between;gap:var(--space-sm);border-top:1px solid var(--line);padding-top:var(--space-sm);font-size:var(--text-sm)}.player-achievement{display:grid;gap:2px}.player-achievement span{color:var(--muted);font-size:var(--text-sm)}@media(max-width:900px){.player-profile-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.player-profile-grid{grid-template-columns:1fr}}.catalog-triptych{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-lg);align-items:stretch}.catalog-triptych>.shelf-section{animation:reveal-up .6s cubic-bezier(.16,1,.3,1) both}.catalog-triptych>.shelf-section:nth-child(1){animation-delay:0ms}.catalog-triptych>.shelf-section:nth-child(2){animation-delay:.12s}.catalog-triptych>.shelf-section:nth-child(3){animation-delay:.24s}.catalog-triptych .shelf-section{padding:var(--space-lg) var(--space-md) var(--space-md)}.catalog-triptych .shelf-title{font-size:1.2rem}.catalog-triptych .shelf-header{margin-bottom:var(--space-md);flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.catalog-triptych .shelf-header-bar{width:100%}.catalog-triptych .shelf-cell,.catalog-triptych .song-card,.catalog-triptych .shelf-cell-wide{animation:cell-appear .45s cubic-bezier(.16,1,.3,1) both;animation-delay:calc(var(--cell-idx, 0) * 30ms + .2s)}@keyframes cell-appear{0%{opacity:0;transform:scale(.88) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}.catalog-triptych .shelf-cell{min-height:70px;padding:8px 4px 6px;gap:3px}.catalog-triptych .shelf-cell .trophy-icon{width:20px;height:20px}.catalog-triptych .shelf-cell-watermark{font-size:1.8rem}.catalog-triptych .shelf-cell-fraction{font-size:.56rem}.catalog-triptych .shelf-cell-stars{display:none}.catalog-triptych .shelf-row-label{min-height:70px}.catalog-triptych .shelf-songs{display:flex;flex-direction:column}.catalog-triptych .song-grid{grid-template-columns:1fr 1fr;gap:8px;flex:1}.catalog-triptych .song-card{padding:var(--space-sm) var(--space-sm);gap:4px}.catalog-triptych .song-card-title{font-size:var(--text-sm)}.catalog-triptych .song-card-emoji svg{width:20px;height:20px}.catalog-triptych .song-card-level{font-size:var(--text-2xs)}.catalog-triptych .song-card-fraction{font-size:var(--text-xs)}@media(max-width:1100px){.catalog-triptych{grid-template-columns:1fr 1fr}}@media(max-width:740px){.catalog-triptych{grid-template-columns:1fr}}.sidebar-shelves{display:flex;flex-direction:column;gap:var(--space-md)}.sidebar-shelf{display:flex;flex-direction:column;gap:var(--space-sm)}.sidebar-shelf-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding-bottom:2px;border-bottom:1px solid var(--line)}.sidebar-shelf-grid{display:grid;gap:3px}.sidebar-shelf-cell{display:flex;align-items:center;justify-content:center;padding:6px 4px;border-radius:var(--radius-sm);text-decoration:none;transition:all var(--transition-fast);border:1.5px solid transparent;cursor:pointer;min-height:32px}.sidebar-shelf-cell:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);z-index:2}.sidebar-shelf-celltext{font-size:var(--text-2xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink)}.sidebar-shelf-cell-wide{display:flex;align-items:center;justify-content:center;padding:5px 8px;border-radius:var(--radius-sm);text-decoration:none;transition:all var(--transition-fast);border:1.5px solid transparent;cursor:pointer;min-height:28px}.sidebar-shelf-cell-wide:hover{box-shadow:var(--shadow-sm)}.sidebar-shelf-empty{min-height:32px;border-radius:var(--radius-sm);background:#00000004;opacity:.3}.shelf-active{border-color:var(--primary)!important;box-shadow:0 0 0 2px #3b9ab233}.shelf-active .sidebar-shelf-celltext{color:var(--primary)}.sidebar-shelf-list{display:flex;flex-direction:column;gap:3px}[data-theme=dark] .browser-sidebar>.panel{background:#1e1a164d}[data-theme=dark] .sidebar-shelf-cell,[data-theme=dark] .sidebar-shelf-cell-wide{background:#ffffff0a;border-color:#ffffff0f}[data-theme=dark] .sidebar-shelf-cell:hover,[data-theme=dark] .sidebar-shelf-cell-wide:hover{background:#ffffff14}[data-theme=dark] .sidebar-shelf-celltext{color:var(--ink)}[data-theme=dark] .shelf-active{border-color:var(--accent)!important;box-shadow:0 0 0 2px #78b7c540}[data-theme=dark] .shelf-active .sidebar-shelf-celltext{color:var(--accent)}[data-theme=dark] .sidebar-shelf-empty{border-color:#ffffff0a}[data-theme=dark] .sidebar-shelf-cell.shelf-progress,[data-theme=dark] .sidebar-shelf-cell-wide.shelf-progress{background:var(--accent-10);border-color:var(--accent-18)}[data-theme=dark] .sidebar-shelf-cell.shelf-complete,[data-theme=dark] .sidebar-shelf-cell-wide.shelf-complete{background:var(--gold-10);border-color:var(--gold-18)}.metric-denom{font-size:.65em;font-weight:400;color:var(--muted)}.outline-index-done{background:#0b775e26;color:var(--ok)}.outline-stars{font-size:var(--text-sm);color:var(--star-3);letter-spacing:.04em}.rank-check{color:var(--ok)}.exercise-card.completed .exercise-rank{background:#0b775e1f;color:var(--ok)}.pill-complete{background:#0b775e24;color:var(--ok)}.progress-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.progress-course-list{display:grid;gap:12px}.progress-course-row{display:grid;gap:4px}.progress-course-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.progress-course-title{font-weight:700;color:var(--ink);text-decoration:none;transition:color var(--transition-fast)}.progress-course-title:hover{color:var(--accent)}.progress-course-meta{font-size:var(--text-sm);color:var(--muted);font-weight:600}.progress-course-fraction{font-size:var(--text-sm);color:var(--muted);margin-left:auto;font-weight:600}.progress-star-summary{display:flex;gap:4px}.star-chip{font-size:var(--text-xs);padding:2px 7px;border-radius:var(--radius-pill);font-weight:600}.star-3{background:var(--star-3-bg);color:var(--warning)}.star-2{background:var(--star-2-bg);color:var(--text-secondary)}.star-1{background:var(--star-1-bg);color:var(--muted)}.import-msg{margin-top:8px;font-size:var(--text-md);color:var(--ok);font-weight:600}@keyframes celebrate{0%{transform:scale(1.15)}50%{transform:scale(.95)}to{transform:scale(1)}}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.screen-stack>*{animation:fade-in .35s cubic-bezier(.16,1,.3,1)}@keyframes reveal-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}.reveal{opacity:0;animation:reveal-up .6s cubic-bezier(.16,1,.3,1) both}.reveal-stagger>.reveal:nth-child(1){animation-delay:0ms}.reveal-stagger>.reveal:nth-child(2){animation-delay:60ms}.reveal-stagger>.reveal:nth-child(3){animation-delay:.12s}.reveal-stagger>.reveal:nth-child(4){animation-delay:.18s}.reveal-stagger>.reveal:nth-child(5){animation-delay:.24s}.reveal-stagger>.reveal:nth-child(6){animation-delay:.3s}.reveal-stagger>.reveal:nth-child(7){animation-delay:.36s}.reveal-stagger>.reveal:nth-child(8){animation-delay:.42s}.reveal-stagger>.reveal:nth-child(9){animation-delay:.48s}.scroll-reveal{opacity:0;transform:translateY(28px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.scroll-reveal.visible{opacity:1;transform:translateY(0)}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-lg)}.loading-screen .mascot{animation:mascot-bounce .8s ease-in-out infinite alternate}@keyframes mascot-bounce{0%{transform:translateY(0)}to{transform:translateY(-8px)}}.score-spinner{display:flex;align-items:center;justify-content:center;flex-direction:column;min-height:180px;gap:12px;color:var(--muted);font-size:var(--text-base)}.score-spinner:before{content:"";width:28px;height:28px;border:2.5px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.score-skeleton{min-height:180px;background:linear-gradient(90deg,var(--line) 25%,rgba(255,255,255,.15) 50%,var(--line) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.star-rating{display:inline-flex;align-items:center;gap:2px;line-height:1}.star-icon{flex-shrink:0}.star-icon-filled{filter:drop-shadow(0 1px 2px rgba(255,200,87,.35))}.celebration-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#1e1a168c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:overlay-in .3s ease-out}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.celebration-overlay:before{content:"";position:absolute;top:50%;left:50%;width:500px;height:500px;transform:translate(-50%,-50%);background-image:radial-gradient(circle 4px at 15% 25%,var(--star-3) 50%,transparent 50%),radial-gradient(circle 3px at 75% 15%,var(--accent) 50%,transparent 50%),radial-gradient(circle 4px at 35% 85%,var(--accent-warm) 50%,transparent 50%),radial-gradient(circle 3px at 85% 55%,var(--star-2) 50%,transparent 50%),radial-gradient(circle 4px at 10% 65%,var(--primary-light) 50%,transparent 50%),radial-gradient(circle 3px at 55% 8%,var(--accent-gold) 50%,transparent 50%),radial-gradient(circle 4px at 92% 35%,var(--star-3) 50%,transparent 50%),radial-gradient(circle 3px at 25% 45%,var(--accent) 50%,transparent 50%),radial-gradient(circle 3px at 65% 75%,var(--star-2) 50%,transparent 50%),radial-gradient(circle 4px at 45% 20%,var(--accent-warm) 50%,transparent 50%),radial-gradient(circle 3px at 80% 80%,var(--primary-light) 50%,transparent 50%),radial-gradient(circle 4px at 50% 50%,var(--accent-gold) 50%,transparent 50%);animation:confetti-burst 1s cubic-bezier(.16,1,.3,1) both;pointer-events:none;z-index:0}@keyframes confetti-burst{0%{opacity:1;transform:translate(-50%,-50%) scale(.2)}60%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}.celebration-card{position:relative;background:#faefd1d9;-webkit-backdrop-filter:blur(24px) saturate(1.4);backdrop-filter:blur(24px) saturate(1.4);border:1px solid rgba(255,255,255,.5);border-radius:var(--radius-xl);box-shadow:0 24px 80px #322a1938,0 8px 24px #322a191f,inset 0 1px #ffffff80;padding:48px 56px 40px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px;max-width:440px;width:calc(100vw - 48px);animation:card-in .45s cubic-bezier(.34,1.56,.64,1);overflow:hidden}@keyframes card-in{0%{opacity:0;transform:scale(.75) translateY(24px)}to{opacity:1;transform:scale(1) translateY(0)}}.celebration-stars{display:flex;gap:12px;margin-bottom:8px;position:relative}.celebration-star{animation:star-pop .5s cubic-bezier(.34,1.56,.64,1) both}.celebration-star.filled{fill:var(--accent-warm);filter:drop-shadow(0 3px 8px rgba(255,200,87,.6)) drop-shadow(0 0 4px rgba(255,200,87,.3))}.celebration-star.empty{fill:none;stroke:var(--muted);stroke-width:1.2;opacity:.25}@keyframes star-pop{0%{opacity:0;transform:scale(0) rotate(-30deg)}60%{transform:scale(1.2) rotate(5deg)}to{opacity:1;transform:scale(1) rotate(0)}}.celebration-glow{position:absolute;top:20px;left:50%;transform:translate(-50%);width:200px;height:200px;background:radial-gradient(circle,rgba(255,200,87,.25) 0%,transparent 70%);animation:glow-burst 1.2s ease-out forwards;pointer-events:none;z-index:-1}@keyframes glow-burst{0%{transform:translate(-50%) scale(.3);opacity:1}to{transform:translate(-50%) scale(2.5);opacity:0}}.celebration-title{font-family:var(--font-display);font-size:2rem;font-weight:800;letter-spacing:-.03em;margin:0;color:var(--ink);line-height:1.1}.celebration-subtitle{font-size:var(--text-md);color:var(--muted);margin:0}.celebration-hands-free-hint{display:inline-flex;align-items:center;gap:6px;margin:-6px 0 0;color:var(--accent-strong);font-size:var(--text-sm);font-weight:700}.celebration-stats{display:flex;gap:var(--space-md);font-size:var(--text-base);color:var(--muted);font-weight:600}.celebration-stat-ok,.celebration-stat-warn{display:inline-flex;align-items:center;gap:4px}.celebration-stat-ok{color:var(--ok)}.celebration-stat-warn{color:var(--warn)}.celebration-actions{display:flex;gap:12px;margin-top:8px}.celebration-btn{padding:11px 28px}.celebration-particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}.celebration-particle{position:absolute;border-radius:50%;animation:particle-rise 1.6s ease-out forwards}@keyframes particle-rise{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-120px) scale(.3)}}.tools-toggle{padding:5px 12px;border-radius:7px;border:1px solid var(--line);background:var(--white-60);color:var(--muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;font-family:inherit;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.tools-toggle:hover{border-color:var(--accent);color:var(--accent-deep)}.tools-toggle.open{background:var(--accent-soft);border-color:var(--accent-35);color:var(--accent-deep)}.tools-toggle-arrow{font-size:var(--text-xs);transition:transform var(--transition-fast)}.tools-toggle.open .tools-toggle-arrow{transform:rotate(180deg)}.tools-toggle-icon{display:none}.practice-hand-mode-selector{display:inline-flex;flex:0 0 auto;align-items:center;gap:4px;margin-left:auto}.practice-hand-mode-button{display:inline-grid;width:38px;height:38px;min-width:38px;min-height:38px;place-items:center;padding:0;border:1px solid var(--line);border-radius:7px;color:var(--muted);background:var(--white-60);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast)}.practice-hand-mode-button:hover{border-color:var(--accent);color:var(--accent-deep)}.practice-hand-mode-button.active{border-color:var(--accent-35);color:var(--accent-deep);background:var(--accent-soft);box-shadow:0 1px 3px #0000001a}.practice-hand-mode-button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.practice-hand-icon{display:inline-grid;place-items:center;line-height:0}.practice-hand-icon-left{transform:scaleX(-1)}.practice-hand-icon-both{position:relative;width:24px;height:20px}.practice-hand-icon-both svg{position:absolute;width:17px;height:17px}.practice-hand-icon-both svg:first-child{left:0;bottom:0}.practice-hand-icon-both svg:last-child{right:0;top:0}.piano-connection-setting{min-width:min(100%,240px)}.midi-connection-status{display:inline-flex;min-width:0;align-items:center;gap:5px;color:var(--muted);font-size:var(--text-sm);font-weight:600}.midi-device-select-label{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:var(--text-sm);font-weight:600}.midi-device-select-label select{min-width:150px;max-width:240px;padding:4px 7px;border:1px solid var(--line);border-radius:7px;color:var(--ink);background:var(--paper);font:inherit}.midi-connection-status.granted{color:var(--ok)}.midi-connection-status.requesting{color:var(--accent-deep)}.midi-connection-status.error{color:var(--warn)}.midi-settings-btn{min-height:30px;padding:4px 9px;border:1px solid var(--accent-35);border-radius:7px;color:var(--accent-deep);background:var(--accent-soft);font:inherit;font-size:var(--text-sm);font-weight:700;cursor:pointer}.midi-settings-btn:disabled{opacity:.6;cursor:default}.practice-bar-tools{animation:tools-reveal .2s ease-out}@keyframes tools-reveal{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.tool-group{display:inline-flex;align-items:center;gap:4px;padding-right:10px;margin-right:6px;border-right:1px solid var(--line)}.tool-group:last-child{border-right:none;padding-right:0;margin-right:0}.tool-group-label{font-size:var(--text-2xs);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-right:2px}.course-card[data-category=method]{border-left:3px solid var(--primary)}.course-card[data-category=technique]{border-left:3px solid var(--success)}.course-card[data-category=songs]{border-left:3px solid var(--warning)}.course-card[data-category=method] .eyebrow{color:var(--primary)}.course-card[data-category=technique] .eyebrow{color:var(--success)}.course-card[data-category=songs] .eyebrow{color:var(--warning)}.course-card[data-category=method] .course-progress-bar-fill{background:var(--primary)}.course-card[data-category=technique] .course-progress-bar-fill{background:var(--success)}.course-card[data-category=songs] .course-progress-bar-fill{background:var(--warning)}.course-card[data-category=method] .progress-ring-fill{stroke:var(--primary)}.course-card[data-category=technique] .progress-ring-fill{stroke:var(--success)}.course-card[data-category=songs] .progress-ring-fill{stroke:var(--warning)}.course-card[data-category=technique] .progress-ring-text{color:var(--success)}.course-card[data-category=songs] .progress-ring-text{color:var(--warning)}.course-card[data-category=technique] .pill{background:#0b775e1a;color:var(--success)}.course-card[data-category=songs] .pill{background:#dd8d291a;color:var(--warning)}.course-card.card-complete{border-left-color:var(--ok)}.course-card.card-complete .eyebrow{color:var(--ok)}.course-card.card-complete .progress-ring-fill{stroke:var(--ok)}.course-card.card-complete .progress-ring-text{color:var(--ok)}[data-theme=dark]{color-scheme:dark;--bg: #1e1a16;--paper: rgba(35, 30, 26, .95);--ink: #FFFFFF;--muted: #D6D6D6;--accent: #8FD4E2;--accent-deep: #79C4D5;--primary-hover: #8FD4E2;--primary-light: #A8E5EE;--accent-soft: rgba(143, 212, 226, .16);--accent-3: rgba(143, 212, 226, .03);--accent-5: rgba(143, 212, 226, .05);--accent-6: rgba(143, 212, 226, .06);--accent-8: rgba(143, 212, 226, .08);--accent-10: rgba(143, 212, 226, .1);--accent-12: rgba(143, 212, 226, .12);--accent-15: rgba(143, 212, 226, .15);--accent-20: rgba(143, 212, 226, .2);--accent-25: rgba(143, 212, 226, .25);--accent-30: rgba(143, 212, 226, .3);--accent-35: rgba(143, 212, 226, .35);--accent-40: rgba(143, 212, 226, .4);--gold-6: rgba(255, 200, 87, .05);--gold-8: rgba(255, 200, 87, .06);--gold-10: rgba(255, 200, 87, .08);--gold-12: rgba(255, 200, 87, .1);--gold-15: rgba(255, 200, 87, .12);--gold-18: rgba(255, 200, 87, .15);--gold-20: rgba(255, 200, 87, .18);--gold-25: rgba(255, 200, 87, .22);--ink-3: rgba(255, 255, 255, .03);--ink-4: rgba(255, 255, 255, .04);--ink-5: rgba(255, 255, 255, .05);--ink-6: rgba(255, 255, 255, .06);--ink-10: rgba(255, 255, 255, .1);--ink-15: rgba(255, 255, 255, .15);--white-4: rgba(255, 255, 255, .04);--white-6: rgba(255, 255, 255, .06);--white-8: rgba(255, 255, 255, .08);--white-45: rgba(255, 255, 255, .14);--white-50: rgba(255, 255, 255, .16);--white-56: rgba(255, 255, 255, .2);--white-60: rgba(255, 255, 255, .24);--white-80: rgba(255, 255, 255, .32);--line: rgba(255, 255, 255, .16);--ok: #72C782;--success: #72C782;--warn: #F0B35B;--warning: #F0B35B;--text-secondary: #F1F1F1;--paper-alt: rgba(48, 41, 35, .98);--surface-muted: #342D27;--border: rgba(255, 255, 255, .22);--text-inverse: #1E1A16;--accent-strong: var(--accent-deep);--danger: var(--error);--ink-8: rgba(255, 255, 255, .08);--ink-20: rgba(255, 255, 255, .2);--accent-18: rgba(143, 212, 226, .18);--surface: #55332C;--border-warm: #7F5539;--error: #FF765B;--piano-key-white: #e8dfd2;--piano-key-black: #1e1a16;--piano-key-stroke: #7D898D;--piano-label-muted: #39464A;--piano-label-strong: #181C1F;--piano-right-text: #236A7C;--piano-left-text: #7D4F00;--piano-right-stroke: #8FD4E2;--piano-left-stroke: #F0B35B;--piano-right-fill: #d9f1f4;--piano-left-fill: #f5dfc5;--piano-right-chord: #9edbe4;--piano-left-chord: #e5c8a0;--piano-right-black-chord: #79C4D5;--piano-left-black-chord: #F0B35B;--piano-pressed: #F5CDB4;--piano-wrong-fill: #ffd9cf;--piano-wrong-text: #C93312;--piano-wrong-black-stroke: #8a2510;--piano-key-shadow: rgba(0, 0, 0, .22);--piano-key-black-top: #3a3a3a;--piano-key-black-bottom: #1a1a1a;--player-screen-bg: #151210;--player-surface: var(--paper);--player-panel: #2A2520;--player-border: var(--line);--player-tabs: #3A322C;--player-tab-text: var(--muted);--player-tab-active-bg: var(--accent-10);--player-tab-active-text: var(--ink);--player-tab-hover-bg: var(--accent-12);--player-tab-hover-text: var(--accent);--player-preview-bg: var(--accent-deep);--player-preview-border: var(--accent);--player-previewing-bg: #C46C43;--player-previewing-border: #B65B36;--player-control-bg: var(--white-6);--player-control-text: var(--accent);--player-next-bg: var(--accent-12);--player-next-text: var(--accent);--player-midi-bg: var(--white-6);--player-midi-text: var(--accent);--player-midi-border: var(--accent-30);--player-connected-bg: var(--ok);--player-connected-border: var(--ok);--player-score-bg: #1E1A16;--player-score-control-bg: #2A2520;--player-score-control-border: var(--line);--player-score-control-text: var(--ink);--player-follow-bg: var(--accent-deep);--player-tab-shadow: rgba(0, 0, 0, .28);--player-preview-shadow: rgba(0, 0, 0, .3);--player-score-shadow: rgba(0, 0, 0, .2);--accent-gold: #E1BD6D;--accent-warm: #FFC857;--star-3: #FFC857;--star-3-bg: rgba(255, 200, 87, .15);--star-2-bg: rgba(225, 189, 109, .12);--star-1-bg: rgba(217, 179, 130, .08);background:radial-gradient(circle at top left,rgba(143,212,226,.08),transparent 32%),radial-gradient(circle at bottom right,rgba(85,51,44,.12),transparent 28%),linear-gradient(180deg,#151210,#1e1a16)}[data-theme=dark] .score-viewer-wrap{background:#1e1a16;box-shadow:0 4px 16px #0003,inset 0 0 0 1px #faefd10f}[data-theme=dark] .score-viewer{background:#fffbf4f2;border-radius:var(--radius-md);padding:var(--space-md);box-shadow:inset 0 0 20px #0000000d}[data-theme=dark] .practice-range-marker{--practice-range-marker-color: #77a6ff}[data-theme=dark] .practice-range-selected-measure{background:color-mix(in srgb,#77a6ff 8%,transparent)}[data-theme=dark] kbd{background:#ffffff12;border-color:#faefd126;box-shadow:0 1px #0003;color:var(--muted)}[data-theme=dark] .mode-tab.active{background:#ffffff1f;color:var(--ink);border-color:var(--accent-15);box-shadow:0 2px 6px #0003}[data-theme=dark] .course-nav-link,[data-theme=dark] .outline-link,[data-theme=dark] .input-card,[data-theme=dark] .metric-card,[data-theme=dark] .detail-stat{background:#ffffff0a}[data-theme=dark] .action-link.secondary,[data-theme=dark] .secondary-button{background:#ffffff12}[data-theme=dark] .panel,[data-theme=dark] .status-card{background:var(--paper)}[data-theme=dark] .top-nav{border-bottom-color:#78b7c514;box-shadow:0 1px #78b7c50a}[data-theme=dark] .hero-copy{background:transparent}[data-theme=dark] .shelf-method{background:linear-gradient(135deg,rgba(59,154,178,.06) 0%,var(--paper) 100%)}[data-theme=dark] .shelf-technique{background:linear-gradient(135deg,rgba(221,141,41,.06) 0%,var(--paper) 100%)}[data-theme=dark] .shelf-songs{background:linear-gradient(135deg,rgba(255,200,87,.06) 0%,var(--paper) 100%)}[data-theme=dark] .surface-card{background:var(--paper);box-shadow:var(--shadow-sm)}[data-theme=dark] .piano-keyboard-wrap{background:linear-gradient(180deg,#2a2520,#1e1a16);border-color:#faefd10f;box-shadow:0 4px 12px #0000004d,0 1px 3px #0003,inset 0 1px #ffffff0d}[data-theme=dark] .hero-copy h1{background:linear-gradient(135deg,var(--ink) 30%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}[data-theme=dark] .hero-panel{background-color:transparent;background-image:linear-gradient(135deg,#78b7c55c,#ffc85738 40%,#f1bb7b4d)}[data-theme=dark] .hero-inner:before{background:repeating-linear-gradient(to bottom,transparent,transparent 15px,rgba(120,183,197,.08) 15px,rgba(120,183,197,.08) 16px)}[data-theme=dark] .hero-inner:after{background:repeating-linear-gradient(90deg,transparent 0px,transparent 18px,rgba(250,239,209,.06) 18px,rgba(250,239,209,.06) 19px,transparent 19px,transparent 30px,rgba(250,239,209,.03) 30px,rgba(250,239,209,.03) 31px)}[data-theme=dark] .hero-mascot-area:before{background:radial-gradient(circle,rgba(120,183,197,.18) 0%,transparent 70%)}[data-theme=dark] .hero-mascot-area:after{border-color:#78b7c51a}[data-theme=dark] .goal-copy{background:#ffffff0a}[data-theme=dark] .tag{background:#ffffff0f}[data-theme=dark] .swing-badge{background:#8c78b426;color:#a090c0}[data-theme=dark] .dynamic-badge{background:#e1bd6d26}[data-theme=dark] .action-link.primary,[data-theme=dark] .action-button,[data-theme=dark] .start-perform-btn{color:#1e1a16}[data-theme=dark] .celebration-card{background:#1e1a16d9;border-color:#ffffff1a;box-shadow:0 24px 80px #00000080,0 8px 24px #00000059,inset 0 1px #ffffff14}[data-theme=dark] .celebration-btn.secondary{background:#ffffff12}[data-theme=dark] .celebration-btn.primary{color:#1e1a16}[data-theme=dark] .tools-toggle{background:#ffffff0f}[data-theme=dark] .tools-toggle.open{background:var(--accent-soft)}[data-theme=dark] .tempo-select-btn,[data-theme=dark] .metronome-btn,[data-theme=dark] .sight-reading-btn,[data-theme=dark] .note-labels-btn,[data-theme=dark] .auto-loop-btn{background:#ffffff14;border-color:#faefd11f;color:var(--muted)}[data-theme=dark] .tempo-select-btn:hover,[data-theme=dark] .metronome-btn:hover,[data-theme=dark] .sight-reading-btn:hover,[data-theme=dark] .note-labels-btn:hover,[data-theme=dark] .auto-loop-btn:hover{border-color:var(--accent);color:var(--accent)}[data-theme=dark] .tempo-select-btn.active,[data-theme=dark] .metronome-btn.active,[data-theme=dark] .sight-reading-btn.active,[data-theme=dark] .note-labels-btn.active,[data-theme=dark] .auto-loop-btn.active{background:var(--accent-15);border-color:var(--accent-25);color:var(--accent)}[data-theme=dark] .preview-btn,[data-theme=dark] .score-zoom-btn{background:#ffffff14;border-color:#faefd11f}[data-theme=dark] .reset-btn{border-color:#faefd11f}[data-theme=dark] .tool-group-label{color:var(--muted)}[data-theme=dark] .exercise-table-row:nth-child(2n){background:#ffffff08}[data-theme=dark] .exercise-table-num{background:#ffffff0f}[data-theme=dark] .exercise-table-row:hover{background:var(--accent-6)}[data-theme=dark] .score-zoom-controls{background:#ffffff0a}[data-theme=dark] .practice-bar-wrap{border-color:var(--line)}[data-theme=dark] .practice-bar{border-color:transparent}[data-theme=dark] .practice-bar-fill{background:linear-gradient(90deg,var(--accent-6) 0%,var(--accent-15) 100%)}[data-theme=dark] .practice-bar-actions{border-top-color:var(--line)}[data-theme=dark] .tool-group{border-right-color:var(--line)}[data-theme=dark] .midi-connect-btn{border-color:var(--accent)}[data-theme=dark] .midi-connect-btn:hover:not(:disabled){color:#1e1a16;background:var(--accent)}@media(max-width:640px){.metric-grid{grid-template-columns:repeat(2,1fr)}.kbd-hints{display:none}.sidebar-nav-actions{gap:4px}.progress-actions{flex-direction:column;align-items:flex-start}.section-head{gap:10px}}.scroll-to-top{position:fixed;bottom:28px;right:28px;z-index:100;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--accent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-lg);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-base),box-shadow var(--transition-base),opacity var(--transition-base);animation:fade-in .3s ease-out}.scroll-to-top:hover{transform:translateY(-3px);box-shadow:var(--shadow-xl)}.scroll-to-top:active{transform:scale(.93)}.exercise-table{width:100%;border-collapse:separate;border-spacing:0}.exercise-table-row{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);transition:all var(--transition-fast);text-decoration:none;color:inherit}.exercise-table-row:last-child{border-bottom:none}.exercise-table-row:nth-child(2n){background:#00000006}.exercise-table-row:hover{background:var(--accent-6);transform:translate(4px)}.exercise-table-row:hover .exercise-table-num{color:var(--accent)}.exercise-table-row.row-complete{border-left:3px solid var(--ok);padding-left:13px;background:#0b775e0a}.exercise-table-row.current-exercise{background:var(--accent-soft);border-radius:var(--radius-md);border-bottom-color:transparent}.exercise-table-num{font-size:var(--text-sm);font-weight:700;color:var(--text-secondary, var(--muted));text-align:center;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:#0000000a}.exercise-table-row.row-complete .exercise-table-num{color:#fff;background:var(--ok)}.exercise-table-title{font-weight:600;font-size:var(--text-md);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exercise-table-status{font-size:var(--text-sm);font-weight:700;padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.exercise-table-status.status-complete{background:#0b775e1a;color:var(--ok)}.exercise-table-status.status-incomplete{background:var(--ink-6);color:var(--muted)}.exercise-table-stars{display:flex;gap:2px}.exercise-table-action{font-size:var(--text-sm);font-weight:600;color:var(--accent);text-decoration:none;white-space:nowrap}.exercise-table-action:hover{text-decoration:underline}.trophy-icon{display:inline-flex;vertical-align:middle}.trophy-gold{color:var(--accent-warm)}.trophy-silver{color:var(--muted)}.trophy-bronze{color:#c4956a}.course-table-section{padding:0;overflow:hidden}.course-table-header{display:flex;align-items:center;gap:12px;padding:18px 24px;width:100%;background:transparent;border:none;cursor:pointer;font-family:inherit;text-align:left;color:inherit;transition:background var(--transition-fast)}.course-table-header:hover{background:#3b9ab208}.course-table-header h3{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;margin:0;flex:1;min-width:0}.course-table-header .trophy-icon{flex-shrink:0}.course-table-header .progress-ring{width:36px;height:36px}.course-table-header .progress-ring svg{width:36px;height:36px}.course-table-header .progress-ring-text{font-size:.6rem}.course-table-level{font-size:var(--text-xs);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.course-table-progress{font-size:var(--text-sm);color:var(--muted);font-weight:600;white-space:nowrap}.course-table-chevron{font-size:var(--text-lg);color:var(--muted);transition:transform var(--transition-base);flex-shrink:0}.course-table-chevron.open{transform:rotate(90deg)}.course-table-section .exercise-table{border-top:1px solid var(--line);padding:0 8px 8px;animation:tools-reveal .25s ease-out}@media(max-width:860px){.exercise-table-row{grid-template-columns:28px 1fr auto;gap:8px;padding:10px 12px}.exercise-table-stars,.exercise-table-action{display:none}.scroll-to-top{bottom:16px;right:16px;width:40px;height:40px}}.notfound-panel{text-align:center;padding:var(--space-3xl) var(--space-xl)}.notfound-title{font-family:var(--font-display);font-size:6rem;font-weight:800;line-height:1;margin-bottom:var(--space-md);background:linear-gradient(135deg,var(--ink) 30%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:12px 24px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:fade-in .3s;z-index:100;font-size:var(--text-md);font-weight:600;color:var(--ink)}.site-footer:before{content:"";display:block;height:3px;background:linear-gradient(90deg,var(--primary),var(--primary-light) 58%,var(--accent-warm))}.site-footer{width:min(1280px,calc(100% - 32px));margin:38px auto 0;overflow:hidden;background:linear-gradient(145deg,var(--paper),var(--accent-5));border:1px solid var(--line);border-bottom:0;border-radius:22px 22px 0 0;box-shadow:0 -8px 30px var(--ink-4);color:var(--muted);font-size:var(--text-sm)}.site-footer-main{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(460px,1.2fr);gap:clamp(40px,7vw,96px);padding:clamp(28px,4vw,48px)}.footer-brand{align-self:start;max-width:340px}.footer-brand-link{display:inline-flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.site-footer-logo{width:42px;height:42px;border-radius:11px;filter:drop-shadow(0 5px 8px var(--ink-10))}.site-footer-brand{font-family:var(--font-display);font-size:1.2rem;font-weight:800;color:var(--ink)}.footer-description{max-width:310px;margin:16px 0 0;color:var(--text-secondary);line-height:1.65}.site-footer-navigation{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:clamp(28px,4vw,56px)}.footer-link-group h2{margin:0 0 14px;color:var(--ink);font-size:var(--text-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase}.footer-link-list{display:grid;gap:11px}.site-footer a{display:inline-flex;align-items:center;gap:8px;width:fit-content;max-width:100%;color:var(--text-secondary);line-height:1.45;transition:color var(--transition-fast),transform var(--transition-fast)}.site-footer a svg{flex:0 0 auto;color:var(--primary)}.site-footer a:hover{color:var(--primary-hover);transform:translate(2px)}.site-footer-bottom{padding:16px clamp(28px,4vw,48px) 18px;background:var(--ink-3);border-top:1px solid var(--line)}.footer-copyright{color:var(--muted);line-height:1.5}.legal-app{width:min(940px,92vw);padding-bottom:24px}.legal-page{display:grid;gap:16px}.legal-back-link{display:inline-flex;align-items:center;justify-self:start;gap:7px;padding:7px 2px;color:var(--primary-hover);font-size:var(--text-sm);font-weight:750}.legal-back-link:hover{color:var(--primary)}.legal-document{min-height:520px;padding:clamp(26px,5vw,52px);background:var(--paper);border:1px solid var(--line);border-radius:22px;box-shadow:0 16px 42px var(--ink-6)}.legal-document-header{display:flex;align-items:flex-start;gap:17px;padding-bottom:clamp(24px,4vw,36px);border-bottom:1px solid var(--line)}.legal-document-icon{display:grid;place-items:center;flex:0 0 46px;width:46px;height:46px;color:var(--primary-hover);background:var(--accent-10);border:1px solid var(--accent-15);border-radius:13px}.legal-document-eyebrow{display:block;margin:1px 0 7px;color:var(--primary-hover);font-size:var(--text-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase}.legal-document h1{margin:0;color:var(--ink);font-family:var(--font-display);font-size:clamp(1.75rem,4vw,2.6rem);line-height:1.12;letter-spacing:-.025em}.legal-document-content{min-height:320px;padding-top:clamp(24px,4vw,36px);color:var(--text-secondary);line-height:1.7}.legal-document-meta{margin:0 0 18px;color:var(--muted);font-size:var(--text-xs);font-weight:700;letter-spacing:.02em}.legal-document-lead{max-width:760px;margin:0 0 24px;color:var(--ink);font-size:1.05rem;line-height:1.7}.legal-document-notice{margin:0 0 30px;padding:16px 18px;color:var(--text-secondary);background:var(--accent-5);border:1px solid var(--accent-15);border-left:3px solid var(--primary);border-radius:10px}.legal-document-content>section{margin-top:30px}.legal-document-content>section:first-of-type{margin-top:0}.legal-document-content h2{margin:0 0 11px;color:var(--ink);font-size:1.12rem;line-height:1.35}.legal-document-content h3{margin:20px 0 7px;color:var(--ink);font-size:.94rem;line-height:1.4}.legal-document-content p{margin:0 0 13px}.legal-document-content p:last-child{margin-bottom:0}.legal-document-content ul,.legal-document-content ol{display:grid;gap:8px;margin:0 0 14px;padding-left:22px}.legal-document-content li{padding-left:3px}.legal-document-content strong{color:var(--ink)}.legal-document-content code{padding:2px 5px;color:var(--accent-deep);background:var(--accent-6);border-radius:4px;font-family:var(--font-mono);font-size:.86em}.legal-inline-link{color:var(--primary-hover);font-weight:700;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.legal-inline-link:hover{color:var(--primary)}.legal-document-references{padding-top:22px;border-top:1px solid var(--line)}@media(max-width:820px){.site-footer-main{grid-template-columns:1fr;gap:32px}.footer-brand{max-width:460px}}@media(max-width:560px){.site-footer{width:calc(100% - 20px);margin-top:28px;border-radius:17px 17px 0 0}.site-footer-main{padding:26px 22px}.site-footer-navigation{grid-template-columns:1fr}.site-footer-bottom{padding:15px 22px 17px}.legal-document{min-height:430px;padding:24px 20px;border-radius:17px}.legal-document-header{gap:13px}.legal-document-icon{flex-basis:40px;width:40px;height:40px}}.mascot{display:block;animation:mascot-float 3s ease-in-out infinite}.hero-mascot-area .mascot{animation:mascot-entrance .8s cubic-bezier(.34,1.56,.64,1) both,mascot-float 3s ease-in-out .8s infinite;filter:drop-shadow(0 18px 12px rgba(0,0,0,.1));position:relative;z-index:1}[data-theme=dark] .hero-mascot-area .mascot{filter:drop-shadow(0 18px 12px rgba(0,0,0,.25))}@keyframes mascot-entrance{0%{opacity:0;transform:translate(30px) rotate(5deg) scale(.85)}to{opacity:1;transform:translate(0) rotate(0) scale(1)}}@keyframes mascot-float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}[data-screen=practice]{background:linear-gradient(180deg,#faf5ec,#f7f2e8)}[data-screen=practice][data-theme=dark]{background:linear-gradient(180deg,#151210,#1e1a16)}[data-screen=progress] .progress-stat-value{font-size:2rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-property:opacity,color,background-color,border-color!important;transition-duration:.15s!important}}.account-panel{width:min(680px,100%);margin:2rem auto}.account-form{display:grid;gap:1rem;margin:1.5rem 0}.account-form label{display:grid;gap:.4rem;font-weight:650}.account-form input,.account-form textarea{border:1px solid var(--border, #d8d8d8);border-radius:10px;padding:.75rem;background:var(--surface, #fff);color:inherit;font:inherit}.account-form textarea{min-height:7rem;resize:vertical}.account-form .account-check{display:flex;align-items:center;font-weight:500}.account-check input{width:auto}.account-message{color:var(--accent, #2d7a8e)}.account-switch{display:block;margin-top:1rem}.profile-page{display:grid;gap:1.25rem}.profile-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.profile-stats article{display:grid;gap:.25rem;text-align:center}.profile-stats strong{font-size:2rem}.privacy-actions,.admin-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.plain-link.danger{color:var(--error)}.profile-dashboard{display:grid;gap:var(--page-section-gap);width:100%;max-width:none;margin:0 auto}.profile-dashboard>.profile-content-grid{order:1}.profile-dashboard>.profile-learning-card{order:2}.profile-dashboard>.profile-history{order:3}.profile-dashboard>.profile-account{order:4}.profile-learning-card{display:grid;gap:0;overflow:hidden}.profile-learning-tabs{display:flex;align-items:center;gap:4px;margin:calc(var(--space-lg) * -1) calc(var(--space-lg) * -1) var(--space-md);padding:5px;border-bottom:1px solid color-mix(in srgb,var(--primary) 28%,var(--line));background:linear-gradient(90deg,color-mix(in srgb,var(--primary) 16%,var(--paper)),color-mix(in srgb,var(--accent) 9%,var(--paper)))}.profile-learning-tabs button{display:inline-flex;min-width:0;flex:1;align-items:center;justify-content:center;gap:7px;padding:9px 12px;border:0;border-radius:9px;color:var(--muted);background:transparent;font:inherit;font-size:var(--text-sm);font-weight:750;cursor:pointer}.profile-learning-tabs button:hover{color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent)}.profile-learning-tabs button.active{color:var(--primary);background:var(--paper);box-shadow:0 2px 8px color-mix(in srgb,var(--ink) 8%,transparent)}.profile-learning-tabs button small{color:var(--muted);font-size:var(--text-xs);font-weight:650}.profile-learning-tabs button.active small{color:var(--primary)}.profile-learning-tab-panel{min-width:0}.profile-learning-tab-loading{margin:var(--space-md) 0;color:var(--muted)}.profile-learning-card .practice-rhythm-card{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.profile-learning-card .practice-rhythm-heading h2{margin:0;font-size:var(--text-xl)}.profile-learning-card .profile-weekly-recap-card{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.profile-learning-card .profile-weekly-recap-card:before{display:none}.profile-state{display:grid;justify-items:start;gap:var(--space-md);max-width:500px;margin:2rem auto}.profile-state h2,.profile-state p{margin:0}.profile-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-lg);padding:clamp(22px,4vw,34px);background:linear-gradient(135deg,var(--paper),var(--accent-6))}.profile-avatar{display:grid;place-items:center;width:76px;height:76px;overflow:hidden;border:3px solid var(--white-80);border-radius:50%;color:var(--primary-hover);background:linear-gradient(145deg,var(--accent-20),var(--gold-15));box-shadow:var(--shadow-sm);font-family:var(--font-display);font-size:1.55rem;font-weight:800}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-identity{min-width:0}.profile-identity .eyebrow{margin-bottom:5px}.profile-identity h1{margin:0;font-family:var(--font-display);font-size:clamp(1.8rem,4vw,2.65rem);letter-spacing:-.035em}.profile-identity p{margin:6px 0 0;overflow:hidden;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap}.profile-verified{color:var(--ok);font-weight:700}.profile-pending{color:var(--warn);font-weight:700}.profile-goal{display:inline-block;max-width:100%;margin-top:10px;overflow:hidden;color:var(--primary-hover);font-size:var(--text-sm);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.profile-edit-trigger{gap:7px;white-space:nowrap}.profile-alert{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);color:var(--error)}.profile-alert p{margin:0}.profile-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md)}.profile-metric{display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center;min-height:130px}.profile-metric>svg{grid-row:span 2;color:var(--primary)}.profile-metric strong{align-self:end;font-family:var(--font-display);font-size:2rem;line-height:1}.profile-metric span{align-self:start;margin-top:5px;color:var(--muted);font-size:var(--text-sm)}.profile-content-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);gap:var(--space-lg)}.profile-journey-card,.profile-achievement-card,.profile-history,.profile-account{display:grid;gap:var(--space-md)}.profile-achievement-overview{display:grid;grid-template-columns:minmax(8rem,.7fr) minmax(0,1.3fr);gap:.75rem}.profile-achievement-score,.profile-achievement-next{display:grid;align-content:center;gap:.2rem;min-height:5.5rem;padding:.85rem;border-radius:.85rem}.profile-achievement-score{background:linear-gradient(135deg,#ffdb55,#f4af18);color:#614100}.profile-achievement-score strong{font-size:2rem;line-height:1}.profile-achievement-score strong small{font-size:1rem}.profile-achievement-score span,.profile-achievement-next span,.profile-achievement-next small{font-size:.8rem}.profile-achievement-next{border:1px solid var(--border);background:var(--surface-muted)}.profile-achievement-next strong{font-size:1rem}.profile-achievement-next small{color:var(--text-secondary)}.profile-achievement-chapters{display:flex;flex-wrap:wrap;gap:.35rem}.profile-achievement-chapters span{padding:.3rem .5rem;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);font-size:.75rem}.profile-achievement-chapters span.complete{background:#fff0b4;border-color:#d79d00;color:#704b00}.profile-achievement-chapters span.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong);font-weight:700}.profile-achievement-catalog{display:grid;grid-template-columns:repeat(13,minmax(0,1fr));gap:.35rem}.profile-achievement-catalog span{position:relative;display:grid;place-items:center;min-height:2.4rem;border:1px solid var(--border);border-radius:.6rem;background:#fff0b4;color:#9b6700}.profile-achievement-catalog b{position:absolute;right:.2rem;bottom:.1rem;font-size:.58rem}.profile-achievement-catalog span.locked{background:var(--surface-muted);color:var(--muted);opacity:1;filter:grayscale(1)}.profile-achievement-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;font-weight:700}.profile-achievement-footer .action-link{margin-left:auto}@media(max-width:560px){.profile-achievement-overview{grid-template-columns:1fr}.profile-achievement-catalog{grid-template-columns:repeat(5,minmax(0,1fr))}.profile-achievement-footer{align-items:flex-start;flex-direction:column}.profile-achievement-footer .action-link{margin-left:0}}.achievement-hub{display:grid;gap:var(--page-section-gap);max-width:1120px;margin:0 auto}.achievement-hero{display:flex;align-items:center;gap:var(--space-lg);flex-wrap:wrap}.achievement-hero h1,.achievement-group h2,.achievement-records h2{margin:0}.achievement-hero p{margin:.35rem 0 0;color:var(--text-secondary)}.achievement-hero>svg{color:#d79d00}.master-earned,.master-locked{margin-left:auto;padding:.55rem .8rem;border-radius:999px}.master-earned{background:#fff0b4;color:#704b00}.master-locked{background:var(--surface-muted);color:var(--text-secondary)}.achievement-groups{display:grid;gap:var(--space-lg)}.achievement-roadmap{display:flex;flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none}.achievement-roadmap li{padding:.4rem .65rem;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);font-size:.85rem}.achievement-roadmap li.complete{border-color:#d79d00;background:#fff0b4;color:#704b00;font-weight:700}.achievement-group{display:grid;gap:var(--space-md)}.achievement-group>header{display:flex;justify-content:space-between;align-items:center}.achievement-group>header>span{font-weight:700;color:var(--text-secondary)}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:.75rem}.achievement-item{display:flex;gap:.75rem;padding:.85rem;border:1px solid var(--border);border-radius:.85rem}.achievement-item p,.achievement-item small{display:block;margin:.25rem 0 0;color:var(--text-secondary);font-size:.85rem}.achievement-item.locked{opacity:1;filter:grayscale(1)}.achievement-icon{flex:0 0 2.75rem;height:2.75rem;display:grid;place-items:center;border-radius:.75rem;background:#fff0b4;color:#9b6700}.achievement-item.locked .achievement-icon{background:var(--surface-muted);color:var(--muted)}.profile-history-hint{margin:calc(var(--space-sm) * -1) 0 0;color:var(--muted);font-size:var(--text-sm)}.profile-practice-items{display:grid;gap:var(--space-sm)}.profile-practice-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:.8rem .9rem;border:1px solid var(--line);border-radius:.8rem;color:inherit;background:var(--paper-alt);text-decoration:none}.profile-practice-item:hover,.profile-practice-item:focus-visible{border-color:var(--primary-light);background:var(--paper)}.profile-practice-item>div{display:grid;min-width:0;gap:4px}.profile-practice-item strong{overflow:hidden;color:var(--primary-hover);font-family:var(--font-display);font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap}.profile-practice-item time,.profile-practice-item>span{color:var(--muted);font-size:var(--text-xs)}.profile-practice-item>span{flex:0 0 auto;white-space:nowrap}.profile-check-history{display:grid;gap:var(--space-sm);margin-top:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--line)}.profile-section-subheading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.profile-section-subheading h3{margin:0;font-size:var(--text-md)}.profile-attempt-groups{display:grid;gap:var(--space-sm)}.profile-attempt-group{padding:.8rem .9rem;border:1px solid var(--line);border-radius:.8rem;background:var(--paper-alt)}.profile-attempt-group>header{display:flex;justify-content:space-between;gap:.75rem;padding-bottom:.55rem}.profile-attempt-group>header div{display:grid;gap:5px;min-width:0}.profile-attempt-group>header strong{overflow:hidden;color:var(--primary-hover);font-family:var(--font-display);font-size:var(--text-md);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap}.profile-attempt-group>header span{width:fit-content;padding:2px 6px;border-radius:999px;color:var(--primary-hover);background:color-mix(in srgb,var(--primary) 11%,transparent);font-size:10px;font-weight:750;letter-spacing:.05em;text-transform:uppercase}.profile-attempt-group>header small{color:var(--muted);font-size:var(--text-xs);text-align:right;white-space:nowrap}.profile-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.profile-section-heading .eyebrow{margin-bottom:5px}.profile-section-heading h2{margin:0;font-size:var(--text-xl)}.profile-section-heading>svg{color:var(--primary)}.profile-section-heading a{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.profile-journey-card>p,.profile-achievement-card>p,.profile-account p{margin:0;color:var(--text-secondary);line-height:1.55}.practice-week{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.practice-day{display:grid;justify-items:center;gap:8px;color:var(--muted);font-size:var(--text-xs);font-weight:700}.practice-day i{width:100%;max-width:34px;aspect-ratio:1;border:1px solid var(--line);border-radius:50%;background:var(--ink-3)}.practice-day.active{color:var(--primary-hover)}.practice-day.active i{border-color:transparent;background:linear-gradient(135deg,var(--primary),var(--accent-warm));box-shadow:0 4px 10px var(--accent-25)}.practice-period-tabs{display:inline-flex;width:fit-content;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--ink-3)}.practice-period-tabs button{border:0;border-radius:7px;padding:5px 10px;color:var(--text-secondary);background:transparent;font:inherit;font-size:var(--text-xs);font-weight:700;cursor:pointer}.practice-period-tabs button.active{color:var(--text-inverse);background:var(--primary)}.practice-total{font-size:var(--text-xl);color:var(--primary-hover)}.practice-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:end;gap:7px;height:158px;padding-top:20px}.practice-chart-month{grid-template-columns:repeat(auto-fit,minmax(48px,1fr));gap:10px}.practice-chart-year{grid-template-columns:repeat(12,minmax(0,1fr));gap:5px}.practice-bar{position:relative;display:grid;grid-template-rows:1fr auto;align-items:end;min-width:12px;height:100%;color:var(--muted);font-size:10px;text-align:center}.practice-bar i{display:block;width:100%;min-height:0;border-radius:5px 5px 2px 2px;background:var(--line)}.practice-bar.counted{color:var(--primary-hover)}.practice-bar.counted i{background:linear-gradient(180deg,var(--accent-warm),var(--primary))}.practice-bar-value{position:absolute;bottom:calc(100% + 3px);left:50%;transform:translate(-50%);color:var(--text-secondary);font-size:9px;white-space:nowrap}.profile-weekly-goal{display:flex;align-items:center;justify-content:space-between;padding-top:var(--space-md);border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-sm)}.profile-weekly-goal strong{color:var(--ink);font-size:var(--text-md)}.profile-achievement-list,.profile-history ul{display:grid;gap:0;padding:0;margin:0;list-style:none}.profile-achievement-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:11px 0;border-top:1px solid var(--line)}.profile-achievement-list svg{color:var(--accent-gold)}.profile-achievement-list span{overflow:hidden;font-size:var(--text-sm);font-weight:700;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap}.profile-achievement-list time,.profile-attempt-result time{color:var(--muted);font-size:var(--text-xs);white-space:nowrap}.profile-history ul li{display:flex;justify-content:space-between;gap:var(--space-md);padding:13px 0;border-top:1px solid var(--line)}.profile-history ul li:first-child{border-top:0}.profile-history li>div:first-child{min-width:0;display:grid;gap:3px}.profile-history li strong{overflow:hidden;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap}.profile-history li span{color:var(--muted);font-size:var(--text-sm)}.profile-attempt-result{display:grid;justify-items:end;align-content:center;gap:3px;flex:0 0 auto}.profile-attempt-result>span{color:var(--primary-hover);font-size:var(--text-sm);font-weight:750}.profile-open-attempt{display:inline-flex;align-items:center;gap:4px;padding:3px 0;border:0;background:transparent;font:inherit;font-size:var(--text-sm);cursor:pointer}.profile-open-attempt:disabled{cursor:wait;opacity:.6}.profile-empty-history{display:grid;justify-items:start;gap:var(--space-md);padding:var(--space-md) 0}.profile-empty-history p{margin:0;color:var(--muted)}.profile-account{grid-template-columns:minmax(0,1fr) auto;align-items:center}.profile-account h2{margin:0 0 5px;font-size:var(--text-xl)}.profile-account .eyebrow{margin-bottom:5px}.profile-account-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-sm)}.profile-account-actions button{gap:7px}.profile-account-actions .action-link:disabled,.profile-request-status button:disabled{cursor:not-allowed;opacity:.55}.profile-sign-out{display:inline-flex;align-items:center;gap:6px;padding:10px 4px}.profile-request-status{grid-column:1 / -1;display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding-top:var(--space-md);border-top:1px solid var(--line);color:var(--text-secondary);font-size:var(--text-sm)}.profile-request-status>svg{color:var(--ok)}.profile-request-status button{margin-left:auto}.profile-drawer-backdrop{position:fixed;z-index:100;inset:0;display:flex;justify-content:flex-end;background:#191e1f61;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.profile-drawer{width:min(460px,100vw);min-height:100%;padding:clamp(22px,4vw,36px);overflow-y:auto;background:var(--paper);box-shadow:-18px 0 52px var(--ink-15);animation:profile-drawer-in .2s ease-out both}.profile-drawer>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.profile-drawer h2{margin:0;font-size:var(--text-2xl)}.profile-drawer .eyebrow{margin-bottom:5px}.profile-drawer .account-form{margin-bottom:0}@keyframes profile-drawer-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@media(max-width:820px){.profile-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-content-grid,.profile-account{grid-template-columns:1fr}.profile-account-actions{justify-content:flex-start}}@media(max-width:600px){.profile-hero{grid-template-columns:auto minmax(0,1fr);gap:var(--space-md)}.profile-edit-trigger{grid-column:1 / -1;justify-self:stretch}.profile-identity h1{font-size:1.7rem}.profile-identity p{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.profile-goal{white-space:normal;overflow-wrap:anywhere}.profile-avatar{width:60px;height:60px}.profile-overview{grid-template-columns:1fr;gap:var(--space-sm)}.profile-metric{min-height:0;padding:12px 14px}.profile-metric strong{font-size:1.7rem}.profile-history ul li{align-items:flex-start;flex-direction:column}.profile-attempt-result{justify-items:start}.profile-account-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.profile-account-actions .action-link{width:100%;min-width:0;justify-content:center;text-align:center;white-space:normal}.profile-request-status button{width:100%;margin-left:0;text-align:left}.profile-alert{align-items:flex-start;flex-direction:column}}@media(max-width:600px){.profile-history .profile-section-heading{display:grid;gap:10px}.profile-history .profile-section-heading>div{min-width:0}.profile-history .profile-section-heading h2{max-width:100%;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.profile-history .profile-section-heading a{width:100%;justify-content:flex-start;white-space:normal}.profile-history-hint{margin-top:calc(var(--space-sm) * -1);line-height:1.5}.profile-attempt-group>header{display:grid;gap:.5rem}.profile-attempt-group>header strong{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.profile-attempt-group>header small{text-align:left;white-space:normal;overflow-wrap:anywhere}.profile-history ul li{align-items:stretch}.profile-history li>div:first-child{width:100%}.profile-history li strong{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.profile-history li time{white-space:normal}.profile-attempt-result{display:flex;width:100%;flex-wrap:wrap;align-items:center;justify-items:initial;justify-content:flex-start;gap:5px 12px}.profile-attempt-result>span{margin-right:auto}.profile-open-attempt{min-height:32px;padding-block:5px}}.profile-history{padding:16px 18px;gap:10px}.profile-history-hint{margin:-4px 0 0;line-height:1.5}.profile-attempt-groups{gap:0}.profile-attempt-group{padding:10px 0 0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.profile-attempt-group:first-child{padding-top:0;border-top:0}.profile-attempt-group>header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-bottom:5px}.profile-attempt-group>header>div{min-width:0}.profile-attempt-context{display:block;width:fit-content;max-width:100%;margin-bottom:3px;padding:2px 6px;overflow:hidden;border-radius:999px;color:var(--primary-hover);background:color-mix(in srgb,var(--primary) 11%,transparent);font-size:10px;font-weight:750;letter-spacing:.055em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.profile-attempt-group>header strong{display:block;overflow:visible;color:var(--primary-hover);font-family:var(--font-display);font-size:var(--text-md);letter-spacing:-.01em;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.profile-attempt-group>header>small{flex:0 0 auto;color:var(--muted);font-size:var(--text-xs);text-align:right;white-space:normal}.profile-attempt-list{display:grid;gap:0}.profile-history .profile-attempt-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 0;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent)}.profile-attempt-list li:first-child{border-top:0}.profile-attempt-list li>div:first-child{min-width:0;display:grid;gap:3px}.profile-attempt-list li>div:first-child strong{overflow:visible;text-overflow:clip;text-transform:none;white-space:normal;overflow-wrap:anywhere}.profile-attempt-list li>div:first-child time{color:var(--muted);font-size:var(--text-xs);white-space:nowrap}.profile-attempt-result{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px 10px}.profile-attempt-result>span{color:var(--primary-hover);font-size:var(--text-sm);font-weight:750;white-space:nowrap}.profile-open-attempt{min-height:27px;padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:var(--text-secondary);background:var(--paper)}.profile-open-attempt:hover,.profile-open-attempt:focus-visible{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-6)}.profile-attempt-older{border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent)}.profile-attempt-older summary{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 0 1px;color:var(--primary-hover);font-size:var(--text-sm);font-weight:750;list-style:none;cursor:pointer}.profile-attempt-older summary::-webkit-details-marker{display:none}.profile-attempt-older summary svg{flex:0 0 auto;transition:transform .16s ease}.profile-attempt-older[open] summary svg{transform:rotate(90deg)}@media(max-width:600px){.profile-history{padding:12px 10px;border-radius:12px}.profile-history-hint{margin:-2px 0 0}.profile-attempt-group{padding-top:8px}.profile-attempt-group>header{flex-direction:column;gap:3px;padding-bottom:4px}.profile-attempt-group>header>small{text-align:left}.profile-history .profile-attempt-list li{grid-template-columns:1fr;gap:3px;padding:6px 0}.profile-attempt-list li>div:first-child time{white-space:normal}.profile-attempt-result{justify-content:flex-start}.profile-attempt-result>span{margin-right:auto}.profile-open-attempt{min-height:27px;padding:3px 6px;font-size:var(--text-xs)}}.practice-rhythm-card{display:grid;gap:0;padding:20px 22px;overflow:visible;border-color:color-mix(in srgb,var(--line) 76%,transparent);border-radius:14px;background:var(--paper);box-shadow:0 1px 2px var(--ink-4),0 8px 24px color-mix(in srgb,var(--ink) 5%,transparent)}.practice-rhythm-heading,.practice-rhythm-settings>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-bottom:14px}.practice-rhythm-heading h2,.practice-rhythm-settings h2{margin:3px 0 5px;font-family:var(--font-display)}.practice-rhythm-heading p,.practice-rhythm-settings p{max-width:640px;margin:0;color:var(--text-secondary);line-height:1.5}.practice-rhythm-heading>svg,.practice-rhythm-settings>header>svg{display:grid;flex:0 0 auto;width:2rem;height:2rem;padding:.42rem;border-radius:50%;color:var(--primary-hover);background:var(--accent-10)}.practice-rhythm-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:0;padding:12px 0 12px 8px;border:1px solid color-mix(in srgb,var(--primary) 22%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent-10) 58%,var(--paper));box-shadow:inset 0 1px color-mix(in srgb,white 48%,transparent)}.practice-rhythm-stats>div{display:inline-flex;align-items:baseline;gap:.35rem;min-width:0;padding:0 16px;border-left:1px solid var(--line)}.practice-rhythm-stats>div:first-child{padding-left:0;border-left:0}.practice-rhythm-stats>div:last-child{padding-right:0}.practice-rhythm-stats>div:nth-child(odd){padding-left:0;border-left:0}.practice-rhythm-stats>div:nth-child(2n){padding-right:0}.practice-rhythm-stats span,.practice-rhythm-stats strong{min-width:0;line-height:1.35;white-space:nowrap}.practice-rhythm-stats span,.practice-rhythm-stats strong{font-size:var(--text-sm)}.practice-rhythm-stats span{color:var(--text-secondary);font-weight:650}.practice-rhythm-stats strong{color:var(--primary-hover);font-weight:800}.practice-rhythm-progress{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-md);min-height:30px;margin-top:2px;padding:8px 1px 0;color:var(--muted);font-size:.78rem;text-align:right}.practice-rhythm-progress strong{color:var(--primary-hover);white-space:nowrap}.practice-rhythm-progress strong em{color:var(--muted);font-style:normal;font-weight:600}.practice-rhythm-calendar{display:grid;gap:4px;padding:6px 0 10px}.practice-rhythm-calendar-week{display:grid;grid-template-columns:minmax(42px,auto) repeat(7,minmax(0,1fr));align-items:center;gap:4px 7px}.practice-rhythm-calendar-week+.practice-rhythm-calendar-week{padding-top:4px;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent)}.practice-rhythm-week-label{color:var(--primary-hover);font-size:10px;font-weight:800;line-height:1.1;white-space:nowrap}.practice-rhythm-cell{display:grid;justify-items:center;gap:5px;min-width:0;padding:5px 2px;color:var(--muted);border:0;background:transparent;font-size:10px}.practice-rhythm-cell i{width:11px;height:11px;border-radius:50%;background:var(--line)}.practice-rhythm-cell.qualified{color:var(--primary-hover)}.practice-rhythm-cell.qualified i{background:var(--primary);box-shadow:0 0 0 3px var(--accent-10)}.practice-rhythm-cell.future{opacity:.45}.practice-rhythm-cell.future i{border:1px dashed var(--muted);background:transparent}.practice-rhythm-settings,.practice-rhythm-settings form{display:grid;gap:var(--space-md)}.practice-rhythm-settings label,.practice-rhythm-settings fieldset{display:grid;gap:7px}.practice-rhythm-settings fieldset{min-width:0;padding:0;border:0}.practice-rhythm-settings legend{padding:0;font-weight:750}.practice-rhythm-settings select{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit}.practice-rhythm-settings small{color:var(--muted);font-size:var(--text-xs);line-height:1.45}.practice-rhythm-weekday-picker{display:flex;flex-wrap:wrap;gap:7px}.practice-rhythm-weekday-picker label{display:inline-flex;cursor:pointer}.practice-rhythm-weekday-picker input{position:absolute;opacity:0;pointer-events:none}.practice-rhythm-weekday-picker span{display:inline-grid;place-items:center;min-width:38px;min-height:34px;padding:0 8px;border:1px solid var(--line);border-radius:9px;color:var(--text-secondary);font-size:var(--text-sm);font-weight:750}.practice-rhythm-weekday-picker label.selected span{color:var(--primary-hover);border-color:var(--primary);background:var(--accent-10)}.practice-rhythm-settings-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm)}.practice-rhythm-settings-actions>span{color:var(--text-secondary);font-size:var(--text-sm)}@media(max-width:600px){.practice-rhythm-card{padding:16px 14px;border-radius:12px}.practice-rhythm-stats{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:0;row-gap:6px;padding-left:8px;padding-right:8px}.practice-rhythm-stats>div,.practice-rhythm-stats>div:nth-child(odd),.practice-rhythm-stats>div:nth-child(2n){padding-inline:0;border-left:0}.practice-rhythm-stats>div:nth-child(2n){border-left:1px solid var(--line)}.practice-rhythm-progress{align-items:center;flex-direction:row;justify-content:flex-end;gap:5px}.practice-rhythm-calendar-week{grid-template-columns:minmax(39px,auto) repeat(7,minmax(0,1fr));gap:4px 3px}.practice-rhythm-week-label{font-size:9px}.practice-rhythm-cell{padding-inline:0}}.profile-settings-page{display:grid;gap:var(--page-section-gap);max-width:1120px;margin:0 auto}.profile-settings-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-lg)}.profile-settings-heading h1{margin:4px 0 7px;font-family:var(--font-display)}.profile-settings-heading p{max-width:720px;margin:0;color:var(--text-secondary);line-height:1.55}.profile-settings-heading>svg{flex:0 0 auto;color:var(--primary)}.profile-settings-heading .back-link{margin-bottom:8px}.profile-settings-page.onboarding .profile-settings-heading{padding:10px 0}.profile-settings-form{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:var(--space-lg);align-items:start}.profile-settings-main{display:grid;gap:var(--space-lg);min-width:0}.profile-settings-section{display:grid;gap:var(--space-md)}.profile-settings-section>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.profile-settings-section>header h2,.profile-settings-section>header p{margin:4px 0 0}.profile-settings-section>header p{color:var(--text-secondary);line-height:1.5}.profile-settings-section>header>svg{flex:0 0 auto;color:var(--primary)}.profile-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.practice-goal-grid>label{grid-template-rows:minmax(2.7em,auto) auto;align-content:start}.practice-goal-grid>label>span{display:flex;align-items:flex-start;gap:.45rem;color:var(--ink);font-weight:800;line-height:1.35}.practice-goal-grid>label>span:before{content:"";flex:0 0 3px;min-height:1.25em;margin-top:.08em;border-radius:999px;background:var(--primary)}.profile-settings-note{margin:calc(var(--space-sm) * -1) 0 0;color:var(--muted);font-size:var(--text-xs);line-height:1.45}.profile-settings-section label,.profile-weekday-fieldset{display:grid;gap:7px}.profile-settings-section label{color:var(--ink);font-size:var(--text-sm);font-weight:800;line-height:1.35}.profile-settings-section input:not([type=checkbox]),.profile-settings-section textarea,.profile-settings-section select{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit;font-weight:400}.profile-settings-section textarea{min-height:100px;resize:vertical}.profile-settings-section small,.profile-weekday-fieldset small{color:var(--muted);font-size:var(--text-xs);font-weight:400;line-height:1.45}.profile-settings-section fieldset{min-width:0;padding:0;border:0}.profile-settings-section legend{padding:0;color:var(--ink);font-size:var(--text-sm);font-weight:800}.profile-settings-section .profile-toggle{grid-template-columns:auto minmax(0,1fr);align-items:start;column-gap:9px}.profile-settings-section .profile-toggle input{grid-row:span 2;margin-top:3px}.profile-settings-section .profile-toggle small{grid-column:2}.profile-avatar-editor{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px}.profile-avatar-editor small{width:100%}.profile-avatar-editor input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.profile-settings-aside{position:sticky;top:88px}.profile-settings-summary{display:grid;gap:var(--space-sm);padding:20px;background:linear-gradient(140deg,var(--accent-6),var(--paper))}.profile-settings-summary>svg{color:var(--primary)}.profile-settings-summary h2,.profile-settings-summary p{margin:0}.profile-settings-summary p{color:var(--text-secondary);line-height:1.55}.profile-settings-summary ul{display:grid;gap:8px;padding:var(--space-sm) 0 0;margin:0;border-top:1px solid var(--line);list-style:none}.profile-settings-summary li{display:flex;align-items:flex-start;gap:7px;color:var(--text-secondary);font-size:var(--text-sm)}.profile-settings-summary li svg{flex:0 0 auto;color:var(--ok);margin-top:2px}.profile-settings-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm)}.profile-settings-actions .account-message,.profile-settings-actions .profile-alert{margin:0}.profile-settings-actions .profile-alert{padding:8px 10px}@media(max-width:820px){.profile-settings-form{grid-template-columns:1fr}.profile-settings-aside{position:static;order:-1}}@media(max-width:600px){.profile-settings-heading{gap:var(--space-md)}.profile-settings-heading>svg{display:none}.profile-settings-grid{grid-template-columns:1fr}.profile-settings-section{padding:var(--space-md)}.profile-settings-actions{align-items:stretch;flex-direction:column}.profile-settings-actions .action-link{width:100%;justify-content:center}.profile-settings-actions .account-message,.profile-settings-actions .profile-alert{width:100%}}.admin-users{overflow:hidden}.admin-console{display:grid;gap:var(--page-section-gap);max-width:1240px;margin:0 auto}.admin-console-header h1,.admin-module h2{margin:0;font-family:var(--font-display)}.admin-console-header p,.admin-module>p{color:var(--text-secondary);line-height:1.55}.admin-console-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:var(--space-lg);align-items:start}.admin-console-nav{display:grid;gap:4px;padding:10px;position:sticky;top:14px}.admin-console-nav a{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:var(--radius-md);color:var(--text-secondary);font-weight:700}.admin-console-nav a:hover,.admin-console-nav a.selected{color:var(--primary-hover);background:var(--accent-10);text-decoration:none}.admin-console-content{min-width:0}.admin-module{display:grid;gap:var(--space-md)}.admin-overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md)}.admin-overview-grid article{display:grid;gap:8px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.admin-overview-grid svg{color:var(--primary)}.admin-overview-grid p{margin:0;color:var(--text-secondary);line-height:1.5}.admin-overview-grid a{font-weight:700}.admin-filter{display:grid;gap:6px;max-width:220px;font-weight:700}.admin-filter select{padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit}.admin-site-config-form{display:grid;gap:var(--space-md)}.admin-site-config-form fieldset{display:grid;gap:var(--space-sm);min-width:0;padding:var(--space-md);border:1px solid var(--line);border-radius:var(--radius-md)}.admin-site-config-form legend{padding:0 6px;font-weight:800}.admin-site-config-form label{display:grid;gap:6px;font-weight:700}.admin-site-config-form input,.admin-site-config-form textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--text);font:inherit}.admin-site-config-form label.checkbox-field{display:flex;align-items:center;gap:8px}.admin-site-config-form input[type=checkbox]{width:auto;padding:0}.admin-site-config-form textarea{min-height:80px;resize:vertical}.admin-site-config-form small{color:var(--muted);font-weight:400;line-height:1.45}.admin-site-config-form button{width:fit-content}.admin-dashboard-value{color:var(--primary)!important;font-size:var(--text-xl);font-weight:800}.admin-dashboard-note{margin:0;color:var(--text-secondary)}.admin-learning-trends header{display:flex;align-items:end;justify-content:space-between;gap:var(--space-md)}.admin-chart-wrap{overflow-x:auto;padding:8px 0;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.admin-chart-wrap svg{display:block;width:100%;min-width:620px;height:auto}.admin-chart-grid line{stroke:var(--line);stroke-width:1}.admin-chart-line{fill:none;stroke:var(--primary);stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.admin-chart-points circle{fill:var(--primary);stroke:var(--paper);stroke-width:2}.admin-chart-labels{fill:var(--text-secondary);font-size:11px}.admin-chart-summary{display:flex;flex-wrap:wrap;gap:var(--space-lg);color:var(--text-secondary)}.admin-chart-summary span{display:grid;gap:3px}.admin-chart-summary strong{color:var(--text);font-size:var(--text-sm)}.admin-learning-trends .admin-filter{min-width:220px}.admin-growth-panel{display:grid;gap:var(--space-md);padding-top:var(--space-lg);border-top:1px solid var(--line)}.admin-growth-header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md)}.admin-growth-header h3,.admin-growth-header p{margin:0}.admin-growth-header p{margin-top:.35rem;color:var(--text-secondary);line-height:1.5}.admin-growth-chart-wrap{overflow-x:auto;padding:.5rem 0;border-block:1px solid var(--line);background:var(--paper)}.admin-growth-chart-wrap svg{display:block;width:100%;min-width:680px;height:auto}.admin-growth-grid line{stroke:var(--line);stroke-width:1}.admin-growth-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.admin-growth-labels{fill:var(--text-secondary);font-size:11px}.admin-growth-legend{display:flex;flex-wrap:wrap;gap:.45rem 1.1rem;color:var(--text-secondary);font-size:var(--text-sm)}.admin-growth-legend span{display:inline-flex;align-items:center;gap:.4rem}.admin-growth-legend i{width:.65rem;height:.65rem;border-radius:50%}.admin-growth-latest{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;margin:0;border-block:1px solid var(--line)}.admin-growth-latest>div{display:grid;gap:.2rem;padding:.75rem .9rem;border-left:1px solid var(--line)}.admin-growth-latest>div:first-child{border-left:0}.admin-growth-latest dt{color:var(--text-secondary);font-size:var(--text-sm)}.admin-growth-latest dd{margin:0;color:var(--ink);font-family:var(--font-display);font-size:1.35rem;font-weight:800}.admin-growth-empty{margin:0;padding:1rem 0;color:var(--text-secondary)}.admin-growth-section{display:grid;gap:var(--space-sm)}.admin-growth-section>.admin-journey-range{margin:0}.admin-offline-report .admin-overview-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-block:1px solid var(--line)}.admin-offline-report .admin-overview-grid article{min-width:0;padding:13px 15px;border:0;border-left:1px solid var(--line);border-radius:0;background:transparent}.admin-offline-report .admin-overview-grid article:first-child{border-left:0}.admin-offline-report .admin-overview-grid article b{font-family:var(--font-display);font-size:1.55rem;color:var(--ink)}.admin-offline-report .admin-overview-grid article svg{display:none}.admin-offline-report .admin-user-detail{border-top:1px solid var(--line);border-radius:0;background:transparent}.admin-offline-report .admin-offline-chart{padding-inline:0}.admin-offline-report .admin-chart-wrap{border-inline:0;border-radius:0;background:var(--paper)}.admin-offline-report .admin-offline-chart-legend{border-bottom:1px solid var(--line)}.admin-offline-report .admin-offline-legend{border-block:1px solid var(--line);border-radius:0;background:transparent}.admin-learning-users{gap:var(--space-md)}.admin-learning-users table{min-width:880px}.admin-learning-users th small,.admin-learning-users td small{display:block;color:var(--muted);font-size:var(--text-sm);font-weight:400}.admin-sort-button{padding:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:800;cursor:pointer}.admin-sort-button:hover{color:var(--primary-hover)}.admin-pagination{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-sm);color:var(--text-secondary)}.admin-pagination button{padding:7px 10px}@media(max-width:820px){.admin-console-layout{grid-template-columns:1fr}.admin-console-nav{position:static;grid-template-columns:repeat(3,minmax(0,1fr))}.admin-console-nav a{justify-content:center;font-size:var(--text-sm)}.admin-overview-grid{grid-template-columns:1fr}}@media(max-width:820px){.admin-offline-report .admin-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-offline-report .admin-overview-grid article:nth-child(odd){border-left:0}.admin-offline-report .admin-overview-grid article:nth-child(n+3){border-top:1px solid var(--line)}}@media(max-width:500px){.admin-offline-report .admin-overview-grid{grid-template-columns:1fr}.admin-offline-report .admin-overview-grid article,.admin-offline-report .admin-overview-grid article:nth-child(n+3){border-top:1px solid var(--line);border-left:0}.admin-offline-report .admin-overview-grid article:first-child{border-top:0}}.admin-dashboard{display:grid;gap:var(--space-md)}.admin-dashboard-health{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);overflow:hidden;padding:22px 24px;background:linear-gradient(135deg,var(--paper) 0%,var(--accent-6) 100%)}.admin-dashboard-health:after{position:absolute;top:-78px;right:-48px;width:190px;height:190px;border-radius:999px;background:currentColor;content:"";opacity:.035;pointer-events:none}.admin-dashboard-health.healthy{border-color:#04785740;color:#047857}.admin-dashboard-health.warning{border-color:#9a341240;color:#9a3412}.admin-dashboard-health.critical{border-color:#b91c1c4d;color:#b91c1c}.admin-dashboard-health.loading{color:var(--primary)}.admin-dashboard-health-main{position:relative;z-index:1;display:flex;align-items:center;gap:15px;min-width:0}.admin-dashboard-health-main>div{display:grid;gap:3px}.admin-dashboard-health-main h2,.admin-dashboard-health-main p{margin:0}.admin-dashboard-health-main h2{color:var(--text);font-family:var(--font-display);font-size:clamp(1.35rem,2.5vw,1.85rem)}.admin-dashboard-health-main p{color:var(--text-secondary)}.admin-dashboard-health-icon{display:grid;flex:0 0 auto;width:54px;height:54px;place-items:center;border-radius:18px;background:currentColor;box-shadow:inset 0 0 0 1px #ffffff8c}.admin-dashboard-health-icon svg{color:#fff}.admin-dashboard-controls{position:relative;z-index:1;display:flex;align-items:end;gap:9px;color:var(--text-secondary)}.admin-dashboard-controls>small{align-self:center;white-space:nowrap}.admin-dashboard-controls label{display:grid;gap:4px;font-size:.72rem;font-weight:800;text-transform:uppercase}.admin-dashboard-controls select,.admin-dashboard-controls button{min-height:38px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--text);font:inherit}.admin-dashboard-controls button{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-weight:800}.admin-dashboard-controls button:disabled{opacity:.6;cursor:wait}.admin-dashboard-controls .spin{animation:admin-dashboard-spin .8s linear infinite}@keyframes admin-dashboard-spin{to{transform:rotate(360deg)}}.admin-dashboard-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.admin-dashboard-kpi{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:11px;min-height:108px;padding:15px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);color:var(--text);box-shadow:0 5px 18px #191c240b;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.admin-dashboard-kpi:hover{border-color:var(--primary);box-shadow:0 10px 26px #191c2417;text-decoration:none;transform:translateY(-2px)}.admin-dashboard-kpi-icon{display:grid;width:42px;height:42px;place-items:center;border-radius:14px;background:var(--accent-10);color:var(--primary)}.admin-dashboard-kpi.success .admin-dashboard-kpi-icon{background:#ecfdf5;color:#047857}.admin-dashboard-kpi.warning .admin-dashboard-kpi-icon{background:#fff7ed;color:#9a3412}.admin-dashboard-kpi.critical .admin-dashboard-kpi-icon{background:#fef2f2;color:#b91c1c}.admin-dashboard-kpi-copy{display:grid;gap:2px;min-width:0}.admin-dashboard-kpi-copy>small{color:var(--text-secondary);font-weight:750}.admin-dashboard-kpi-copy>strong{font-family:var(--font-display);font-size:1.65rem;line-height:1.05}.admin-dashboard-kpi-copy>span{overflow:hidden;color:var(--muted);font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.admin-dashboard-kpi-arrow{color:var(--muted)}.admin-dashboard-lower{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.75fr);gap:var(--space-md);align-items:stretch}.admin-dashboard-focus,.admin-dashboard-shortcuts{display:grid;align-content:start;gap:13px}.admin-dashboard-focus>header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.admin-dashboard-focus h3,.admin-dashboard-shortcuts h3{margin:2px 0 0;font-family:var(--font-display)}.admin-dashboard-focus>header a{display:inline-flex;align-items:center;gap:3px;color:var(--primary-hover);font-size:var(--text-sm);font-weight:800;white-space:nowrap}.admin-dashboard-alerts{display:grid;gap:8px}.admin-dashboard-alert{display:grid;grid-template-columns:38px minmax(0,1fr) 18px;align-items:center;gap:10px;padding:11px;border:1px solid #fed7aa;border-radius:var(--radius-md);background:#fffaf5;color:#9a3412}.admin-dashboard-alert.critical{border-color:#fecaca;background:#fff7f7;color:#b91c1c}.admin-dashboard-alert:hover{text-decoration:none;filter:brightness(.985)}.admin-dashboard-alert-icon{display:grid;width:36px;height:36px;place-items:center;border-radius:12px;background:currentColor}.admin-dashboard-alert-icon svg{color:#fff}.admin-dashboard-alert>span:nth-child(2){display:grid;gap:2px}.admin-dashboard-alert small{color:var(--text-secondary)}.admin-dashboard-all-clear{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:2px 10px;min-height:82px;padding:12px;border-radius:var(--radius-md);background:#f0fdf4;color:#047857}.admin-dashboard-all-clear svg{grid-row:span 2}.admin-dashboard-all-clear span{color:var(--text-secondary);font-size:var(--text-sm)}.admin-dashboard-shortcuts>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.admin-dashboard-shortcuts a{display:grid;grid-template-columns:24px minmax(0,1fr) 15px;align-items:center;gap:6px;padding:11px 9px;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text);font-size:var(--text-sm);font-weight:750}.admin-dashboard-shortcuts a:hover{border-color:var(--primary);background:var(--accent-6);color:var(--primary-hover);text-decoration:none}.admin-dashboard-shortcuts a>svg:first-child{color:var(--primary)}.admin-dashboard-shortcuts a>svg:last-child{color:var(--muted)}.admin-dashboard-secondary{padding:0;overflow:hidden}.admin-dashboard-secondary>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:15px 18px;cursor:pointer;list-style:none}.admin-dashboard-secondary>summary::-webkit-details-marker{display:none}.admin-dashboard-secondary>summary>span{display:flex;align-items:center;gap:9px}.admin-dashboard-secondary>summary svg{color:var(--primary)}.admin-dashboard-secondary>summary small{color:var(--muted)}.admin-dashboard-secondary[open]>summary{border-bottom:1px solid var(--line);background:var(--white-50)}.admin-dashboard-secondary .admin-user-detail{margin:0;padding:18px;border:0}@media(max-width:980px){.admin-dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-dashboard-lower{grid-template-columns:1fr}}@media(max-width:680px){.admin-dashboard-health{align-items:stretch;flex-direction:column}.admin-dashboard-controls{flex-wrap:wrap}.admin-dashboard-controls>small{width:100%}.admin-dashboard-kpis{grid-template-columns:1fr}.admin-dashboard-kpi{min-height:94px}.admin-dashboard-shortcuts>div{grid-template-columns:1fr}.admin-dashboard-secondary>summary{align-items:flex-start;flex-direction:column}}.admin-section-header{display:flex;justify-content:space-between;align-items:start;gap:var(--space-md)}.admin-section-header h2,.admin-section-header h3{margin:4px 0}.admin-section-header label{display:grid;gap:5px;font-size:var(--text-sm);font-weight:700}.admin-operational-summary{display:grid;gap:var(--space-md);margin-bottom:var(--space-lg)}.admin-operational-summary .admin-overview-grid article b{font-size:1.7rem;color:var(--text-primary)}.admin-overview-grid article small{color:var(--text-secondary);line-height:1.4}.admin-alert-list{display:grid;gap:8px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.admin-alert-list>strong{display:flex;align-items:center;gap:7px}.admin-alert{display:flex;justify-content:space-between;gap:12px;padding:9px 11px;border-radius:var(--radius-sm);background:#fff7ed;color:#9a3412}.admin-alert.critical{background:#fef2f2;color:#b91c1c}.admin-alert-list .admin-empty-inline{display:flex;align-items:center;gap:7px;color:var(--text-secondary);margin:0}.admin-module>.admin-table-wrap{min-width:0}.admin-module table small{display:block;color:var(--text-secondary);margin-top:3px}.admin-detail-dock article{padding:9px 0;border-bottom:1px solid var(--line)}.admin-detail-dock article p{margin:5px 0 0;white-space:pre-wrap}.admin-search{display:flex;gap:.75rem;margin:1rem 0}.admin-search input{min-width:min(24rem,70vw);border:1px solid var(--border, #d8d8d8);border-radius:10px;padding:.7rem;font:inherit}.admin-table-wrap{overflow-x:auto}.admin-users table{width:100%;border-collapse:collapse}.admin-users th,.admin-users td{padding:.75rem;border-bottom:1px solid var(--border, #e8e8e8);text-align:left}.admin-users td small{display:block;opacity:.7}.admin-user-detail{display:grid;gap:var(--space-md);margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--line)}.admin-user-detail header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md)}.admin-user-detail h3,.admin-user-detail p{margin:0}.admin-user-detail p{color:var(--text-secondary)}.admin-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.admin-detail-grid article{display:grid;gap:8px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md)}.admin-detail-grid ul{display:grid;gap:8px;padding:0;margin:0;list-style:none}.admin-detail-grid li{display:grid;gap:3px;font-size:var(--text-sm)}.admin-detail-grid small,.admin-detail-grid p{color:var(--muted);margin:0}.admin-history-toggle{display:inline-flex;align-items:center;gap:6px;width:fit-content;padding:0;border:0;background:transparent;color:var(--primary-hover);font:inherit;font-size:var(--text-sm);font-weight:800;cursor:pointer}.admin-history-toggle:hover{text-decoration:underline}.admin-notice-history{display:grid;gap:var(--space-md);margin-top:var(--space-lg);padding:var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.admin-history-header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md)}.admin-history-header h3,.admin-history-header p{margin:0}.admin-history-header p{color:var(--text-secondary)}.admin-history-filters{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-sm)}.admin-history-filters label{display:grid;gap:5px;min-width:190px;color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.admin-history-filters input,.admin-history-filters select{padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit}.admin-history-filters>button{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border:0;border-radius:var(--radius-sm);background:var(--primary);color:#fff;font:inherit;font-weight:800;cursor:pointer}.admin-history-filters>button:disabled{opacity:.55;cursor:wait}.admin-notice-history-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:var(--space-md);align-items:start}.admin-notice-list{display:grid;max-height:430px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius-sm)}.admin-notice-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:9px;padding:12px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);text-align:left;cursor:pointer}.admin-notice-row:last-child{border-bottom:0}.admin-notice-row:hover,.admin-notice-row.selected{background:var(--accent-10)}.admin-notice-row>svg{color:var(--primary)}.admin-notice-row span{display:grid;gap:3px;min-width:0}.admin-notice-row strong,.admin-notice-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-notice-row small,.admin-notice-detail small{color:var(--muted)}.admin-notice-severity{padding:3px 7px;border-radius:999px;font-size:.7rem;font-style:normal;font-weight:800;text-transform:uppercase}.admin-notice-severity.information{color:var(--primary-hover);background:var(--accent-10)}.admin-notice-severity.warning{color:#9a6700;background:#fff3cd}.admin-notice-severity.compliance{color:#a33a3a;background:#fde7e7}.admin-history-empty{margin:0;padding:22px;color:var(--muted);text-align:center}.admin-notice-detail{display:grid;gap:9px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}.admin-notice-detail h4{margin:0;font-family:var(--font-display)}.admin-notice-detail dl{display:grid;gap:10px;margin:0}.admin-notice-detail dl>div{display:grid;gap:3px}.admin-notice-detail dt{color:var(--muted);font-size:.75rem;font-weight:800;text-transform:uppercase}.admin-notice-detail dd{display:grid;gap:2px;margin:0;line-height:1.45}.admin-notice-detail dd small{font-size:.8rem}@media(max-width:600px){.admin-detail-grid{grid-template-columns:1fr}}@media(max-width:760px){.admin-notice-history-layout{grid-template-columns:1fr}.admin-notice-detail{order:-1}}.audit-outcome{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px}.audit-outcome-success{color:#187a3d;background:#e8f6ec}.audit-outcome-error{color:#b42318;background:#fcebea}.audit-outcome-warning{color:#9a6700;background:#fff4ce}.admin-audit-detail-dock{position:fixed;z-index:30;left:max(16px,calc(50% - 620px));right:max(16px,calc(50% - 620px));bottom:12px;display:grid;gap:var(--space-md);max-height:min(46vh,480px);overflow:auto;padding:16px 18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);box-shadow:0 16px 44px #191c2438}.admin-audit-detail-header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md)}.admin-audit-detail-header>div{display:grid;gap:4px}.admin-audit-detail-header button{min-width:32px;padding:4px 8px;font-size:20px;line-height:1}.admin-audit-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.admin-audit-detail-grid>div{display:grid;gap:4px;min-width:0}.admin-audit-detail-grid span{color:var(--muted);font-size:var(--text-sm)}.admin-audit-detail-grid small{color:var(--text-secondary);overflow-wrap:anywhere}.admin-audit-detail-dock pre{max-height:180px;overflow:auto;margin:10px 0 0}.admin-target-user-results,.admin-target-user-selected{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.admin-target-user-results button,.admin-target-user-selected{display:inline-flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper-alt);text-align:left}.admin-target-user-results button{cursor:pointer}.admin-target-user-results button.selected,.admin-target-user-results button:hover{border-color:var(--primary);background:var(--accent-10)}.admin-target-user-results button span,.admin-target-user-selected span{display:grid;gap:2px}.admin-target-user-results small,.admin-target-user-selected small{color:var(--text-secondary)}.admin-target-user-selected{width:fit-content;border-color:var(--primary);background:var(--accent-10)}.admin-target-user-selected>svg{color:var(--primary)}.admin-target-user-selected button{margin-left:8px}@media(max-width:820px){.admin-audit-detail-dock{left:12px;right:12px;bottom:8px;max-height:55vh}.admin-audit-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.admin-notice-history-layout{display:block}.admin-detail-dock-content{display:grid;gap:var(--space-md);min-width:0;overflow:auto}.admin-detail-dock-content .admin-table-wrap{max-height:260px}.admin-offline-detail-dock{max-height:min(72vh,760px);padding:10px 12px;gap:8px}.admin-offline-detail-dock .admin-detail-dock-content{gap:8px}.admin-offline-detail-dock .admin-offline-detail-section{gap:6px;padding:6px 0;border-bottom:1px solid var(--line)}.admin-offline-detail-dock .admin-offline-detail-section:last-child{border-bottom:0}.admin-offline-detail-dock .admin-audit-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.admin-offline-detail-dock .admin-audit-detail-grid>div{padding:6px 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:0;background:transparent}.admin-offline-detail-dock h4{font-size:var(--text-sm)}.admin-offline-detail-dock>.admin-detail-dock-content>h4{margin:7px 0 0;padding-top:8px;border-top:1px solid var(--line)}.admin-offline-detail-dock>.admin-detail-dock-content>article{padding:7px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent)}.admin-offline-detail-dock>.admin-detail-dock-content>article p{margin:3px 0 0}.admin-offline-detail-section{display:grid;gap:10px;padding-top:4px}.admin-offline-detail-section>header{display:grid;gap:3px}.admin-offline-detail-section h4{margin:0}.admin-offline-assignment-list{display:grid;gap:0;border-top:1px solid var(--line)}.admin-offline-assignment-list article{display:grid;gap:4px;padding:8px 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:0;background:transparent}.admin-offline-assignment-list article>div{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.admin-offline-assignment-list p{margin:0}.admin-offline-assignment-list small{color:var(--text-secondary)}.admin-offline-prescription{white-space:pre-wrap;overflow-wrap:anywhere}.admin-offline-panel{position:relative}.admin-offline-report-controls{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:var(--space-md);padding:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.admin-offline-report-controls label{display:grid;min-width:130px;gap:5px;color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.admin-offline-report-controls select,.admin-offline-report-controls input{min-height:38px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:var(--paper);font:inherit}.admin-offline-report-controls label:nth-last-of-type(1){min-width:210px}.admin-offline-report-controls button{min-height:38px}.admin-offline-chart{overflow:hidden}.admin-offline-chart-legend{display:flex;flex-wrap:wrap;gap:8px 16px;padding-top:10px;color:var(--text-secondary);font-size:var(--text-sm)}.admin-offline-chart-legend span{display:inline-flex;align-items:center;gap:6px}.admin-offline-chart-legend i{width:10px;height:10px;border-radius:50%}.admin-offline-legend{display:flex;flex-wrap:wrap;gap:8px 18px;padding:11px 13px;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);background:var(--white-50)}.admin-offline-report .admin-offline-report-controls{margin-bottom:0;padding:10px 0;border-inline:0;border-radius:0;background:transparent;border-block:1px solid var(--line)}.admin-offline-report .admin-offline-legend{border-inline:0;border-radius:0;background:transparent}.admin-privacy-panel{position:relative}.admin-privacy-legend{display:flex;flex-wrap:wrap;gap:8px 18px;padding:11px 13px;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);background:var(--white-50)}.admin-offline-filters,.admin-privacy-filters{display:flex;align-items:end;justify-content:space-between;gap:var(--space-md)}.admin-offline-filters label,.admin-privacy-filters label{display:grid;gap:5px;font-weight:700}.admin-offline-filters select{min-width:190px;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit}.admin-privacy-filters select{min-width:220px;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit}.admin-filter-note{color:var(--text-secondary);font-size:var(--text-sm)}.admin-status-pill{display:inline-flex;padding:4px 8px;border-radius:999px;background:var(--accent-10);font-size:var(--text-sm);white-space:nowrap}.admin-status-pill.cancelled,.admin-status-pill.replaced,.admin-status-pill.attendance-absent{background:#fef2f2;color:#b91c1c}.admin-status-pill.attendance-attended{background:#ecfdf5;color:#047857}.admin-status-pill.attendance-pending{background:#fff7ed;color:#9a3412}.admin-status-pill.privacy-completed{background:#ecfdf5;color:#047857}.admin-status-pill.privacy-cancelled,.admin-status-pill.privacy-failed{background:#fef2f2;color:#b91c1c}.admin-status-pill.privacy-processing,.admin-status-pill.privacy-acknowledged{background:#fff7ed;color:#9a3412}.admin-detail-dock{position:fixed!important}@media(max-width:820px){.admin-offline-filters,.admin-privacy-filters{align-items:stretch;flex-direction:column}.admin-offline-filters select,.admin-privacy-filters select{width:100%}}.admin-audit-detail-header strong{overflow-wrap:anywhere}.admin-notice-body{display:block!important;overflow:visible!important;white-space:pre-wrap!important;overflow-wrap:anywhere;line-height:1.4}.admin-notice-table-wrap{max-height:430px;overflow:auto}.admin-notice-table-wrap table{width:100%;min-width:920px;border-collapse:collapse}.admin-notice-table-wrap th,.admin-notice-table-wrap td{padding:.7rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.admin-notice-table-wrap td small{display:block;color:var(--muted);font-size:var(--text-sm);font-weight:400}.admin-notice-table-body{min-width:280px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45}.curriculum-map{overflow:visible}.curriculum-map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-lg);padding:24px 0 0}.curriculum-map .course-overview{border-radius:18px}.curriculum-shelf{min-width:0;margin:0;padding:var(--space-lg) var(--space-md) var(--space-md);border-radius:18px}.curriculum-shelf .shelf-header{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-sm);margin-bottom:var(--space-md)}.curriculum-shelf .shelf-header-bar{width:100%;margin:0}.curriculum-shelf .shelf-title{font-size:1.3rem}.curriculum-level-grid{grid-auto-rows:minmax(62px,auto);gap:7px;row-gap:5px}.curriculum-level-grid .shelf-row-label{min-height:64px}.curriculum-shelf .shelf-cell{width:100%;min-height:64px;padding:7px 3px 6px;font:inherit}.curriculum-shelf .shelf-cell:focus-visible,.curriculum-shelf .shelf-level-link:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.curriculum-shelf .shelf-cell.selected,.curriculum-shelf .shelf-level-link.selected{border-color:var(--primary);background-color:var(--accent-10);box-shadow:inset 0 0 0 1px var(--primary-light)}.curriculum-shelf .shelf-cell-label{font-size:1rem}.curriculum-shelf .shelf-cell-fraction{font-size:.62rem}.curriculum-shelf .shelf-cell-bar{width:min(54px,75%)}.curriculum-shelf .shelf-level-link{font:inherit;cursor:pointer;background:transparent}.curriculum-level-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.curriculum-level-cards .shelf-cell{min-height:102px}.level-lesson-picker{scroll-margin-top:82px;display:grid;gap:0;margin:24px 0 0;overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 32px var(--ink-8)}.level-lesson-picker>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:21px 24px 16px;border-bottom:1px solid var(--line)}.level-lesson-picker h2{margin:3px 0}.level-lesson-picker p{margin:0;color:var(--muted)}.level-lesson-picker .lesson-list{max-height:min(65vh,560px);overflow-y:auto;overscroll-behavior:contain}.level-lesson-picker .lesson-card{min-height:58px;padding:9px 18px}.level-lesson-picker .lesson-card.selected{background:var(--accent-10);box-shadow:inset 3px 0 0 var(--primary)}.level-exercise-backdrop{position:fixed;z-index:40;inset:0;border:0;background:#0e182424;cursor:default}.level-exercise-drawer{position:fixed;z-index:41;top:86px;right:max(20px,calc((100vw - 1180px)/2));display:grid;grid-template-rows:auto minmax(0,1fr);width:min(430px,calc(100vw - 40px));max-height:calc(100dvh - 108px);overflow:hidden;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 18px 52px #0e18243d}.level-exercise-drawer>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 20px 15px;border-bottom:1px solid var(--line)}.level-exercise-drawer h2{min-width:0;margin:3px 0;overflow:hidden;outline:none;text-overflow:ellipsis;white-space:nowrap}.level-exercise-drawer p{margin:0;color:var(--muted);font-size:.9rem}.drawer-close{display:inline-grid;flex:0 0 auto;place-items:center;width:38px;height:38px;padding:0;color:var(--ink);background:var(--accent-6);border:1px solid var(--line);border-radius:50%;cursor:pointer}.drawer-close:hover{background:var(--accent-10)}.drawer-handle{display:none}.level-exercise-drawer .lesson-list{min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain}.level-exercise-drawer .lesson-card{min-height:63px;padding:10px 18px}.level-exercise-drawer .lesson-card.selected{background:var(--accent-10);box-shadow:inset 3px 0 0 var(--primary)}.level-exercise-section-title{font-weight:inherit}.practice-shell{scroll-margin-top:78px}.practice-context{display:grid;gap:7px;padding:22px 26px;background:var(--paper);border:1px solid var(--line);border-radius:18px}.practice-context .back-link{margin-bottom:4px}.practice-context h2{margin:0}.practice-context p{max-width:780px;margin:0;color:var(--text-secondary);line-height:1.55}.practice-context .practice-guidance{padding:11px 13px;color:var(--ink);background:var(--accent-6);border-left:3px solid var(--primary);border-radius:0 9px 9px 0}@media(max-width:1100px){.curriculum-map-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:740px){.curriculum-map-grid{grid-template-columns:1fr;padding-top:16px}.curriculum-shelf{padding:18px 14px 14px}.curriculum-shelf .shelf-cell{min-height:58px}.curriculum-level-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.level-lesson-picker{margin-top:16px;border-radius:14px}.level-lesson-picker>header{padding:17px 16px 13px}.level-lesson-picker .lesson-card{padding:10px 12px}.level-lesson-picker .lesson-state{display:none}.practice-context{padding:18px;border-radius:14px}}@media(max-width:740px){.level-exercise-backdrop{background:#0e182452}.level-exercise-drawer{inset:auto 0 0;width:100%;max-height:min(82dvh,720px);border-width:1px 0 0;border-radius:20px 20px 0 0}.level-exercise-drawer>header{padding:12px 16px 14px}.drawer-handle{display:block;width:38px;height:4px;margin:0 auto 12px;background:var(--line);border-radius:999px}.level-exercise-drawer .lesson-card{min-height:64px;padding:11px 13px}.level-exercise-drawer .lesson-state{display:none}}body.lesson-player-active{width:100%;max-width:100%;overflow:hidden}body.lesson-player-active #root{width:100%;max-width:100%;min-height:100dvh;overflow:hidden}.level-exercise-backdrop{display:none}.level-exercise-drawer{z-index:100;inset:0;width:100%;height:100dvh;max-height:none;border:0;border-radius:0;box-shadow:none;background:var(--player-surface)}.level-exercise-drawer>header{padding:max(10px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) 7px max(12px,env(safe-area-inset-left));background:linear-gradient(120deg,var(--accent-10),color-mix(in srgb,var(--primary-light) 30%,var(--paper)));cursor:pointer}.level-exercise-drawer>header:hover{background:linear-gradient(120deg,var(--accent-10),color-mix(in srgb,var(--primary-light) 48%,var(--paper)))}.level-exercise-drawer h2{font-size:1.1rem;line-height:1.2}.level-exercise-drawer .drawer-close{width:34px;height:34px}.level-exercise-drawer .lesson-list{align-content:start;height:100%;padding-bottom:max(12px,env(safe-area-inset-bottom))}.level-exercise-drawer .lesson-card{width:min(920px,100%);min-height:52px;margin-inline:auto;padding:6px 12px}@media(max-width:740px){.level-exercise-drawer{inset:0;max-height:none;border:0;border-radius:0}.level-exercise-drawer>header{padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 6px max(10px,env(safe-area-inset-left))}.level-exercise-drawer .lesson-card{min-height:50px;padding:5px 10px}.drawer-handle{display:none}}@media(orientation:landscape)and (pointer:coarse),(orientation:landscape)and (max-height:540px){.level-exercise-drawer>header{padding:max(5px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 5px max(10px,env(safe-area-inset-left))}.level-exercise-drawer h2{margin:0;font-size:1rem}.level-exercise-drawer .level-exercise-description{display:none}.level-exercise-drawer .drawer-close{width:32px;height:32px}.level-exercise-drawer .lesson-card{min-height:44px;padding:4px 10px}}.practice-action a{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 14px;color:#fff;background:var(--primary);border-radius:9px;cursor:pointer;font-weight:750;text-decoration:none}.lesson-player-screen{width:100%;max-width:100%;min-width:0;min-height:var(--player-visible-height, 100dvh);height:var(--player-visible-height, 100dvh);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;color:var(--ink);background:radial-gradient(circle at 50% -20%,var(--accent-20),transparent 52%),var(--player-screen-bg)}.lesson-player-hud{min-height:58px;display:grid;grid-template-columns:minmax(88px,1fr) minmax(0,2fr) minmax(88px,1fr);align-items:center;gap:12px;padding:max(8px,env(safe-area-inset-top)) 18px 8px;border-bottom:1px solid var(--player-border);background:var(--player-surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:4}.lesson-player-exit,.lesson-player-icon{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;width:fit-content;padding:0 10px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--paper);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.lesson-player-icon{justify-self:end;width:40px;padding:0}.lesson-player-title{min-width:0;display:grid;gap:1px;text-align:center}.lesson-player-title span{overflow:hidden;color:var(--muted);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.lesson-player-title strong{overflow:hidden;font-size:.95rem;text-overflow:ellipsis;white-space:nowrap}.lesson-player-state{display:grid;place-content:center;justify-items:center;gap:12px;padding:24px;text-align:center}.lesson-player-state p{max-width:560px;margin:0;color:var(--muted)}.lesson-player-state a,.lesson-player-state button{display:inline-flex;align-items:center;gap:6px;padding:9px 13px;border:0;border-radius:9px;color:#fff;background:var(--primary);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.immersive-player-panel{width:100%;max-width:100%;min-width:0;min-height:0;height:100%;display:grid;grid-template-areas:"mode" "score" "controls" "keyboard";grid-template-rows:auto minmax(0,1fr) auto auto;overflow:hidden}.immersive-player-panel.keyboard-collapsed{grid-template-areas:"mode" "score" "controls";grid-template-rows:auto minmax(0,1fr) auto}.immersive-player-panel>*{min-width:0;max-width:100%}.immersive-player-panel>.mode-tabs-row{grid-area:mode;margin:0;padding:8px 18px;border-bottom:1px solid var(--player-border);background:var(--player-panel)}.immersive-player-panel>.score-viewer-wrap{grid-area:score;min-height:0;margin:0;border:0;border-radius:0;box-shadow:none;background:var(--player-score-bg)}.immersive-player-panel>.keyboard-area{grid-area:keyboard;min-height:0;padding:8px 18px max(10px,env(safe-area-inset-bottom));background:var(--player-panel);border-top:1px solid var(--player-border)}.immersive-player-panel>.keyboard-area-hidden,.keyboard-area-hidden{display:none}.immersive-player-panel>.practice-bar-wrap,.immersive-player-panel>.perform-panel{grid-area:controls;max-height:min(30dvh,230px);margin:0;overflow-y:auto;border-right:0;border-left:0;border-radius:0}.immersive-player-panel>.perform-panel.perform-panel-idle{overflow:visible}.immersive-player-panel>.perform-panel.perform-panel-callout-open{overflow:visible}.immersive-player-panel>.perform-panel{padding:12px 18px}.immersive-player-panel .practice-bar{padding:10px 18px}.immersive-player-panel .practice-bar-tools{padding-top:8px}.immersive-player-panel .keyboard-area .keyboard-viewport{max-width:min(100%,1120px);margin:0 auto}.immersive-player-panel .keyboard-viewport .piano-keyboard-wrap{padding:1px;border-radius:6px}.immersive-player-panel .velocity-meter{right:max(28px,calc(env(safe-area-inset-right) + 16px))}.immersive-player-panel .perform-countdown{min-height:44px}.immersive-player-panel .mode-tabs{background:var(--player-tabs)}.immersive-player-panel .mode-tab{color:var(--player-tab-text);font-weight:700}.immersive-player-panel .mode-tab.active{color:var(--player-tab-active-text);background:var(--player-tab-active-bg);border-color:var(--accent-30);box-shadow:0 2px 7px var(--player-tab-shadow)}.immersive-player-panel .mode-tab:not(.active):hover{color:var(--player-tab-hover-text);background:var(--player-tab-hover-bg)}.immersive-player-panel .preview-tab{color:#fff;border-color:var(--player-preview-border);background:var(--player-preview-bg);box-shadow:0 2px 7px var(--player-preview-shadow)}.immersive-player-panel .preview-tab.previewing{color:#fff;background:var(--player-previewing-bg);border-color:var(--player-previewing-border)}.immersive-player-panel .keyboard-visibility-toggle{color:var(--player-control-text);border-color:var(--player-border);background:var(--player-control-bg)}.immersive-player-panel .keyboard-visibility-toggle.keyboard-hidden{color:var(--accent-deep);border-color:var(--accent-35);background:var(--accent-soft)}.immersive-player-panel .practice-bar-wrap{background:color-mix(in srgb,var(--player-panel) 78%,var(--player-surface));border-color:var(--player-border)}.immersive-player-panel .tools-toggle,.immersive-player-panel .practice-hand-mode-button{color:var(--player-control-text);border-color:var(--player-border);background:var(--player-control-bg)}.immersive-player-panel .practice-hand-mode-button.active{color:var(--accent-deep);border-color:var(--accent-35);background:var(--accent-soft)}.immersive-player-panel .next-note-chip{color:var(--player-next-text);background:var(--player-next-bg)}.immersive-player-panel .midi-connect-btn{color:var(--player-midi-text);border-color:var(--player-midi-border);background:var(--player-midi-bg)}.immersive-player-panel .midi-connect-btn.connected{color:#fff;background:var(--player-connected-bg);border-color:var(--player-connected-border)}.player-score-viewer .score-zoom-controls{border-color:var(--player-score-control-border);background:var(--player-score-control-bg);box-shadow:0 2px 9px var(--player-score-shadow)}.player-score-viewer .score-zoom-btn{color:var(--player-score-control-text);border-color:var(--player-score-control-border);background:var(--player-score-bg)}.score-follow-button{background:var(--player-follow-bg);box-shadow:0 6px 18px var(--ink-20)}@media(min-width:768px){.immersive-player-panel .practice-bar{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 14px;min-height:54px}.immersive-player-panel .practice-bar-midi{grid-column:1;flex-wrap:nowrap}.immersive-player-panel .practice-bar-progress{grid-column:2;min-width:0;flex-wrap:nowrap}.immersive-player-panel .midi-label-full{display:none}.immersive-player-panel .midi-label-compact{display:inline}.immersive-player-panel .device-chip{display:none}.immersive-player-panel .next-note-chip{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.immersive-player-panel .tools-toggle{flex:0 0 auto;margin-left:auto}.immersive-player-panel .practice-hand-mode-selector+.tools-toggle{margin-left:0}.immersive-player-panel .bar-warn{grid-column:1 / -1}}.player-score-viewer{position:relative;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scroll-behavior:smooth}.player-score-viewer:focus-visible{outline:3px solid var(--primary);outline-offset:-3px}.player-score-viewer .score-viewer{min-height:100%;padding:8px 18px 28px}.score-follow-button{position:sticky;bottom:12px;left:auto;z-index:3;display:grid;width:38px;height:38px;margin:0 12px 12px auto;place-items:center;padding:0;border:0;border-radius:50%;color:#fff;background:var(--primary);box-shadow:0 6px 18px var(--ink-20);cursor:pointer}.immersive-tools-sheet-heading{display:none}.immersive-player-panel .perform-options-sheet{position:fixed;z-index:50;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));display:grid;gap:10px;width:min(420px,calc(100vw - 24px));max-height:min(56dvh,420px);margin:0 auto;padding:14px;overflow-y:auto;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:0 18px 42px #19181247}.immersive-player-panel .perform-options-sheet .immersive-tools-sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.immersive-player-panel .perform-options-sheet .immersive-tools-sheet-heading button{display:inline-grid;width:36px;height:36px;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--paper-alt);cursor:pointer}@media(max-width:1023px){.lesson-player-hud{padding-right:14px;padding-left:14px}.immersive-player-panel>.mode-tabs-row{padding-right:14px;padding-left:14px}.immersive-player-panel>.keyboard-area{padding-right:14px;padding-left:14px}.immersive-player-panel>.practice-bar-wrap,.immersive-player-panel>.perform-panel{max-height:min(34dvh,270px)}.immersive-player-panel .tempo-select-btn,.immersive-player-panel .metronome-btn,.immersive-player-panel .sight-reading-btn,.immersive-player-panel .note-labels-btn,.immersive-player-panel .auto-loop-btn,.immersive-player-panel .reset-btn{min-width:44px;min-height:44px}}@media(max-width:767px){.hands-free-start-hint{box-sizing:border-box;left:50%;width:min(230px,calc(100vw - 72px));max-width:none;padding:7px 10px;font-size:.8rem;text-align:center}.hands-free-hint-full{display:none}.hands-free-hint-compact{display:inline}.lesson-player-hud{grid-template-columns:44px minmax(0,1fr) 44px;padding-right:10px;padding-left:10px}.lesson-player-exit{width:40px;padding:0;font-size:0}.lesson-player-exit svg{width:18px;height:18px}.lesson-player-title span{display:none}.lesson-player-title strong{font-size:.88rem}.immersive-player-panel{grid-template-rows:auto minmax(120px,1fr) auto auto}.immersive-player-panel>.mode-tabs-row{min-height:52px;justify-content:space-between;gap:8px;padding:7px 10px}.immersive-player-panel .mode-tabs{display:contents}.immersive-player-panel .mode-tab{box-sizing:border-box;display:inline-flex;min-width:0;min-height:44px;align-items:center;justify-content:center;padding:6px 4px;overflow:hidden;font-size:clamp(.92rem,4vw,1.04rem);text-overflow:ellipsis;white-space:nowrap}.immersive-player-panel>.mode-tabs-row{box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 46px 46px;gap:4px}.immersive-player-panel .mode-tabs .mode-tab:first-child{grid-column:1}.immersive-player-panel .mode-tabs .mode-tab:nth-child(2){grid-column:2}.immersive-player-panel .preview-tab{grid-column:3;width:46px;min-width:46px;min-height:44px;padding:6px}.immersive-player-panel .keyboard-visibility-toggle{grid-column:4;width:46px;min-width:46px;min-height:44px;padding:6px}.immersive-player-panel .keyboard-visibility-label{display:none}.immersive-player-panel .mode-label-compact{display:inline}.immersive-player-panel .mode-label-full{display:none}.immersive-player-panel>.keyboard-area{padding:7px 10px max(8px,env(safe-area-inset-bottom))}.immersive-player-panel>.practice-bar-wrap{max-height:none;overflow:hidden;border-right:0;border-bottom:0;border-left:0;box-shadow:none}.immersive-player-panel>.perform-panel{max-height:min(28dvh,210px);overflow-y:auto;border-right:0;border-left:0;border-radius:0;box-shadow:none}.immersive-player-panel .practice-bar{box-sizing:border-box;display:grid;grid-template-columns:auto minmax(0,1fr);width:100%;min-width:0;max-width:100%;gap:6px 10px;padding:8px 10px}.immersive-player-panel .practice-bar-midi{grid-column:1;min-width:0}.immersive-player-panel .practice-bar-progress{grid-column:2;min-width:0;overflow:hidden;flex-wrap:nowrap;gap:2px}.immersive-player-panel .midi-connect-btn{min-height:38px;padding:6px 10px;font-size:.78rem}.immersive-player-panel .midi-label-full{display:none}.immersive-player-panel .midi-label-compact{display:inline}.immersive-player-panel .device-chip{display:none}.immersive-player-panel .progress-fraction{flex:0 0 auto;font-size:1.35rem}.immersive-player-panel .tempo-indicator{gap:4px;min-height:30px;padding:5px 7px;font-size:.76rem}.immersive-player-panel .tempo-indicator-scale,.immersive-player-panel .progress-label,.immersive-player-panel .swing-badge,.immersive-player-panel .dynamic-badge,.immersive-player-panel .practice-hint,.immersive-player-panel .velocity-hint,.immersive-player-panel .pedal-hint{display:none}.immersive-player-panel .next-note-chip{flex:1 1 0;overflow:hidden;min-width:0;padding:7px 9px;font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.immersive-player-panel .practice-hand-mode-selector{gap:2px;margin-left:auto}.immersive-player-panel .practice-hand-mode-button{width:38px;height:38px;min-width:38px;min-height:38px}.immersive-player-panel .tools-toggle{flex:0 0 auto;width:38px;min-width:38px;min-height:38px;justify-content:center;margin-left:auto;padding:6px;gap:0;font-size:0}.immersive-player-panel .practice-hand-mode-selector+.tools-toggle{margin-left:2px}.immersive-player-panel .tools-toggle-label,.immersive-player-panel .tools-toggle-arrow{display:none}.immersive-player-panel .tools-toggle-icon{display:block}.immersive-player-panel .bar-warn{grid-column:1 / -1;font-size:.72rem}.immersive-player-panel .practice-bar-tools{display:none}.immersive-player-panel .practice-bar-tools.immersive-tools-sheet{position:fixed;z-index:20;right:10px;bottom:calc(94px + env(safe-area-inset-bottom));left:10px;display:grid;max-height:min(52dvh,400px);padding:12px;overflow-y:auto;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:0 18px 42px #1918123d}.immersive-tools-sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:2px}.immersive-tools-sheet-heading strong{font-size:.92rem}.immersive-tools-sheet-heading button{display:inline-grid;width:36px;height:36px;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--paper-alt);cursor:pointer}.immersive-player-panel .practice-bar-tools .tool-group{width:100%}.immersive-player-panel .practice-bar-tools .tool-group-label{min-width:66px}.immersive-player-panel .practice-bar-tools .piano-connection-setting{flex-wrap:wrap}.immersive-player-panel .practice-bar-tools .reset-btn{margin-left:0}.player-score-viewer .score-viewer{padding:6px 10px 22px}.player-score-viewer .score-zoom-controls{position:absolute;z-index:3;top:8px;left:8px;padding:3px 5px;border:1px solid var(--player-score-control-border);border-radius:9px;background:var(--player-score-control-bg);box-shadow:0 2px 9px var(--player-score-shadow)}.player-score-viewer .score-zoom-btn{width:28px;height:28px}.player-score-viewer .score-zoom-label{min-width:31px;font-size:.76rem}.immersive-player-panel .piano-keyboard-wrap{padding:1px}.immersive-player-panel .keyboard-viewport .piano-keyboard-svg{height:58px}.immersive-player-panel .perform-panel{padding:8px 10px}.immersive-player-panel .perform-controls,.immersive-player-panel .perform-countdown,.immersive-player-panel .perform-playing,.immersive-player-panel .perform-score-summary-row{gap:4px}.immersive-player-panel .perform-score-summary-row{flex-wrap:wrap}.immersive-player-panel .score-summary-text{font-size:.88rem}.immersive-player-panel .score-summary-text strong{font-size:inherit}.immersive-player-panel .perform-score-summary-row .reset-btn{min-height:36px;padding:4px 10px}.immersive-player-panel .perform-controls{gap:8px}.immersive-player-panel .start-perform-btn{min-height:40px;padding:8px 12px;font-size:.84rem}.immersive-player-panel .perform-options-toggle{min-height:40px;margin-left:0;padding:7px 10px}.immersive-player-panel .perform-midi-row{margin-left:auto}.immersive-player-panel .perform-options-sheet{position:fixed;z-index:20;right:10px;bottom:calc(94px + env(safe-area-inset-bottom));left:10px;display:grid;gap:10px;max-height:min(52dvh,400px);padding:12px;overflow-y:auto;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:0 18px 42px #1918123d}}@media(max-width:767px)and (orientation:portrait){.immersive-player-panel .practice-bar.midi-connected{grid-template-columns:minmax(0,1fr)}.immersive-player-panel .practice-bar-midi.connected{display:none}.immersive-player-panel .practice-bar.midi-connected .practice-bar-progress{grid-column:1}}@media(max-width:767px)and (orientation:portrait){.immersive-player-panel .tempo-indicator-unit{display:none}}@media(max-width:319px)and (orientation:portrait){.immersive-player-panel .practice-hand-mode-button,.immersive-player-panel .tools-toggle{width:32px;min-width:32px;min-height:32px;height:32px}.immersive-player-panel .practice-hand-icon-both{transform:scale(.88)}}@media(orientation:landscape)and (pointer:coarse),(orientation:landscape)and (max-height:540px){.hands-free-start-hint{font-size:.75rem}.lesson-player-screen{--player-control-rail-height: 34px}.lesson-player-screen{grid-template-rows:minmax(0,1fr);position:relative}.lesson-player-hud{position:absolute;z-index:auto;inset:4px 8px auto;box-sizing:border-box;height:var(--player-control-rail-height);min-height:var(--player-control-rail-height);padding:1px 0;border:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;pointer-events:none}.lesson-player-exit,.lesson-player-icon{position:relative;z-index:6;box-sizing:border-box;height:32px;min-height:32px;pointer-events:auto;background:color-mix(in srgb,var(--paper) 90%,transparent)}.lesson-player-title{display:none}.immersive-player-panel{--player-control-rail-height: 34px;height:100%;grid-template-rows:var(--player-control-rail-height) minmax(0,1fr) auto auto}.immersive-player-panel>.mode-tabs-row{position:relative;z-index:4;display:flex;justify-content:center;box-sizing:border-box;width:100%;height:var(--player-control-rail-height);min-height:var(--player-control-rail-height);padding:1px 54px;border-bottom:0;background:color-mix(in srgb,var(--player-panel) 92%,transparent)}.immersive-player-panel .mode-tabs{display:flex;flex:0 1 auto;width:auto;height:32px;margin:0;padding:0 3px}.immersive-player-panel .mode-tab,.immersive-player-panel .preview-tab{height:32px;min-height:32px}.immersive-player-panel .mode-tab{flex:0 1 auto;min-width:116px;padding-right:10px;padding-left:10px;font-size:.78rem}.immersive-player-panel .preview-tab{width:36px;min-width:36px;justify-content:center;padding:0 9px}.immersive-player-panel .keyboard-visibility-toggle{width:36px;min-width:36px;min-height:32px;padding:0 9px}.immersive-player-panel .keyboard-visibility-label{display:none}.immersive-player-panel>.practice-bar-wrap{box-sizing:border-box;height:var(--player-control-rail-height);min-height:var(--player-control-rail-height)}.immersive-player-panel>.perform-panel{max-height:30dvh;padding:0 10px}.immersive-player-panel>.perform-panel.perform-panel-idle{box-sizing:border-box;height:var(--player-control-rail-height);min-height:var(--player-control-rail-height)}.immersive-player-panel .practice-bar{display:flex;box-sizing:border-box;height:32px;min-height:0;padding-top:0;padding-bottom:0;flex-wrap:nowrap}.immersive-player-panel .perform-controls{height:32px;min-height:32px;gap:8px;flex-wrap:nowrap}.immersive-player-panel .perform-controls .start-perform-btn,.immersive-player-panel .perform-controls .perform-options-toggle,.immersive-player-panel .perform-controls .midi-connect-btn{box-sizing:border-box;height:32px;min-height:32px;padding-top:0;padding-bottom:0;font-size:.78rem}.immersive-player-panel .perform-controls .start-perform-btn{padding-right:10px;padding-left:10px}.immersive-player-panel .perform-controls .perform-options-toggle{margin-left:0;padding-right:9px;padding-left:9px}.immersive-player-panel .practice-bar-midi{flex:0 0 auto;flex-wrap:nowrap}.immersive-player-panel .practice-bar-progress{min-width:0;flex-wrap:nowrap}.immersive-player-panel .midi-connect-btn,.immersive-player-panel .tools-toggle,.immersive-player-panel .practice-hand-mode-button{height:32px;min-height:32px}.immersive-player-panel .progress-fraction{font-size:1.15rem}.immersive-player-panel .next-note-chip{padding:5px 7px;font-size:.76rem}.immersive-player-panel .tools-toggle{width:36px;min-width:36px;justify-content:center;padding:5px;gap:0;font-size:0}.immersive-player-panel .practice-hand-mode-button{width:32px;min-width:32px}.immersive-player-panel .practice-hand-mode-selector+.tools-toggle{margin-left:2px}.immersive-player-panel .tools-toggle-label,.immersive-player-panel .tools-toggle-arrow{display:none}.immersive-player-panel .tools-toggle-icon{display:block}.immersive-player-panel .bar-warn{display:grid;width:22px;height:22px;place-items:center;overflow:hidden;border-radius:50%;background:var(--gold-12);color:transparent;font-size:0}.immersive-player-panel .bar-warn:after{content:"!";color:var(--warn);font-size:.78rem;font-weight:800}.immersive-player-panel .practice-bar-tools.immersive-tools-sheet,.immersive-player-panel .perform-options-sheet{bottom:86px;max-height:55dvh}.immersive-player-panel .perform-score{gap:4px;padding:0}.immersive-player-panel .score-number{font-size:2.5rem}.immersive-player-panel .score-pct{font-size:1rem}.immersive-player-panel .complete-chip{padding:3px 8px;font-size:.75rem}.immersive-player-panel .perform-stars{font-size:.75rem}.immersive-player-panel .score-breakdown{justify-content:center;gap:6px 10px;font-size:.75rem}.immersive-player-panel .perform-score>.score-breakdown:first-of-type>span:nth-child(n+4),.immersive-player-panel .perform-score>.perform-intro{display:none}.immersive-player-panel .perform-score-actions{gap:8px;margin-top:0}.immersive-player-panel .perform-score-actions .reset-btn,.immersive-player-panel .perform-score-actions .next-exercise-btn{min-width:0;min-height:34px;padding:7px 10px;font-size:.78rem}.immersive-player-panel>.keyboard-area{padding-top:4px;padding-bottom:4px}.immersive-player-panel .keyboard-viewport .piano-keyboard-wrap{max-height:none;padding:1px;overflow:visible}.immersive-player-panel .keyboard-viewport .piano-keyboard-svg{height:84px}.celebration-card{gap:8px;max-height:calc(100dvh - 24px);padding:20px 24px}.celebration-stars{gap:6px;margin:0}.celebration-star{width:36px;height:36px}.celebration-title{font-size:1.35rem}.celebration-subtitle,.celebration-stats{font-size:.78rem}.celebration-actions{gap:8px;margin-top:0}.celebration-btn{padding:8px 14px;font-size:.8rem}}.immersive-player-panel>.mode-tabs-row,.immersive-player-panel .mode-tabs,.immersive-player-panel .practice-bar,.player-score-viewer .score-zoom-controls{padding-top:0;padding-bottom:0}.immersive-player-panel .practice-bar-tools.immersive-tools-sheet,.immersive-player-panel .perform-options-sheet{position:fixed;z-index:60;inset:50% auto auto 50%;display:grid;width:min(440px,calc(100vw - 32px));max-height:min(62dvh,480px);margin:0;padding:16px;overflow-y:auto;transform:translate(-50%,-50%);border:1px solid color-mix(in srgb,var(--line) 72%,var(--primary));border-radius:16px;background:var(--paper);box-shadow:0 0 0 100vmax #10182294,0 22px 50px #10182257}.immersive-player-panel .practice-bar-tools.immersive-tools-sheet .immersive-tools-sheet-heading,.immersive-player-panel .perform-options-sheet .immersive-tools-sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.immersive-player-panel .practice-bar-tools.immersive-tools-sheet .immersive-tools-sheet-heading button,.immersive-player-panel .perform-options-sheet .immersive-tools-sheet-heading button{display:inline-grid;width:36px;height:36px;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--paper-alt);cursor:pointer}@media(prefers-reduced-motion:reduce){.player-score-viewer{scroll-behavior:auto}}@media(max-width:767px)and (pointer:fine){.player-score-viewer .score-viewer-stage{padding-top:42px}}.admin-inline-form{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-sm)}.admin-inline-form label{display:grid;gap:6px;font-weight:700}.admin-inline-form input{min-width:260px;padding:9px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font:inherit}.admin-inline-form button{padding:9px 12px}.content-authoring-layout{display:grid;grid-template-columns:minmax(180px,.42fr) minmax(0,1fr);gap:var(--space-lg);align-items:start}.content-authoring-layout aside{display:grid;gap:var(--space-sm)}.content-exercise-list{display:grid;gap:6px;max-height:420px;overflow:auto}.content-exercise-list button{display:grid;gap:3px;text-align:left;padding:10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}.content-exercise-list button.selected{border-color:var(--primary);background:var(--accent-10)}.content-exercise-list small{color:var(--text-secondary)}.content-score-preview{display:grid;gap:var(--space-sm);border-top:1px solid var(--line);padding-top:var(--space-md)}.content-score-preview h3{margin:0}.curriculum-builder-tree{display:grid;gap:8px;max-height:440px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper)}.curriculum-builder-tree section,.curriculum-tree-section,.curriculum-tree-level{display:grid;gap:5px}.curriculum-tree-section{margin-left:14px;padding-left:12px;border-left:2px solid var(--line)}.curriculum-tree-level{margin-left:13px;padding-left:12px;border-left:1px solid var(--line)}.curriculum-builder-tree button{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--ink);background:transparent;text-align:left}.curriculum-builder-tree button:hover{background:var(--accent-10)}.curriculum-builder-tree button.selected{border-color:var(--primary);background:var(--accent-10)}.curriculum-builder-tree button small{color:var(--muted);white-space:nowrap}.curriculum-tree-lesson{margin-left:12px;font-size:.92rem}.content-search{display:grid;gap:5px;max-width:620px;margin:14px 0;font-weight:700}.content-navigation{display:grid;grid-template-columns:minmax(240px,.42fr) minmax(0,1fr);gap:var(--space-lg);align-items:start}.content-navigation aside{display:grid;gap:10px}.content-navigation label{display:grid;gap:4px;font-size:.9rem;font-weight:700}.content-lesson-list{display:grid;gap:5px;max-height:280px;overflow:auto}.content-lesson-list button{display:grid;gap:2px;padding:8px 10px;text-align:left;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}.content-lesson-list button.selected{border-color:var(--primary);background:var(--accent-10)}.content-lesson-list small,.content-usage{color:var(--text-secondary)}.content-usage{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm)}.content-usage h3,.content-editor h3{margin-top:0}.content-editor{margin-top:var(--space-lg);border-top:1px solid var(--line);padding-top:var(--space-lg)}.content-navigation>div>.content-exercise-list:before{content:"Các thay đổi gần đây / Kết quả tìm kiếm";display:block;margin:0 0 4px;color:var(--text-secondary);font-size:.84rem;font-weight:700}.content-mode-tabs{display:flex;gap:8px;margin:18px 0;border-bottom:1px solid var(--line)}.content-mode-tabs button{border:0;border-bottom:3px solid transparent;border-radius:0;padding:9px 12px;background:transparent;color:var(--text-secondary);font:inherit;font-weight:700}.content-mode-tabs button.selected{border-bottom-color:var(--primary);color:var(--primary)}.content-tab-panel{display:grid;gap:14px}.content-tab-panel>h3{margin:0;font-size:1rem}.content-curriculum-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.content-curriculum-controls label{display:grid;gap:5px;font-weight:700}.content-empty{color:var(--text-secondary)}.content-search-row{display:flex;align-items:end;gap:12px}.content-search-row .content-search{flex:1;margin:0}.content-create-choice{display:grid;gap:10px;max-width:560px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-md)}.content-create-choice h3,.content-create-choice p{margin:0}.content-search-result{display:grid;gap:3px;padding:10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}.content-search-result[href]{color:inherit;text-decoration:none;cursor:pointer}.content-search-result[href]:hover,.content-search-result[href]:focus-visible{border-color:var(--primary);background:var(--accent-10)}.content-search-result small,.content-search-hint{color:var(--text-secondary)}.content-search-hint{margin:-8px 0 0;font-size:.9rem}.content-version-picker{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-md)}.content-version-picker h3{margin:0}.content-version-picker>div{display:flex;flex-wrap:wrap;gap:7px}.content-version-picker button.selected{border-color:var(--primary);background:var(--accent-10)}.lesson-exercise-context{display:grid;gap:3px;padding:14px 16px;border-left:4px solid var(--primary);border-radius:var(--radius-sm);background:var(--accent-10)}.lesson-exercise-context span{color:var(--text-secondary);font-size:.78rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.lesson-exercise-context strong{font-size:1.05rem}.lesson-exercise-context small{color:var(--text-secondary)}.lesson-exercise-heading{margin:4px 0 0;font-size:1rem}.content-action-row{display:flex;flex-wrap:wrap;gap:8px}.content-editor-hint,.content-preview-status{margin:-4px 0 4px;color:var(--text-secondary);font-size:.88rem}.content-preview-status{color:var(--primary);font-weight:700}.content-live-preview{margin-top:var(--space-md);padding:var(--space-md);border:1px solid color-mix(in srgb,var(--primary) 30%,var(--line));border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent-10) 42%,var(--paper))}.content-live-preview>header{display:flex;gap:var(--space-md);justify-content:space-between;align-items:start}.content-live-preview>header h3{margin:2px 0 0}.content-live-preview>header p{margin:2px 0 0;color:var(--text-secondary);font-size:.88rem;text-align:right}.content-repeat-badge{display:inline-flex;margin-left:6px;padding:2px 7px;border-radius:999px;background:var(--primary);color:#fff;font-size:.72rem;vertical-align:middle}.content-repeat-summary{display:grid;gap:3px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}.content-repeat-summary p{margin:0;font-size:.86rem}.content-repeat-upgrade{display:grid;gap:6px;padding:12px;border:1px solid color-mix(in srgb,var(--warning, #b7791f) 45%,var(--line));border-radius:var(--radius-sm);background:color-mix(in srgb,var(--warning, #b7791f) 8%,var(--paper))}.content-repeat-upgrade p{margin:0;color:var(--text-secondary)}@media(max-width:640px){.content-live-preview{padding:var(--space-sm)}.content-live-preview>header{display:grid;gap:6px}.content-live-preview>header p{text-align:left}}.exercise-metadata-editor{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--line)}.exercise-metadata-editor h3{margin-top:0}.exercise-metadata-editor>p{color:var(--text-secondary)}.content-lesson-list+h3{font-size:0}.content-lesson-list+h3:after{content:"Bài nhạc lesson đang sử dụng";font-size:1rem}@media(max-width:540px){.content-mode-tabs{gap:2px}.content-mode-tabs button{flex:1;padding-right:6px;padding-left:6px;font-size:.88rem}.content-curriculum-controls{grid-template-columns:1fr}.content-search-row{align-items:stretch;flex-direction:column}.content-search-row .action-link{width:100%;justify-content:center}}@media(max-width:760px){.content-navigation{grid-template-columns:1fr}}.lesson-card{align-items:stretch}.lesson-card-main{display:flex;align-items:center;min-width:0;flex:1;gap:10px;padding:0;color:inherit;text-align:left;background:transparent;border:0;font:inherit;cursor:pointer}.lesson-card-main:hover strong{color:var(--primary-hover)}.lesson-card-main .lesson-copy{display:grid;min-width:0;gap:2px;flex:1}.lesson-card-main .lesson-state{min-width:74px}@media(max-width:600px){.lesson-card-main .lesson-state{display:none}}.profile-menu{position:relative}.profile-menu>summary{list-style:none}.profile-menu>summary::-webkit-details-marker{display:none}.profile-menu>summary:hover,.profile-menu.active>summary,.profile-menu[open]>summary{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-10)}.profile-menu-popover{position:absolute;top:calc(100% + 12px);right:0;z-index:30;display:grid;width:min(240px,calc(100vw - 32px));max-height:calc(100dvh - 88px);padding:8px;overflow-y:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--line);border-radius:13px;box-shadow:0 18px 42px var(--ink-15)}.profile-menu-group{display:grid}.profile-menu-divider{height:1px;margin:6px 8px;background:var(--line)}.profile-menu-popover a,.profile-menu-action{box-sizing:border-box;display:flex;align-items:center;gap:9px;width:100%;padding:10px;color:var(--ink);border:0;border-radius:8px;background:transparent;font:inherit;font-size:.88rem;text-align:left;text-decoration:none;cursor:pointer}.profile-menu-popover a:hover,.profile-menu-popover a:focus-visible,.profile-menu-popover a.selected,.profile-menu-action:hover,.profile-menu-action:focus-visible{color:var(--primary-hover);background:var(--accent-10)}.profile-menu-sign-out{color:var(--danger, #b42318)}.profile-menu-sign-out:hover,.profile-menu-sign-out:focus-visible{color:var(--danger, #b42318);background:color-mix(in srgb,var(--danger, #b42318) 9%,transparent)}[data-theme=dark] .immersive-player-panel .midi-connect-btn.connected,[data-theme=dark] .immersive-player-panel .score-follow-button{color:var(--text-inverse)}html[data-theme=dark] .lesson-player-exit,html[data-theme=dark] .lesson-player-icon{color:#fff!important;-webkit-text-fill-color:#FFFFFF}html[data-theme=dark] .lesson-player-exit svg,html[data-theme=dark] .lesson-player-icon svg{color:#fff!important;stroke:#fff!important}[data-theme=dark],[data-theme=dark] *{scrollbar-color:rgba(255,248,231,.28) transparent}[data-theme=dark] *::-webkit-scrollbar-thumb{background:#fff8e747}.journey-screen{display:grid;gap:var(--page-section-gap);width:100%;max-width:none;margin:0 auto}.journey-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-md)}.journey-heading .eyebrow{margin-bottom:0}.journey-heading h1{margin:0;font-family:var(--font-display);font-size:clamp(1.7rem,4vw,2.35rem);line-height:1.05;letter-spacing:-.035em}.journey-heading p{max-width:none;margin:0;color:var(--muted)}.journey-heading-copy{display:flex;align-items:center;min-width:0;gap:.6rem}.journey-heading-icon{display:inline-grid;width:2.35rem;height:2.35rem;flex:0 0 2.35rem;place-items:center;border:1px solid var(--primary-light);border-radius:var(--radius-sm);color:var(--primary-hover);background:var(--accent-10)}.journey-heading-copy>.journey-profile-avatar{width:2.35rem;height:2.35rem;float:none;margin:0;font-size:.82rem}.journey-heading-text{min-width:0}.journey-heading-actions{display:flex;flex-wrap:wrap;justify-content:end;gap:.5rem}.journey-post-list{display:grid;gap:var(--space-md)}.journey-load-more{justify-self:center}.journey-post{display:grid;gap:.85rem}.journey-post-header{display:flex;justify-content:space-between;gap:.75rem}.journey-post>header>div{display:grid;gap:.2rem}.journey-post header a{color:inherit;text-decoration:none}.journey-post header span{color:var(--muted);font-size:var(--text-xs)}.journey-caption{margin:0;white-space:pre-wrap}.icon-button{display:grid;width:2rem;height:2rem;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--text-secondary);background:var(--paper);cursor:pointer}.journey-post-header strong{margin-left:4px}.journey-result{position:relative;display:grid;gap:.75rem;padding:1rem;overflow:hidden;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));border-radius:var(--radius-md);background:linear-gradient(135deg,color-mix(in srgb,var(--accent-6) 82%,var(--paper)),var(--paper) 72%);box-shadow:0 8px 24px var(--ink-4)}.journey-result:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(var(--accent),var(--primary))}.journey-result-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;align-items:center}.journey-result-heading{display:flex;min-width:0;gap:.65rem;align-items:flex-start}.journey-result-heading>div{min-width:0}.journey-result-icon{display:grid;flex:0 0 auto;width:2.35rem;height:2.35rem;place-items:center;border-radius:.72rem;color:var(--primary-hover);background:color-mix(in srgb,var(--accent) 24%,var(--paper))}.journey-result-kicker{display:block;color:var(--primary-hover);font-size:var(--text-xs);font-weight:800;letter-spacing:.055em;line-height:1.2;text-transform:uppercase}.journey-result h3,.journey-result p{margin:0}.journey-result h3{margin-top:.18rem;font-family:var(--font-display);font-size:clamp(1.05rem,2.5vw,1.28rem);line-height:1.2}.journey-result-heading p{margin-top:.22rem;color:var(--text-secondary);font-size:var(--text-sm)}.journey-result-score{display:grid;grid-template-columns:auto minmax(5.4rem,auto);align-items:stretch;gap:.65rem;padding:.48rem .68rem;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));border-radius:.75rem;background:color-mix(in srgb,var(--paper) 88%,var(--accent-6))}.journey-result-score-value{display:flex;align-items:baseline;align-self:center;gap:.22rem}.journey-result-score-value strong{color:var(--primary-hover);font-family:var(--font-display);font-size:2rem;line-height:1}.journey-result-score-value span{color:var(--text-secondary);font-size:var(--text-xs);font-weight:700}.journey-result-score-details{display:grid;grid-template-rows:repeat(2,minmax(0,1fr));padding-left:.65rem;border-left:1px solid color-mix(in srgb,var(--accent) 24%,var(--line))}.journey-result-score-details>span{display:flex;align-items:center;gap:.3rem;color:var(--text-secondary);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.journey-result-score-details>span:last-child{grid-row:2}.journey-result-score-details>span+span{border-top:1px solid color-mix(in srgb,var(--accent) 14%,var(--line))}.journey-result-score-details b,.journey-result-score-details svg{color:var(--accent-gold, #b7791f)}.journey-result-score-details strong{color:var(--ink);font-size:inherit}.journey-result .action-link{justify-self:start}.journey-actions{display:flex;flex-wrap:nowrap;align-items:center;gap:.3rem;min-width:0;overflow-x:auto;padding-bottom:.1rem;scrollbar-width:thin}.journey-actions.reaction-picker-open{overflow:visible}.journey-actions button,.journey-actions>span{display:inline-flex;flex:0 0 auto;min-height:2rem;align-items:center;gap:.28rem;padding:.3rem .45rem;border:1px solid var(--line);border-radius:999px;color:var(--text-secondary);background:var(--paper);font-size:.78rem;line-height:1;white-space:nowrap}.journey-actions button{cursor:pointer}.journey-actions button.active{color:var(--primary-hover);border-color:var(--accent);background:var(--accent-6)}.journey-comments-section{display:grid;gap:.75rem;padding-top:.25rem;border-top:1px solid color-mix(in srgb,var(--accent) 14%,var(--line))}.journey-comments-heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-top:.5rem}.journey-post .journey-comments-heading>span{display:inline-flex;align-items:center;gap:.4rem;color:var(--ink);font-size:var(--text-sm);font-weight:800}.journey-comments-heading svg{color:var(--primary-hover)}.journey-comments-heading>strong{display:grid;min-width:1.65rem;height:1.65rem;place-items:center;padding:0 .35rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs)}.journey-comments{display:grid;gap:.7rem}.journey-comment{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.6rem}.journey-comment-bubble{min-width:0;padding:.65rem .78rem .7rem;border:1px solid color-mix(in srgb,var(--accent) 13%,var(--line));border-radius:.25rem .9rem .9rem;background:color-mix(in srgb,var(--paper-alt) 94%,var(--accent-6))}.journey-comment-heading{display:grid;grid-template-columns:minmax(0,1fr) auto auto;min-width:0;align-items:center;gap:.45rem;white-space:nowrap}.journey-comment-heading strong{flex:1 1 auto;min-width:0;overflow:hidden;color:var(--ink);font-size:var(--text-sm);text-overflow:ellipsis}.journey-comment-heading strong a{display:block;overflow:hidden;text-overflow:ellipsis}.journey-comment-heading time{flex:0 0 auto;color:var(--muted);font-size:.7rem;white-space:nowrap}.journey-comment-bubble p{margin:.25rem 0 0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}.journey-comment-tools{display:inline-flex;align-items:center;gap:.08rem}.journey-comment-delete{display:grid;width:1.8rem;height:1.8rem;place-items:center;padding:0;border:0;border-radius:.5rem;color:var(--muted);background:transparent;cursor:pointer}.journey-comment-delete:hover:not(:disabled),.journey-comment-delete:focus-visible{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.journey-comment-delete:disabled{cursor:wait;opacity:.5}.journey-comment-report{display:grid;width:1.7rem;height:1.7rem;place-items:center;padding:0;border:0;border-radius:.45rem;color:var(--muted);background:transparent;cursor:pointer}.journey-comment-report:hover,.journey-comment-report:focus-visible{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.journey-comments-empty{margin:0;padding:.8rem;border:1px dashed color-mix(in srgb,var(--accent) 22%,var(--line));border-radius:.75rem;color:var(--muted);background:color-mix(in srgb,var(--accent-3) 52%,transparent);font-size:var(--text-sm);text-align:center}.journey-comments-more{display:inline-flex;width:fit-content;min-height:2.15rem;align-items:center;gap:.4rem;justify-self:center;padding:.42rem .8rem;border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));border-radius:999px;color:var(--primary-hover);background:color-mix(in srgb,var(--paper-alt) 92%,var(--accent-6));font:inherit;font-size:var(--text-sm);font-weight:750;cursor:pointer}.journey-comments-more:hover,.journey-comments-more:focus-visible{border-color:var(--primary-light);background:var(--accent-10)}.journey-report-post{display:inline-flex;align-items:center;gap:.35rem;justify-self:start;padding:.2rem .1rem;border:0;color:var(--muted);background:transparent;font:inherit;font-size:var(--text-xs);cursor:pointer}.journey-report-post:hover,.journey-report-post:focus-visible{color:var(--danger)}.journey-comment-form{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.55rem .65rem;padding:.75rem;border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:.9rem;background:color-mix(in srgb,var(--surface-muted) 55%,var(--paper))}.journey-comment-composer-avatar{margin-top:.25rem}.journey-comment-composer{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:.75rem;background:var(--paper-alt);transition:border-color .16s ease,box-shadow .16s ease}.journey-comment-composer:focus-within{border-color:var(--primary-light);box-shadow:0 0 0 3px var(--accent-10)}.journey-comment-input{min-width:0}.journey-comment-input textarea{display:block;width:100%;min-height:4.25rem;padding:.7rem .75rem .45rem;resize:vertical;border:0;outline:0;color:var(--ink);background:transparent;font:inherit;font-size:var(--text-sm);line-height:1.45}.journey-comment-input textarea::placeholder{color:var(--muted)}.journey-comment-controls{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.4rem .45rem .45rem .75rem;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent)}.journey-comment-controls small{color:var(--muted);font-size:var(--text-xs);white-space:nowrap}.journey-comment-form .journey-comment-submit{display:inline-flex;min-height:2.15rem;align-items:center;justify-content:center;gap:.35rem;padding:.4rem .7rem;border:0;border-radius:.6rem;color:#fff;background:var(--primary);font:inherit;font-size:var(--text-sm);font-weight:750;cursor:pointer}.journey-comment-form .journey-comment-submit:hover:not(:disabled),.journey-comment-form .journey-comment-submit:focus-visible{background:var(--primary-hover)}.journey-comment-form .journey-comment-submit:disabled{cursor:not-allowed;opacity:.48}.journey-comment-suggestions{grid-column:2;display:grid;min-width:0;gap:.32rem}.journey-comment-suggestions>span{color:var(--muted);font-size:var(--text-xs);font-weight:650}.journey-comment-suggestions>div{display:flex;gap:.35rem;overflow-x:auto;padding:0 0 .12rem;scrollbar-width:thin}.journey-comment-form .journey-comment-suggestions button{flex:0 0 auto;min-height:1.9rem;padding:.28rem .58rem;border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));border-radius:999px;color:var(--text-secondary);background:var(--paper-alt);font:inherit;font-size:var(--text-xs);cursor:pointer}.journey-comment-form .journey-comment-suggestions button:hover,.journey-comment-form .journey-comment-suggestions button:focus-visible{border-color:var(--primary-light);color:var(--primary-hover);background:var(--accent-6)}.journey-editor{display:grid;gap:.65rem;padding:.85rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-muted)}.journey-editor label{display:grid;gap:.35rem;color:var(--text-secondary);font-size:var(--text-sm)}.journey-editor textarea{min-height:5rem;resize:vertical}.journey-editor>div{display:flex;flex-wrap:wrap;gap:.5rem}.action-link.danger{color:#b42318;border-color:color-mix(in srgb,#b42318 35%,var(--line))}.journey-state{display:grid;justify-items:start;gap:.6rem}.journey-state h1,.journey-state h2,.journey-state p{margin:0}.journey-guest-app{display:grid;align-items:center;padding-block:clamp(1.75rem,6vh,4.5rem)}.journey-guest-app+.site-footer{margin-top:.75rem}.journey-guest-state{justify-self:center;width:min(42rem,100%);min-height:clamp(17rem,38vh,23rem);align-content:center;justify-items:center;padding:clamp(2rem,5vw,4rem);text-align:center;background:radial-gradient(circle at 50% 0,var(--accent-10),transparent 58%),var(--paper)}.journey-guest-state .journey-guest-icon{display:grid;width:3.4rem;height:3.4rem;place-items:center;margin-bottom:.15rem;border:1px solid var(--accent-20);border-radius:1rem;color:var(--primary-hover);background:var(--accent-10)}.journey-guest-state h1{font-size:clamp(1.7rem,4vw,2.35rem);letter-spacing:-.035em}.journey-guest-state p{max-width:35rem;color:var(--text-secondary);line-height:1.6}.journey-guest-state .action-link{margin-top:.55rem}.journey-composer{max-width:470px}.journey-composer>p{margin:0;color:var(--text-secondary)}.journey-composer>label{display:grid;gap:.4rem;margin-top:.8rem}.journey-composer textarea{min-height:7rem;resize:vertical}.journey-composer-actions{display:flex;justify-content:end;gap:.6rem;margin-top:1rem}@media(max-width:560px){.journey-heading{display:grid;align-items:start}.journey-heading-actions{width:100%;justify-content:stretch}.journey-heading-actions .action-link{flex:1 1 160px;min-width:0;justify-content:center;text-align:center;white-space:normal}.journey-comment-form{grid-template-columns:1fr;padding:.65rem}.journey-comment-composer-avatar{display:none}.journey-comment-suggestions{grid-column:1}.journey-actions{gap:.22rem}.journey-actions button,.journey-actions>span{min-height:1.9rem;gap:.22rem;padding:.28rem .36rem;font-size:.72rem}.journey-editor>div .action-link{flex:1 1 auto;justify-content:center}}@media(max-width:560px){.journey-guest-app{padding-block:1.25rem}.journey-guest-state{min-height:18rem;padding:2rem 1.25rem}.journey-guest-app+.site-footer{margin-top:.5rem}}.journey-bravo-backdrop{position:fixed;z-index:110;inset:0;display:grid;place-items:center;padding:1rem;background:#191e1f6b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.journey-comments-backdrop{position:fixed;z-index:112;inset:0;display:grid;place-items:center;padding:1rem;background:#191e1f7a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.journey-comments-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(620px,calc(100vw - 2rem));max-height:min(82dvh,720px);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);background:var(--paper);box-shadow:0 28px 80px #181f203d}.journey-comments-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:1rem 1.1rem;border-bottom:1px solid var(--line);background:var(--paper-alt)}.journey-comments-dialog h2{display:flex;align-items:center;gap:.5rem;margin:0;font-size:var(--text-xl)}.journey-comments-dialog h2 small{display:grid;min-width:1.65rem;height:1.65rem;place-items:center;padding:0 .35rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs)}.journey-report-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(480px,calc(100vw - 2rem));max-height:min(78dvh,620px);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);background:var(--paper);box-shadow:0 28px 80px #181f203d}.journey-report-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:1rem 1.1rem;border-bottom:1px solid var(--line);background:var(--paper-alt)}.journey-report-dialog h2{margin:0;font-size:var(--text-xl)}.journey-report-dialog form{display:grid;gap:var(--space-md);padding:1.1rem;overflow-y:auto}.journey-report-dialog label{display:grid;gap:.35rem;color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.journey-report-dialog select,.journey-report-dialog textarea{width:100%;padding:.65rem .7rem;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:var(--paper);font:inherit}.journey-report-dialog textarea{min-height:7rem;resize:vertical}.journey-report-dialog form>div:last-child{display:flex;justify-content:end;gap:.5rem}.journey-comments-scroll{min-height:12rem;padding:.9rem;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.journey-comments-all{gap:.8rem}.journey-comments-loading,.journey-comments-error{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:1rem;color:var(--muted);font-size:var(--text-sm);text-align:center}.journey-comments-loading svg{animation:spin .85s linear infinite}.journey-comments-error{flex-wrap:wrap;color:var(--danger)}.journey-comments-error button{padding:.35rem .65rem;border:1px solid var(--line);border-radius:.55rem;color:var(--ink);background:var(--paper-alt);font:inherit;cursor:pointer}.journey-comments-end{margin:.85rem 0 .1rem;color:var(--muted);font-size:var(--text-xs);text-align:center}@media(max-width:560px){.journey-comments-backdrop{align-items:end;padding:0}.journey-comments-dialog{width:100%;max-height:88dvh;border-width:1px 0 0;border-radius:1.15rem 1.15rem 0 0}.journey-comments-dialog>header{padding:.9rem 1rem}.journey-comments-scroll{padding:.75rem .65rem 1rem}}.journey-bravo-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(420px,calc(100vw - 2rem));max-height:min(70dvh,520px);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);background:var(--paper);box-shadow:0 24px 64px var(--ink-15)}.journey-bravo-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:1rem 1.1rem;border-bottom:1px solid var(--line);background:var(--paper-alt)}.journey-bravo-dialog h2{margin:0;font-size:var(--text-xl)}.journey-bravo-list{display:grid;align-content:start;gap:.45rem;min-height:0;padding:.75rem;overflow-y:auto}.journey-bravo-person{display:flex;align-items:center;gap:.55rem;min-height:2.65rem;padding:.5rem .6rem;border-radius:var(--radius-sm);background:var(--surface-muted)}.journey-bravo-person>svg{flex:0 0 auto;color:var(--primary-hover)}.journey-bravo-person>span,.journey-bravo-person>a{display:grid;gap:.1rem;min-width:0}.journey-bravo-person>a{color:inherit;text-decoration:none}.journey-bravo-person>a:hover,.journey-bravo-person>a:focus-visible{color:var(--primary-hover);text-decoration:underline}.journey-bravo-person small{color:var(--muted)}.journey-bravo-empty{margin:0;padding:1rem;color:var(--muted)}.admin-journey-module{gap:var(--space-lg)}.admin-journey-header{display:flex;align-items:end;justify-content:space-between;gap:var(--space-lg)}.admin-journey-header h2{margin:0}.admin-journey-header p{margin:.35rem 0 0;color:var(--text-secondary)}.admin-journey-tabs,.admin-journey-range{display:flex;flex-wrap:wrap;gap:.3rem}.admin-journey-tabs button,.admin-journey-range button{min-height:2.2rem;padding:.42rem .75rem;border:1px solid var(--line);border-radius:999px;color:var(--text-secondary);background:var(--paper);font:inherit;font-size:var(--text-sm);font-weight:750;cursor:pointer}.admin-journey-tabs button.active,.admin-journey-range button.active{border-color:var(--primary-light);color:var(--primary-hover);background:var(--accent-10)}.admin-journey-range{align-items:center;justify-content:end;margin-bottom:var(--space-md)}.admin-journey-range>span{margin-right:.35rem;color:var(--muted);font-size:var(--text-sm)}.admin-journey-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md)}.admin-journey-metric{display:grid;gap:.3rem;min-width:0;padding:1rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white-50)}.admin-journey-metric>span{color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.admin-journey-metric>strong{color:var(--primary);font-size:var(--text-xl)}.admin-journey-metric>small{color:var(--muted);line-height:1.4}.admin-journey-overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin-top:var(--space-lg)}.admin-journey-overview-grid article{display:grid;gap:.35rem;padding:.9rem 1rem;border-left:3px solid var(--primary-light);background:var(--surface-muted)}.admin-journey-overview-grid p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5}.admin-journey-filters{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-sm)}.admin-journey-filters label{display:grid;gap:.3rem;min-width:145px;color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.admin-journey-filters select,.admin-journey-filters input{min-height:2.35rem;padding:.4rem .55rem;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:var(--paper);font:inherit}.admin-journey-filters .admin-journey-search{min-width:min(310px,100%);flex:1 1 240px}.admin-journey-content-link{max-width:290px;overflow:hidden;padding:0;border:0;color:var(--primary-hover);background:transparent;font:inherit;font-weight:700;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.admin-journey-content-link:hover,.admin-journey-content-link:focus-visible{text-decoration:underline}.admin-journey-report-content-preview{max-width:360px;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere}.admin-journey-action-reason{min-width:min(280px,100%);flex:1 1 220px}.admin-report-reason-input{width:min(220px,18vw);min-width:150px;padding:.45rem .55rem;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:var(--paper);font:inherit;font-size:var(--text-sm)}.admin-status-pill{display:inline-flex;align-items:center;padding:.2rem .45rem;border-radius:999px;font-size:var(--text-xs);font-weight:800}.admin-status-pill.visible{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}.admin-status-pill.hidden{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.admin-journey-detail{display:grid;gap:.65rem;margin-top:var(--space-lg);padding:var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-muted)}.admin-journey-detail header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md)}.admin-journey-detail h3,.admin-journey-detail p{margin:0}.admin-journey-detail-text{padding:.8rem;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);background:var(--paper);white-space:pre-wrap;overflow-wrap:anywhere}.admin-journey-review-backdrop{position:fixed;z-index:120;inset:0;display:grid;place-items:center;padding:1rem;background:#191e1f7a;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.admin-journey-review-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(720px,calc(100vw - 2rem));max-height:min(86dvh,760px);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);background:var(--paper);box-shadow:0 28px 80px #181f2047}.admin-journey-review-dialog>header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md);padding:1rem 1.1rem;border-bottom:1px solid var(--line);background:var(--paper-alt)}.admin-journey-review-dialog>header h3,.admin-journey-review-dialog>header p{margin:0}.admin-journey-review-dialog>header p{margin-top:.25rem;color:var(--text-secondary);font-size:var(--text-sm)}.admin-journey-review-body{display:grid;align-content:start;gap:.65rem;min-height:0;padding:1rem 1.1rem;overflow-y:auto;overscroll-behavior:contain}.admin-journey-moderation-actions{display:grid;gap:.35rem;padding-top:.7rem;border-top:1px solid var(--line)}.admin-journey-moderation-actions h4,.admin-journey-moderation-actions p{margin:0}.admin-journey-moderation-actions h4{font-size:var(--text-sm)}.admin-journey-moderation-actions p{color:var(--text-secondary);font-size:var(--text-sm)}.admin-journey-report-notes{display:grid;gap:.45rem;margin:0;padding-left:1.1rem;color:var(--text-secondary)}.admin-journey-report-notes small{display:block;color:var(--muted)}@media(max-width:560px){.admin-journey-review-backdrop{align-items:end;padding:0}.admin-journey-review-dialog{width:100%;max-height:90dvh;border-width:1px 0 0;border-radius:1.15rem 1.15rem 0 0}.admin-journey-review-dialog>header,.admin-journey-review-body{padding-right:.85rem;padding-left:.85rem}}@media(max-width:820px){.admin-journey-header{align-items:start;flex-direction:column}.admin-journey-metrics,.admin-journey-overview-grid{grid-template-columns:1fr}.admin-journey-tabs{width:100%}.admin-journey-tabs button{flex:1 1 auto}}.journey-post.panel{padding:3px}.journey-post .journey-editor{padding:2px}.user-avatar{display:grid;flex:0 0 auto;width:2.35rem;height:2.35rem;overflow:hidden;place-items:center;border:1px solid var(--primary-light);border-radius:50%;color:var(--primary-hover);background:var(--accent-10);font-family:var(--font-display);font-size:.82rem;font-weight:800;line-height:1}.user-avatar img{width:100%;height:100%;object-fit:cover}.user-avatar-sm{width:1.9rem;height:1.9rem;font-size:.68rem}.user-avatar-lg{width:4.75rem;height:4.75rem;font-size:1.55rem}.journey-author{display:flex;align-items:center;min-width:0;gap:.45rem}.journey-author>div:last-child{display:grid;min-width:0;gap:.12rem}.journey-post>header>.journey-author{display:flex;flex:1 1 auto;min-width:0}.journey-author strong,.journey-author strong a,.journey-author span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journey-heading>div:first-child{flex:1 1 auto;min-width:0}.journey-heading-actions{flex:0 0 auto}.journey-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:560px){.journey-title{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}}.journey-profile-avatar{float:left;margin:0 .7rem .25rem 0}.journey-comment>.user-avatar{margin-top:2px}.journey-comment-avatar{display:inline-flex;margin-top:2px;border-radius:50%;text-decoration:none}.journey-comment-avatar:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.journey-comment-author{color:inherit;text-decoration:none}.journey-comment-author:hover,.journey-comment-author:focus-visible{color:var(--primary-hover);text-decoration:underline}.journey-bravo-person>.user-avatar{flex:0 0 1.9rem}.profile-avatar-editor{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.55rem .7rem;padding:.1rem 0 .45rem}.profile-avatar-editor .action-link{justify-self:start;cursor:pointer}.profile-avatar-editor input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.profile-avatar-editor small{grid-column:2;color:var(--muted);font-size:var(--text-xs)}.profile-journey-url{color:var(--text-secondary);background:var(--surface-muted)}.journey-result-actions{display:flex;flex-wrap:nowrap;align-items:center;gap:.5rem;padding-top:.72rem;border-top:1px solid color-mix(in srgb,var(--accent) 20%,var(--line))}.journey-result-actions .action-link{display:inline-flex;flex:0 0 108px;width:108px;min-width:108px;min-height:2rem;align-items:center;justify-content:center;gap:.28rem;padding:.3rem .45rem;margin-top:0;font-size:.78rem;line-height:1;white-space:nowrap}@media(max-width:560px){.journey-result-actions .action-link{min-height:1.9rem;gap:.22rem;padding:.28rem .36rem;font-size:.72rem}}@media(max-width:560px){.db-app{width:calc(100% - 20px)}}@media(max-width:560px){.journey-result{gap:.65rem;padding:.82rem}.journey-result-main{grid-template-columns:1fr;gap:.65rem}.journey-result-score{justify-self:start}}.journey-reaction-control{position:relative}.journey-actions .journey-reaction-picker{position:absolute;z-index:4;bottom:calc(100% + .45rem);left:0;display:flex;align-items:end;gap:.25rem;max-width:min(94vw,520px);padding:.4rem;overflow-x:auto;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));border-radius:1rem;background:color-mix(in srgb,var(--paper) 96%,var(--accent) 4%);box-shadow:0 12px 28px var(--ink-15)}.journey-actions .journey-reaction-picker button{display:grid;flex:0 0 auto;gap:.08rem;min-width:3.45rem;padding:.3rem .38rem;border:0;border-radius:.7rem;background:transparent;color:var(--text-secondary);font-size:1.2rem}.journey-actions .journey-reaction-picker button:hover,.journey-actions .journey-reaction-picker button:focus-visible,.journey-actions .journey-reaction-picker button.active{color:var(--primary-hover);background:var(--accent-6)}.journey-actions .journey-reaction-picker small{color:currentColor;font-size:.64rem;line-height:1.1;white-space:nowrap}.journey-bravo-reaction{display:grid;width:1.6rem;height:1.6rem;place-items:center;border-radius:50%;background:var(--accent-6);font-size:1rem}.journey-actions .journey-share-icon{display:grid;width:2rem;height:2rem;place-items:center;padding:0}@media(max-width:560px){.journey-actions .journey-share-icon{width:1.9rem;height:1.9rem}}.learner-page-frame{width:100%;max-width:none;margin-inline:0}.journey-actions .journey-share-facebook{color:#1877f2;border-color:color-mix(in srgb,#1877f2 35%,var(--line))}.journey-actions .journey-share-zalo{color:#0068ff;border-color:color-mix(in srgb,#0068ff 35%,var(--line))}.journey-actions .journey-share-facebook:hover,.journey-actions .journey-share-facebook:focus-visible{background:color-mix(in srgb,#1877f2 10%,var(--paper))}.journey-actions .journey-share-zalo:hover,.journey-actions .journey-share-zalo:focus-visible{background:color-mix(in srgb,#0068ff 10%,var(--paper))}.journey-profile-achievements{display:grid;gap:.7rem;border-color:color-mix(in srgb,var(--accent) 30%,var(--line));background:linear-gradient(135deg,var(--accent-6),var(--paper))}.journey-profile-achievements header{display:flex;align-items:center;justify-content:space-between;gap:.7rem}.journey-profile-achievements h2,.journey-profile-achievements p{margin:0}.journey-profile-achievements h2{display:flex;align-items:center;gap:.4rem;color:var(--primary-hover);font-family:var(--font-display)}.journey-profile-achievements header p{margin-top:.2rem;color:var(--muted);font-size:var(--text-sm)}.journey-profile-achievements ul{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.45rem;margin:0;padding:0;list-style:none}.journey-profile-achievements li{display:flex;align-items:center;gap:.45rem;min-width:0;padding:.5rem .6rem;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:var(--radius-sm);background:color-mix(in srgb,var(--paper) 90%,var(--accent) 10%)}.journey-profile-achievements li>svg{flex:0 0 auto;color:var(--primary-hover)}.journey-profile-achievements li span{display:grid;min-width:0}.journey-profile-achievements li strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm)}.journey-profile-achievements li small,.journey-achievements-empty{color:var(--muted);font-size:var(--text-xs)}.journey-achievements-empty{margin:0}.connections-screen{display:grid;gap:var(--page-section-gap);margin:0 auto}.connections-screen .eyebrow{margin-bottom:0}.connections-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-md)}.connections-heading>div{flex:1 1 auto;min-width:0}.connections-heading h1,.connections-heading p{margin:0}.connections-heading h1{margin-top:.2rem;font-family:var(--font-display)}.connections-heading p{max-width:none;margin-top:0;color:var(--muted)}.connections-search{display:grid;gap:var(--space-md)}.connections-search-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.connections-search-heading h2,.connections-search-heading p{margin:0}.connections-search-heading h2{margin-top:.2rem;font-size:1.1rem}.connections-search-heading p{margin-top:.35rem;color:var(--text-secondary);line-height:1.5}.connections-search-heading>svg{flex:0 0 auto;color:var(--primary-hover)}.connections-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:.6rem}.connections-search-form label{position:relative;display:grid;min-width:0}.connections-search-form label>svg{position:absolute;top:50%;left:.6rem;color:var(--muted);pointer-events:none;transform:translateY(-50%)}.connections-search-form input,.connections-search-form>button{height:2.7rem;box-sizing:border-box}.connections-search-form input{padding-left:2rem}.connections-search-results{display:grid;gap:.5rem}.connections-search-person{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:.65rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-alt)}.connections-search-person:hover{background:var(--surface-muted)}.connections-search-person .connection-person-main{flex:1 1 auto}.connections-search-person-actions{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.4rem}.connections-search-person-actions .action-link{min-height:2.2rem;padding:.4rem .65rem;font-size:var(--text-sm)}.connections-search-error{margin:0;color:var(--danger);font-size:var(--text-sm)}.connections-search-empty{margin:0;color:var(--muted);font-size:var(--text-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:560px){.connections-search-form{grid-template-columns:1fr}.connections-search-person{align-items:flex-start;flex-direction:column}.connections-search-person-actions{width:100%;justify-content:flex-start}.connections-search-person-actions .action-link{flex:1 1 0;justify-content:center}}.connections-tabs{display:flex;flex-wrap:wrap;gap:.4rem;padding:.35rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper)}.connections-tabs button{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem .65rem;border:0;border-radius:calc(var(--radius-sm) - 2px);color:var(--text-secondary);background:transparent;font:inherit;font-size:var(--text-sm);font-weight:700;cursor:pointer}.connections-tabs button:hover,.connections-tabs button:focus-visible,.connections-tabs button.active{color:var(--primary-hover);background:var(--accent-10)}.connections-tabs b{min-width:1.4rem;padding:.05rem .35rem;border-radius:999px;color:inherit;background:var(--paper-alt);font-size:var(--text-xs);text-align:center}.connections-list{display:grid;gap:.55rem}.connection-person{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:.8rem}.connection-person-main{display:flex;align-items:center;min-width:0;gap:.65rem;color:inherit;text-decoration:none}.connection-person-main>span:last-child{display:grid;min-width:0;gap:.12rem}.connection-person-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connection-person-main small,.connection-person-main em{overflow:hidden;color:var(--muted);font-size:var(--text-xs);font-style:normal;text-overflow:ellipsis;white-space:nowrap}.connection-avatar{display:grid;flex:0 0 2.35rem;width:2.35rem;height:2.35rem;place-items:center;border:1px solid var(--primary-light);border-radius:50%;color:var(--primary-hover);background:var(--accent-10);font-weight:800}.connection-viewed{display:inline-flex;align-items:center;gap:.25rem}.connection-actions{display:flex;flex:0 0 auto;align-items:center;justify-content:end;gap:.4rem}.connection-actions .action-link{min-height:2.25rem;padding:.4rem .65rem;font-size:var(--text-sm)}.connection-badge{display:inline-flex;align-items:center;gap:.35rem;min-height:2.25rem;padding:.4rem .65rem;border:1px solid var(--primary-light);border-radius:var(--radius-sm);color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-sm);font-weight:700}.connection-block{color:var(--muted)}.connection-block:hover,.connection-block:focus-visible{color:var(--danger, #b42318);border-color:color-mix(in srgb,#b42318 35%,var(--line))}.connections-privacy{display:flex;align-items:center;gap:var(--space-md)}.connections-privacy>div{display:flex;align-items:start;width:100%;gap:.6rem}.connections-privacy svg{flex:0 0 auto;margin-top:.15rem;color:var(--primary-hover)}.connections-privacy strong{display:block}.connections-privacy p{max-width:none;margin:.2rem 0 0;color:var(--muted);font-size:var(--text-sm)}.connections-state{display:grid;justify-items:start;gap:.6rem}.connections-state h1,.connections-state h2,.connections-state p{margin:0}.connections-state p{color:var(--text-secondary)}.profile-toggle{gap:.45rem!important}.profile-toggle input{width:auto;margin:0 .45rem 0 0}.profile-toggle small{display:block;color:var(--muted);font-weight:400}.discovery-panel{display:grid;gap:var(--space-md)}.discovery-hero{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:clamp(1rem,3vw,1.5rem);border-color:color-mix(in srgb,var(--primary) 24%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--accent-10) 72%,var(--paper)),var(--paper))}.discovery-hero h2,.discovery-hero p{margin:0}.discovery-hero h2{margin-top:.25rem;font-size:clamp(1.1rem,2.5vw,1.4rem)}.discovery-hero p{max-width:580px;margin-top:.35rem;color:var(--text-secondary);line-height:1.5}.discovery-viewer-activity{display:flex;flex:0 0 auto;align-items:center;gap:.6rem;max-width:250px;padding:.65rem .75rem;border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));border-radius:var(--radius-sm);background:var(--paper-alt)}.discovery-viewer-activity>svg{flex:0 0 auto;color:var(--primary-hover)}.discovery-viewer-activity span{display:grid;gap:.1rem;min-width:0}.discovery-viewer-activity strong,.discovery-viewer-activity small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.discovery-viewer-activity small{color:var(--muted);font-size:var(--text-xs)}.discovery-groups{display:grid;gap:var(--space-md)}.discovery-group{padding:0;overflow:hidden}.discovery-group>header{display:flex;align-items:start;justify-content:space-between;gap:var(--space-md);padding:1rem 1rem .8rem;border-bottom:1px solid color-mix(in srgb,var(--accent) 12%,var(--line));background:color-mix(in srgb,var(--accent-5) 72%,var(--paper))}.discovery-group>header h2,.discovery-group>header p{margin:0}.discovery-group>header h2{margin-top:.18rem;font-size:1rem}.discovery-group>header p{margin-top:.25rem;color:var(--muted);font-size:var(--text-sm)}.discovery-group>header>svg{flex:0 0 auto;color:var(--primary-hover)}.discovery-people{display:grid}.discovery-person{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:.7rem 1rem;border-top:1px solid color-mix(in srgb,var(--line) 74%,transparent)}.discovery-person:first-child{border-top:0}.discovery-person:hover{background:color-mix(in srgb,var(--accent-3) 72%,transparent)}.discovery-activity{display:inline-flex!important;align-items:center;gap:.25rem;color:var(--primary-hover)!important;font-weight:700}.discovery-actions{display:flex;flex:0 0 auto;align-items:center;gap:.4rem}.discovery-actions .action-link{min-height:2.2rem;padding:.4rem .65rem;font-size:var(--text-sm)}.discovery-dismiss{color:var(--muted)}.discovery-dismiss:hover,.discovery-dismiss:focus-visible{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-10)}.discovery-empty{justify-items:start;padding:1.4rem}.discovery-empty-mark{display:inline-flex;align-items:center;gap:.45rem;color:var(--primary-hover);font-size:var(--text-sm);font-weight:750}.discovery-empty-mark svg{flex:0 0 auto}@media(max-width:640px){.connections-heading{display:grid;align-items:start}.connections-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.connections-tabs button{justify-content:center}.connection-person,.discovery-person{align-items:start;flex-direction:column}.connection-actions,.discovery-actions{width:100%;justify-content:start}.connections-privacy,.discovery-hero{align-items:start;flex-direction:column}.discovery-viewer-activity{max-width:none;width:100%}.journey-heading-actions{justify-content:start}}.discovery-empty-mark .eyebrow{margin-bottom:0}.connections-tabs-primary,.connections-tabs-secondary{display:contents}.connections-tabs b{display:inline-flex;align-items:center;justify-content:center;height:1.35rem;line-height:1}.connections-tabs button.active b{color:var(--primary-hover);border:1px solid var(--primary-light);background:var(--paper)}@media(max-width:640px){.connections-tabs{display:grid;grid-template-columns:1fr;gap:.5rem}.connections-tabs-primary{display:block;min-width:0}.connections-tabs-primary .connections-tab{width:100%;min-height:3rem;justify-content:flex-start;padding:.75rem .85rem;font-size:.95rem}.connections-tabs-secondary{display:flex;min-width:0;gap:.4rem;margin:0 -.1rem -.15rem;padding:0 .1rem .15rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.connections-tabs-secondary .connections-tab{flex:0 0 auto;min-height:2.65rem;white-space:nowrap}}.journey-post-list{width:100%;margin-inline:0;gap:14px}.journey-post.panel{gap:0;padding:20px 22px;overflow:visible;border-color:color-mix(in srgb,var(--line) 76%,transparent);border-radius:14px;background:var(--paper);box-shadow:0 1px 2px var(--ink-4),0 8px 24px color-mix(in srgb,var(--ink) 5%,transparent);-webkit-backdrop-filter:none;backdrop-filter:none}.journey-post-header{align-items:center;margin-bottom:14px}.journey-post-header .journey-author{gap:.7rem}.journey-post-header .journey-author>.user-avatar{width:2.65rem;height:2.65rem}.journey-post-header strong{margin-left:0;font-size:.98rem;line-height:1.25}.journey-post-header .journey-author span{margin-top:.12rem;font-size:.75rem}.journey-post-menu-trigger{display:grid;flex:0 0 2.25rem;width:2.25rem;height:2.25rem;place-items:center;padding:0;border:0;border-radius:50%;color:var(--muted);background:transparent;cursor:pointer}.journey-post-menu-trigger:hover,.journey-post-menu-trigger:focus-visible{color:var(--ink);background:var(--surface-muted)}.journey-post-menu-control{position:relative;flex:0 0 auto}.journey-post-options-menu{position:absolute;z-index:6;top:calc(100% + 6px);right:0;display:grid;width:190px;padding:6px;border:1px solid var(--line);border-radius:.75rem;background:var(--paper-alt);box-shadow:0 14px 36px var(--ink-15)}.journey-post-options-menu button{display:inline-flex;min-height:2.35rem;align-items:center;gap:.45rem;padding:.48rem .65rem;border:0;border-radius:.5rem;color:var(--text-secondary);background:transparent;font:inherit;font-size:.8rem;font-weight:700;text-align:left;cursor:pointer}.journey-post-options-menu button:hover,.journey-post-options-menu button:focus-visible{color:var(--primary-hover);background:var(--accent-6)}.journey-post-options-menu button.danger{color:var(--danger)}.journey-caption{margin:0 0 14px;color:var(--ink);font-size:1rem;line-height:1.58}.journey-result{gap:14px;padding:16px 0;overflow:visible;border-width:1px 0;border-color:color-mix(in srgb,var(--line) 78%,transparent);border-radius:0;background:transparent;box-shadow:none}.journey-result:before{display:none}.journey-result-main{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:22px}.journey-result-heading{align-items:center;gap:.65rem}.journey-result-icon{width:2rem;height:2rem;border-radius:50%;background:var(--accent-10)}.journey-result-kicker{font-size:.68rem;letter-spacing:.07em}.journey-result h3{margin-top:.22rem;font-size:clamp(1.2rem,2.5vw,1.48rem)}.journey-result-heading p{margin-top:.2rem}.journey-result-metrics{display:flex;align-items:stretch}.journey-result-metrics>div{display:grid;min-width:76px;align-content:center;gap:.12rem;padding:0 16px;border-left:1px solid var(--line)}.journey-result-metrics>div:first-child{padding-left:0;border-left:0}.journey-result-metrics>div:last-child{padding-right:0}.journey-result-metrics strong{color:var(--ink);font-family:var(--font-display);font-size:1.45rem;line-height:1}.journey-result-metrics .featured strong{color:var(--primary-hover);font-size:1.75rem}.journey-result-metrics span{color:var(--muted);font-size:.67rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.journey-result-actions{gap:.9rem;padding-top:0;border-top:0}.journey-result-actions .action-link{flex-basis:auto;width:auto;min-width:0;min-height:2.15rem;padding:.38rem .72rem;border-radius:.55rem}.journey-result-actions .action-link.secondary{padding-inline:.15rem;border-color:transparent;background:transparent;box-shadow:none}.journey-social-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;padding:8px 1px 6px;color:var(--muted);font-size:.78rem}.journey-social-summary button{padding:0;border:0;color:inherit;background:transparent;font:inherit;cursor:pointer}.journey-social-summary button:hover,.journey-social-summary button:focus-visible{color:var(--primary-hover);text-decoration:underline}.journey-social-summary button:disabled{color:inherit;cursor:default;opacity:1;text-decoration:none}.journey-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;overflow:visible;padding:4px 0;border-block:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.journey-actions.with-share{grid-template-columns:repeat(3,minmax(0,1fr))}.journey-actions>.journey-reaction-control,.journey-actions>.journey-share-control{min-width:0}.journey-actions button,.journey-actions>span{display:inline-flex;width:100%;min-height:2.3rem;justify-content:center;gap:.4rem;padding:.42rem .5rem;border:0;border-radius:.45rem;background:transparent;font-size:.8rem;font-weight:700}.journey-actions button:hover:not(:disabled),.journey-actions button:focus-visible{color:var(--primary-hover);background:var(--accent-6)}.journey-actions button:disabled{cursor:default;opacity:.5}.journey-actions button.active{border-color:transparent;background:var(--accent-6)}.journey-actions .journey-reaction-picker button{width:auto;min-width:3.45rem}.journey-share-control{position:relative}.journey-share-menu{position:absolute;z-index:5;top:calc(100% + 6px);right:0;display:grid;width:180px;padding:6px;border:1px solid var(--line);border-radius:.75rem;background:var(--paper-alt);box-shadow:0 14px 36px var(--ink-15)}.journey-actions .journey-share-menu button{justify-content:flex-start;min-height:2.25rem;padding-inline:.65rem}.journey-share-menu button:nth-child(2) svg{color:#1877f2}.journey-share-menu button:nth-child(3) svg{color:#0068ff}.journey-comments-section{gap:0;padding-top:12px;border-top:0}.journey-comments-heading{display:none}.journey-comments{gap:.7rem;padding:2px 0 10px}.journey-comment{gap:.65rem}.journey-comment-bubble{padding:0;border:0;border-radius:0;background:transparent}.journey-comment-heading{grid-template-columns:minmax(0,auto) auto auto;justify-content:start;gap:.45rem}.journey-comment-heading strong{font-size:.82rem}.journey-comment-heading time{font-size:.68rem}.journey-comment-bubble p{margin-top:.15rem;color:var(--ink);font-size:.85rem;line-height:1.45}.journey-comment-tools{opacity:0;pointer-events:none;transition:opacity .15s ease}.journey-comment:hover .journey-comment-tools,.journey-comment:focus-within .journey-comment-tools{opacity:1;pointer-events:auto}.journey-comment-thank-row{display:flex;min-height:1.35rem;align-items:center;gap:.22rem;margin-top:.22rem;opacity:0;pointer-events:none;transition:opacity .15s ease}.journey-comment:hover .journey-comment-thank-row,.journey-comment:focus-within .journey-comment-thank-row,.journey-comment-thank-row.has-thanks{opacity:1;pointer-events:auto}.journey-comment-thank,.journey-comment-thank-count{display:inline-flex;min-height:1.35rem;align-items:center;gap:.22rem;padding:.08rem .2rem;border:0;border-radius:.35rem;color:var(--muted);background:transparent;font:inherit;font-size:.7rem;font-weight:700;cursor:pointer}.journey-comment-thank:hover:not(:disabled),.journey-comment-thank:focus-visible,.journey-comment-thank.active{color:var(--accent-gold, #b7791f);background:color-mix(in srgb,var(--accent-gold, #b7791f) 14%,transparent)}.journey-comment-thank.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-gold, #b7791f) 30%,transparent)}.journey-comment-thank.active>span{transform:scale(1.08)}.journey-comment-thank:disabled{cursor:wait;opacity:.55}.journey-comment-thank-static{display:inline-grid;width:1.35rem;height:1.35rem;place-items:center;font-size:.82rem}.journey-comment-thank-count{min-width:1.25rem;justify-content:center;padding-inline:.28rem;color:var(--text-secondary);background:var(--surface-muted)}.journey-comment-thank-count:hover,.journey-comment-thank-count:focus-visible{color:var(--primary-hover);text-decoration:underline}.journey-comment-thank-error{display:block;margin-top:.2rem;color:var(--danger);font-size:.68rem}.journey-comments-empty{padding:.35rem 0 .65rem 2.55rem;border:0;background:transparent;text-align:left}.journey-comments-more{justify-self:start;min-height:auto;margin:0 0 10px 2.55rem;padding:.15rem 0;border:0;border-radius:0;background:transparent;font-size:.78rem}.journey-comments-more:hover,.journey-comments-more:focus-visible{border-color:transparent;background:transparent;text-decoration:underline}.journey-report-post{margin:0 0 8px 2.55rem;opacity:.7}.journey-comment-form{grid-template-columns:auto minmax(0,1fr);gap:.55rem;padding:8px 0 0;border:0;border-radius:0;background:transparent}.journey-comment-composer-avatar{margin-top:.18rem}.journey-comment-composer{border-radius:1.25rem;background:var(--paper-alt);box-shadow:none}.journey-comment-form:not(.expanded) .journey-comment-composer{border-color:color-mix(in srgb,var(--line) 82%,transparent)}.journey-comment-form:not(.expanded) .journey-comment-input textarea{min-height:2.45rem;padding:.58rem .8rem;resize:none;line-height:1.25}.journey-comment-form.expanded .journey-comment-composer{border-radius:.8rem}.journey-comment-form.expanded .journey-comment-input textarea{min-height:4.25rem}.journey-comment-controls{background:color-mix(in srgb,var(--paper-alt) 88%,transparent)}.journey-comment-suggestions{grid-column:2;padding-top:.15rem}@media(max-width:700px){.journey-post-list{width:100%}.journey-post.panel{padding:16px 14px;border-radius:12px}.journey-result-main{grid-template-columns:1fr;align-items:start;gap:14px}.journey-result-metrics{width:100%}.journey-result-metrics>div{flex:1;min-width:0;padding-inline:12px}.journey-result-metrics>div:first-child{padding-left:0}.journey-result-metrics>div:last-child{padding-right:0}.journey-result-actions .action-link{min-height:2.1rem;font-size:.76rem}.journey-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.journey-actions.with-share{grid-template-columns:repeat(3,minmax(0,1fr))}.journey-actions button{min-height:2.35rem;padding-inline:.25rem;font-size:.74rem}.journey-comment-form{grid-template-columns:auto minmax(0,1fr);padding:8px 0 0}.journey-comment-composer-avatar{display:grid}.journey-comment-suggestions{grid-column:2}}@media(max-width:420px){.journey-post.panel{padding-inline:12px}.journey-result-icon{display:none}.journey-result-metrics strong{font-size:1.25rem}.journey-result-metrics .featured strong{font-size:1.5rem}.journey-actions button{font-size:.7rem}}@media(hover:none){.journey-comment-tools,.journey-comment-thank-row{opacity:1;pointer-events:auto}}.journey-thanks-dialog{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(420px,calc(100vw - 2rem));max-height:min(70dvh,540px);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--ink);background:var(--paper);box-shadow:0 24px 64px var(--ink-15)}.journey-thanks-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:1rem 1.1rem;border-bottom:1px solid var(--line);background:var(--paper-alt)}.journey-thanks-dialog h2{display:flex;align-items:center;gap:.45rem;margin:0;font-size:var(--text-xl)}.journey-thanks-dialog h2 small{display:grid;min-width:1.6rem;height:1.6rem;place-items:center;padding:0 .35rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs)}.journey-thanks-scroll{display:grid;align-content:start;gap:.25rem;min-height:8rem;padding:.65rem;overflow-y:auto;overscroll-behavior:contain}.journey-thanks-person{display:flex;align-items:center;gap:.6rem;min-height:2.8rem;padding:.45rem .55rem;border-radius:.6rem}.journey-thanks-person:hover{background:var(--surface-muted)}.journey-thanks-person>a,.journey-thanks-person>span{display:grid;min-width:0;gap:.08rem;color:inherit;text-decoration:none}.journey-thanks-person>a:hover,.journey-thanks-person>a:focus-visible{color:var(--primary-hover);text-decoration:underline}.journey-thanks-person small{color:var(--muted);font-size:var(--text-xs)}.attempt-history-screen{padding:16px 18px;gap:var(--page-section-gap)}.attempt-history-screen>.profile-section-heading{gap:10px}.attempt-history-screen h1{font-size:clamp(1.7rem,4vw,2.2rem)}.attempt-group-list{gap:0}.attempt-group{overflow:visible;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.attempt-group:first-child{border-top:0}.attempt-group-summary{align-items:flex-start;gap:8px;padding:9px 0 7px}.attempt-group-summary>span:first-child{gap:3px}.attempt-group-summary strong{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;font-size:var(--text-md)}.attempt-group-context{margin-bottom:2px;padding:2px 6px}.attempt-group-stats{display:flex;align-items:baseline;justify-content:flex-end;flex-wrap:wrap;gap:3px 10px}.attempt-group-stats b,.attempt-group-stats time{white-space:normal}.attempt-group .attempt-history-list{display:grid;gap:0;padding:0}.attempt-group .attempt-history-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 0;border:0;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent);border-radius:0;background:transparent}.attempt-group .attempt-history-list li>div:first-child{min-width:0;display:grid;gap:2px}.attempt-group .attempt-history-list li>div:first-child strong{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.attempt-group .attempt-history-list li>div:first-child span{white-space:nowrap}.attempt-group .profile-attempt-result{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:5px 9px}.attempt-group .profile-attempt-result>span{white-space:nowrap}.attempt-group .profile-attempt-result .plain-link{min-height:27px;padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:var(--text-secondary);background:var(--paper)}.attempt-group .profile-attempt-result .plain-link:hover,.attempt-group .profile-attempt-result .plain-link:focus-visible{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-6)}.attempt-history-more{margin-top:4px}@media(max-width:600px){.attempt-history-screen{padding:12px 10px;gap:var(--page-section-gap);border-radius:12px}.attempt-history-screen>.profile-section-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.attempt-history-screen h1{font-size:1.7rem}.attempt-group-summary{flex-direction:column;gap:4px;padding:7px 0 5px}.attempt-group-stats{justify-content:flex-start;gap:2px 8px}.attempt-group .attempt-history-list li{grid-template-columns:1fr;gap:3px;padding:6px 0}.attempt-group .attempt-history-list li>div:first-child span{white-space:normal}.attempt-group .profile-attempt-result{justify-content:flex-start}.attempt-group .profile-attempt-result>span{margin-right:auto}.attempt-group .profile-attempt-result .plain-link{min-height:27px;padding:3px 6px;font-size:var(--text-xs)}}.profile-history .profile-attempt-list li.attempt-activity-row,.attempt-group .attempt-history-list li.attempt-activity-row{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;column-gap:8px;row-gap:3px;padding:6px 0}.profile-history .profile-attempt-list li .attempt-activity-main,.attempt-group .attempt-history-list li .attempt-activity-main{display:flex;align-items:center;flex-wrap:nowrap;flex:1 1 210px;min-width:0;gap:7px}.attempt-activity-status{display:inline-flex;flex:0 0 auto;min-height:22px;align-items:center;gap:4px;padding:2px 6px;border-radius:999px;font-size:var(--text-xs);font-weight:750;line-height:1.15;white-space:nowrap}.attempt-activity-status svg{flex:0 0 auto}.attempt-activity-status{width:18px;height:18px;min-height:18px;justify-content:center;padding:0;border-radius:50%;font-size:0}.attempt-activity-status.practice{color:var(--primary-hover);background:var(--accent-10)}.attempt-activity-status.test{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,var(--paper))}.attempt-activity-meta{display:flex;flex:1 1 210px;align-items:baseline;min-width:0;overflow:hidden;flex-wrap:nowrap;gap:2px 6px;color:var(--muted);font-size:var(--text-sm);line-height:1.3}.attempt-activity-meta time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attempt-activity-meta>strong{color:var(--primary-hover);font-weight:750;white-space:nowrap}.profile-history .profile-attempt-list li.attempt-activity-row>.attempt-activity-actions,.attempt-group .attempt-history-list li.attempt-activity-row>.attempt-activity-actions{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:6px}.attempt-activity-action{display:inline-flex;min-height:27px;align-items:center;justify-content:center;gap:4px;padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:var(--text-secondary);background:var(--paper);font-size:var(--text-sm);line-height:1;white-space:nowrap}.attempt-activity-action svg{flex:0 0 auto}.attempt-activity-action:hover,.attempt-activity-action:focus-visible{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-6)}.attempt-status-legend{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;margin:-4px 0 0;color:var(--muted);font-size:var(--text-xs);line-height:1.3}.attempt-status-legend span{display:inline-flex;align-items:center;gap:4px}.attempt-status-legend svg{color:var(--primary-hover)}@media(max-width:600px){.profile-history .profile-attempt-list li.attempt-activity-row,.attempt-group .attempt-history-list li.attempt-activity-row{display:flex;gap:3px 8px;padding:6px 0}.attempt-activity-meta{flex-basis:210px}.attempt-activity-meta{gap:2px 5px}.attempt-activity-actions{justify-content:flex-start}.attempt-activity-action{min-height:27px;padding:3px 6px;font-size:var(--text-xs)}}.profile-weekly-recap-card{border:1px solid color-mix(in srgb,var(--accent) 25%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--panel)),var(--panel))}.profile-weekly-recap-summary{display:flex;align-items:baseline;gap:var(--space-md);flex-wrap:wrap;margin:var(--space-sm) 0 var(--space-md)}.profile-weekly-recap-summary strong{color:var(--accent-strong);font-size:clamp(1.8rem,4vw,2.5rem)}.profile-weekly-recap-summary span{color:var(--muted)}.profile-weekly-recap-summary b{color:var(--muted);font-size:var(--text-sm)}.profile-weekly-recap-summary b.is-met{color:var(--success, #287c60)}.profile-weekly-recap-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm)}.profile-weekly-recap-stats span{display:grid;gap:2px;padding:var(--space-sm);border-radius:var(--radius-md);background:color-mix(in srgb,var(--panel-strong) 75%,transparent);color:var(--muted);font-size:var(--text-sm)}.profile-weekly-recap-stats b{color:var(--ink);font-size:var(--text-lg)}.profile-weekly-recap-highlight{margin:var(--space-md) 0;color:var(--ink)}.profile-weekly-recap-card>.action-link{width:fit-content}.profile-weekly-recap-empty p{color:var(--muted)}@media(max-width:640px){.profile-weekly-recap-stats{grid-template-columns:1fr}}.profile-weekly-recap-card{position:relative;isolation:isolate;overflow:hidden;gap:0;padding:clamp(20px,3vw,30px);border:1px solid color-mix(in srgb,var(--primary) 18%,var(--line));border-radius:22px;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 8%,var(--paper)),var(--paper) 62%,color-mix(in srgb,var(--accent) 7%,var(--paper)));box-shadow:0 16px 42px color-mix(in srgb,var(--ink) 8%,transparent)}.profile-weekly-recap-card:before{position:absolute;z-index:-1;top:-90px;right:-45px;width:230px;height:230px;content:"";background:radial-gradient(circle,color-mix(in srgb,var(--accent) 18%,transparent),transparent 68%);pointer-events:none}.profile-weekly-recap-card .profile-section-heading{align-items:center;margin-bottom:3px}.profile-weekly-recap-heading{gap:12px}.profile-weekly-recap-heading h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-weekly-recap-controls{display:inline-flex;flex:0 0 auto;align-items:center;gap:4px}.profile-weekly-recap-controls .icon-button{width:35px;height:35px;color:var(--muted);background:color-mix(in srgb,var(--paper) 86%,transparent);border-color:color-mix(in srgb,var(--line) 72%,transparent)}.profile-weekly-recap-controls .icon-button:hover:not(:disabled),.profile-weekly-recap-controls .icon-button:focus-visible{color:var(--primary);border-color:color-mix(in srgb,var(--primary) 42%,var(--line));background:var(--paper)}.profile-weekly-recap-controls .icon-button:disabled{opacity:.35;cursor:not-allowed}.profile-weekly-recap-controls .profile-weekly-recap-play{color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,var(--paper));border-color:color-mix(in srgb,var(--primary) 26%,var(--line))}.profile-weekly-recap-period{display:block;margin-top:2px;color:var(--muted);font-size:var(--text-xs);letter-spacing:.02em}.profile-weekly-recap-summary{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:15px;row-gap:3px;margin:22px 0 20px}.profile-weekly-recap-summary strong{grid-row:span 2;color:var(--primary);font-size:clamp(2.4rem,6vw,3.8rem);font-weight:780;letter-spacing:-.07em;line-height:.95}.profile-weekly-recap-summary span{color:var(--ink);font-size:var(--text-md);font-weight:650}.profile-weekly-recap-summary b{color:var(--muted);font-size:var(--text-sm);font-weight:600}.profile-weekly-recap-summary b.is-met{color:var(--ok, #287c60)}.profile-weekly-recap-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:14px 0;border-top:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 80%,transparent)}.profile-weekly-recap-stats span{min-width:0;gap:3px;padding:0 16px;background:transparent;border:0;border-right:1px solid color-mix(in srgb,var(--line) 75%,transparent);border-radius:0;font-size:var(--text-xs);line-height:1.25}.profile-weekly-recap-stats span:first-child{padding-left:0}.profile-weekly-recap-stats span:last-child{padding-right:0;border-right:0}.profile-weekly-recap-stats b{font-size:1.25rem;font-weight:750}.profile-weekly-recap-highlight{margin:18px 0 0;padding:11px 13px;color:var(--ink);background:color-mix(in srgb,var(--accent) 9%,transparent);border-left:3px solid var(--accent);border-radius:0 11px 11px 0;font-size:var(--text-sm)}.profile-weekly-recap-card>.action-link{align-self:flex-start;margin-top:18px;border-radius:12px;box-shadow:0 7px 16px color-mix(in srgb,var(--primary) 18%,transparent)}.profile-weekly-recap-recommendation{display:inline-flex;min-width:0;max-width:100%;align-items:center}.profile-weekly-recap-recommendation>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-weekly-recap-empty{gap:10px;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 6%,var(--paper)),var(--paper) 70%)}.profile-weekly-recap-empty .profile-section-heading{margin-bottom:0}.profile-weekly-recap-empty .profile-weekly-recap-summary{margin:17px 0 14px}.profile-weekly-recap-empty .profile-weekly-recap-summary b{width:fit-content;padding:4px 8px;color:var(--muted);background:color-mix(in srgb,var(--line) 42%,transparent);border-radius:999px;font-size:var(--text-xs)}.profile-weekly-recap-empty>.action-link{margin-top:7px}@media(max-width:640px){.profile-weekly-recap-card{padding:19px;border-radius:18px}.profile-weekly-recap-summary{margin:19px 0 17px}.profile-weekly-recap-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-weekly-recap-stats span{padding:0 9px}.profile-weekly-recap-stats b{font-size:1.1rem}}@media(max-width:460px){.profile-weekly-recap-heading{gap:7px}.profile-weekly-recap-controls{gap:2px}.profile-weekly-recap-controls .icon-button{width:32px;height:32px}.profile-weekly-recap-heading h2{font-size:var(--text-lg)}}.admin-journey-post-readonly .journey-post-menu-control,.admin-journey-post-readonly .journey-actions,.admin-journey-post-readonly .journey-comment-form,.admin-journey-post-readonly .journey-result-actions button,.admin-journey-post-readonly .journey-share-control{pointer-events:none;opacity:.55}.admin-journey-post-readonly .journey-post-menu-control{display:none}.teaching-page{display:grid;gap:var(--page-section-gap);width:100%;min-width:0;max-width:100%;margin-inline:0}.teaching-hero{display:flex;align-items:flex-start;gap:var(--space-md);min-width:0;max-width:100%;padding:clamp(18px,3vw,28px);border:1px solid color-mix(in srgb,var(--primary) 20%,var(--line));border-radius:22px;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 9%,var(--paper)),var(--paper))}.teaching-hero>svg{flex:0 0 auto;color:var(--primary)}.teaching-hero>div{min-width:0}.teaching-hero h1,.teaching-hero p{margin:0}.teaching-hero p{margin-top:5px;color:var(--muted)}.teaching-hero>.icon-button{margin-left:auto}.teaching-hero-actions{display:flex;flex:1 1 auto;min-width:0;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.45rem;margin-left:auto}.teaching-hero-actions .action-link{min-height:2rem;padding:.35rem .65rem;font-size:var(--text-xs)}.teaching-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm)}.teaching-summary-grid article{gap:3px}.teaching-summary-grid strong{color:var(--primary);font-size:1.8rem}.teaching-summary-grid span{color:var(--muted);font-size:var(--text-sm)}.teaching-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);align-items:start}.teaching-form{display:grid;gap:var(--space-md)}.teaching-form h2{display:flex;align-items:center;gap:8px;margin:0}.teaching-form label{display:grid;gap:6px;color:var(--text-secondary);font-size:var(--text-sm);font-weight:650}.teaching-form input,.teaching-form select,.teaching-form textarea,.teaching-invite-url input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:var(--paper);font:inherit}.teaching-form textarea{min-height:90px;resize:vertical}.teaching-form-hint{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:1.45}.teaching-invite-url{display:grid;gap:8px}.teaching-invite-url label{position:relative}.teaching-invite-url .icon-button{position:absolute;right:4px;bottom:4px;width:32px;height:32px}.teaching-invite-result{display:flex;flex-wrap:wrap;align-items:flex-start;gap:18px}.teaching-invite-result>.teaching-invite-url{flex:1 1 280px;min-width:0}.teaching-invite-qr{display:grid;justify-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.teaching-invite-qr img{display:block;width:190px;height:190px;image-rendering:pixelated}.teaching-invite-qr .action-link{min-height:1.9rem;padding:.3rem .6rem;font-size:var(--text-xs)}.teaching-roster{display:grid;gap:var(--space-sm)}.teaching-roster>div,.teaching-roster>a{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.teaching-roster>a:hover,.teaching-roster>a:focus-visible{color:var(--ink);text-decoration:none;background:var(--accent-6);margin-inline:calc(var(--space-sm) * -1);padding-inline:var(--space-sm);border-radius:10px}.teaching-roster>a>span{display:grid;gap:3px;flex:1}.teaching-roster>a small{color:var(--muted);line-height:1.35}.teaching-section-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md)}.teaching-section-header>div{order:1;min-width:0}.teaching-section-header>.teacher-roster-toggle{order:2;flex:0 0 auto;align-self:center;margin:0}.teaching-section-header h2,.teaching-section-header p{margin:0}.teaching-section-header p{margin-top:4px;color:var(--muted);font-size:var(--text-sm)}.teacher-roster-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:10px 14px;padding:2px 0 10px}.teacher-roster-toggle{display:inline-flex;align-items:center;gap:.35rem;margin:0 0 .35rem auto;padding:.2rem .45rem;border:0;color:var(--primary-hover);background:transparent;font:inherit;font-size:var(--text-xs);font-weight:750;cursor:pointer}.teacher-roster-toggle svg{transition:transform .18s ease}.teacher-learners-section.is-collapsed .teacher-roster-toggle svg{transform:rotate(-90deg)}.teacher-learners-section.is-collapsed>.teacher-roster-toolbar,.teacher-learners-section.is-collapsed>.teacher-roster-filter-hint,.teacher-learners-section.is-collapsed>.teacher-roster-empty-hint,.teacher-learners-section.is-collapsed>.teacher-learner-grid,.teacher-learners-section.is-collapsed>.teacher-roster-pagination{display:none}.teacher-roster-empty-hint{margin:0;padding:.75rem 0 0;border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-sm)}.teacher-roster-search{display:flex;flex:1 1 280px;align-items:center;gap:8px;min-width:min(100%,280px);padding:8px 11px;border:1px solid var(--line);border-radius:10px;color:var(--muted);background:var(--paper)}.teacher-roster-search input{width:100%;min-width:0;padding:0;border:0;outline:0;color:var(--ink);background:transparent;font:inherit}.teacher-roster-search-button{flex:0 0 auto;min-height:1.9rem;padding:.25rem .55rem;font-size:var(--text-xs)}.teacher-roster-count{margin-left:auto;color:var(--muted);font-size:var(--text-sm);white-space:nowrap}.teacher-roster-filter-hint{margin:-4px 0 4px;color:var(--muted);font-size:var(--text-xs)}.teacher-roster-pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-sm)}.teacher-roster-pagination button:disabled{cursor:not-allowed;opacity:.45}.teaching-roster>.teacher-learner-grid{display:block;width:100%;max-width:100%;flex:0 0 100%;align-self:stretch}.teacher-learner-row{display:grid;width:100%;min-width:0;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent)}.teacher-learner-row:first-child{border-top:0}.teacher-learner-summary{display:flex;flex-wrap:wrap;align-items:center;gap:7px 12px;padding:14px 0;border-bottom:1px solid color-mix(in srgb,var(--accent) 14%,var(--line));background:transparent}.teacher-learner-identity{display:inline-flex;min-width:0;align-items:center;gap:8px;color:var(--ink);text-decoration:none;white-space:nowrap}.teacher-learner-identity .user-avatar{flex:0 0 auto}.teacher-learner-identity-copy{display:grid;min-width:0;gap:1px}.teacher-learner-identity-copy small{overflow:hidden;color:var(--muted);font-size:.68rem;font-weight:650;text-overflow:ellipsis}.teacher-learner-identity:hover,.teacher-learner-identity:focus-visible{color:var(--primary-hover);text-decoration:underline}.teacher-learner-identity strong{font-size:var(--text-lg)}.teacher-learner-activity{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:var(--text-xs);white-space:nowrap}.teacher-learner-started{color:var(--muted);font-size:var(--text-xs)}.teacher-learner-started{display:inline-flex;align-items:center;white-space:nowrap}.teaching-relationship-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1rem;margin-top:.2rem;color:var(--muted);font-size:var(--text-xs)}.teaching-relationship-meta>span{min-width:0;max-width:100%;white-space:nowrap}.teaching-relationship-meta>span:last-child{flex:1 1 240px;white-space:normal;overflow-wrap:anywhere}.teacher-action-badge{display:inline-flex;flex:0 0 auto;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;color:var(--error);background:color-mix(in srgb,var(--error) 12%,transparent);font-size:var(--text-xs);font-weight:800}.teacher-learner-stats{display:inline-flex;min-width:0;max-width:100%;flex-wrap:wrap;align-items:center;gap:7px}.teacher-learner-stats>span{display:inline-flex;align-items:baseline;gap:4px;padding-left:9px;border-left:1px solid color-mix(in srgb,var(--line) 82%,transparent);white-space:nowrap}.teacher-learner-stats>span:first-child{padding-left:0;border-left:0}.teacher-learner-stats strong{color:var(--primary-hover);font-size:1rem;line-height:1}.teacher-learner-stats small{color:var(--muted);font-size:.72rem}.teacher-learner-stats .has-alert strong{color:var(--error)}.teacher-last-update{display:inline-flex;min-width:0;max-width:100%;align-items:center;gap:6px;margin:0;color:var(--text-secondary);font-size:var(--text-xs);line-height:1.4}.teacher-last-update svg{flex:0 0 auto;color:var(--primary-hover)}.teacher-last-update span{min-width:0}.teacher-learner-assignments{display:grid;gap:0}.teacher-assignment-row{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:9px 0;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent)}.teacher-assignment-open{display:grid;grid-template-columns:minmax(0,1fr) auto auto;min-width:0;flex:1 1 360px;align-items:center;gap:10px;color:var(--ink);text-decoration:none}.teacher-assignment-open:hover,.teacher-assignment-open:focus-visible{color:var(--ink);background:var(--accent-6)}.teacher-assignment-main{display:grid;min-width:0}.teacher-assignment-main strong{overflow:hidden;color:var(--ink);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.teacher-assignment-main small{color:var(--muted);font-size:.7rem}.teacher-assignment-statuses{display:flex;min-width:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px}.teacher-assignment-status,.teacher-assignment-response{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:999px;font-size:.68rem;font-weight:750;line-height:1.15;white-space:nowrap}.teacher-assignment-status.complete{color:var(--success, #287c60);background:color-mix(in srgb,var(--success, #287c60) 12%,transparent)}.teacher-assignment-status.review{color:var(--error);background:color-mix(in srgb,var(--error) 11%,transparent)}.teacher-assignment-status.active{color:var(--primary-hover);background:var(--accent-10)}.teacher-assignment-status.pending,.teacher-assignment-status.muted{color:var(--muted);background:var(--surface-muted)}.teacher-assignment-response{color:var(--primary-hover);background:color-mix(in srgb,var(--primary) 10%,transparent)}.teacher-assignment-mini-stats{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--muted)}.teacher-assignment-mini-stats>span{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap}.teacher-assignment-mini-stats strong{color:var(--primary-hover);font-size:.72rem}.teacher-assignment-mini-stats small{font-size:.67rem}.teacher-assignment-mini-stats .has-alert strong{color:var(--error)}.teacher-assignment-open>time{color:var(--muted);font-size:.68rem;white-space:nowrap}.teacher-assignment-empty{margin:0;padding:10px 0 14px;color:var(--muted);font-size:var(--text-sm)}.teacher-assign-button{min-height:1.85rem;padding:.22rem .55rem;font-size:var(--text-xs)}.teacher-relationship-actions{display:inline-flex;min-width:0;flex-wrap:wrap;align-items:center;gap:4px 9px}.teacher-relationship-actions .plain-link{display:inline-flex;align-items:center;gap:4px;min-height:1.75rem;padding:2px 0;font-size:var(--text-xs);white-space:nowrap}.teacher-history-only{color:var(--muted);font-size:var(--text-xs);font-weight:650}.teaching-hero>.teacher-relationship-actions{margin-left:auto}@media(max-width:700px){.teacher-learner-detail-hero{flex-wrap:wrap}.teacher-learner-detail-hero>.teacher-relationship-actions{flex:1 1 100%;margin-left:42px}}@media(max-width:560px){.teacher-learner-stats>span{padding-inline:7px}.teacher-assignment-open{grid-template-columns:minmax(0,1fr) auto;gap:6px 8px}.teacher-assignment-statuses{grid-column:1 / -1;grid-row:2;justify-content:flex-start}.teacher-assignment-open>time{grid-column:2;grid-row:1}}.teaching-dialog-backdrop{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:16px;background:#10182294}.teaching-assignment-dialog{display:grid;gap:var(--space-md);width:min(560px,100%);max-height:min(86vh,760px);overflow:auto;padding:20px;border:1px solid var(--line);border-radius:16px;color:var(--ink);background:var(--paper);box-shadow:var(--shadow-lg)}.teaching-assignment-dialog>header,.teaching-assignment-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.teaching-assignment-dialog h2{margin:2px 0 0}.teaching-assignment-dialog label{display:grid;gap:5px;color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.teaching-assignment-dialog select,.teaching-assignment-dialog textarea,.teaching-assignment-dialog input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:var(--paper);font:inherit}.teaching-assignment-dialog textarea{min-height:90px;resize:vertical}.teaching-post{display:grid;gap:0;overflow:hidden;padding:0}.teaching-post.is-focused{border-color:var(--primary-light);box-shadow:0 0 0 3px var(--accent-10)}.teaching-post-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-md);border-bottom:1px solid color-mix(in srgb,var(--accent) 16%,var(--line));background:color-mix(in srgb,var(--paper-alt) 82%,var(--accent-3))}.teaching-post-header h2,.teaching-post-header strong{display:block;margin:.18rem 0 0;color:var(--ink);font-family:var(--font-display);font-size:clamp(1.06rem,2.4vw,1.3rem);line-height:1.2}.teaching-post-kicker{display:block;color:var(--primary-hover);font-size:var(--text-xs);font-weight:800;letter-spacing:.055em;text-transform:uppercase}.teaching-post-meta{display:inline-block;margin-top:.35rem;color:var(--muted);font-size:var(--text-xs);font-weight:700}.teaching-post-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.45rem}.teaching-post-body{padding:var(--space-md);color:var(--text-secondary);background:var(--paper)}.teaching-post-body p{margin:0;line-height:1.55;white-space:pre-wrap}.teaching-post-evidence{display:grid;gap:.45rem;padding:var(--space-md);border-top:1px solid color-mix(in srgb,var(--accent) 12%,var(--line));background:color-mix(in srgb,var(--paper-alt) 74%,transparent)}.teaching-post-evidence h3{display:flex;align-items:center;gap:.4rem;margin:0;color:var(--ink);font-size:var(--text-sm)}.teaching-post-evidence h3 svg{color:var(--primary-hover)}.teaching-post-evidence-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.teaching-post-evidence-heading>span{color:var(--muted);font-size:var(--text-xs)}.teaching-post-evidence p{margin:0;color:var(--text-secondary);font-size:var(--text-sm)}.learner-assignment-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:0 var(--space-md) var(--space-md);background:var(--paper)}.teaching-comments{display:grid;gap:.75rem;width:100%;padding:.8rem var(--space-md) var(--space-md);border-top:1px solid color-mix(in srgb,var(--accent) 16%,var(--line));background:color-mix(in srgb,var(--surface-muted) 45%,var(--paper))}.teaching-comments-heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.teaching-comments-heading h3,.teaching-comments-heading h4{display:inline-flex;align-items:center;gap:.4rem;margin:0;color:var(--ink);font-size:var(--text-sm)}.teaching-comments-heading svg{color:var(--primary-hover)}.teaching-comments-heading h3>span,.teaching-comments-heading h4>span{display:grid;min-width:1.55rem;height:1.55rem;place-items:center;padding:0 .3rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs)}.teaching-comments-list{display:grid;gap:.7rem}.teaching-comment{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.6rem;padding:0;border:0;background:transparent}.teaching-comment-avatar{display:grid;width:2rem;height:2rem;place-items:center;margin-top:2px;border-radius:50%;color:var(--primary-hover);background:var(--accent-10);font-size:.64rem;font-weight:800}.teaching-comment.teacher .teaching-comment-avatar{color:var(--primary-hover);background:color-mix(in srgb,var(--primary) 17%,var(--paper))}.teaching-comment.system .teaching-comment-avatar{color:var(--primary-hover);background:color-mix(in srgb,var(--primary) 12%,var(--paper))}.teaching-comment-bubble{min-width:0;padding:.65rem .78rem .7rem;border:1px solid color-mix(in srgb,var(--accent) 13%,var(--line));border-radius:.25rem .9rem .9rem;background:color-mix(in srgb,var(--paper-alt) 94%,var(--accent-6))}.teaching-comment.teacher .teaching-comment-bubble{border-color:color-mix(in srgb,var(--primary) 25%,var(--line));background:color-mix(in srgb,var(--accent-6) 70%,var(--paper))}.teaching-comment.system .teaching-comment-bubble{border-style:dashed;background:transparent}.teaching-comment-heading{display:grid;grid-template-columns:minmax(0,1fr) auto auto;min-width:0;align-items:center;gap:.45rem;white-space:nowrap}.teaching-comment-heading strong{min-width:0;overflow:hidden;color:var(--ink);font-size:var(--text-sm);text-overflow:ellipsis}.teaching-comment-heading span{color:var(--muted);font-size:var(--text-xs)}.teaching-comment-heading time{color:var(--muted);font-size:.7rem;white-space:nowrap}.teaching-comment-bubble p{margin:.25rem 0 0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}.teaching-comment-bubble small,.teaching-comments-empty{color:var(--muted);font-size:var(--text-xs)}.teaching-comments-footer{padding-top:.15rem}.teaching-comments-footer .plain-link{display:inline-flex;align-items:center;gap:.35rem}.teaching-comment-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.28rem}.teaching-comment-actions small{color:var(--muted);font-size:.7rem}.teaching-comment-actions small.is-resolved{color:var(--primary-hover)}.teaching-comment-actions small.is-pending{color:var(--text-secondary)}.teaching-comment-reply{display:inline-flex;min-height:1.55rem;align-items:center;gap:.25rem;padding:.12rem .28rem;border:0;border-radius:.35rem;color:var(--muted);background:transparent;font:inherit;font-size:.72rem;font-weight:700;cursor:pointer}.teaching-comment-reply:hover,.teaching-comment-reply:focus-visible{color:var(--primary-hover);background:var(--accent-6);text-decoration:underline}.teaching-force-complete{align-self:start;white-space:nowrap}.teaching-auto-advance-panel{display:grid;gap:.8rem;padding:14px 16px}.teaching-auto-advance-panel.is-collapsed{gap:0}.teaching-section-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.teaching-section-heading .eyebrow{display:inline-flex;align-items:center;gap:.35rem}.teaching-section-heading h2{margin:.18rem 0 0;font-size:1rem}.teaching-section-heading p{max-width:540px;margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.45;text-align:right}.teaching-policy-programme-select{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:var(--text-xs);font-weight:650}.teaching-policy-programme-select select{max-width:min(260px,32vw);padding:.35rem .5rem;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--paper);font:inherit}.teaching-auto-advance-toggle{display:inline-flex;flex:0 0 auto;align-items:center;gap:.3rem;padding:.25rem .1rem;border:0;color:var(--primary-hover);background:transparent;font:inherit;font-size:var(--text-xs);font-weight:800;cursor:pointer}.teaching-auto-advance-toggle svg{transition:transform .18s ease}.teaching-auto-advance-panel.is-open .teaching-auto-advance-toggle svg{transform:rotate(180deg)}.teaching-auto-advance-description{margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.45}.teaching-auto-advance-list{display:grid;gap:.45rem}.teaching-auto-advance-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding-top:.55rem;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent)}.teaching-auto-advance-row>div{display:grid;min-width:0;gap:.15rem}.teaching-auto-advance-row strong{overflow:hidden;color:var(--ink);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.teaching-auto-advance-row small{color:var(--muted);font-size:var(--text-xs)}.teaching-auto-advance-row .action-link{flex:0 0 auto;min-height:1.8rem;padding:.2rem .65rem;font-size:var(--text-xs)}.offline-teaching-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md);align-items:start}.offline-panel{min-width:0;overflow:hidden}.offline-panel .journey-post-header{margin-bottom:0}.offline-collapsible>summary{display:flex;align-items:center;list-style:none;cursor:pointer}.offline-collapsible>summary::-webkit-details-marker{display:none}.offline-collapsible>summary:after{margin-left:auto;color:var(--muted);content:"+";font-size:1.1rem;line-height:1}.offline-collapsible[open]>summary:after{content:"−"}.offline-collapsible>summary .journey-author span{display:none}.offline-panel .journey-author{display:flex;min-width:0;align-items:center;gap:.65rem}.offline-panel .journey-author>div{display:grid;min-width:0;gap:.15rem}.offline-panel .journey-author strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offline-panel .journey-author span{overflow-wrap:anywhere}.offline-slot-list,.offline-range-list,.offline-roster-list{display:grid;gap:.55rem;padding:var(--space-md)}.offline-slot-list,.offline-range-list{min-height:280px;max-height:280px;overflow-y:auto}.offline-weekday{display:grid;grid-template-columns:90px minmax(0,1fr);align-items:center;gap:.65rem;padding-bottom:.45rem;border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.offline-weekday:last-child{border-bottom:0;padding-bottom:0}.offline-weekday>strong{color:var(--ink);font-size:var(--text-xs)}.offline-weekday>div{display:flex;flex-wrap:wrap;gap:.35rem}.offline-slot-item{display:inline-flex;align-items:center;gap:.25rem}.offline-slot-chip{gap:.3rem}.offline-slot-chip small{color:var(--muted);font-size:.65rem;font-weight:650}.offline-slot-action{width:25px;height:25px;color:var(--muted)}.offline-slot-action:hover,.offline-slot-action:focus-visible{color:var(--error);background:color-mix(in srgb,var(--error) 10%,transparent)}.offline-weekday small,.offline-range-list span,.offline-empty{color:var(--muted);font-size:var(--text-xs)}.offline-slot-chip,.offline-attendance-badge{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:.7rem;font-weight:750;white-space:nowrap}.offline-inline-form,.offline-dayoff-form,.offline-schedule-form{display:flex;flex-wrap:wrap;align-items:end;gap:.6rem;padding:var(--space-md);border-top:1px solid var(--line)}.offline-inline-form label,.offline-dayoff-form label,.offline-schedule-form>label,.offline-entry-dialog label{display:grid;min-width:0;flex:1 1 120px;gap:.3rem;color:var(--text-secondary);font-size:var(--text-xs);font-weight:700}.offline-inline-form input,.offline-inline-form select,.offline-dayoff-form input,.offline-schedule-form select,.offline-schedule-form input,.offline-entry-dialog input,.offline-entry-dialog textarea{width:100%;padding:.52rem .6rem;border:1px solid var(--line);border-radius:.55rem;color:var(--ink);background:var(--paper);font:inherit}.offline-entry-dialog{width:min(520px,100%);max-height:min(78vh,620px);gap:.65rem;padding:var(--space-md);border-radius:14px}.offline-entry-dialog>header{padding-bottom:.15rem}.offline-entry-dialog h2{font-size:1.15rem}.offline-entry-dialog textarea{min-height:72px}.offline-entry-dialog>footer{padding-top:.15rem}.offline-inline-form button,.offline-dayoff-form button,.offline-schedule-form button{flex:0 0 auto;min-height:2.1rem;padding:.38rem .65rem;font-size:var(--text-xs)}.offline-range-list{padding-top:0}.offline-range-list{height:280px;min-height:280px;max-height:280px;align-content:start;grid-auto-rows:max-content;overflow-y:auto}.offline-range-list span{padding-top:.45rem;border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent)}.offline-range-list span.is-revoked{color:var(--muted);text-decoration:line-through}.offline-range-row{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding-top:.45rem;border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent)}.offline-range-row>span{min-width:0;padding-top:0;border-top:0}.offline-range-delete{display:inline-flex;flex:0 0 auto;align-items:center;gap:.2rem;color:var(--error);font-size:var(--text-xs)}.offline-range-history{display:grid;gap:.5rem}.offline-pagination{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:0 var(--space-md) .65rem;color:var(--muted);font-size:var(--text-xs)}.offline-pagination button:disabled{cursor:not-allowed;opacity:.45}.offline-schedule-form{align-items:start}.offline-schedule-form>label{flex:1 1 220px}.offline-slot-picker{display:grid;flex:2 1 360px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.65rem;min-width:0}.offline-schedule-form .offline-slot-picker{flex:1 1 100%;width:100%}.offline-slot-column{display:grid;align-content:start;gap:.3rem;min-width:0}.offline-slot-column>strong{color:var(--ink);font-size:.72rem}.offline-check-row{display:flex;min-width:0;align-items:center;gap:.4rem;padding:.35rem .45rem;border-radius:.45rem;color:var(--text-secondary);background:var(--surface-muted);font-size:var(--text-xs);cursor:pointer}.offline-check-row input{flex:0 0 auto;width:15px;height:15px;accent-color:var(--primary)}.offline-check-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offline-schedule-actions{display:flex;flex:1 1 100%;min-width:0;align-items:center;justify-content:space-between;gap:.6rem}.offline-selected-slots{min-width:0;overflow:hidden;color:var(--muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.offline-save-button{transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.offline-schedule-form .offline-save-button{width:max-content;margin-left:auto;justify-self:end}.offline-save-button.is-saving{transform:translateY(1px);box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 15%,transparent)}.offline-date-input{width:auto;padding:.45rem .55rem;border:1px solid var(--line);border-radius:.5rem;color:var(--ink);background:var(--paper);font:inherit;font-size:var(--text-xs)}.offline-report-controls{display:flex;flex-wrap:wrap;align-items:end;gap:.6rem;padding:var(--space-md);border-bottom:1px solid var(--line)}.offline-report-controls label{display:grid;flex:1 1 150px;gap:.3rem;color:var(--text-secondary);font-size:var(--text-xs);font-weight:700}.offline-report-controls input{width:100%;padding:.52rem .6rem;border:1px solid var(--line);border-radius:.55rem;color:var(--ink);background:var(--paper);font:inherit}.offline-date-field{position:relative;display:flex;align-items:center}.offline-dayoff-form .offline-date-field,.offline-schedule-form .offline-date-field,.offline-report-controls .offline-date-field{width:100%}.offline-roster-controls .offline-date-field{width:8.2rem}.offline-date-field .offline-date-input{box-sizing:border-box;width:100%}.offline-date-field>input[type=text]{padding-right:2.3rem}.date-picker-field{position:relative;display:flex;min-width:0;align-items:center}.date-picker-field>input[type=text]{min-width:0;padding-right:2.3rem}.date-picker-trigger{position:absolute;right:.35rem;display:grid;width:1.7rem;height:1.7rem;place-items:center;padding:0;border:0;color:var(--muted);background:transparent;cursor:pointer}.offline-dayoff-form .date-picker-trigger,.offline-schedule-form .date-picker-trigger,.offline-report-controls .date-picker-trigger{min-height:0;padding:0}.date-picker-trigger:hover,.date-picker-trigger:focus-visible{color:var(--primary-hover)}.date-picker-popover{position:absolute;top:calc(100% + .35rem);left:0;z-index:40;width:min(18rem,calc(100vw - 2rem));padding:.65rem;border:1px solid var(--line);border-radius:.75rem;background:var(--paper);box-shadow:var(--shadow-lg)}.date-picker-limit-hint{display:block;margin-top:.45rem;color:var(--muted);font-size:var(--text-xs);line-height:1.35}.date-picker-header{display:grid;grid-template-columns:2rem minmax(0,1fr) 2rem;align-items:center;gap:.35rem;margin-bottom:.55rem;text-align:center}.date-picker-header strong{overflow:hidden;color:var(--ink);font-size:var(--text-sm);text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap}.date-picker-nav{display:grid;width:2rem;height:2rem;place-items:center;padding:0;border:1px solid var(--line);border-radius:.45rem;color:var(--text-secondary);background:var(--paper-alt);cursor:pointer}.date-picker-nav:hover,.date-picker-nav:focus-visible{color:var(--primary-hover);border-color:var(--primary-light);background:var(--accent-6)}.date-picker-weekdays,.date-picker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.2rem}.date-picker-weekdays{margin-bottom:.2rem;color:var(--muted);font-size:.65rem;font-weight:800;text-align:center}.date-picker-day{display:grid;min-height:2rem;place-items:center;padding:0;border:1px solid transparent;border-radius:.45rem;color:var(--text-secondary);background:transparent;font:inherit;font-size:var(--text-xs);cursor:pointer}.date-picker-day:hover,.date-picker-day:focus-visible{border-color:var(--primary-light);color:var(--primary-hover);background:var(--accent-6)}.date-picker-day.selected{border-color:var(--primary);color:var(--text-inverse);background:var(--primary);font-weight:800}.date-picker-day.disabled{color:var(--muted);background:var(--surface-muted);cursor:not-allowed;opacity:.48}.date-picker-day.empty{pointer-events:none}.offline-panel:has(.date-picker-popover),.teacher-offline-report:has(.date-picker-popover){overflow:visible}.offline-hidden-date-picker{position:absolute;width:1px!important;height:1px;padding:0!important;border:0!important;opacity:0;pointer-events:none}.offline-date-picker-button{position:absolute;right:.35rem;display:grid;width:1.7rem;height:1.7rem;place-items:center;padding:0;border:0;color:var(--muted);background:transparent;cursor:pointer}.offline-date-picker-button:hover,.offline-date-picker-button:focus-visible{color:var(--primary-hover)}.offline-report-controls .action-link{min-height:2.1rem;padding:.38rem .65rem;font-size:var(--text-xs)}.offline-report-table{overflow-x:auto}.offline-report-row{display:grid;grid-template-columns:minmax(140px,1.25fr) minmax(170px,1.4fr) repeat(4,minmax(55px,.45fr));min-width:680px;gap:.55rem;align-items:center;padding:.65rem var(--space-md);border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent);color:var(--text-secondary);font-size:var(--text-xs)}.offline-report-row strong{color:var(--ink);font-size:.7rem}.offline-report-heading{border-top:0;background:var(--surface-muted)}.teacher-offline-report,.teacher-contact-profile{overflow:hidden}.teacher-contact-profile .journey-post-header{margin-bottom:0}.teacher-contact-profile .journey-post-header>.plain-link{display:inline-flex;flex:0 0 auto;align-items:center;gap:.3rem;font-size:var(--text-xs)}.teacher-contact-profile.is-collapsed{box-shadow:none}.teacher-contact-toggle{display:inline-flex;min-width:0;flex:1;align-items:center;gap:.55rem;padding:0;border:0;color:var(--ink);background:transparent;font:inherit;text-align:left;cursor:pointer}.teacher-contact-toggle>svg:first-child{flex:0 0 auto;color:var(--primary-hover)}.teacher-contact-toggle strong{min-width:0}.teacher-contact-toggle>svg:last-child{flex:0 0 auto;margin-left:auto;color:var(--muted);transition:transform .18s ease}.teacher-contact-profile.is-open .teacher-contact-toggle>svg:last-child{transform:rotate(180deg)}.teacher-contact-links{display:flex;min-width:0;flex-wrap:wrap;align-items:stretch;gap:0}.teacher-contact-links>a{display:flex;min-width:0;flex:1 1 210px;align-items:center;gap:.55rem;padding:.65rem var(--space-md);border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.teacher-contact-links>a+a{border-left:1px solid var(--line)}.teacher-contact-links>a:hover,.teacher-contact-links>a:focus-visible{color:var(--primary-hover);background:var(--accent-6)}.teacher-contact-links>a>span:not(.teacher-contact-brand){display:grid;min-width:0;flex:1;gap:.05rem}.teacher-contact-links small{color:var(--muted);font-size:.68rem;font-weight:700}.teacher-contact-links strong{overflow:hidden;font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.teacher-contact-links>a>svg:last-child{flex:0 0 auto;color:var(--muted)}.teacher-contact-brand{display:inline-grid;width:1.15rem;height:1.15rem;flex:0 0 auto;place-items:center;border-radius:50%;color:#fff;background:#0877ff;font-size:.7rem;font-weight:900}.teacher-contact-brand.facebook{background:#1877f2;font-family:Arial,sans-serif}.teacher-contact-dialog{width:min(520px,100%);gap:10px;padding:14px 16px}.teacher-contact-form-grid{display:grid;gap:8px}.teacher-contact-form-grid label{gap:4px}.teacher-contact-account-email{margin:0;padding:.5rem .65rem;border-radius:8px;color:var(--text-secondary);background:var(--surface-muted);font-size:var(--text-xs);overflow-wrap:anywhere}.teacher-contact-dialog>footer{padding-top:8px;border-top:1px solid var(--line)}.teacher-offline-report .journey-post-header{margin-bottom:0}.teacher-offline-report-summary{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.75rem var(--space-md);border-bottom:1px solid var(--line)}.teacher-offline-report-summary span{color:var(--muted);font-size:var(--text-xs)}.teacher-offline-report-summary strong{color:var(--primary-hover);font-size:1rem}.teacher-offline-report-days{display:grid;gap:0}.teacher-offline-report-days>div,.teacher-offline-report-day-link{display:grid;grid-template-columns:minmax(145px,1fr) minmax(90px,.7fr) minmax(0,1.5fr) auto;gap:.6rem;padding:.55rem var(--space-md);border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent);color:var(--text-secondary);font-size:var(--text-xs)}.teacher-offline-report-day-link{text-decoration:none}.teacher-offline-report-day-link:hover,.teacher-offline-report-day-link:focus-visible{color:var(--primary-hover);background:var(--accent-6)}.teacher-offline-report-days time{color:var(--ink)}.teacher-offline-report-note{min-width:0;color:var(--text-secondary);overflow-wrap:anywhere;white-space:pre-wrap}.teacher-offline-report-days small{color:var(--muted)}.teacher-offline-today{display:grid;gap:0;overflow:hidden}.teacher-offline-today .journey-post-header{margin:0}.teacher-offline-today .journey-author{display:flex;align-items:center;gap:.55rem}.teacher-offline-today .journey-author>div{display:grid;gap:.1rem}.teacher-offline-today-list{display:grid;gap:0}.teacher-offline-today-list>div{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.4rem 1rem;padding:.55rem var(--space-md);border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent);font-size:var(--text-xs)}.teacher-offline-today-list span{color:var(--muted)}.teacher-offline-today-grid{max-height:32rem;overflow:auto;border-top:1px solid var(--line)}.teacher-offline-today-grid-heading,.teacher-offline-today-grid-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(92px,.45fr) minmax(140px,1.4fr);gap:.55rem 1rem;align-items:center;padding:.55rem var(--space-md);font-size:var(--text-xs)}.teacher-offline-today-grid-heading{color:var(--muted);background:var(--surface-muted);font-size:.7rem;font-weight:800}.teacher-offline-today-grid-row{border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent)}.teacher-offline-today-grid-row a{min-width:0;overflow:hidden;color:var(--ink);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.teacher-offline-today-grid-row a:hover,.teacher-offline-today-grid-row a:focus-visible{color:var(--primary-hover)}.teacher-offline-today-status{justify-self:start;padding:.2rem .45rem;border-radius:999px;color:var(--muted);background:var(--surface-muted);font-weight:700;white-space:nowrap}.teacher-offline-today-status.absent{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--paper))}.teacher-offline-today-assignment{min-width:0;overflow:hidden;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap}.teacher-offline-today-slot-group{border-top:1px solid var(--line)}.teacher-offline-today-slot-group:first-child{border-top:0}.teacher-offline-today-slot-summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem .8rem;padding:.55rem var(--space-md);color:var(--ink);background:var(--surface-muted)}.teacher-offline-today-slot-summary strong{font-size:var(--text-sm)}.teacher-offline-today-slot-summary span{color:var(--muted);font-size:var(--text-xs)}.teacher-offline-today-slot-summary b{color:var(--ink)}@media(max-width:620px){.teacher-offline-today-grid-heading,.teacher-offline-today-grid-row{grid-template-columns:minmax(0,1fr) minmax(76px,.45fr) minmax(120px,1.1fr);gap:.4rem;padding-inline:.65rem}.teacher-offline-today-slot-summary{padding-inline:.65rem}}.offline-occurrence-detail{overflow:hidden}.offline-occurrence-navigation{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.75rem}.offline-occurrence-navigation .plain-link{display:inline-flex;align-items:center;gap:.3rem;padding:0;border:0;background:transparent;cursor:pointer;font:inherit}.offline-occurrence-detail .journey-post-header{margin:0}.offline-occurrence-detail .journey-author{display:flex;align-items:center;gap:.55rem}.offline-occurrence-detail .journey-author>div{display:grid;gap:.1rem}.offline-occurrence-entry-list{display:grid;gap:0}.offline-occurrence-entry-list article{padding:.8rem var(--space-md);border-top:1px solid var(--line)}.offline-occurrence-entry-list p{margin:.25rem 0;white-space:pre-wrap}.offline-occurrence-entry-list time{color:var(--muted);font-size:var(--text-xs)}.offline-entry-editor-list{display:grid;max-height:220px;overflow-y:auto;border:1px solid var(--line);border-radius:.55rem}.offline-entry-editor-list article{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;padding:.55rem .65rem;border-top:1px solid var(--line)}.offline-entry-editor-list article:first-child{border-top:0}.offline-entry-editor-list article>div{min-width:0}.offline-entry-editor-list p{margin:.2rem 0 0;color:var(--text-secondary);white-space:pre-wrap;overflow-wrap:anywhere}.offline-entry-editor-list .plain-link{flex:0 0 auto;padding:0;border:0;background:transparent;cursor:pointer;font:inherit}.offline-panel>.offline-roster-header{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem 1rem}.offline-panel>.offline-roster-header>.offline-roster-heading{display:grid;flex:1 1 420px;min-width:0;grid-template-columns:20px minmax(0,1fr);gap:.12rem .6rem;align-items:center}.offline-roster-heading>svg{grid-row:1 / 3;color:var(--primary-hover)}.offline-roster-heading>strong,.offline-roster-heading>span{min-width:0;margin:0;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.offline-roster-heading>strong{font-size:.98rem;line-height:1.25}.offline-roster-heading>span{color:var(--muted);font-size:var(--text-xs)}.offline-panel>.offline-roster-header>.offline-roster-controls{display:flex;flex:0 0 auto;width:fit-content;max-width:100%;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:.4rem}.offline-roster-controls .offline-date-input{box-sizing:border-box;width:8.2rem;height:2rem;min-height:2rem}.offline-roster-controls>.action-link{box-sizing:border-box;flex:0 0 7.5rem;width:7.5rem;height:2rem;min-height:2rem;justify-content:center;padding:.18rem .4rem;font-size:.7rem}.offline-roster-column-heading,.offline-roster-row{display:grid;grid-template-columns:minmax(230px,1.35fr) minmax(90px,.75fr) 78px minmax(160px,1.8fr) auto;gap:.5rem .65rem;align-items:center}.offline-roster-column-heading{padding:.45rem var(--space-md);color:var(--muted);background:var(--surface-muted);font-size:.7rem;font-weight:800}.offline-roster-list{gap:0;padding:0}.offline-roster-row{padding:.55rem var(--space-md);border-top:1px solid color-mix(in srgb,var(--line) 76%,transparent);font-size:var(--text-xs)}.offline-roster-row:first-child{border-top:0}.offline-roster-learner-slot{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:.75rem}.offline-roster-learner-slot .journey-author{min-width:0;flex:1 1 auto}.offline-roster-slot-label{display:inline-flex;flex:0 0 auto;align-items:center;gap:.3rem;color:var(--text-secondary);white-space:nowrap}.offline-quick-points,.offline-quick-comment{min-width:0;width:100%;padding:.38rem .5rem;border:1px solid var(--line);border-radius:.45rem;color:var(--ink);background:var(--paper);font:inherit}.offline-quick-comment{overflow:hidden;text-overflow:ellipsis}.offline-attendance-badge.attended{color:var(--success, #287c60);background:color-mix(in srgb,var(--success, #287c60) 12%,transparent)}.offline-attendance-badge.absent{color:var(--error);background:color-mix(in srgb,var(--error) 12%,transparent)}.offline-attendance-badge.not_required{color:var(--muted);background:var(--surface-muted)}.offline-row-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.4rem}.offline-row-actions .plain-link{display:inline-flex;align-items:center;gap:.22rem;padding:.15rem .25rem;font-size:.72rem}.offline-request-list{display:grid;gap:0}.offline-request-row{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem .8rem;padding:.75rem var(--space-md);border-top:1px solid var(--line)}.offline-request-row>div:first-child{display:grid;min-width:160px;flex:1 1 180px;gap:.15rem}.offline-request-row>div:first-child span,.offline-request-row>div:nth-child(2) small{color:var(--muted);font-size:var(--text-xs)}.offline-request-row>div:nth-child(2){display:flex;flex-wrap:wrap;gap:.3rem}.offline-empty{margin:0;padding:var(--space-md)}.offline-entry-dialog textarea{min-height:72px;resize:vertical}@media(max-width:760px){.offline-panel>.offline-roster-header>.offline-roster-heading{flex-basis:100%}.offline-roster-column-heading,.offline-roster-row{grid-template-columns:minmax(170px,1fr) minmax(82px,.75fr) 70px minmax(130px,1.5fr) auto}}@media(max-width:520px){.offline-roster-column-heading{display:none}.offline-roster-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.offline-roster-row>.offline-roster-learner-slot{grid-column:1 / -1}.offline-roster-row>.offline-attendance-badge{grid-column:2;justify-self:end}.offline-quick-points{grid-column:1}.offline-quick-comment{grid-column:2}.offline-roster-row .offline-row-actions{grid-column:1 / -1;width:100%;margin-left:0;justify-content:flex-start}}@media(max-width:760px){.offline-teaching-columns,.offline-slot-picker{grid-template-columns:1fr}.offline-slot-column{grid-template-columns:repeat(2,minmax(0,1fr))}.offline-slot-column>strong{grid-column:1 / -1}.teaching-hero{flex-wrap:wrap}.teaching-hero-actions{flex:1 1 100%;width:100%;margin-left:0;justify-content:flex-end}}@media(max-width:520px){.teacher-contact-links{display:grid}.teacher-contact-links>a+a{border-left:0}}@media(max-width:520px){.offline-inline-form,.offline-dayoff-form,.offline-schedule-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.offline-inline-form label:first-child,.offline-dayoff-form label:last-of-type,.offline-schedule-form>label,.offline-schedule-form .offline-slot-picker,.offline-schedule-actions{grid-column:1 / -1}.offline-inline-form button,.offline-dayoff-form button,.offline-schedule-form button{justify-self:start}.offline-roster-learner-slot{min-width:0}.offline-row-actions{width:100%;margin-left:0}}@media(max-width:640px){.teaching-section-heading{align-items:flex-start;flex-direction:column;gap:.35rem}.teaching-section-heading p{text-align:left}.teaching-auto-advance-row{align-items:flex-start}.teaching-auto-advance-row .action-link{margin-top:.1rem}}.teaching-roster span{color:var(--muted)}.teaching-empty{display:grid;justify-items:start;gap:var(--space-sm)}.teacher-suspended-panel{border-color:color-mix(in srgb,var(--error) 35%,var(--line));background:color-mix(in srgb,var(--error) 5%,var(--paper))}.teacher-suspended-panel h2,.teacher-suspended-panel svg{color:var(--error)}.teacher-suspended-panel p{margin:0;color:var(--text-secondary)}.teaching-consent{display:grid;gap:var(--space-md);max-width:720px}.teaching-consent dl{display:grid;gap:var(--space-sm);margin:0}.teaching-consent dl>div{display:grid;grid-template-columns:130px 1fr;gap:var(--space-sm)}.teaching-consent dt{color:var(--muted)}.teaching-consent dd{margin:0}.teaching-scope{display:flex;align-items:flex-start;gap:9px}.teaching-scope input{margin-top:3px}.teaching-consent-note{color:var(--muted);font-size:var(--text-sm)}.learner-teaching-plan-page{gap:12px}.learner-teaching-plan-page>.teaching-hero{align-items:center;gap:.7rem;padding:2px;border:0;border-radius:0;background:transparent}.learner-teaching-plan-page>.teaching-hero>svg{width:26px;height:26px}.learner-teaching-plan-page>.teaching-hero h1{font-size:clamp(1.45rem,3vw,1.8rem);line-height:1.15}.learner-teaching-plan-page>.teaching-hero p{margin-top:2px;font-size:var(--text-sm)}.learner-plan-card{display:grid;gap:0;min-width:0;max-width:100%;padding:0;overflow:hidden;border-radius:14px;box-shadow:0 1px 2px var(--ink-4);-webkit-backdrop-filter:none;backdrop-filter:none}.learner-plan-card>header{display:flex;min-width:0;max-width:100%;justify-content:space-between;gap:.65rem 1rem;padding:12px 14px;border-bottom:1px solid color-mix(in srgb,var(--line) 82%,transparent)}.learner-plan-card>header>div:first-child{min-width:0}.learner-plan-header-actions{display:flex;min-width:0;max-width:100%;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.55rem}.learner-plan-card h2,.learner-plan-card header p{margin:0}.learner-plan-card h2{font-size:1.05rem;line-height:1.25}.learner-plan-card header p{color:var(--muted)}.learner-plan-access,.learner-assignment-actions,.learner-assignment-actions>div{display:grid;gap:4px}.learner-plan-access{justify-items:end;max-width:290px}.teaching-scope-list{display:grid;gap:8px;margin-top:12px}.teaching-scope{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);font-size:var(--text-sm)}.teaching-scope input{width:16px;height:16px;accent-color:var(--primary)}.teaching-scope small{margin-left:auto;color:var(--muted);font-size:var(--text-xs)}.teaching-scope.is-unrequested{color:var(--muted);background:var(--paper-alt)}.teaching-consent-dialog{width:min(560px,100%);max-height:min(76vh,620px);gap:10px;padding:14px 16px;border-radius:14px}.teaching-consent-dialog>header{padding-bottom:9px;border-bottom:1px solid var(--line)}.teaching-consent-dialog h2{font-size:var(--text-lg)}.teaching-consent-dialog-note{margin:0;color:var(--text-secondary);font-size:var(--text-xs);line-height:1.4}.teaching-consent-dialog>.teaching-scope-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:0}.teaching-consent-dialog .teaching-scope{display:flex;align-items:center;min-height:34px;gap:7px;padding:6px 8px;border-radius:7px;font-size:var(--text-xs);line-height:1.25;white-space:nowrap}.teaching-consent-dialog .teaching-scope input{flex:0 0 auto;width:15px;height:15px;margin:0}.teaching-consent-dialog>footer{padding-top:8px;border-top:1px solid var(--line)}.learner-plan-access small,.learner-assignment-actions small{color:var(--muted);font-size:var(--text-xs);line-height:1.35}.learner-assignment-list{display:grid;min-width:0;max-width:100%;gap:0}.learner-assignment{display:grid;min-width:0;max-width:100%;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--panel) 75%,transparent)}.learner-assignment>div{display:grid;gap:5px}.learner-assignment>div>span{color:var(--muted);font-size:var(--text-sm)}.learner-assignment p{margin:0}.learner-assignment.teaching-post.journey-post.panel{display:grid;gap:0;min-width:0;max-width:100%;padding:11px 14px;overflow:visible;border:0;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent);border-radius:0;background:var(--paper);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.learner-assignment-list>.learner-assignment:first-child{border-top:0}.learner-assignment.teaching-post.journey-post .teaching-post-header{align-items:center;min-width:0;max-width:100%;margin-bottom:8px;padding:0;border:0;background:transparent}.teaching-assignment-title{display:grid;min-width:0;gap:.2rem}.teaching-assignment-title strong{min-width:0;overflow:hidden;margin:0;color:var(--ink);font-size:.98rem;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.teaching-assignment-title span{min-width:0;color:var(--muted);font-size:.75rem;white-space:nowrap}.teaching-assignment-action{display:inline-flex;flex:0 0 auto;align-self:stretch;min-height:1.85rem;align-items:center;padding:.25rem .55rem;border-radius:.5rem;font-size:.74rem;white-space:nowrap}.teaching-assignment-actions{display:flex;flex:0 0 auto;min-width:0;max-width:100%;flex-wrap:wrap;align-items:stretch;justify-content:flex-end;gap:.45rem}.learner-assignment.teaching-post.journey-post .teaching-post-body{min-width:0;max-width:100%;margin:0 0 8px;padding:0;color:var(--ink);background:transparent;font-size:.9rem;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap}.learner-assignment.teaching-post.journey-post .teaching-comments{display:grid;min-width:0;max-width:100%;gap:0;padding:7px 0 0;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent);background:transparent}.learner-assignment.teaching-post.journey-post .teaching-comments-heading{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-top:0}.learner-assignment.teaching-post.journey-post .teaching-comments-heading>span{display:inline-flex;align-items:center;gap:.4rem;color:var(--ink);font-size:var(--text-sm);font-weight:800}.learner-assignment.teaching-post.journey-post .teaching-comments-heading svg{color:var(--primary-hover)}.learner-assignment.teaching-post.journey-post .teaching-comments-heading>strong{display:grid;min-width:1.65rem;height:1.65rem;place-items:center;padding:0 .35rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs)}.learner-assignment.teaching-post.journey-post .teaching-comments-list{display:grid;gap:.5rem;padding:2px 0 6px}.learner-assignment.teaching-post.journey-post .teaching-comment{gap:.65rem}.learner-assignment.teaching-post.journey-post .teaching-comment-bubble{padding:0;border:0;border-radius:0;background:transparent}.learner-assignment.teaching-post.journey-post .teaching-comment-heading{grid-template-columns:minmax(0,auto) auto auto;justify-content:start;gap:.45rem}.learner-assignment.teaching-post.journey-post .teaching-comment-heading strong{font-size:.82rem}.learner-assignment.teaching-post.journey-post .teaching-comment-heading time{font-size:.68rem}.learner-assignment.teaching-post.journey-post .teaching-comment-bubble p{margin:.15rem 0 0;color:var(--ink);font-size:.85rem;line-height:1.45}.learner-assignment.teaching-post.journey-post .teaching-comments-empty{padding:.25rem 0 .35rem 2.55rem;border:0;background:transparent;text-align:left}.learner-assignment.teaching-post.journey-post .teaching-help-button{justify-self:start;min-height:auto;margin:0 0 2px 2.55rem;padding:.1rem 0;border:0;border-radius:0;color:var(--primary-hover);background:transparent;font-size:.75rem}.learner-assignment.teaching-post.journey-post .teaching-help-button:hover:not(:disabled),.learner-assignment.teaching-post.journey-post .teaching-help-button:focus-visible{background:transparent;text-decoration:underline}@media(max-width:700px){.learner-plan-card>header,.learner-assignment.teaching-post.journey-post.panel{padding:10px 12px}.learner-teaching-plan-page>.teaching-hero{padding-inline:0}}@media(max-width:560px){.teaching-comment-heading{grid-template-columns:minmax(0,1fr) auto}.teaching-comment-heading time{grid-column:1 / -1}.teaching-post-evidence-heading{display:grid;justify-content:stretch}}@media(max-width:560px){.teaching-consent-dialog>.teaching-scope-list{grid-template-columns:1fr}}@media(max-width:760px){.teaching-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.teaching-columns{grid-template-columns:1fr}.learner-assignment,.learner-plan-card>header,.teaching-roster>div{flex-direction:column}.teacher-learners-section>.teacher-roster-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;justify-content:initial;gap:10px}.teacher-learners-section>.teacher-roster-toolbar .teacher-roster-search{grid-column:1 / -1;width:100%;min-width:0;flex:none}.teacher-learners-section>.teacher-roster-toolbar .checked-combo-box{width:100%;min-width:0;flex:none}.teacher-learners-section>.teacher-roster-toolbar .checked-combo-box-trigger{width:100%}.teacher-learners-section>.teacher-roster-toolbar .teacher-roster-count{margin-left:0}.learner-plan-header-actions{width:100%;justify-content:flex-start}.learner-plan-access{justify-items:start;max-width:none}.learner-assignment.teaching-post.journey-post .teaching-post-header{align-items:stretch;flex-direction:column;gap:.7rem}.teaching-assignment-title{width:100%}.teaching-assignment-title strong,.teaching-assignment-title span{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.teaching-assignment-actions{width:100%;justify-content:flex-start}.teaching-consent dl>div{grid-template-columns:1fr;gap:2px}}.practice-together-screen{gap:var(--page-section-gap)}.practice-together-heading{align-items:flex-end;gap:var(--space-lg);padding-bottom:2px}.practice-together-heading>div{display:grid;gap:.25rem;min-width:0}.practice-together-heading .eyebrow{margin-bottom:0}.practice-together-heading p{max-width:760px;margin:0;color:var(--muted);line-height:1.55}.practice-together-rhythm-panel,.practice-together-card,.practice-together-empty,.practice-together-discovery-group,.practice-together-discovery-links{position:relative;overflow:visible;border-color:color-mix(in srgb,var(--line) 76%,transparent);border-radius:14px;background:var(--paper);box-shadow:0 1px 2px var(--ink-4),0 8px 24px color-mix(in srgb,var(--ink) 5%,transparent);-webkit-backdrop-filter:none;backdrop-filter:none}.practice-together-rhythm-panel:before,.practice-together-card:before,.practice-together-empty:before,.practice-together-discovery-group:before,.practice-together-discovery-links:before{position:absolute;inset:0 auto 0 0;width:4px;border-radius:14px 0 0 14px;background:linear-gradient(var(--accent),var(--primary));content:""}.practice-together-rhythm-panel{gap:14px;padding:20px 22px;background:var(--paper)}.practice-together-rhythm-panel>header{padding-bottom:12px;border-bottom:1px solid color-mix(in srgb,var(--accent) 14%,var(--line))}.practice-together-rhythm-panel>header p{max-width:760px;color:var(--text-secondary);line-height:1.55}.practice-together-rhythm-panel>header>svg{width:2.35rem;height:2.35rem;padding:.45rem;border-radius:.72rem;color:var(--primary-hover);background:var(--accent-10)}.practice-together-group{display:grid;gap:.7rem}.practice-together-group>header{align-items:flex-end;padding-inline:2px}.practice-together-group>header h2{margin:0;font-family:var(--font-display);font-size:clamp(1.05rem,2.5vw,1.28rem)}.practice-together-group>header>span{min-width:1.7rem;padding:.2rem .48rem;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs);font-weight:800;text-align:center}.practice-together-list{grid-template-columns:minmax(0,1fr);gap:14px}.practice-together-card{gap:14px;padding:20px 22px}.practice-together-card>header{padding-bottom:12px;border-bottom-color:color-mix(in srgb,var(--accent) 14%,var(--line))}.practice-together-target{border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));background:color-mix(in srgb,var(--paper-alt) 92%,var(--accent-6))}.practice-together-participant-statuses li{border-color:color-mix(in srgb,var(--accent) 13%,var(--line));background:var(--surface-muted)}.practice-together-actions .action-link,.practice-together-rhythm-actions .action-link,.practice-together-discovery .action-link{border-radius:999px}.practice-together-discovery{gap:14px}.practice-together-empty,.practice-together-discovery-group,.practice-together-discovery-links{padding:20px 22px}.practice-together-discovery-group{gap:10px}.practice-together-discovery-group>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid color-mix(in srgb,var(--accent) 14%,var(--line))}.practice-together-discovery-group>header h2,.practice-together-discovery-links h2,.practice-together-empty h2{margin:0;font-family:var(--font-display);font-size:clamp(1.05rem,2.5vw,1.28rem)}.practice-together-discovery-group>header p{margin:.3rem 0 0;line-height:1.45}.practice-together-discovery-group>header>svg{flex:0 0 auto;color:var(--primary-hover)}.practice-together-discovery-person{padding:11px 0;border-top-color:color-mix(in srgb,var(--accent) 12%,var(--line))}.practice-together-discovery-links{display:grid;gap:.55rem}.practice-together-discovery-links p{margin:0}@media(max-width:720px){.practice-together-rhythm-panel,.practice-together-card,.practice-together-empty,.practice-together-discovery-group,.practice-together-discovery-links{padding:16px 14px}.practice-together-rhythm-panel>header,.practice-together-heading{gap:10px}}@media(max-width:560px){.practice-together-heading{display:grid;align-items:start}.practice-together-rhythm-panel>header{align-items:flex-start}.practice-together-rhythm-panel>header>svg{width:2rem;height:2rem}}.practice-together-rhythm-panel,.practice-together-card,.practice-together-empty,.practice-together-discovery-group,.practice-together-discovery-links{padding:0;overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none}.practice-together-rhythm-panel:before,.practice-together-card:before,.practice-together-empty:before,.practice-together-discovery-group:before,.practice-together-discovery-links:before{display:none}.practice-together-rhythm-panel{gap:12px;padding-bottom:var(--space-lg);border-bottom:1px solid color-mix(in srgb,var(--accent) 18%,var(--line))}.practice-together-rhythm-panel>header{padding-bottom:10px;border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.practice-together-rhythm-list{gap:0}.practice-together-rhythm-pair{padding:14px 0;border-top-color:color-mix(in srgb,var(--line) 78%,transparent)}.practice-together-group{gap:10px;padding-top:var(--space-md);border-top:1px solid color-mix(in srgb,var(--accent) 18%,var(--line))}.practice-together-group>header{padding-inline:0}.practice-together-list{gap:0}.practice-together-card{gap:12px;padding:16px 0;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.practice-together-card>header{padding-bottom:10px;border-bottom-color:color-mix(in srgb,var(--line) 78%,transparent)}.practice-together-target{border:0;border-radius:.55rem;background:var(--surface-muted)}.practice-together-discovery{gap:0}.practice-together-empty,.practice-together-discovery-group,.practice-together-discovery-links{display:grid;gap:10px;padding:16px 0;border-top:1px solid color-mix(in srgb,var(--accent) 18%,var(--line))}.practice-together-empty{border-top:0;padding-top:0}.practice-together-discovery-group>header{padding-bottom:8px;border-bottom-color:color-mix(in srgb,var(--line) 78%,transparent)}.practice-together-discovery-person{padding:10px 0}.practice-together-discovery-links{padding-bottom:0}.practice-together-target{background:#fff}[data-theme=dark] .practice-together-target{background:var(--paper-alt)}.practice-together-participant-statuses li{background:#fff}[data-theme=dark] .practice-together-participant-statuses li{background:var(--paper-alt)}.practice-together-activities-heading{display:grid;gap:.25rem;padding-bottom:2px}.practice-together-activities-heading .eyebrow{margin-bottom:0}.practice-together-activities-heading p{max-width:720px;margin:0;color:var(--muted);line-height:1.5}body:has(.practice-together-screen){background:var(--paper-alt)}.teacher-assistant-list,.teaching-assistant-candidates,.teaching-assistant-assignment-list{display:grid;gap:0}.teacher-assistant-row,.teacher-assistant-choice{display:flex;align-items:center;gap:.65rem;width:100%;min-width:0;padding:.72rem 0;border:0;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent);color:inherit;background:transparent;text-align:left}.teacher-assistant-row>div,.teacher-assistant-choice>span{display:grid;min-width:0;gap:.1rem}.teacher-assistant-profile{display:flex;align-items:center;min-width:0;gap:.65rem;color:inherit;text-decoration:none}.teacher-assistant-row>.teacher-assistant-profile{display:flex;align-items:center}.teacher-assistant-profile>span:not(.user-avatar){display:grid;min-width:0;gap:.1rem}.teacher-assistant-row>.teacher-assistant-actions{display:flex;align-items:center}.teacher-assistant-profile:hover strong,.teacher-assistant-profile:focus-visible strong{color:var(--primary-hover);text-decoration:underline;text-underline-offset:2px}.teacher-assistant-row small,.teacher-assistant-choice small,.teaching-assistant-assignment-list small{color:var(--muted)}.teacher-assistant-row .plain-link{margin-left:auto}.teacher-assistant-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem .75rem;margin-left:auto}.teacher-assistant-actions .plain-link{margin-left:0}.teacher-assistant-filter-menu{position:relative;margin-left:auto;color:var(--text-secondary);font-size:var(--text-xs)}.teacher-assistant-filter-menu summary{padding:.35rem .55rem;border:1px solid var(--line);border-radius:8px;background:var(--paper);cursor:pointer;list-style:none;white-space:nowrap}.teacher-assistant-filter-menu summary::-webkit-details-marker{display:none}.teacher-assistant-filter-menu[open] summary{border-color:var(--primary);color:var(--primary-hover)}.teacher-assistant-filter-options{position:absolute;top:calc(100% + .35rem);right:0;z-index:4;display:grid;min-width:11rem;gap:.1rem;padding:.45rem .6rem;border:1px solid var(--line);border-radius:9px;background:var(--paper);box-shadow:var(--shadow-md)}.teacher-assistant-filter-options label{display:flex;align-items:center;gap:.45rem;padding:.35rem 0;cursor:pointer;white-space:nowrap}.teacher-assistant-filter-options input{width:auto;padding:0}.teacher-assistant-choice{cursor:pointer}.teacher-assistant-choice:hover,.teacher-assistant-choice.selected{color:var(--primary-hover)}.teacher-assistant-choice>:last-child{margin-left:auto}.teaching-assistant-dialog{display:grid;gap:.65rem;box-sizing:border-box;width:min(34rem,calc(100vw - 2rem));max-height:min(86vh,42rem);overflow:auto;padding:14px;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:var(--paper);box-shadow:var(--shadow-lg)}.teaching-assistant-dialog>header,.teaching-assistant-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.teaching-assistant-dialog>header>div{display:grid;gap:.15rem}.teaching-assistant-dialog h2{margin:0}.teaching-assistant-dialog .journey-post-header{align-items:flex-start;margin:0;padding:0 0 .65rem;border-bottom:1px solid var(--line)}.teaching-assistant-dialog .journey-post-header>div{min-width:0}.teaching-assistant-dialog .journey-post-header strong,.teaching-assistant-dialog .journey-post-header span{overflow-wrap:anywhere}.teaching-assistant-dialog>label{display:grid;gap:.3rem;color:var(--text-secondary);font-size:var(--text-xs)}.teaching-assistant-dialog>label .search-field{min-width:0}.teaching-assistant-dialog>footer{padding-top:.65rem;border-top:1px solid var(--line)}.teaching-assistant-learner-dialog{width:min(100% - 1.5rem,44rem)}.teaching-assistant-learner-list{display:grid;max-height:min(55vh,30rem);overflow-y:auto;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.teaching-assistant-learner-row{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:.65rem;min-width:0;padding:.55rem 0;border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent);cursor:pointer}.teaching-assistant-learner-row>input[type=checkbox]{width:auto;min-width:1rem;padding:0;accent-color:var(--primary)}.teaching-assistant-learner-row>span{display:grid;min-width:0;gap:.12rem}.teaching-assistant-learner-row strong,.teaching-assistant-learner-row small{overflow-wrap:anywhere}.teaching-assistant-learner-row small,.teaching-assistant-loading,.teaching-assistant-assignment-summary{color:var(--muted);font-size:var(--text-xs)}.teaching-assistant-loading{padding:.9rem 0}.teaching-assistant-filter-note{margin:-.15rem 0 0;color:var(--muted);font-size:var(--text-xs)}.teaching-assistant-load-more{justify-self:start;padding:0;font-size:var(--text-xs)}.teaching-assistant-dialog>footer{flex-wrap:wrap;justify-content:flex-end}.teaching-assistant-assignment-summary{margin-right:auto}.teaching-assistant-assignment-workspace{gap:.75rem;scroll-margin-top:1rem}.teaching-assistant-assignment-workspace .journey-post-header{align-items:flex-start;margin:0}.teaching-assistant-assistant-select,.teaching-assistant-filter-toolbar>label{display:grid;gap:.3rem;color:var(--text-secondary);font-size:var(--text-xs)}.teaching-assistant-assistant-select select{width:min(100%,28rem)}.teaching-assistant-slot-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;padding:.65rem 0;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.teaching-assistant-slot-column{display:grid;align-content:start;gap:.35rem;min-width:0}.teaching-assistant-slot-column>strong{color:var(--text-secondary);font-size:var(--text-xs)}.teaching-assistant-slot-column>small{color:var(--muted);font-size:.68rem}.teaching-assistant-slot-button{width:100%;min-width:0;padding:.45rem .35rem;border:1px solid var(--line);border-radius:8px;color:var(--text-secondary);background:var(--paper);font-size:.72rem;line-height:1.25;text-align:center;cursor:pointer}.teaching-assistant-slot-button:hover,.teaching-assistant-slot-button.selected{border-color:var(--primary);color:var(--primary-hover);background:color-mix(in srgb,var(--primary) 10%,var(--paper))}.teaching-assistant-selected-slots{min-height:1.35rem;color:var(--muted);font-size:var(--text-xs);line-height:1.45}.teaching-assistant-selected-slots strong{color:var(--primary-hover)}.teaching-assistant-filter-toolbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(14rem,.75fr);align-items:end;gap:.75rem}.teaching-assistant-filter-toolbar p{margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.45}@media(max-width:800px){.teaching-assistant-slot-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.teaching-assistant-filter-toolbar{grid-template-columns:1fr}}@media(max-width:520px){.teaching-assistant-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.teacher-assignment-page{gap:.85rem}.teacher-assignment-page>.teaching-hero{align-items:center;padding:.15rem 0 .8rem;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}.teacher-assignment-page>.teaching-hero>svg{width:1.8rem;height:1.8rem}.teacher-assignment-page>.teaching-hero>div:first-of-type{display:grid;gap:.1rem}.teacher-assignment-page>.teaching-hero h1{font-size:clamp(1.35rem,3vw,1.8rem);line-height:1.15}.teacher-assignment-page>.teaching-hero p{margin-top:.15rem;font-size:var(--text-xs)}.teacher-assignment-page .teaching-assistant-assignment-workspace{gap:.9rem;padding:clamp(12px,2vw,18px);border-radius:14px;box-shadow:none}.teacher-assignment-page .teaching-assistant-assignment-workspace>.journey-post-header{align-items:flex-start;margin:0;padding-bottom:.75rem;border-bottom:1px solid var(--line)}.teacher-assignment-page .teaching-assistant-assignment-workspace>.journey-post-header .journey-author{min-width:0}.teacher-assignment-page .teaching-assistant-assignment-workspace>.journey-post-header strong{font-size:.98rem}.teacher-assignment-page .teaching-assistant-assistant-select{max-width:30rem;font-weight:700}.teacher-assignment-page .teaching-assistant-assistant-select select{min-height:2.25rem;border-radius:8px}.teacher-assignment-page .teaching-assistant-slot-grid{gap:.45rem;padding:.75rem;border:1px solid var(--line);border-radius:10px;background:var(--paper-alt)}.teacher-assignment-page .teaching-assistant-slot-column{gap:.3rem}.teacher-assignment-page .teaching-assistant-slot-button{padding:.42rem .3rem;border-radius:7px;background:var(--paper)}.teacher-assignment-page .teaching-assistant-selected-slots{padding:.55rem .7rem;border-radius:8px;background:color-mix(in srgb,var(--primary) 7%,var(--paper))}.teacher-assignment-page .teaching-assistant-filter-toolbar{align-items:center;padding-top:.1rem}.teacher-assignment-page .teaching-assistant-filter-toolbar p{padding-bottom:.25rem}.teacher-assignment-page .teaching-assistant-learner-list{max-height:min(48vh,28rem);padding:0 .7rem;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.teacher-assignment-page .teaching-assistant-learner-row:first-of-type{border-top:0}.teacher-assignment-page .teaching-assistant-learner-row{padding:.65rem .1rem}.teacher-assignment-page .teaching-assistant-assignment-workspace>footer{padding-top:.7rem;border-top:1px solid var(--line)}.teacher-assignment-roster{gap:.75rem;padding:clamp(12px,2vw,18px);border-radius:14px;box-shadow:none}.teacher-assignment-page>.teacher-assignment-roster{order:2}.teacher-assignment-page>.teacher-assignment-allocation-filter{order:3}.teacher-assignment-page>.teaching-assistant-assignment-workspace{order:4}.teacher-assignment-roster .journey-post-header{margin:0;padding-bottom:.65rem;border-bottom:1px solid var(--line)}.teacher-assignment-roster-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.65rem}.teacher-assignment-roster-column{display:grid;align-content:start;gap:.35rem;min-width:0;padding:.7rem;border:1px solid var(--line);border-radius:10px;background:var(--paper-alt)}.teacher-assignment-roster-column>header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-bottom:.45rem;border-bottom:1px solid var(--line)}.teacher-assignment-roster-column>header>strong{display:grid;min-width:1.6rem;height:1.6rem;place-items:center;border-radius:999px;color:var(--primary-hover);background:var(--accent-10);font-size:var(--text-xs)}.teacher-assignment-roster-column>div{display:grid;gap:0}.teacher-assignment-roster-learner{display:flex;align-items:center;gap:.5rem;min-width:0;padding:.42rem 0;border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent);color:inherit;text-decoration:none}.teacher-assignment-roster-learner:last-child{border-bottom:0}.teacher-assignment-roster-learner>span{display:grid;min-width:0;gap:.08rem}.teacher-assignment-roster-learner:hover strong,.teacher-assignment-roster-learner:focus-visible strong{color:var(--primary-hover);text-decoration:underline;text-underline-offset:2px}.teacher-assignment-roster-learner small,.teacher-assignment-unassigned-summary{color:var(--muted);font-size:var(--text-xs)}.teacher-assignment-unassigned-summary{margin:0;padding-top:.55rem;border-top:1px solid var(--line)}.teacher-assignment-allocation-filter{display:grid;gap:.3rem;max-width:24rem;color:var(--text-secondary);font-size:var(--text-xs);font-weight:700}.teacher-assignment-allocation-filter select{min-height:2.25rem;border-radius:8px}.teacher-assignment-page>.teacher-assignment-roster,.teacher-assignment-page>.teacher-assignment-allocation-filter{display:none}.teacher-assignment-page .teaching-assistant-assignment-workspace{gap:.75rem}.teacher-assignment-filter-row{display:grid;grid-template-columns:minmax(11rem,1fr) minmax(11rem,1fr) minmax(9rem,.72fr) minmax(11rem,.85fr);align-items:end;gap:.6rem}.teacher-assignment-slot-filter,.teacher-assignment-search,.teacher-assignment-allocation-filter,.teacher-assignment-assistant-filter{min-width:0}.teacher-assignment-slot-filter>summary{display:flex;align-items:center;min-height:2.25rem;padding:0 .7rem;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--paper);cursor:pointer;font-size:var(--text-xs);font-weight:700}.teacher-assignment-slot-filter[open]>summary{border-color:var(--primary)}.teacher-assignment-slot-filter .teaching-assistant-slot-grid{margin-top:.45rem}.teacher-assignment-search,.teacher-assignment-allocation-filter,.teacher-assignment-assistant-filter{display:grid;gap:.3rem;color:var(--muted);font-size:var(--text-xs);font-weight:700}.teacher-assignment-search input,.teacher-assignment-allocation-filter select,.teacher-assignment-assistant-filter select{min-height:2.25rem}.teacher-assignment-results,.teacher-assigned-learners{display:grid;gap:0;border-top:1px solid var(--line)}.teacher-assignment-results>header,.teacher-assigned-learners>header{display:flex;justify-content:space-between;gap:.6rem;padding:.65rem 0 .35rem;color:var(--ink)}.teacher-assignment-results>header small,.teacher-assigned-learners>header small{color:var(--muted);font-size:var(--text-xs)}.teacher-assignment-command{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.65rem;padding-top:.65rem;border-top:1px solid var(--line)}.teacher-assignment-command>div{display:grid;gap:.08rem}.teacher-assignment-command strong{color:var(--ink);font-size:var(--text-sm)}.teacher-assignment-command span{color:var(--muted);font-size:var(--text-xs)}.teacher-assigned-learners{padding-top:.2rem}.teacher-assigned-learners>div{border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.teacher-assigned-learners .teacher-assignment-roster-learner{min-width:0;padding:.55rem .3rem}.teacher-assigned-learners .teaching-assistant-loading{margin:0}.teacher-assignment-table-wrap{overflow-x:auto;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.teacher-assignment-table{width:100%;min-width:50rem;border-collapse:collapse;color:var(--ink);font-size:var(--text-xs);text-align:left}.teacher-assignment-table th,.teacher-assignment-table td{padding:.55rem .45rem;border-bottom:1px solid color-mix(in srgb,var(--line) 78%,transparent);vertical-align:middle}.teacher-assignment-table th{color:var(--muted);font-size:.68rem;font-weight:750;white-space:nowrap}.teacher-assignment-table th:first-child,.teacher-assignment-table td:first-child{width:2rem;padding-left:.2rem;text-align:center}.teacher-assignment-table input[type=checkbox]{width:1rem;height:1rem;margin:0;accent-color:var(--primary)}.teacher-assignment-table tbody tr:hover{background:color-mix(in srgb,var(--primary) 5%,transparent)}.teacher-assignment-table-learner{display:inline-flex;min-width:10rem;align-items:center;gap:.45rem;color:var(--ink);text-decoration:none}.teacher-assignment-table-learner:hover strong,.teacher-assignment-table-learner:focus-visible strong{color:var(--primary-hover);text-decoration:underline;text-underline-offset:2px}.teacher-assignment-table td:nth-child(3),.teacher-assignment-table td:nth-child(4),.teacher-assignment-table td:nth-child(5),.teacher-assignment-table td:nth-child(6){color:var(--muted);white-space:nowrap}.teacher-assigned-command{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.55rem;padding:.55rem 0 0;color:var(--muted);font-size:var(--text-xs)}.teacher-assigned-command .plain-link{padding:.15rem 0;font-size:var(--text-xs)}.teacher-assigned-learner-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.55rem;padding-top:.65rem}.teacher-assigned-learner-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem .65rem;padding:.55rem .65rem;border:1px solid var(--line);border-radius:9px;background:var(--paper-alt)}.teacher-assigned-learner-card .teacher-assignment-roster-learner{padding:0;border:0}.teacher-assigned-learner-card .plain-link{align-self:start;padding:.15rem 0;font-size:var(--text-xs);white-space:nowrap}.teacher-assigned-learner-card dl{display:grid;grid-column:1 / -1;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem .75rem;margin:0}.teacher-assigned-learner-card dl>div{display:grid;gap:.08rem;min-width:0}.teacher-assigned-learner-card dt{color:var(--muted);font-size:.68rem}.teacher-assigned-learner-card dd{margin:0;color:var(--ink);font-size:var(--text-xs);overflow-wrap:anywhere}@media(max-width:420px){.teacher-assigned-learner-card dl{grid-template-columns:1fr}}@media(max-width:760px){.teacher-assignment-filter-row{grid-template-columns:1fr}}@media(max-width:760px){.teacher-assignment-page>.teaching-hero{align-items:flex-start}.teacher-assignment-page .teaching-assistant-filter-toolbar{gap:.5rem}.teacher-assignment-page .teaching-assistant-learner-list{max-height:45vh}}.teaching-assistant-assignment-list .teaching-scope{display:flex;align-items:center;gap:.6rem;padding:.65rem 0;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent)}.teaching-assistant-assignment-list .teaching-scope>span{display:grid;gap:.08rem}.practice-together-screen{background:var(--paper-alt)}.teaching-programme-switcher{margin:0 0 12px}.teaching-programme-switcher .journey-post-header{align-items:center;gap:12px}.teaching-programme-select{min-width:min(100%,280px);margin-left:auto}.teaching-programme-select select{min-width:220px}.admin-programme-dialog{display:grid;gap:12px;box-sizing:border-box;width:min(620px,calc(100vw - 24px));max-height:min(88vh,760px);overflow:auto;padding:16px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg)}.admin-programme-dialog .journey-post-header{margin:0;padding:0 0 10px;border-bottom:1px solid var(--line)}.admin-programme-dialog .journey-post-header>div{display:grid;gap:3px;min-width:0}.admin-programme-dialog .journey-post-header strong{font-size:1.05rem}.admin-programme-dialog .journey-post-header span{color:var(--muted);font-size:.82rem}.admin-programme-dialog>label{display:grid;gap:5px;color:var(--muted);font-size:.82rem;font-weight:700}.admin-programme-dialog>label input[type=number],.admin-programme-dialog>label textarea{box-sizing:border-box;width:100%}.admin-programme-course-list{display:grid;max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:8px}.admin-programme-course-list label{display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border-bottom:1px solid color-mix(in srgb,var(--line) 75%,transparent);cursor:pointer}.admin-programme-course-list label:last-child{border-bottom:0}.admin-programme-course-list label:hover{background:var(--accent-6)}.admin-programme-course-list input{flex:0 0 auto;width:auto;margin-top:3px}.admin-programme-course-list span{display:grid;min-width:0;gap:2px}.admin-programme-course-list small{color:var(--muted);font-size:.74rem}.admin-programme-dialog>footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding-top:10px;border-top:1px solid var(--line)}@media(max-width:640px){.teaching-programme-switcher .journey-post-header{align-items:stretch;flex-direction:column}.teaching-programme-select{margin-left:0}.teaching-programme-select select{width:100%}.admin-programme-dialog{padding:12px}}.checked-combo-box{position:relative;min-width:0;color:var(--muted);font-size:var(--text-sm)}.checked-combo-box-trigger{display:flex;min-width:150px;align-items:center;gap:7px;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;color:var(--muted);background:var(--paper);font:inherit;cursor:pointer}.checked-combo-box-trigger:disabled{cursor:not-allowed;opacity:.55}.checked-combo-box-trigger strong{max-width:min(220px,30vw);overflow:hidden;color:var(--ink);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.checked-combo-box-trigger>svg{margin-left:auto;transition:transform .16s ease}.checked-combo-box-compact-icon{display:none;flex:0 0 auto;color:var(--primary-hover)}.checked-combo-box.is-open .checked-combo-box-trigger>svg{transform:rotate(180deg)}.checked-combo-box-popup{position:absolute;z-index:30;top:calc(100% + 6px);right:0;display:grid;width:min(280px,calc(100vw - 32px));overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:0 14px 32px #1f2a3729}.checked-combo-box-search{display:flex;align-items:center;gap:7px;margin:8px 8px 4px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;color:var(--muted)}.checked-combo-box-search input{width:100%;min-width:0;padding:0;border:0;outline:0;color:var(--ink);background:transparent;font:inherit;font-size:var(--text-sm)}.checked-combo-box-clear{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:0;border-radius:50%;color:var(--muted);background:transparent;cursor:pointer}.checked-combo-box-clear:disabled{visibility:hidden}.checked-combo-box-options{display:grid;max-height:min(300px,45vh);gap:2px;padding:4px 8px 8px;overflow-y:auto}.checked-combo-box-option{display:flex;min-width:0;align-items:center;gap:8px;padding:7px 8px;border-radius:7px;color:var(--ink);cursor:pointer}.checked-combo-box-option:hover{background:var(--wash)}.checked-combo-box-option input{width:16px;height:16px;flex:0 0 auto;margin:0;accent-color:var(--accent)}.checked-combo-box-option span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.checked-combo-box-option input:disabled+span{color:var(--muted)}.checked-combo-box-all{border-bottom:1px solid var(--line);border-radius:0;font-weight:700}.checked-combo-box-empty{margin:8px;color:var(--muted);font-size:var(--text-xs);text-align:center}.checked-combo-box-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-xs)}.checked-combo-box-footer>div{display:flex;align-items:center;gap:8px}.checked-combo-box-footer .action-link{min-height:1.9rem;padding:.25rem .65rem;font-size:var(--text-xs)}@media(max-width:520px){.checked-combo-box{flex:1 1 145px}.checked-combo-box-trigger{width:100%}.checked-combo-box-popup{left:0;right:auto;max-width:calc(100vw - 32px)}}@media(max-width:760px)and (orientation:portrait){.checked-combo-box.has-compact-icon .checked-combo-box-label{display:none}.checked-combo-box.has-compact-icon .checked-combo-box-compact-icon{display:inline-flex;align-items:center}}.article-index{display:grid;gap:1.1rem}.article-index-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.article-index-header p{margin-bottom:0}.article-category-bar{border:1px solid color-mix(in srgb,var(--ink,#202124) 14%,transparent);border-radius:.55rem;background:var(--surface,#fff)}.article-category-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;padding:.75rem 1rem;background:transparent;border:0;cursor:pointer}.article-category-toggle span:first-child{display:flex;align-items:center;gap:.8rem}.article-category-toggle small{opacity:.68}.article-category-popover{border-top:1px solid color-mix(in srgb,var(--ink,#202124) 12%,transparent);padding:.7rem 1rem}.category-manager-inline{display:grid;grid-template-columns:1fr 1fr 1.5fr auto;gap:.5rem}.article-category-list{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.6rem}.article-category-list span{font-size:.82rem;padding:.22rem .5rem;border-radius:999px;background:color-mix(in srgb,var(--accent,#4f46e5) 12%,transparent)}.article-category-list .archived{opacity:.5;text-decoration:line-through}.article-list-section{border-top:1px solid color-mix(in srgb,var(--ink,#202124) 14%,transparent);padding-top:1rem}.article-list-section>header{display:flex;justify-content:space-between;align-items:end;margin-bottom:.7rem}.article-list-section h3{margin:.2rem 0 0}.article-count{opacity:.65}.article-index-list{display:grid;gap:.55rem}.article-index-row{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid color-mix(in srgb,var(--ink,#202124) 12%,transparent);border-radius:.55rem;text-decoration:none;color:inherit;background:var(--surface,#fff)}.article-index-row:hover{border-color:var(--accent,#4f46e5);transform:translateY(-1px)}.article-index-copy{display:grid;gap:.2rem;min-width:0}.article-index-copy strong{font-size:1.03rem}.article-index-copy small{opacity:.6}.article-index-copy span{opacity:.78;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.article-index-meta{display:grid;align-content:center;justify-items:end;gap:.2rem;white-space:nowrap;font-size:.8rem;opacity:.72}.article-status{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.article-status.published{color:#287a4b}.article-status.archived{color:#9a3b3b}.article-empty-state{text-align:center;padding:3rem 1rem;border:1px dashed color-mix(in srgb,var(--ink,#202124) 22%,transparent);border-radius:.55rem}.article-editor-page{max-width:1100px;margin:0 auto}.article-editor-page-header{display:grid;gap:.8rem;margin-bottom:1rem}.article-editor-page-header h2{margin:.25rem 0}.article-editor-page-header p{margin:0;opacity:.75}.article-editor-console .admin-console-content{max-width:1200px;margin:0 auto}.article-editor{display:grid;gap:.8rem}.article-editor label,.article-editor fieldset{display:grid;gap:.35rem}.article-editor fieldset label{display:flex;align-items:center;gap:.4rem}.article-editor fieldset label input[type=radio]{margin-left:auto}.editor-toolbar{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;padding:.55rem;background:color-mix(in srgb,var(--surface,#fff) 88%,var(--accent,#4f46e5));border-radius:.5rem}.editor-toolbar label{display:flex;align-items:center;gap:.3rem}.editor-toolbar button,.toolbar-file{padding:.35rem .6rem;border:1px solid color-mix(in srgb,var(--ink,#202124) 18%,transparent);border-radius:.35rem;background:var(--surface,#fff);cursor:pointer}.toolbar-file input{display:none}.editor-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem;min-height:26rem}.editor-workspace.markdown{grid-template-columns:1fr}.article-markdown-editor{min-height:26rem;width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;line-height:1.55}.article-live-preview{padding:1rem;border:1px solid color-mix(in srgb,var(--ink,#202124) 14%,transparent);border-radius:.5rem;overflow:auto;background:var(--surface,#fff)}.article-live-preview .article-content{max-width:70ch}.article-seo-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.article-admin-actions{display:flex;gap:.65rem;flex-wrap:wrap}.article-admin-actions .danger{color:#a32222}.revision-history{border-top:1px solid color-mix(in srgb,var(--ink,#202124) 14%,transparent);padding-top:.6rem}.revision-history>div{display:grid;grid-template-columns:1fr auto;gap:.25rem .75rem;padding:.45rem 0}.revision-history small{opacity:.75}.revision-history button{grid-column:2}.account-message{margin:0}@media(max-width:900px){.category-manager-inline{grid-template-columns:1fr}.article-index-header,.article-index-row{display:grid}.article-index-meta{justify-items:start}.editor-workspace,.article-seo-grid{grid-template-columns:1fr}}.article-category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:.55rem;margin-bottom:.8rem}.article-category-card{display:grid;gap:.18rem;text-align:left;padding:.7rem;border:1px solid color-mix(in srgb,var(--ink,#202124) 14%,transparent);border-radius:.5rem;background:var(--surface,#fff);cursor:pointer}.article-category-card:hover,.article-category-card.selected{border-color:var(--accent,#4f46e5);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent,#4f46e5) 16%,transparent)}.article-category-card small,.article-category-card span{font-size:.78rem;opacity:.68}.article-category-card em{font-size:.72rem;color:#9a3b3b}.article-category-card.archived{opacity:.62}.category-edit-form{border-top:1px solid color-mix(in srgb,var(--ink,#202124) 12%,transparent);padding-top:.75rem}.category-edit-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.category-edit-fields{display:grid;grid-template-columns:1fr 1fr 1.4fr .65fr auto auto;gap:.5rem}.category-edit-fields .danger{color:#a32222}.article-pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1rem}.article-pagination button{padding:.45rem .8rem}.article-index-copy>span{font-size:.88rem}.article-index-copy small{display:none}@media(max-width:900px){.category-edit-fields{grid-template-columns:1fr 1fr}.category-edit-fields button{grid-column:span 1}}.article-category-title{display:flex;align-items:center;gap:.45rem;min-width:0;width:100%;padding:.55rem .2rem;border:0;border-bottom:1px solid color-mix(in srgb,var(--ink,#202124) 16%,transparent);background:transparent;color:inherit;text-align:left;cursor:pointer}.article-category-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem}.article-category-title span{margin-left:auto;flex:0 0 auto;font-size:.78rem;opacity:.62}.article-category-title em{flex:0 0 auto;font-size:.7rem;color:#9a3b3b;font-style:normal}.article-category-title:hover,.article-category-title:focus-visible,.article-category-title.selected{border-bottom-color:var(--accent,#4f46e5);color:var(--accent,#4f46e5);outline:none}.article-category-title.selected{border-bottom-width:2px}.article-category-title.archived{opacity:.58}.article-index-row{display:block;padding:.62rem .85rem}.article-index-copy{display:grid;gap:.16rem;min-width:0}.article-index-title-row{display:flex;align-items:baseline;gap:.7rem;min-width:0}.article-index-title-row>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1rem}.article-index-meta{display:inline-flex;align-items:center;gap:.45rem;flex:0 0 auto;white-space:nowrap;font-size:.76rem;opacity:.68}.article-index-meta span{opacity:1}.article-index-excerpt{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.72;font-size:.84rem}.article-index-copy>span{font-size:inherit}@media(max-width:900px){.article-index-title-row{gap:.45rem}.article-index-meta{font-size:.7rem;gap:.3rem}.article-index-title-row>strong{font-size:.94rem}}.article-list-filters{display:flex;align-items:end;gap:1rem;flex-wrap:wrap;padding:.75rem 0;border-top:1px solid color-mix(in srgb,var(--ink,#202124) 10%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ink,#202124) 10%,transparent);margin-bottom:.7rem}.article-search-field{display:grid;gap:.3rem;min-width:min(100%,22rem);flex:1 1 20rem}.article-search-field span,.article-status-filters legend{font-size:.76rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;opacity:.68}.article-search-field input{width:100%;min-height:2.3rem}.article-status-filters{display:flex;align-items:center;gap:.75rem;margin:0;padding:0;border:0}.article-status-filters legend{margin-right:.1rem}.article-status-filters label{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap;font-size:.86rem}.article-status-filters input{accent-color:var(--accent,#4f46e5)}.article-filter-reset{align-self:center;margin-left:auto;white-space:nowrap}@media(max-width:900px){.article-list-filters{align-items:stretch;gap:.7rem}.article-search-field{flex-basis:100%}.article-status-filters{flex-wrap:wrap}.article-status-filters legend{flex-basis:100%}.article-filter-reset{margin-left:0}}.article-list-filters{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto;align-items:end;gap:1rem}.article-search-field{min-width:0}.article-status-filters{justify-self:end}.article-list-filters>.checked-combo-box{justify-self:end}.article-filter-reset{justify-self:end;margin-left:0}@media(max-width:900px){.article-list-filters{grid-template-columns:1fr;align-items:stretch}.article-status-filters,.article-list-filters>.checked-combo-box{justify-self:stretch}.article-status-filters{justify-content:flex-start}.article-filter-reset{justify-self:start}}.article-list-filters{align-items:start}.article-status-filters{align-self:start}.article-list-filters>.checked-combo-box{align-self:start}.article-filter-reset{align-self:start}.article-list-filters>.checked-combo-box{align-self:end}.article-filter-reset{align-self:end}@media(min-width:901px){.article-list-filters>.checked-combo-box{grid-column:2;grid-row:1}.article-filter-reset{grid-column:3;grid-row:1}.article-status-filters{grid-column:4;grid-row:1;justify-self:end;text-align:right}}.article-list-filters{grid-template-columns:minmax(0,1fr) auto;align-items:stretch}.article-search-field{align-self:stretch;min-width:0}.article-filter-side{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:start;gap:.55rem 1rem;min-width:min(100%,30rem)}.article-filter-side .article-status-filters{grid-column:1 / -1;grid-row:1;justify-self:end;align-self:start}.article-filter-side>.checked-combo-box{grid-column:2;grid-row:2;justify-self:end;align-self:end}.article-filter-side .article-filter-reset{grid-column:1;grid-row:2;justify-self:end;align-self:end;margin:0}@media(max-width:900px){.article-list-filters{grid-template-columns:1fr}.article-filter-side{grid-template-columns:1fr auto;min-width:0}.article-filter-side .article-status-filters{justify-self:start}.article-filter-side>.checked-combo-box{justify-self:end}.article-filter-side .article-filter-reset{justify-self:start}}@media(min-width:901px){.article-filter-side{grid-template-columns:1fr;width:max-content;max-width:100%;min-width:0}.article-filter-side .article-status-filters{grid-column:1;width:100%;justify-content:flex-end}.article-filter-side>.checked-combo-box{grid-column:1;width:100%;min-width:0}.article-filter-side .article-filter-reset{grid-column:1;justify-self:end}}@media(min-width:901px){.article-filter-side{grid-template-rows:auto auto auto}.article-filter-side .article-filter-reset{grid-row:3;justify-self:end}}.article-filter-side .checked-combo-box-label{display:none}.article-filter-side{grid-template-rows:auto auto}.article-filter-lower{grid-column:1;grid-row:2;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:.75rem;width:100%}.article-filter-lower>.checked-combo-box{grid-column:auto;width:100%;min-width:0}.article-filter-lower .article-filter-reset{grid-column:auto;grid-row:auto;justify-self:end;align-self:end;margin:0;white-space:nowrap}@media(max-width:900px){.article-filter-lower{grid-template-columns:minmax(0,1fr) auto;width:100%}}.article-editor-tabs{display:flex;align-items:end;gap:.35rem;border-bottom:1px solid color-mix(in srgb,var(--ink,#202124) 16%,transparent);margin-top:.25rem}.article-editor-tabs button{padding:.55rem .85rem;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted,#68707a);cursor:pointer;font:inherit}.article-editor-tabs button:hover,.article-editor-tabs button.is-active{border-bottom-color:var(--accent,#4f46e5);color:var(--ink,#202124)}.editor-toolbar{margin-top:.65rem}.editor-toolbar button,.toolbar-file{min-height:2.2rem}.editor-workspace.visual{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.article-full-preview{min-height:26rem}.article-editor-meta-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.5fr);gap:.8rem}.article-category-editor{border:1px solid color-mix(in srgb,var(--ink,#202124) 14%,transparent);border-radius:.5rem;background:var(--surface,#fff)}.article-category-editor-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.7rem .9rem;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.article-category-editor-toggle>span:first-child{display:grid;gap:.15rem}.article-category-editor-toggle small{opacity:.68}.article-category-options{display:grid;gap:.35rem;padding:.7rem .9rem;border-top:1px solid color-mix(in srgb,var(--ink,#202124) 12%,transparent)}.article-category-options legend{font-size:.82rem;font-weight:700}.article-category-options label{display:flex;grid-template-columns:none;align-items:center;gap:.5rem;padding:.35rem .25rem}.article-category-options label input[type=radio]{margin-left:auto}.article-category-options label span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:900px){.article-editor-meta-grid,.editor-workspace.visual{grid-template-columns:1fr}.article-editor-tabs button{flex:1;padding-inline:.45rem}}
