:root{--bg:#f3ede5;--surface:#fcf9f5;--surface-2:#ebe3d8;--text:#1d1a17;--text-2:#4a443e;--muted:#7d746a;--line:#e0d6c9;--hover:#eee7dd;--accent:#b8461f;--spark:#e8673f;--accent-soft:color-mix(in srgb, var(--accent) 10%, transparent);--on-accent:#fff;--grad:var(--accent);--grad-shadow:none;--mark:#ffe58a;--pattern-ink:#78583817;--kind-mix:14%;--kind-base:var(--surface);--tab-on-bg:var(--accent);--tab-on-text:var(--on-accent);--nav-bg:var(--text);--nav-text:color-mix(in srgb, var(--bg) 75%, transparent);--nav-on-bg:var(--bg);--nav-on-text:var(--text);--pen:#c8323c;--ok:#1f8a4c;--warn:#d98a1c;--speaking:#2563c9;--grammar:#a83d78;--vocabulary:#26aebb;--cards:#26aebb;--questions:#2563c9;--glow:0 0 0 1px var(--line);--soft:0 0 0 1px var(--line);--float:0 8px 24px #3c281424;--score-base:var(--warn);--score-low:var(--text);--score-mid:var(--text);--score-high:var(--ok);--score-top:var(--ok);--font-reading:var(--font-en), Georgia, serif;--radius:12px;--nav-height:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b1916;--surface:#282420;--surface-2:#34302b;--text:#f2ede7;--text-2:#d2cbc3;--muted:#a29a91;--line:#423c35;--hover:#34302b;--accent:#f08a62;--spark:#f08a62;--on-accent:#10141c;--mark:#ffcd504d;--pattern-ink:#ffffff0d;--pen:#ff7a72;--ok:#5fd39e;--warn:#f0ad5c;--speaking:#4f86e6;--grammar:#d16aa5;--vocabulary:#3fbfb0;--cards:#3fbfb0;--questions:#4f86e6;--kind-mix:12%;--kind-base:var(--surface-2);--tab-on-bg:var(--accent);--tab-on-text:var(--on-accent);--nav-bg:#302c27;--nav-text:#b8b0a7;--nav-on-bg:#f2ede7;--nav-on-text:#1b1916;--glow:0 0 0 1px var(--line);--soft:0 0 0 1px var(--line);--float:0 10px 28px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#1b1916;--surface:#282420;--surface-2:#34302b;--text:#f2ede7;--text-2:#d2cbc3;--muted:#a29a91;--line:#423c35;--hover:#34302b;--accent:#f08a62;--spark:#f08a62;--on-accent:#10141c;--mark:#ffcd504d;--pattern-ink:#ffffff0d;--pen:#ff7a72;--ok:#5fd39e;--warn:#f0ad5c;--speaking:#4f86e6;--grammar:#d16aa5;--vocabulary:#3fbfb0;--cards:#3fbfb0;--questions:#4f86e6;--kind-mix:12%;--kind-base:var(--surface-2);--tab-on-bg:var(--accent);--tab-on-text:var(--on-accent);--nav-bg:#302c27;--nav-text:#b8b0a7;--nav-on-bg:#f2ede7;--nav-on-text:#1b1916;--glow:0 0 0 1px var(--line);--soft:0 0 0 1px var(--line);--float:0 10px 28px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:16px/1.5 var(--font-sans,-apple-system), -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0}:root[data-brand=teacher]{--accent:#1d5c55;--on-accent:#fff}:root:has([data-brand=teacher]){--accent:#1d5c55;--on-accent:#fff}@media (prefers-color-scheme:dark){:root:not([data-theme=light])[data-brand=teacher]{--accent:#7cc4b8;--on-accent:#10181a}:root:not([data-theme=light]):has([data-brand=teacher]){--accent:#7cc4b8;--on-accent:#10181a}}:root[data-theme=dark][data-brand=teacher]{--accent:#7cc4b8;--on-accent:#10181a}:root[data-theme=dark]:has([data-brand=teacher]){--accent:#7cc4b8;--on-accent:#10181a}:root[data-brand=teacher] .main h1:after{content:"";background:var(--spark);border-radius:2px;width:28px;height:4px;margin-top:8px;display:block}:root:has([data-brand=teacher]) .main h1:after{content:"";background:var(--spark);border-radius:2px;width:28px;height:4px;margin-top:8px;display:block}:root[data-brand=teacher] .nav-link[aria-current=page]:before{background:var(--spark)}:root:has([data-brand=teacher]) .nav-link[aria-current=page]:before{background:var(--spark)}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}p{margin:0}ul{margin:0;padding:0;list-style:none}code{background:var(--hover);border-radius:6px;padding:1px 5px;font-size:.875em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}h1{letter-spacing:-.01em;margin:8px 0 20px;font-size:1.75rem;font-weight:700;line-height:1.15}.subtitle{color:var(--muted);margin:-14px 0 20px}.muted{color:var(--muted)}.small{font-size:.875rem}.empty{color:var(--muted);padding:24px 0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.main{max-width:640px;padding:20px 16px calc(var(--nav-height) + 32px + env(safe-area-inset-bottom));margin:0 auto}.nav{z-index:10;background:color-mix(in srgb, var(--surface) 82%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);position:fixed;inset:auto 0 0}.nav ul{display:flex}.nav li{flex:1}.nav-brand{display:none}.nav-link{height:var(--nav-height);color:var(--muted);letter-spacing:.01em;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:.8125rem;font-weight:600;transition:color .15s;display:flex;position:relative}.nav-link[aria-current=page]{color:var(--accent)}.nav-link[aria-current=page]:before{content:"";background:var(--accent);border-radius:0 0 3px 3px;width:28px;height:3px;position:absolute;top:0}.auth-status{display:none}.auth-status>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auth-logout{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:.8125rem}.auth-logout:hover,.auth-status[href]:hover{color:var(--accent)}.auth-page{max-width:420px;margin:10vh auto 0}.auth-form{gap:10px;margin:28px 0 14px;display:grid}.auth-form label{font-weight:600}.auth-form input{border:1px solid var(--line);background:var(--surface);border-radius:6px;min-height:48px;padding:0 14px}.auth-message{color:var(--text-2);margin-top:8px}@media (min-width:900px){.app{grid-template-columns:232px minmax(0,1fr);display:grid}.nav{border-top:0;border-right:1px solid var(--line);background:color-mix(in srgb, var(--surface) 65%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(18px);flex-direction:column;align-self:start;height:100dvh;padding:28px 14px;display:flex;position:sticky;inset:0 auto auto}.nav-brand{letter-spacing:-.01em;color:var(--text);align-items:center;gap:10px;padding:0 10px 28px;font-weight:700;display:flex}.nav ul{flex-direction:column;gap:4px}.nav-link{height:42px;color:var(--text-2);border-radius:6px;flex-direction:row;justify-content:flex-start;gap:12px;padding:0 12px;font-size:1rem;font-weight:600}.nav-link:hover{background:var(--hover)}.nav-link[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.nav-link[aria-current=page]:before{display:none}.auth-status{align-items:center;gap:8px;margin-top:auto;padding:14px 10px 0;display:flex;overflow:hidden}.main{width:100%;max-width:760px;padding:48px}.app:not(:has(>.nav)){display:block}.app:not(:has(>.nav)) .auth-page{border-radius:var(--radius);background:var(--surface);box-shadow:var(--glow);margin-top:12vh;padding:40px}}.brand-mark{width:28px;height:28px;color:var(--spark);display:block}.brand-mark-line{fill:none;stroke:currentColor;stroke-width:11px;stroke-linecap:round;stroke-linejoin:round}.brand-mark-line circle{fill:currentColor;stroke:none}@keyframes enter{0%{opacity:0;transform:translateY(4px)}}.button{border:1px solid var(--line);background:var(--surface);letter-spacing:-.01em;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;min-height:48px;padding:0 20px;font-weight:600;transition:transform .1s,opacity .15s;display:inline-flex}.button:active{transform:scale(.98)}.button.primary{background:var(--accent);color:var(--on-accent);border-color:#0000}.button.block{width:100%}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.icon-button:hover{background:var(--hover)}.icon-button:disabled{opacity:.3;cursor:default;background:0 0}.rows{border-top:1px solid var(--line)}.row{align-items:center;gap:12px;min-height:60px;padding:10px 2px;display:flex}.row-main{flex:1;font-weight:600;display:grid}.row-main small{color:var(--muted);font-size:.8125rem;font-weight:400}.row-meta{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8125rem}.row-chevron{color:var(--muted);flex-shrink:0;width:18px;height:18px}@media (hover:hover){.row:hover .row-main{color:var(--accent)}}.focus{padding:12px 0 32px}.focus-count{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:2.75rem;font-weight:600;line-height:1}.focus-title{letter-spacing:-.01em;font-size:1.25rem;font-weight:600}.focus .button,.drill-done .button{margin-top:20px}.today.is-loading .focus{visibility:hidden}.today-rationale{max-width:34rem;color:var(--text-2);margin-top:10px}.today-plan{margin:0 0 28px}.today-plan-heading{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.today-plan-heading h2{margin:0;font-size:1rem}.today-plan-size{color:var(--muted);font-size:.8125rem}.today-plan-list{border-top:1px solid var(--line);counter-reset:plan}.today-plan-item{border-bottom:1px solid var(--line);align-items:center;gap:12px;min-height:64px;display:flex}.today-plan-order{background:var(--hover);width:24px;height:24px;color:var(--muted);border-radius:50%;place-items:center;font-size:.8125rem;display:grid}.today-plan-link{flex:1;gap:2px;padding:10px 0;display:grid}.today-plan-title{font-weight:600}.today-plan-detail{color:var(--muted);font-size:.8125rem}.weekly-goal{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin:0 0 28px;padding:18px}.weekly-goal-heading{justify-content:space-between;align-items:end;gap:12px;display:flex}.weekly-goal-heading h2{margin:3px 0 0;font-size:1rem}.goal-choice select{background:var(--hover);color:var(--text-2);border:0;border-radius:6px;padding:7px 8px;font-size:.8125rem}.weekly-goal .progress-track{margin:14px 0 16px}.weekly-goal-next{gap:3px;display:grid}.weekly-goal-next strong{font-size:1rem}.weekly-goal-next .button{justify-self:start;min-height:40px;margin-top:10px}.back{min-height:44px;color:var(--muted);align-items:center;gap:2px;margin-left:-6px;font-size:1rem;display:inline-flex}.back svg{width:18px;height:18px}.sections{border-top:1px solid var(--line)}.section{border-bottom:1px solid var(--line)}.section>summary{cursor:pointer;align-items:center;gap:12px;min-height:56px;font-size:1.0625rem;font-weight:600;list-style:none;display:flex}.section>summary>span:first-child{flex:1}.section>summary:after{content:"";border-right:1.75px solid var(--muted);border-bottom:1.75px solid var(--muted);width:7px;height:7px;margin:0 6px 4px 0;transition:transform .15s;transform:rotate(45deg)}.section[open]>summary:after{margin-bottom:-4px;transform:rotate(225deg)}summary::-webkit-details-marker{display:none}.section-body{padding-bottom:20px;animation:.15s ease-out enter}.section-body h3{margin:20px 0 8px;font-size:1rem}.transcript-text{border:1px solid var(--line);background:var(--hover);max-height:360px;color:var(--text-2);white-space:pre-wrap;border-radius:6px;margin:0;padding:12px;font:.875rem/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto}.transcript-details{margin-top:20px}.transcript-details summary{color:var(--muted);cursor:pointer}.transcript-comparison-list{margin-top:10px}.transcript-comparison{border-top:1px solid var(--line);gap:5px;padding:12px 0;display:grid}.transcript-comparison p{overflow-wrap:anywhere}.bullets{color:var(--text-2);padding-left:1.1rem;list-style:outside}.bullets li+li{margin-top:6px}.terms>li{gap:4px;padding:14px 0;display:grid}.terms>li+li{border-top:1px solid var(--line)}.terms>li:first-child{padding-top:0}.term{font-weight:600}.example{color:var(--text-2);border-left:2px solid var(--line);margin-top:4px;padding-left:12px}.original summary{color:var(--muted);cursor:pointer;align-items:center;min-height:32px;font-size:.875rem;list-style:none;display:flex}.original summary:before{content:"+ ";white-space:pre}.original[open] summary:before{content:"− "}.original p{color:var(--muted);font-size:.875rem}.actions{grid-template-columns:1fr auto;gap:8px;margin-top:28px;display:grid}.upload-form{gap:16px;display:grid}.upload-form label{gap:8px;font-weight:600;display:grid}.upload-form input[type=file]{border:1px solid var(--line);background:var(--surface);border-radius:6px;width:100%;padding:14px}.edit-class{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-top:28px}.edit-class>summary{cursor:pointer;padding:16px;font-weight:600;list-style:none}.edit-class>summary::-webkit-details-marker{display:none}.edit-class>summary:after{content:"+";float:right;color:var(--muted)}.edit-class[open]>summary:after{content:"−"}.edit-class-body{border-top:1px solid var(--line);padding:18px 16px}.checkbox{grid-template-columns:none;align-items:center;gap:8px!important;font-weight:400!important;display:flex!important}.filters{gap:8px;margin-bottom:16px;display:flex}.select{flex:1;min-width:0;position:relative}.select:after{content:"";pointer-events:none;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);width:6px;height:6px;position:absolute;top:50%;right:14px;transform:translateY(-70%)rotate(45deg)}.select select{appearance:none;border:1px solid var(--line);background:var(--surface);text-overflow:ellipsis;border-radius:6px;width:100%;min-height:44px;padding:0 34px 0 14px;font-size:1rem}.drill{min-height:calc(100dvh - 250px - env(safe-area-inset-bottom));flex-direction:column;display:flex}.drill-bar{justify-content:space-between;align-items:center;margin:0 -10px;display:flex}.progress-track{background:var(--line);border-radius:6px;height:2px;margin-top:6px;overflow:hidden}.progress-track span{background:var(--accent);height:100%;transition:width .2s;display:block}.flashcard{background:var(--surface);border:1px solid var(--line);touch-action:pan-y;border-radius:12px;flex-direction:column;gap:14px;min-height:220px;margin-top:16px;padding:24px 20px;animation:.15s ease-out enter;display:flex}.flashcard-meta{color:var(--muted);font-size:.8125rem}.flashcard-prompt{letter-spacing:-.01em;font-size:1.25rem;font-weight:600;line-height:1.4}.flashcard-answer{color:var(--text-2);border-top:1px solid var(--line);padding-top:14px;animation:.15s ease-out enter}.drill-actions{grid-auto-columns:1fr;grid-auto-flow:column;gap:8px;margin-top:auto;padding-top:16px;display:grid}.drill-done{padding:12px 0}@media (min-width:900px){.drill{min-height:0}.drill-actions{margin-top:0}}.search{align-items:center;margin-bottom:12px;display:flex;position:relative}.search svg{width:18px;height:18px;color:var(--muted);pointer-events:none;position:absolute;left:12px}.search input{border:1px solid var(--line);background:var(--surface);appearance:none;border-radius:6px;width:100%;min-height:44px;padding:0 14px 0 40px;font-size:1rem}.entry>summary{cursor:pointer;align-items:baseline;gap:12px;min-height:52px;padding:14px 2px;list-style:none;display:flex}.entry-term{flex-shrink:0;max-width:60%;font-weight:600}.entry-meaning{min-width:0;color:var(--muted);text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.entry[open] .entry-meaning{white-space:normal}.entry-body{gap:8px;padding:0 2px 16px;animation:.15s ease-out enter;display:grid}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.exercise-page{gap:28px;display:grid}.exercise-panel{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:22px}.exercise-form,.upload-form{gap:14px;display:grid}.exercise-form label,.upload-form label{color:var(--text-2);gap:6px;font-size:.875rem;display:grid}.exercise-form input,.exercise-form textarea,.exercise-form select,.upload-form input{border:1px solid var(--line);background:var(--bg);border-radius:6px;width:100%;padding:11px 12px}.exercise-form textarea{resize:vertical}.exercise-heading{margin:0 0 12px;font-size:1.25rem}.exercise-list{gap:8px;display:grid}.exercise-card{text-align:left;border:1px solid var(--line);background:var(--surface);color:inherit;cursor:pointer;border-radius:12px;gap:3px;padding:15px;display:grid}.exercise-card:hover,.exercise-card.selected{border-color:var(--accent)}.exercise-card span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.exercise-message{color:var(--accent)}.exercise-prompt{color:var(--text-2);margin:4px 0 18px}.attempt-list{border-top:1px solid var(--line);margin-top:22px}.attempt-list h3{margin:16px 0 4px;font-size:.875rem}.attempt{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:12px;padding:9px 0;font-size:.875rem;display:flex}.attempt strong{color:var(--text-2);font-weight:600}.metrics-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.metrics-grid p{gap:2px;margin:0;display:grid}.metrics-grid strong{font-size:1.25rem}.metrics-grid span{color:var(--muted);font-size:.8125rem}.profile-page.is-loading{min-height:420px}.profile-hero{border:1px solid var(--line);background:var(--surface);border-radius:12px;justify-content:space-between;align-items:end;gap:20px;margin-bottom:12px;padding:22px;display:flex}.profile-hero h2{letter-spacing:-.01em;margin:4px 0;font-size:1.75rem}.profile-hero .button{flex-shrink:0}.profile-stats{border-bottom:1px solid var(--line);padding:18px 2px 24px}.profile-metrics{max-width:460px}.profile-section{border-bottom:1px solid var(--line);padding:28px 0}.profile-section-heading{justify-content:space-between;align-items:end;gap:12px;margin-bottom:14px;display:flex}.profile-section-heading h2{letter-spacing:-.01em;margin:2px 0 0;font-size:1.25rem}.profile-weaknesses{gap:10px;display:grid}.profile-weakness{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:0 14px}.profile-weakness summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:48px;font-weight:600;list-style:none;display:flex}.profile-weakness summary::-webkit-details-marker{display:none}.profile-weakness .terms{padding-bottom:8px}.profile-card{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:16px}.profile-card h3{margin:18px 0 8px;font-size:1rem}.profile-card h3:first-child{margin-top:0}@media (max-width:480px){.profile-hero{align-items:start;display:grid}.profile-hero .button{width:100%}}.profile-section{margin-top:28px}.profile-section h2{margin:0 0 12px;font-size:1.25rem}.profile-action{margin-top:12px}.attempt-result{border-top:1px solid var(--line);gap:8px;margin-top:20px;padding-top:20px;display:grid}.attempt-result h3,.attempt-result h4{margin:10px 0 0;font-size:1rem}.attempt-result h3{font-size:1rem}.tone-base{--tone:var(--score-base)}.tone-low{--tone:var(--score-low)}.tone-mid{--tone:var(--score-mid)}.tone-high{--tone:var(--score-high)}.tone-top{--tone:var(--score-top)}.attempt-result{position:relative;overflow:hidden}.score-head{align-items:center;gap:18px;display:flex}.score-meta{gap:8px;min-width:0;display:grid}.score-ring{flex-shrink:0;width:120px;height:120px;position:relative}.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.score-ring circle{fill:none;stroke-width:10px}.score-ring-track{stroke:var(--line)}.score-ring-value{stroke:var(--tone);stroke-linecap:round}.score-ring-label{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.score-ring-label strong{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:2.75rem;line-height:1}.score-ring-label span{color:var(--tone);margin-top:4px;font-size:.8125rem;font-weight:600}.badges{flex-wrap:wrap;gap:6px;display:flex}.badge{background:var(--hover);border-radius:999px;padding:3px 9px;font-size:.8125rem;font-weight:600}.badge.xp{background:var(--accent);color:var(--on-accent)}.badge.best{background:color-mix(in srgb, var(--score-top) 22%, transparent);color:var(--text)}.badge.up{color:var(--score-high)}.badge.down{color:var(--score-base)}.next-focus{color:var(--text-2);font-size:.875rem}.kpi-list{gap:12px;margin:14px 0 6px;display:grid}.kpi-head{justify-content:space-between;align-items:baseline;gap:12px;font-size:.875rem;display:flex}.kpi-head small{color:var(--muted);font-size:.8125rem;display:block}.kpi-head strong{font-variant-numeric:tabular-nums}.kpi-track{background:var(--hover);border-radius:999px;height:8px;margin-top:5px;overflow:hidden}.kpi-track span{background:var(--tone);border-radius:999px;height:100%;display:block}.score-pill{text-align:center;min-width:2.4em;color:var(--tone);background:color-mix(in srgb, var(--tone) 14%, transparent);border-radius:999px;padding:1px 8px;font-size:.8125rem;font-weight:700;display:inline-block}.exercise-card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.structure-chips{flex-wrap:wrap;gap:6px;display:flex}.structure-chips span{background:var(--hover);color:var(--text-2);border-radius:999px;padding:4px 10px;font-size:.8125rem}.fix-list{border-top:1px solid var(--line)}.en{font-family:var(--font-reading);font-size:1.0625rem;line-height:1.55}.fix{border-bottom:1px solid var(--line);gap:4px;padding:14px 0;display:grid}.fix-new ins{-webkit-text-decoration:underline 2px var(--pen);text-decoration:underline 2px var(--pen);text-underline-offset:4px;font-weight:600}.fix.is-style .fix-new ins{-webkit-text-decoration:underline 1.5px dotted var(--accent);text-decoration:underline 1.5px dotted var(--accent)}.fix-old{color:var(--muted);font-size:.875rem}.fix-old del{color:var(--pen);text-decoration-thickness:1.5px}.fix.is-style .fix-old del{color:inherit;text-decoration:none}.fix-note{color:var(--text-2);font-size:.875rem}.fix-meta{color:var(--muted);font-size:.8125rem}.xp-bar{background:var(--hover);border-radius:12px;grid-template-columns:auto 1fr;align-items:center;gap:6px 14px;margin-top:4px;padding:14px;display:grid}.xp-level{background:var(--accent);width:52px;color:var(--on-accent);border-radius:12px;justify-items:center;padding:6px 0;display:grid}.xp-level span{text-transform:uppercase;letter-spacing:.06em;font-size:.8125rem}.xp-level strong{font-size:1.25rem;line-height:1.1}.xp-progress-head{justify-content:space-between;gap:8px;font-size:.8125rem;font-weight:600;display:flex}.xp-track{background:var(--line);border-radius:999px;height:8px;margin-top:6px;overflow:hidden}.xp-track span{background:var(--accent);border-radius:999px;height:100%;display:block}.xp-chips{color:var(--text-2);grid-column:1/-1;gap:14px;font-size:.875rem;display:flex}.exercise-card-badges{flex-shrink:0;gap:6px;display:flex}.retry-pill{color:var(--score-low);background:color-mix(in srgb, var(--score-low) 14%, transparent);border-radius:999px;padding:1px 8px;font-size:.8125rem;font-weight:600}.attempt-audio{width:100%;height:40px;margin-top:8px}.score-history{gap:6px;margin:12px 0 8px;display:grid}.score-history-bars{align-items:end;gap:4px;height:56px;display:flex}.score-history-bars span{background:var(--tone);transform-origin:bottom;border-radius:6px 4px 0 0;flex:1;max-width:28px}.trend-up{color:var(--score-high)}.trend-down{color:var(--score-base)}.eyebrow{color:var(--muted);letter-spacing:.09em;text-transform:uppercase;font-size:.8125rem;font-weight:700}.date-eyebrow{margin-top:4px}.date-eyebrow+h1{margin-top:2px}.subtitle{margin:-12px 0 22px}.section-head{justify-content:space-between;align-items:baseline;gap:12px;margin:30px 0 12px;display:flex}.section-head h2{letter-spacing:-.01em;margin:0;font-size:1rem;font-weight:700}.panel .section-head{margin-top:0}.page-head{justify-content:space-between;align-items:center;gap:12px;margin:8px 0 20px;display:flex}.page-head h1{margin:0}.small-button{min-height:40px;padding:0 14px;font-size:.875rem}.panel,.exercise-panel,.weekly-goal,.flashcard,.profile-card{border:1px solid var(--line);background:var(--surface);box-shadow:var(--glow);border-radius:12px}.panel{padding:20px}.meter{background:var(--surface-2);border-radius:999px;height:6px;display:block;overflow:hidden}.meter>span{border-radius:inherit;background:var(--tone,var(--accent));height:100%;display:block}.delta{font-variant-numeric:tabular-nums;vertical-align:middle;align-items:center;gap:2px;font-size:.8125rem;font-weight:700;display:inline-flex}.delta.up{color:var(--ok)}.delta.down{color:var(--pen)}.delta.flat{color:var(--muted);background:var(--surface-2)}.back{color:var(--muted);font-size:.875rem;font-weight:600}.back+h1{margin-top:4px}.hero{border:1px solid var(--line);background:var(--surface);box-shadow:var(--glow);border-radius:12px;gap:10px;padding:22px;display:grid;position:relative;overflow:hidden}.hero:before{content:"";aspect-ratio:1;background:radial-gradient(closest-side, color-mix(in srgb, var(--tone,var(--accent)) 22%, transparent), transparent);pointer-events:none;border-radius:50%;width:70%;position:absolute;inset:-40% -20% auto auto}.hero>*{position:relative}.hero-top{justify-content:space-between;align-items:end;gap:16px;display:flex}.hero-score{align-items:baseline;gap:4px;margin-top:4px;display:flex}.hero-score strong{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:2.75rem;font-weight:700;line-height:.95}.hero-score span{color:var(--muted);font-weight:600}.hero-band{color:var(--tone,var(--accent));align-items:center;gap:8px;margin-top:6px;font-weight:700;display:flex}.hero-spark{width:44%;max-width:200px;height:64px;color:var(--tone,var(--accent))}.hero-stats{border-top:1px solid var(--line);grid-template-columns:1fr auto auto;align-items:center;gap:10px;margin-top:6px;padding-top:14px;display:grid}.hero-level{gap:6px;display:grid}.hero-level-head{justify-content:space-between;font-size:.875rem;display:flex}.hero-level .meter>span{background:var(--accent)}.hero-chip{background:var(--surface-2);border-radius:12px;justify-items:center;min-width:58px;padding:6px 8px;line-height:1.2;display:grid}.hero-chip strong{font-size:1rem}.hero-chip span{color:var(--muted);font-size:.8125rem}.hero-empty .button{justify-self:start;margin-top:6px}.focus-card{background:var(--accent-soft);color:var(--text);border-radius:12px;align-items:center;gap:12px;margin-top:12px;padding:14px 16px;font-size:1rem;display:flex}.focus-card svg{color:var(--accent);flex-shrink:0}.focus-card small{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;font-size:.8125rem;font-weight:700;display:block}.plan-list{gap:8px;display:grid}.plan-item{border:1px solid var(--line);background:var(--surface);border-radius:12px;align-items:center;gap:14px;padding:14px 16px;transition:border-color .15s,transform .1s;display:flex}a.plan-item:hover{border-color:var(--accent)}a.plan-item:active{transform:scale(.99)}.plan-icon{background:var(--accent-soft);width:38px;height:38px;color:var(--accent);border-radius:12px;flex-shrink:0;place-items:center;display:grid}.plan-icon svg{width:20px;height:20px}.plan-icon.done{background:color-mix(in srgb, var(--score-high) 16%, transparent);color:var(--score-high);font-weight:700}.plan-text{flex:1;gap:1px;min-width:0;display:grid}.plan-text strong{font-weight:600}.plan-text small{color:var(--muted);font-size:.8125rem}.is-done .plan-text strong{color:var(--muted)}.row-card{background:var(--surface-2);border-radius:12px;align-items:center;gap:12px;margin-top:24px;padding:14px 16px;display:flex}.row-card>svg:first-child{color:var(--muted)}.today.is-loading .plan{visibility:hidden}.mode-list{gap:12px;display:grid}.mode-card{border:1px solid var(--line);background:var(--surface);box-shadow:var(--glow);border-radius:12px;align-items:center;gap:16px;padding:18px;transition:border-color .15s,transform .1s;display:flex}.mode-card:hover{border-color:var(--mode)}.mode-card:active{transform:scale(.99)}.mode-speak{--mode:var(--accent)}.mode-cards{--mode:var(--score-mid)}.mode-questions{--mode:var(--score-high)}.mode-icon{width:52px;height:52px;color:var(--mode);background:color-mix(in srgb, var(--mode) 14%, transparent);border-radius:12px;flex-shrink:0;place-items:center;display:grid}.mode-icon svg{width:26px;height:26px}.mode-text{flex:1;gap:3px;min-width:0;display:grid}.mode-text strong{letter-spacing:-.01em;font-size:1.25rem}.mode-text small{color:var(--muted);font-size:.875rem;line-height:1.4}.mode-meta{color:var(--mode);background:color-mix(in srgb, var(--mode) 12%, transparent);border-radius:999px;justify-self:start;margin-top:4px;padding:2px 9px;font-size:.8125rem;font-weight:700}.progress-page.is-loading .stat-row{visibility:hidden}.panel-score{align-items:baseline;gap:6px;margin-top:2px;display:flex}.panel-score strong{letter-spacing:-.01em;color:var(--tone);font-size:2.75rem;font-weight:700;line-height:1}.panel-score>span:not(.delta){color:var(--muted);font-weight:600}.trend-chart{width:100%;height:auto;color:var(--accent);margin:10px 0 6px;display:block;overflow:visible}.trend-guide{stroke:var(--line);stroke-dasharray:3 5}.trend-label{fill:var(--muted);font-size:11px}.trend-dot{fill:var(--surface);stroke:currentColor;stroke-width:2.5px}.kpi-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}@media (min-width:560px){.kpi-grid{grid-template-columns:repeat(3,1fr)}}.kpi-tile{border:1px solid var(--line);background:var(--surface);border-radius:12px;gap:6px;padding:14px;display:grid}.kpi-tile.is-weakest{border-color:var(--score-low)}.kpi-tile-label{color:var(--muted);font-size:.8125rem;font-weight:600}.kpi-tile-value{justify-content:space-between;align-items:center;gap:6px;display:flex}.kpi-tile-value strong{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:700}.error-list{gap:8px;display:grid}.error-list>.button{justify-self:start;margin-top:6px}.error-group{border:1px solid var(--line);background:var(--surface);border-radius:12px}.error-group summary{cursor:pointer;align-items:center;gap:12px;padding:12px 14px;list-style:none;display:flex}.error-group summary::-webkit-details-marker{display:none}.error-rank{background:var(--surface-2);width:26px;height:26px;color:var(--muted);border-radius:6px;place-items:center;font-size:.8125rem;font-weight:700;display:grid}.error-label{flex:1;font-weight:600}.error-count{color:var(--score-base);background:color-mix(in srgb, var(--score-base) 12%, transparent);border-radius:999px;padding:2px 9px;font-size:.8125rem;font-weight:700}.error-group ul{gap:10px;padding:0 14px 14px 52px;display:grid}.error-group li{gap:1px;font-size:.875rem;display:grid}.error-group s{color:var(--score-base)}.stat-row{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;display:grid}.stat-row p{background:var(--surface-2);border-radius:12px;gap:2px;padding:14px;display:grid}.stat-row strong{letter-spacing:-.01em;font-size:1.75rem;font-weight:700}.stat-row span{color:var(--muted);font-size:.8125rem;line-height:1.3}.class-list{gap:8px;display:grid}.class-card{border:1px solid var(--line);background:var(--surface);border-radius:12px;align-items:center;gap:14px;padding:14px 16px;transition:border-color .15s;display:flex}.class-card:hover{border-color:var(--accent)}.class-index{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);font-variant-numeric:tabular-nums;border-radius:12px;flex-shrink:0;place-items:center;font-weight:700;display:grid}.words-section{margin-top:12px;scroll-margin-top:20px}.exercise-page{gap:18px}.exercise-page header h1{margin-bottom:20px}.new-exercise{padding:0}.new-exercise>summary{color:var(--accent);cursor:pointer;padding:16px 20px;font-weight:700;list-style:none}.new-exercise>summary::-webkit-details-marker{display:none}.new-exercise>form{padding:0 20px 20px}.exercise-card{border-radius:12px;transition:border-color .15s}.xp-bar{background:var(--surface);border:1px solid var(--line);box-shadow:var(--glow)}.sparkline{display:block;overflow:visible}.plan-list,.mode-list,.class-list,.kpi-grid{margin:0;padding:0;list-style:none}.trend-label{font-size:17px;font-weight:600}.exercise-card strong{color:var(--text)}.invite-panel{gap:14px;display:grid}.invite-result{border-top:1px solid var(--line);gap:10px;padding-top:14px;animation:.15s ease-out enter;display:grid}.invite-link{overflow-wrap:anywhere;padding:10px 12px;font-size:.8125rem;display:block}.invite-actions{flex-wrap:wrap;gap:8px;display:flex}.state-pill{color:var(--muted);background:var(--surface-2);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:.8125rem;font-weight:700;display:inline-block}.state-pill.is-busy{color:var(--score-mid);background:color-mix(in srgb, var(--score-mid) 14%, transparent)}.state-pill.is-good{color:var(--score-high);background:color-mix(in srgb, var(--score-high) 14%, transparent)}.state-pill.is-bad{color:var(--score-base);background:color-mix(in srgb, var(--score-base) 14%, transparent)}.attempt-states{align-items:center;gap:6px;display:inline-flex}.attempt.is-shown{color:var(--text)}.attempt.button{border-radius:12px;min-height:44px;padding:9px 14px}.teacher-note{border-left:3px solid var(--score-base);background:color-mix(in srgb, var(--score-base) 8%, transparent);border-radius:12px;gap:4px;margin-bottom:14px;padding:12px 14px;display:grid}.teacher-note.is-good{border-left-color:var(--score-high);background:color-mix(in srgb, var(--score-high) 8%, transparent)}.submit-box,.review-box{border-top:1px solid var(--line);gap:8px;margin-top:16px;padding-top:16px;display:grid}.review-box textarea{border:1px solid var(--line);background:var(--bg);width:100%;font:inherit;resize:vertical;border-radius:6px;padding:11px 12px}.skill-tabs{background:var(--surface-2);border-radius:12px;gap:6px;margin:0 0 16px;padding:4px;display:flex}.skill-tabs a{min-height:40px;color:var(--muted);border-radius:6px;flex:1;justify-content:center;align-items:center;gap:6px;font-size:.875rem;font-weight:600;display:inline-flex}.skill-tabs a.is-on{background:var(--surface);color:var(--text);box-shadow:var(--glow)}.tab-count{background:var(--accent);min-width:20px;color:var(--on-accent);text-align:center;border-radius:999px;padding:0 6px;font-size:.8125rem;line-height:20px}.type-picker{flex-wrap:wrap;gap:6px;display:flex}.type-picker label{border:1px solid var(--line);color:var(--text-2);cursor:pointer;border-radius:6px;align-items:center;padding:8px 12px;font-weight:600;display:inline-flex}.type-picker label.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.type-picker input{opacity:0;pointer-events:none;position:absolute}.exercise-form select{border:1px solid var(--line);background:var(--bg);border-radius:6px;width:100%;padding:11px 12px}.text-exercise{gap:14px;margin-bottom:8px;display:grid}.text-items{gap:12px;margin:0;padding-left:1.3rem;display:grid}.text-items li{padding-left:4px}.text-items label{gap:6px;display:grid}.text-prompt{font-weight:600}.text-items input{border:1px solid var(--line);background:var(--bg);border-radius:6px;width:100%;padding:11px 12px;font-size:1rem}.text-items.is-marked li{border-left:3px solid var(--score-high);background:color-mix(in srgb, var(--score-high) 7%, transparent);border-radius:12px;gap:2px;padding:10px 12px;display:grid}.text-items.is-marked li.is-wrong{border-left-color:var(--score-base);background:color-mix(in srgb, var(--score-base) 7%, transparent)}.text-answer{font-weight:600}.text-score{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mark-toggle{border:1px solid var(--line);background:var(--surface);color:var(--text-2);cursor:pointer;border-radius:6px;justify-self:start;margin-top:4px;padding:3px 9px;font-size:.8125rem}.ai-panel>summary{color:var(--accent)}.ai-panel .ai-options,.ai-panel .ai-message{padding:0 20px 20px}.form-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.ai-options{gap:10px;display:grid}.ai-option{border:1px solid var(--line);background:var(--bg);border-radius:12px;gap:8px;padding:14px;transition:border-color .15s;display:grid}.ai-option.is-on{border-color:var(--accent);background:var(--accent-soft)}.ai-option-head{cursor:pointer;align-items:center;gap:10px;display:flex}.ai-option-head input{width:18px;height:18px;accent-color:var(--accent)}.ai-why{color:var(--text-2);font-size:.875rem}.ai-items{gap:4px;margin:0;padding-left:1.2rem;font-size:.875rem;display:grid}.ai-option .button{justify-self:start}.skills-hero{gap:18px}.skills-head{align-items:center;gap:18px;display:flex}.skills-head .score-ring{width:108px;height:108px}.score-ring-empty{border:10px solid var(--surface-2);color:var(--muted);border-radius:50%;place-items:center;font-size:1.75rem;font-weight:700;display:grid}.skills-summary{gap:4px;min-width:0;display:grid}.skills-title{letter-spacing:-.01em;color:var(--tone,var(--text));font-size:1.75rem;font-weight:700;line-height:1.1}.skill-bars{gap:10px;margin:0;padding:0;list-style:none;display:grid}.skill-bars li{grid-template-columns:96px 1fr 64px;align-items:center;gap:10px;display:grid}.skill-label{color:var(--text-2);font-size:.875rem;font-weight:600}.skill-bars .meter{height:8px}.skill-value{font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;gap:4px;font-weight:700;display:inline-flex}.skill-value .delta{font-size:.8125rem}.skill-bars li.is-empty .skill-label,.skill-bars li.is-empty .skill-value{color:var(--muted);font-weight:600}.skill-chips{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;padding-top:14px;display:flex}.skill-chips span{background:var(--surface-2);color:var(--text-2);border-radius:6px;padding:6px 10px;font-size:.8125rem}.skill-chips strong{color:var(--text)}.achievements{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.achievements li{border:1px dashed var(--line);color:var(--muted);border-radius:12px;gap:2px;padding:12px;display:grid}.achievements li.is-earned{background:var(--surface);color:var(--text);box-shadow:var(--glow);border-style:solid}.achievement-icon{filter:grayscale();opacity:.45;font-size:1.25rem}.achievements li.is-earned .achievement-icon{filter:none;opacity:1}.achievements strong{font-size:.875rem}.achievements small{font-size:.8125rem;line-height:1.3}.nav-icon{display:inline-flex;position:relative}.nav-dot{background:var(--score-base);width:9px;height:9px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:-2px;right:-4px}.notifications ul{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.notifications li{border-bottom:1px solid var(--line)}.notifications li>a,.notifications li>div{align-items:center;gap:12px;min-height:52px;padding:8px 2px;display:flex}.notifications li:not(.is-unread) .notification-dot{background:var(--line)}.notification-icon{font-size:1.25rem}.notification-text{font-size:.875rem;display:grid}.notifications li.is-unread .notification-text{font-weight:600}.notification-text small{color:var(--muted);font-size:.8125rem;font-weight:400}.inbox{margin-bottom:8px}.inbox-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.inbox-list a{background:var(--surface-2);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.inbox-list a:hover{background:var(--accent-soft)}.class-card .score-pill,.class-card .state-pill{flex-shrink:0}.card-picker{gap:10px;margin-top:24px;display:grid}.card-picker .section-head{margin:0}.picker-actions{gap:6px;display:flex}.picker-list{gap:6px;max-height:420px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.picker-list label{border:1px solid var(--line);cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:9px 12px;display:flex}.picker-list label.is-on{border-color:var(--accent);background:var(--accent-soft)}.picker-list label.is-done{opacity:.6;cursor:default}.picker-list input{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0}.picker-list span:not(.state-pill){flex:1;min-width:0;display:grid}.picker-list small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;overflow:hidden}.skills-head .score-ring-label span{display:none}.auth-tabs{margin:0 0 6px}.auth-tabs button{min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:1;font-weight:600}.auth-tabs button.is-on{background:var(--surface);color:var(--text);box-shadow:var(--glow)}.link-button{color:var(--accent);cursor:pointer;background:0 0;border:0;justify-self:center;padding:6px;font-size:.875rem}.account-roles{gap:6px;margin:0 0 8px;padding:0;list-style:none;display:grid}.account-roles li{background:var(--surface-2);border-radius:12px;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.account-heading{margin:20px 0 0;font-size:1rem}.class-progress ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.class-progress li{gap:8px;padding:14px 16px;display:grid}.class-progress li.is-failed{border-color:var(--score-base)}.class-progress-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.class-progress-bar{height:10px}.class-progress-bar>span{transition:width 1s linear;animation:none}.class-progress li.is-done .class-progress-bar>span{background:var(--score-high)}.class-progress li.is-failed .class-progress-bar>span{background:var(--score-base)}.link-button.inline{font-size:inherit;padding:0}.class-heading h1{margin-bottom:20px}.class-heading-form{margin:8px 0 20px}.class-queue{margin-bottom:10px}.class-queue .class-card{flex-wrap:wrap}.split{gap:28px;display:grid}.split-detail{min-width:0;display:none}.split.has-pick .split-list{display:none}.split.has-pick .split-detail{display:block}.student-head{align-items:center;gap:14px;display:flex}.student-head h1{margin:0}.student-head .subtitle{margin:2px 0 0}@media (min-width:1200px){.main:has(.split){max-width:1240px}.split{grid-template-columns:380px minmax(0,1fr);align-items:start}.split .split-list,.split .split-detail,.split.has-pick .split-list{display:block}.split-detail{border-left:1px solid var(--line);padding-left:28px}.split .mobile-only{display:none}}.class-card.is-selected{border-color:var(--accent);background:var(--accent-soft)}.hero:before{display:none}.eyebrow,.section,.label,.focus-card small,.fix-tag{text-transform:none;letter-spacing:0}.eyebrow{font-size:.8125rem}.focus-card{background:var(--surface);border:1px solid var(--line)}.skills-title{color:var(--text)}.notification-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;display:inline-block}.avatar{background:var(--accent-soft);color:var(--accent);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:inline-grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%;display:block}.avatar-upload{align-items:center;gap:16px;margin-bottom:8px;display:flex}.avatar-upload .avatar-actions{justify-items:start;gap:4px;display:grid}.avatar-upload .avatar-actions p{margin:0}.avatar-upload .link-button{padding:0}.corner-actions{z-index:30;top:calc(24px + env(safe-area-inset-top));gap:8px;display:flex;position:absolute;right:16px}.corner-button{background:var(--surface);border:1px solid var(--line);width:40px;height:40px;color:var(--text-2);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid}.theme-button{align-items:center;gap:8px;display:inline-flex}.theme-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;width:18px;height:18px}.corner-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.corner-button:hover,.corner-button[aria-current=page]{color:var(--accent);border-color:var(--accent)}@media (min-width:900px){.corner-actions{top:20px;right:24px}}.practice-tabs{margin-bottom:24px}@media (max-width:899px){.practice-tabs{margin-right:48px}}.count{background:var(--accent-soft);min-width:22px;height:22px;color:var(--accent);font-variant-numeric:tabular-nums;border-radius:6px;place-items:center;padding:0 6px;font-size:.8125rem;font-weight:600;display:inline-grid}.status{color:var(--text-2);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;font-size:.8125rem;display:inline-flex}.status:before{content:"";background:var(--muted);border-radius:50%;width:7px;height:7px}.status.is-entregado:before{background:var(--accent)}.status.is-aprobado:before,.status.is-hecho:before{background:var(--ok)}.status.is-devuelto:before{background:var(--pen)}.text-link{color:var(--accent);font-weight:600}.today-date{color:var(--muted);margin:4px 0 16px;font-size:.8125rem}.today-date:first-letter{text-transform:uppercase}.level{gap:14px;display:grid}.level-head{align-items:center;gap:14px;display:flex}.level-num{color:var(--tone,var(--text));font-variant-numeric:tabular-nums;font-size:2.75rem;font-weight:700;line-height:1}.level-word{font-size:1.25rem;font-weight:600;line-height:1.25;display:grid}.level-word .delta{font-size:.875rem}.level-word small{color:var(--muted);font-size:.8125rem;font-weight:400}.level .skill-bars .meter{height:4px}.level .skill-value{color:var(--tone)}.level-facts{color:var(--text-2);flex-wrap:wrap;gap:4px 16px;font-size:.875rem;display:flex}.plan-rows .row-main .en{font-size:1rem;font-weight:400}.plan-rows li.is-done .row-main{color:var(--muted);font-weight:400}.today-focus{color:var(--text-2);max-width:60ch}.today-last{margin-top:28px}.plan-rows{margin:0;padding:0;list-style:none}.plan-rows .row-main .en{font-weight:500}.level .skill-label{font-weight:400}.practice-tabs{border-bottom:1px solid var(--line);background:0 0;border-radius:0;gap:20px;padding:0;overflow-x:auto}.practice-tabs a{white-space:nowrap;border-bottom:2px solid #0000;border-radius:0;flex:none;min-height:44px;margin-bottom:-1px;padding:0}.practice-tabs a.is-on{box-shadow:none;color:var(--text);border-bottom-color:var(--accent);background:0 0}.score{color:var(--tone);font-variant-numeric:tabular-nums;font-weight:600}.roster{border-top:1px solid var(--line);font-size:.875rem}.roster-row{white-space:nowrap;border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto 28px;align-items:center;gap:8px;min-height:48px;padding:6px 8px;display:grid}.roster-row>span:last-child{text-align:right}a.roster-row:hover{background:var(--hover)}.roster-row.is-selected{background:var(--accent-soft)}.roster-name{align-items:center;gap:10px;min-width:0;font-weight:600;display:flex}.split-list h1{margin-top:0}.next-task{border:1px solid var(--line);background:var(--surface);border-radius:12px;gap:12px;padding:16px;display:grid}.next-task h2{margin:0;font-size:1.25rem;font-weight:600;line-height:1.3}.next-label{color:var(--muted);font-size:.8125rem;font-weight:600}.next-task .fix{border:0;padding:0}.teacher-says{color:var(--text-2)}.loop-reason .fix{padding:12px 0}.loop-group{border-bottom:1px solid var(--line);padding:4px 0 16px}.loop-group .rows{border-top:0}.loop-group .rows>li:last-child{border-bottom:0}.loop-item .fix{border-bottom:0;padding-bottom:4px}.loop-item{border-bottom:1px solid var(--line);padding-bottom:12px}.loop-after,.loop-verdict{color:var(--text-2);font-size:.875rem}.loop-verdict{font-weight:600}.en-inline{font-family:var(--font-reading)}.level-line{color:var(--text-2);margin-top:24px;font-size:.875rem}.level-line a:hover{color:var(--accent)}.page-head .level-line{margin:0}.waiting-line{margin-top:16px}.empty-lead{color:var(--text-2);max-width:34rem;margin:8px 0 16px}.more{margin-top:12px;display:inline-block}.nothing{padding:8px 0}.why{padding:0 2px 12px}.why summary,.fold summary{cursor:pointer;color:var(--accent);font-size:.875rem;font-weight:600}.fold{border-top:1px solid var(--line);padding:12px 0}.fold>summary{min-height:32px;color:var(--text);align-items:center;gap:8px;font-size:1rem;display:flex}.fold[open]>summary{margin-bottom:8px}.actions-line{gap:8px;margin:16px 0;display:flex}.review-end{margin-top:24px}.row.is-selected{background:var(--accent-soft)}.solo-exercise .exercise-list{display:none}.section-tabs{border-bottom:1px solid var(--line);gap:24px;margin:16px 0 8px;display:flex;overflow-x:auto}.section-tabs a{min-height:44px;color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;align-items:center;margin-bottom:-1px;font-size:.875rem;font-weight:600;display:inline-flex}.section-tabs a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent)}.today-notices .notifications .section-head{display:none}.exercise-reason{margin:4px 0 12px}.exercise-reason .fix{border:0;padding:4px 0 0}.button{border-radius:999px}.button.primary{background:var(--grad);color:var(--on-accent);box-shadow:var(--grad-shadow);border:0}.button.primary:hover{filter:saturate(1.1)brightness(1.03)}.button.dark{border-color:var(--text);background:var(--text);color:var(--bg)}.panel,.exercise-panel,.weekly-goal,.flashcard,.profile-card,.class-card,.exercise-card{border-radius:var(--radius);background:var(--surface);box-shadow:var(--soft);border-color:#0000}.class-card:hover,.exercise-card:hover,.exercise-card.selected{box-shadow:var(--glow);border-color:#0000}.class-card.is-selected{background:var(--surface);box-shadow:0 0 0 2px var(--accent);border-color:#0000}.rows{border-top:1px solid var(--line);gap:0;display:grid}.rows>li{border-bottom:1px solid var(--line)}.rows .row,.rows>li.row{min-height:56px;padding:10px 4px}.rows a.row:hover{background:var(--hover)}.rows>li>.entry,.grammar-card{box-shadow:var(--soft);background:var(--surface);-webkit-backdrop-filter:saturate(1.6)blur(18px);border-radius:12px}.rows>li>.entry{padding:0 14px}.rows>li>.entry.is-phrase{gap:4px;padding:14px;display:grid}.entry.is-phrase .entry-term{max-width:none}.grammar-list{gap:12px;display:grid}.grammar-card{gap:8px;padding:18px;display:grid}.grammar-card h3{font-size:1.0625rem;font-family:var(--font-reading);margin:0}.grammar-card p{color:var(--text-2);margin:0}.grammar-examples{gap:6px;padding:0;list-style:none;display:grid}.grammar-examples li{border-left:3px solid var(--grammar);font-family:var(--font-reading);padding-left:12px}.row-main{font-weight:600}.kind-icon{width:40px;height:40px;color:var(--kind);background:color-mix(in srgb, var(--kind) var(--kind-mix), var(--kind-base));border-radius:12px;flex-shrink:0;place-items:center;display:grid}.kind-icon svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.kind-icon.is-done{border-radius:50%}.is-speaking{--kind:var(--speaking)}.is-grammar{--kind:var(--grammar)}.is-vocabulary{--kind:var(--vocabulary)}.is-cards{--kind:var(--cards)}.is-questions{--kind:var(--questions)}.is-done{--kind:var(--ok)}.skill-tag{height:24px;color:var(--kind);background:color-mix(in srgb, var(--kind) var(--kind-mix), var(--kind-base));white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;padding:0 10px;font-size:.75rem;font-weight:600;display:inline-flex}.fix-new ins{background:linear-gradient(transparent 38%, var(--mark) 38%, var(--mark) 92%, transparent 92%);border-radius:3px;padding:0 2px;font-weight:600;text-decoration:none}.fix.is-style .fix-new ins{-webkit-text-decoration:underline 1.5px dotted var(--accent);text-decoration:underline 1.5px dotted var(--accent);text-underline-offset:4px;background:0 0}.fix-old del{color:var(--pen)}.practice-tabs,.subtabs{background:0 0;border:0;gap:6px;padding:0;display:flex;overflow-x:auto}.practice-tabs a,.subtabs a{background:var(--surface-2);min-height:36px;color:var(--text-2);white-space:nowrap;border:0;border-radius:999px;flex:none;align-items:center;gap:6px;margin:0;padding:0 14px;font-size:.875rem;font-weight:600;display:inline-flex}.practice-tabs a.is-on,.subtabs a[aria-current=page]{background:var(--tab-on-bg);color:var(--tab-on-text);box-shadow:none}.subtabs{margin:28px 0 14px}.subtabs b{opacity:.65;font-weight:600}.skill-tabs,.skill-tabs a{border-radius:999px}.focus-wrap{margin:16px 0 28px;position:relative}.focus-card-v2{background:var(--surface);box-shadow:var(--glow);border-radius:12px;gap:14px;padding:20px;display:grid;position:relative}.focus-head{align-items:center;gap:12px;display:flex}.focus-head>span:nth-child(2){flex:1;font-size:.9375rem;font-weight:600;display:grid}.focus-head small{color:var(--muted);font-size:.8125rem;font-weight:400}.focus-card-v2 h2,.focus-card-v2 h3{font-family:var(--font-reading);margin:0;font-size:1.375rem;font-weight:600;line-height:1.25}.focus-card-v2 .loop-reason,.focus-card-v2 .teacher-says{background:var(--surface-2);border-radius:12px;padding:12px 14px}.focus-card-v2 .loop-reason .fix{border:0;padding:0}.today-date{margin:4px 0 2px}.today-hello{letter-spacing:-.01em;font-size:1.75rem;font-weight:700;line-height:1.2}.today-level{align-items:center;gap:10px;margin-top:10px;display:inline-flex}.today-level-num{background:var(--grad);width:46px;height:46px;color:var(--on-accent);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;font-size:1.0625rem;font-weight:700;display:grid}.today-level>span:last-child{font-weight:600;display:grid}.today-level small{color:var(--muted);font-size:.8125rem;font-weight:400}.focus-why{color:var(--muted);margin-bottom:6px;font-size:.75rem;font-weight:600}.today .rows .row{gap:12px}.row-main [lang=en]{font-family:var(--font-reading);font-size:1.0625rem;font-weight:500}.all-clear{background:var(--surface);box-shadow:var(--soft);border-radius:12px;align-items:center;gap:12px;margin:18px 0 4px;padding:12px 14px;font-weight:600;display:flex}.review-more{margin-top:-12px}.loop-cards{gap:10px;margin:0;padding:0;list-style:none;display:grid}.loop-card{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:8px;padding:14px 16px;display:grid}.loop-card .fix{border:0;padding:0}.loop-practice{color:var(--text-2);font-size:.875rem}.loop-practice [lang=en]{font-family:var(--font-reading)}.send-work{border:0;padding:0 0 12px}.send-work>summary{list-style:none}.send-work>summary::-webkit-details-marker{display:none}.fold>summary .button{pointer-events:none}.inbox-line{color:var(--text-2);align-items:center;gap:8px;margin:-8px 0 8px;font-weight:600;display:flex}.roster{border-top:0;gap:4px;display:grid}.roster-row{border-bottom:0;border-radius:12px;min-height:56px}.roster-row.is-selected{background:var(--surface);box-shadow:var(--soft)}.roster-name>span{display:grid}.roster-name small{color:var(--muted);text-overflow:ellipsis;font-size:.75rem;font-weight:400;overflow:hidden}.activity-pill{border-radius:999px;align-items:center;min-height:24px;padding:0 10px;font-size:.75rem;font-weight:600;display:inline-flex}.activity-pill.is-active{background:color-mix(in srgb, var(--score-high) 14%, transparent);color:var(--score-high)}.activity-pill.is-idle{background:var(--surface-2);color:var(--muted)}.invite-fold,.split-list .fold{border-top:0}.invite-fold>summary{list-style:none}.invite-fold>summary::-webkit-details-marker{display:none}.exercise-card{border-radius:12px;align-items:center;gap:12px;padding:12px 14px;display:flex}.exercise-card-body{flex:1;gap:2px;min-width:0;display:grid}.exercise-card-body strong{font-family:var(--font-reading);color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:1.0625rem;font-weight:500;overflow:hidden}.exercise-card-body small{color:var(--muted);white-space:normal;font-size:.8125rem}.exercise-card.selected{box-shadow:0 0 0 2px var(--accent)}.practice-group{margin-bottom:14px}.practice-group .rows{margin-top:6px}.practice-group .rows .row{box-shadow:none;background:var(--surface-2)}.page-tabs{margin:8px 0 18px}.page-action{margin-top:16px}.subtabs button{background:var(--surface-2);min-height:36px;color:var(--text-2);white-space:nowrap;cursor:pointer;border:0;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 14px;font-size:.875rem;font-weight:600;display:inline-flex}.subtabs button[aria-current=page]{background:var(--tab-on-bg);color:var(--tab-on-text)}.class-speech{background:var(--surface);box-shadow:var(--soft);border-radius:12px;margin-top:20px;padding:16px}.class-speech h3:first-child{margin-top:0}.subtabs{flex-wrap:wrap;overflow:visible}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .fix-new ins{color:#ffd66b;text-underline-offset:5px;background:0 0;-webkit-text-decoration:underline #ffd66b8c;text-decoration:underline #ffd66b8c;text-decoration-thickness:2px}:root:not([data-theme=light]) .focus-wrap:before{opacity:.35}}:root[data-theme=dark] .fix-new ins{color:#ffd66b;text-underline-offset:5px;background:0 0;-webkit-text-decoration:underline #ffd66b8c;text-decoration:underline #ffd66b8c;text-decoration-thickness:2px}:root[data-theme=dark] .focus-wrap:before{opacity:.35}.level{gap:16px}.level-stage{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:6px;padding:18px;display:grid}.level-kicker{color:var(--muted);font-size:.8125rem;font-weight:600}.level-stage .level-word{font-size:1.75rem;font-weight:700;line-height:1.15}.stage-path{grid-template-columns:repeat(5,1fr);gap:6px;margin-top:6px;display:grid}.stage-path>span{background:var(--surface-2);border-radius:999px;height:8px}.stage-path>span.is-past{background:color-mix(in srgb, #f2784b 45%, var(--surface-2))}.stage-path>span.is-here{background:var(--grad);box-shadow:var(--grad-shadow)}.stage-path.is-compact{gap:4px;width:120px;margin:0}.stage-path.is-compact>span{height:6px}.stage-names{color:var(--muted);justify-content:space-between;font-size:.75rem;display:flex}.skill-words{gap:8px;margin:0;padding:0;list-style:none;display:grid}.skill-words li{background:var(--surface);box-shadow:var(--soft);border-radius:12px;grid-template-rows:auto auto;grid-template-columns:100px 1fr;align-items:center;gap:4px 12px;padding:12px 14px;display:grid}.skill-words .skill-label{color:var(--text);grid-row:span 2;font-weight:600}.skill-word{align-items:center;gap:8px;font-size:.9375rem;font-weight:600;display:flex}.skill-words .meter{height:6px}.skill-words .meter>span{background:var(--grad)}.trend{border-radius:999px;padding:1px 8px;font-size:.75rem;font-weight:600}.trend.is-up{color:var(--ok);background:color-mix(in srgb, var(--ok) var(--kind-mix), var(--kind-base))}.trend.is-down{color:var(--warn);background:color-mix(in srgb, var(--warn) var(--kind-mix), var(--kind-base))}.today-level{gap:6px;margin-top:10px;display:inline-grid}.today-level-word{color:var(--text-2);font-size:.9375rem}.today-level-word strong{color:var(--text)}.card-drill{gap:12px;display:grid}.card-drill .drill-bar{justify-content:space-between;align-items:center;display:flex}.play-card{background:var(--surface);box-shadow:var(--glow);border-radius:12px;gap:14px;padding:20px;animation:.32s cubic-bezier(.2,.8,.2,1) both card-in;display:grid;position:relative}.play-card.is-right{box-shadow:var(--glow), 0 0 0 2px color-mix(in srgb, var(--ok) 70%, transparent);animation:.32s cubic-bezier(.2,.8,.2,1) both card-in,.9s ease-out glow-ok}.play-card.is-close{box-shadow:var(--glow), 0 0 0 2px color-mix(in srgb, var(--cards) 70%, transparent)}.play-card.is-wrong{box-shadow:var(--glow), 0 0 0 2px color-mix(in srgb, var(--pen) 70%, transparent);animation:.42s ease-in-out shake}@keyframes card-in{0%{opacity:0;transform:translate(28px)scale(.98)}}@keyframes shake{15%,55%{transform:translate(-7px)}35%,75%{transform:translate(7px)}90%{transform:translate(-2px)}}@keyframes glow-ok{0%{box-shadow:var(--glow), 0 0 0 0 color-mix(in srgb, var(--ok) 55%, transparent)}to{box-shadow:var(--glow), 0 0 0 14px transparent}}.play-body{gap:12px;display:grid}.play-ask{color:var(--muted);font-size:.8125rem;font-weight:600}.play-source{font-size:1.5rem;font-weight:700;line-height:1.25}.play-term{font-family:var(--font-reading);font-size:1.375rem;font-weight:600;line-height:1.3}.play-hint{color:var(--muted);font-size:.875rem}.play-hint .link-button{color:var(--accent)}.gap-sentence{font-family:var(--font-reading);font-size:1.25rem;line-height:1.9}.gap-input{border:0;border-bottom:2.5px solid var(--accent);background:var(--surface-2);min-width:4ch;font:inherit;color:var(--text);text-align:center;border-radius:6px 6px 0 0;margin:0 2px;padding:0 6px;font-weight:600;transition:background .15s ease-out;display:inline-block}.gap-input:focus{background:color-mix(in srgb, var(--mark) 60%, var(--surface-2));outline:none}.answer-line{align-items:center;gap:8px;display:flex}.answer-input{border:1.5px solid var(--line);background:var(--surface-2);width:100%;min-height:50px;font-family:var(--font-reading);color:var(--text);resize:vertical;border-radius:12px;flex:1;padding:10px 14px;font-size:1.125rem}.answer-input:focus{border-color:var(--accent);background:var(--surface);outline:none}.choices{gap:8px;display:grid}.choice{border:1.5px solid var(--line);background:var(--surface);min-height:52px;color:var(--text);text-align:left;cursor:pointer;border-radius:12px;padding:10px 16px;font-size:1rem;font-weight:600;transition:transform .12s ease-out,border-color .15s ease-out,background .15s ease-out}.choice:hover:not(:disabled){border-color:var(--accent);transform:translateY(-1px)}.choice:active:not(:disabled){transform:scale(.98)}.choice.is-right{border-color:var(--ok);background:color-mix(in srgb, var(--ok) var(--kind-mix), var(--kind-base));color:var(--text);animation:.35s ease-out pop-in}.choice.is-wrong{border-color:var(--pen);background:color-mix(in srgb, var(--pen) var(--kind-mix), var(--kind-base));animation:.42s ease-in-out shake}.choice.is-dim{opacity:.5}@keyframes pop-in{0%{transform:scale(.96)}60%{transform:scale(1.03)}to{transform:scale(1)}}.fix-words{font-family:var(--font-reading);flex-wrap:wrap;gap:6px;font-size:1.1875rem;display:flex}.word{background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;border:1.5px dashed #0000;border-radius:10px;padding:4px 10px;transition:transform .12s ease-out,border-color .15s ease-out}.word:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px)}.word.is-edited{border:1.5px solid var(--ok);background:color-mix(in srgb, var(--ok) var(--kind-mix), var(--kind-base));animation:.3s ease-out pop-in}.word.is-removed{color:var(--pen);opacity:.7;text-decoration:line-through}.word-input{border:2px solid var(--accent);background:var(--surface);font:inherit;color:var(--text);border-radius:10px;padding:4px 8px;animation:.25s ease-out pop-in}.word-input:focus{outline:none}.fix-whole{min-height:90px}.speak-area{justify-items:center;gap:14px;padding:8px 0;display:grid}.mic{background:var(--grad);width:76px;height:76px;color:var(--on-accent);box-shadow:var(--grad-shadow);cursor:pointer;border:0;border-radius:50%;place-items:center;transition:transform .12s ease-out;display:grid;position:relative}.mic:active{transform:scale(.95)}.mic svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:32px;height:32px}.mic.is-small{flex-shrink:0;width:50px;height:50px}.mic.is-small svg{width:22px;height:22px}.mic.is-listening:before,.mic.is-listening:after{content:"";border:2px solid #f2784b;border-radius:50%;animation:1.4s ease-out infinite ring;position:absolute;inset:0}.mic.is-listening:after{animation-delay:.7s}@keyframes ring{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}.live-transcript{text-align:center;max-width:34ch;min-height:3em;font-family:var(--font-reading);font-size:1.125rem}.live-transcript.is-empty{color:var(--muted);font-family:inherit;font-size:.9375rem}.flip{perspective:1000px;min-height:150px;position:relative}.flip-face{backface-visibility:hidden;align-content:center;padding:4px;transition:transform .5s cubic-bezier(.3,.7,.2,1);display:grid;position:absolute;inset:0}.flip-face.is-back{transform:rotateY(180deg)}.flip.is-flipped .flip-face{transform:rotateY(-180deg)}.flip.is-flipped .flip-face.is-back{transform:rotateY(0)}.flip-answer{color:var(--text-2);font-size:1.0625rem}.self-rate{gap:8px;display:grid}.outcome{border-top:1px solid var(--line);gap:10px;padding-top:14px;animation:.2s ease-out enter;display:grid}.outcome .fix{border:0;padding:0}.verdict{align-items:center;gap:8px;font-size:1.125rem;font-weight:700;display:inline-flex}.verdict-icon{color:#fff;border-radius:50%;place-items:center;width:30px;height:30px;font-size:.9375rem;animation:.45s cubic-bezier(.2,1.4,.4,1) both check-pop;display:grid}.verdict.is-right{color:var(--ok)}.verdict.is-right .verdict-icon{background:var(--ok)}.verdict.is-close{color:var(--warn)}.verdict.is-close .verdict-icon{background:var(--cards)}.verdict.is-wrong{color:var(--pen)}.verdict.is-wrong .verdict-icon{background:var(--pen)}@keyframes check-pop{0%{transform:scale(0)rotate(-30deg)}to{transform:scale(1)rotate(0)}}.outcome-answer{font-size:1.1875rem}.outcome-answer mark{background:linear-gradient(transparent 38%, var(--mark) 38%, var(--mark) 92%, transparent 92%);color:inherit;border-radius:4px;padding:0 3px;font-weight:600}.outcome-example{font-family:var(--font-reading);color:var(--text-2);font-style:italic}.outcome-label{color:var(--muted);font-size:.75rem;font-weight:600}.your-answer{color:var(--muted);font-size:.875rem}.your-answer span{font-family:var(--font-reading);color:var(--text-2)}.streak-chip{background:var(--grad);color:var(--on-accent);border-radius:999px;padding:4px 10px;font-size:.8125rem;font-weight:700;animation:.4s cubic-bezier(.2,1.4,.4,1) both check-pop}.progress-track span{background:var(--grad);transition:width .35s cubic-bezier(.2,.8,.2,1)}.round-done{background:var(--surface);box-shadow:var(--glow);text-align:center;border-radius:12px;justify-items:center;gap:10px;padding:32px 20px 24px;animation:.35s ease-out both card-in;display:grid;position:relative;overflow:hidden}.round-title{font-size:1.5rem;font-weight:700}.round-score{color:var(--text-2);font-size:1.0625rem}.round-score strong{background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:2.75rem;font-weight:700}.round-bars{border-radius:999px;gap:3px;width:100%;max-width:280px;height:10px;display:flex;overflow:hidden}.round-bars span{transform-origin:0;min-width:0;animation:.8s cubic-bezier(.2,.8,.2,1) both grow-x}.round-bars .is-right{background:var(--ok)}.round-bars .is-close{background:var(--cards)}.round-bars .is-wrong{background:var(--pen)}@keyframes grow-x{0%{transform:scaleX(0)}}.round-done .button{max-width:320px;margin-top:8px}.round-burst{width:0;height:0;position:absolute;top:46px;left:50%}.round-burst span{background:var(--grad);--angle:calc(var(--i) * 36deg);border-radius:50%;width:8px;height:8px;animation:.9s cubic-bezier(.2,.8,.2,1) both burst;position:absolute}.round-burst span:nth-child(odd){background:var(--cards)}@keyframes burst{0%{transform:rotate(var(--angle)) translateY(0) scale(.4);opacity:1}to{transform:rotate(var(--angle)) translateY(-70px) scale(1);opacity:0}}.level-summary{color:var(--text-2);margin-top:6px;font-size:.9375rem}.class-story{gap:14px;margin:18px 0 8px;display:grid}.story-card{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:12px;padding:18px;display:grid}.story-head{align-items:center;gap:12px;display:flex}.story-head>span:not(.kind-icon){flex:1;display:grid}.story-head h2{margin:0;font-size:1.125rem;font-weight:700}.story-head small{color:var(--muted);font-size:.8125rem}.story-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:600}.story-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.story-list>li{border-top:1px solid var(--line);gap:4px;padding:12px 0;display:grid}.story-list>li:first-child{border-top:0;padding-top:0}.story-list .fix{border:0;padding:0}.story-quote{font-family:var(--font-reading);color:var(--text-2);font-size:1.0625rem}.story-quote mark{background:linear-gradient(transparent 38%, var(--mark) 38%, var(--mark) 92%, transparent 92%);color:var(--text);border-radius:3px;padding:0 2px;font-weight:600}.story-meta{color:var(--muted);font-size:.8125rem}.story-more>summary{cursor:pointer;color:var(--accent);font-size:.875rem;font-weight:600}.metrics{gap:4px;margin:0;padding:0;list-style:none;display:grid}.metric{border-top:1px solid var(--line);align-items:center;gap:12px;padding:10px 0;display:flex}.metric:first-child{border-top:0}.metric-text{flex:1;display:grid}.metric-text small{color:var(--text-2);font-size:.875rem}.metric-text .metric-range{color:var(--muted);font-size:.75rem}.mini-line{flex-shrink:0;width:120px;height:36px}.mini-line.is-good{color:var(--ok)}.mini-line.is-flat{color:var(--muted)}.more-title{margin:28px 0 0;font-size:1rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .story-quote mark{color:#ffd66b;text-underline-offset:4px;background:0 0;-webkit-text-decoration:underline #ffd66b8c;text-decoration:underline #ffd66b8c;text-decoration-thickness:2px}}:root[data-theme=dark] .story-quote mark{color:#ffd66b;text-underline-offset:4px;background:0 0;-webkit-text-decoration:underline #ffd66b8c;text-decoration:underline #ffd66b8c;text-decoration-thickness:2px}.today-grid{gap:14px;margin-top:16px;display:grid}.today-main,.today-side{align-content:start;gap:14px;min-width:0;display:grid}.today-main .focus-wrap{margin:0}@media (min-width:1100px){.main:has(.today-grid){max-width:1080px}.today-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px}}.today-card{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:12px;padding:16px 18px;display:grid}a.today-card:hover{box-shadow:var(--glow)}.today-card-head{align-items:center;gap:12px;display:flex}.today-card-head>span:not(.kind-icon):not(.count){flex:1;display:grid}.today-card-head h2{margin:0;font-size:1.0625rem;font-weight:700}.today-card-head>h2{flex:1}.today-card-head small{color:var(--muted);font-size:.8125rem}.all-done,.quick-review{align-items:center;gap:12px;display:flex}.all-done>span:last-child,.quick-review>span:nth-child(2){flex:1;display:grid}.all-done small,.quick-review small{color:var(--muted);font-size:.8125rem}.focus-more{justify-self:center}.notice-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.notice-list li>a,.notice-list li>div{align-items:center;gap:8px;display:flex}.notice-avatar{background:var(--grad);width:22px;height:22px;color:var(--on-accent);border-radius:50%;flex-shrink:0;place-items:center;font-size:.6875rem;font-weight:700;display:grid}.notice-bubble{background:var(--surface-2);border-radius:4px 12px 12px;flex:1;justify-content:space-between;align-items:baseline;gap:10px;min-width:0;padding:6px 12px;font-size:.875rem;line-height:1.35;display:flex}.notice-bubble small{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:.75rem}.notice-list li.is-unread .notice-bubble{background:color-mix(in srgb, #f2784b 14%, var(--surface));font-weight:600}.notice-list li:not(.is-unread) .notice-avatar{background:var(--surface-2);color:var(--muted)}.topic-list{color:var(--text-2);gap:2px;margin:0;padding-left:18px;font-size:.875rem;list-style:outside;display:grid}.last-stats{color:var(--text-2);gap:16px;font-size:.875rem;display:flex}.last-actions{flex-wrap:wrap;gap:8px;display:flex}.nav-icon{position:relative}.nav-badge{background:var(--grad);min-width:18px;height:18px;color:var(--on-accent);box-shadow:0 0 0 2px var(--nav-bg);border-radius:999px;place-items:center;padding:0 5px;font-size:.6875rem;font-weight:700;line-height:1;animation:.4s cubic-bezier(.2,1.4,.4,1) both check-pop;display:grid;position:absolute;top:-7px;right:-11px}@media (min-width:900px){.nav-link{position:relative}.nav-link .nav-icon{position:static}.nav-badge{min-width:22px;height:22px;box-shadow:none;font-size:.75rem;top:50%;right:12px;translate:0 -50%}.nav-dot{box-shadow:none;top:50%;right:18px;translate:0 -50%}}@media (max-width:899px){.nav.is-single{display:none}.main:has(~.nav.is-single){padding-bottom:calc(32px + env(safe-area-inset-bottom))}.app:has(.nav.is-single) .main{padding-bottom:calc(32px + env(safe-area-inset-bottom))}.subtabs{scrollbar-width:none;flex-wrap:nowrap;margin-right:-16px;padding-right:16px;overflow-x:auto}.subtabs::-webkit-scrollbar{display:none}}@media (max-width:600px){.exercise-card .skill-tag{display:none}.exercise-card-body strong{white-space:normal}}.split-list .fold>summary,.analysis-fold>summary,.assign-fold>summary{cursor:pointer;font-weight:600}.split-list .fold:not(.invite-fold)>summary:after,.analysis-fold>summary:after{content:"›";color:var(--muted);margin-left:auto;transition:transform .15s ease-out}.split-list .fold[open]>summary:after,.analysis-fold[open]>summary:after{transform:rotate(90deg)}.analysis-fold{margin-top:12px;padding-bottom:0}.assign-fold{border-top:0;padding:4px 0 8px}.assign-fold>summary{list-style:none}.assign-fold>summary::-webkit-details-marker{display:none}.bg-pattern{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg-pattern svg{fill:none;stroke:var(--pattern-ink);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;display:block}.bg-pattern circle{fill:var(--pattern-ink);stroke:none}.bg-pattern .spark{stroke:#f7a440;stroke-width:3px;stroke-dasharray:18 100;stroke-dashoffset:118px;opacity:0;filter:drop-shadow(0 0 4px #f7b13e);animation:26s linear infinite spark}@keyframes spark{0%,94%{opacity:0;stroke-dashoffset:118px}95%{opacity:.9}99%{opacity:.9;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:0}}.app{z-index:1;position:relative}.main:has(.next-class){max-width:980px}.next-class-card{align-items:center;gap:12px;margin-top:4px;display:flex}.next-class-card>span:nth-child(2){flex:1;display:grid}.next-class-card small{color:var(--muted);font-size:.8125rem}.planner{gap:14px;display:grid}.planner-block{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:10px;padding:18px;display:grid}.planner-block h2{margin:0;font-size:1.0625rem}.pick-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.pick{border:1.5px solid var(--line);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:12px;transition:border-color .15s ease-out,background .15s ease-out;display:flex}.pick.is-on{border-color:var(--accent);background:var(--accent-soft)}.pick input{accent-color:var(--accent);flex-shrink:0;width:18px;height:18px;margin-top:4px}.pick .fix{border:0;padding:0}.chip-picker{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1.5px solid var(--line);background:var(--surface);min-height:34px;color:var(--text-2);font:inherit;cursor:pointer;border-radius:999px;padding:0 14px;font-size:.875rem;font-weight:600;transition:all .15s ease-out}.chip.is-on{background:var(--tab-on-bg);color:var(--tab-on-text);border-color:#0000}.topic-add{gap:8px;display:flex}.topic-add input,.planner-notes,.planner-row select{border:1.5px solid var(--line);background:var(--surface-2);min-height:42px;color:var(--text);font:inherit;border-radius:12px;padding:0 12px}.topic-add input{flex:1;min-width:0}.planner-notes{resize:vertical;padding:10px 12px}.activity-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.activity{border:1.5px solid var(--line);background:var(--surface);min-height:56px;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:0 14px;font-weight:600;transition:all .15s ease-out;display:flex}.activity.is-on{border-color:var(--accent);background:var(--accent-soft)}.activity-icon{border-radius:4px;flex-shrink:0;width:14px;height:14px}.activity-icon.is-wheel{background:conic-gradient(var(--speaking) 0 25%, var(--grammar) 0 50%, var(--vocabulary) 0 75%, var(--cards) 0);border-radius:50%}.activity-icon.is-pictures{background:var(--questions)}.activity-icon.is-roleplay{background:var(--speaking)}.activity-icon.is-quiz{background:var(--grammar)}.planner-row{flex-wrap:wrap;gap:16px;display:flex}.planner-row label{color:var(--muted);gap:4px;font-size:.8125rem;font-weight:600;display:grid}.center{text-align:center}.planner-working{background:var(--surface);box-shadow:var(--glow);text-align:center;border-radius:12px;justify-items:center;gap:12px;padding:60px 20px;display:grid}.planner-spinner{gap:8px;display:flex}.planner-spinner span{background:var(--grad);border-radius:50%;width:14px;height:14px;animation:1s ease-in-out infinite hop}.planner-spinner span:nth-child(2){animation-delay:.15s}.planner-spinner span:nth-child(3){animation-delay:.3s}@keyframes hop{0%,to{opacity:.5;transform:translateY(0)}50%{opacity:1;transform:translateY(-10px)}}.planner-stage{font-size:1.125rem;font-weight:700;animation:.3s ease-out enter}.lesson-plan{gap:14px;display:grid}.plan-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.plan-head h2{margin:2px 0 6px;font-size:1.5rem}.plan-why{color:var(--text-2);max-width:60ch}.plan-actions{align-items:center;gap:8px;display:flex}.plan-card{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:12px;padding:18px;display:grid}.plan-card h3{margin:0;font-size:1.0625rem}.plan-steps{gap:10px;margin:0;padding:0;list-style:none;display:grid}.plan-steps li{gap:12px;display:flex}.plan-steps li>span:last-child{gap:2px;display:grid}.plan-steps small{color:var(--text-2);font-size:.875rem}.plan-steps .step-notes{color:var(--muted);font-size:.8125rem}.step-min{background:var(--surface-2);font-variant-numeric:tabular-nums;border-radius:999px;flex-shrink:0;place-items:center;width:44px;height:30px;font-size:.875rem;font-weight:700;display:grid}.new-items{gap:10px;margin:0;padding:0;list-style:none;display:grid}.new-items li{border-top:1px solid var(--line);gap:2px;padding-top:10px;display:grid}.new-items li:first-child{border-top:0;padding-top:0}.new-items strong{font-family:var(--font-reading);font-size:1.0625rem}.new-items em{font-family:var(--font-reading);color:var(--text-2)}.plan-history{margin-top:28px}.plan-history h2{font-size:1rem}.wheel{justify-items:center;gap:14px;display:grid}.wheel-stage{aspect-ratio:1;width:min(300px,80vw);position:relative}.wheel.is-large .wheel-stage{width:min(440px,60vh,86vw)}.wheel-disc{filter:drop-shadow(0 10px 22px #3c281433);width:100%;height:100%;transition:transform 4.2s cubic-bezier(.15,.85,.2,1)}.wheel-disc path{stroke:var(--surface);stroke-width:2px}.wheel-disc text{fill:#fff;font-size:20px;font-weight:700}.wheel-hub{fill:var(--surface);stroke:var(--line);stroke-width:2px}.wheel-pointer{z-index:2;border-left:14px solid #0000;border-right:14px solid #0000;border-top:24px solid var(--text);filter:drop-shadow(0 2px 2px #00000040);width:0;height:0;position:absolute;top:-6px;left:50%;translate:-50%}.wheel-spin{background:var(--grad);width:76px;height:76px;color:var(--on-accent);font:inherit;box-shadow:var(--grad-shadow);cursor:pointer;border:0;border-radius:50%;margin:auto;font-weight:700;transition:transform .12s ease-out;position:absolute;inset:0}.wheel-spin:active{transform:scale(.94)}.wheel-result{text-align:center;max-width:34ch;min-height:3.2em;font-family:var(--font-reading);color:var(--muted);font-size:1.25rem;font-weight:600}.wheel-result.is-shown{color:var(--text);animation:.45s cubic-bezier(.2,1.4,.4,1) both check-pop}.wheel.is-large .wheel-result{font-size:1.75rem}.wheel-list{width:100%;font-family:var(--font-reading);color:var(--text-2);gap:4px;margin:0;padding-left:22px;display:grid}.wheel.is-large .wheel-list{display:none}.wheel-list .is-used{color:var(--muted);text-decoration:line-through}.wheel-list .is-picked{color:var(--text);font-weight:600}.picture-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.picture-card{gap:10px;margin:0;display:grid}.picture-card img{aspect-ratio:1;object-fit:cover;border-radius:12px;width:100%}.picture-card ol{font-family:var(--font-reading);gap:4px;margin:0;padding-left:20px;display:grid}.picture-card.is-large{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:28px}.picture-card.is-large img{justify-self:center;width:auto;max-width:100%;max-height:70vh}.picture-card.is-large ol{gap:12px;font-size:1.5rem}.picture-missing{background:var(--surface-2);color:var(--text-2);border-radius:12px;padding:24px}.target-words{flex-wrap:wrap;align-items:center;gap:6px;font-size:.875rem;display:flex}.target-words span{color:var(--muted);font-weight:600}.target-words mark{background:color-mix(in srgb, var(--cards) var(--kind-mix), var(--kind-base));color:var(--text);font-family:var(--font-reading);border-radius:999px;padding:2px 8px}.roleplay{border-top:1px solid var(--line);gap:10px;padding-top:12px;display:grid}.roleplay:first-of-type{border-top:0;padding-top:0}.roleplay h4{margin:0}.role-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.role-card{border-radius:12px;padding:14px}.role-card small{text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:700}.role-card p{font-family:var(--font-reading);margin-top:4px}.role-card.is-student{background:color-mix(in srgb, var(--speaking) var(--kind-mix), var(--kind-base))}.role-card.is-student small{color:var(--speaking)}.role-card.is-teacher{background:color-mix(in srgb, var(--grammar) var(--kind-mix), var(--kind-base))}.role-card.is-teacher small{color:var(--grammar)}.roleplay.is-large .role-card p{font-size:1.375rem}.quiz-list{font-family:var(--font-reading);gap:10px;margin:0;padding-left:22px;font-size:1.0625rem;display:grid}.quiz-list.is-large{gap:18px;font-size:1.625rem}.quiz-gap{border:0;border-bottom:2.5px solid var(--accent);background:var(--surface-2);min-width:3.5em;color:var(--muted);font:inherit;cursor:pointer;border-radius:6px 6px 0 0;margin:0 4px;padding:0 10px;font-weight:700}.quiz-gap.is-open{color:var(--text);background:color-mix(in srgb, var(--mark) 70%, var(--surface-2));animation:.3s ease-out pop-in}.quiz-tag{background:color-mix(in srgb, var(--pen) var(--kind-mix), var(--kind-base));color:var(--pen);font-family:var(--font-sans);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:.6875rem;font-weight:700}.class-mode{z-index:100;background:var(--bg);grid-template-rows:auto 1fr auto;animation:.2s ease-out enter;display:grid;position:fixed;inset:0}.class-mode-bar,.class-mode-nav{justify-content:space-between;align-items:center;gap:12px;padding:14px 24px;display:flex}.class-mode-title{font-size:1.25rem;font-weight:700}.class-mode-dots{gap:6px;display:flex}.class-mode-dots button{background:var(--line);cursor:pointer;border:0;border-radius:50%;width:10px;height:10px;padding:0}.class-mode-dots button.is-on{background:var(--grad);border-radius:999px;width:26px}.class-mode-slide{align-content:center;justify-items:center;padding:12px 32px;animation:.35s cubic-bezier(.2,.8,.2,1) both card-in;display:grid;overflow:auto}.class-mode-slide>*{width:min(1100px,100%)}.slide-review,.slide-new{gap:18px;margin:0;padding:0;list-style:none;display:grid}.slide-review .fix-new{font-size:1.75rem}.slide-review .fix-old{font-size:1.125rem}.slide-new li{gap:4px;display:grid}.slide-new strong{font-family:var(--font-reading);font-size:1.75rem}.slide-new span{color:var(--text-2);font-size:1.125rem}.slide-new em{font-family:var(--font-reading);color:var(--text-2);font-size:1.25rem}@media (max-width:899px){.picture-card.is-large,.activity-grid{grid-template-columns:1fr}}.consent{gap:14px;max-width:640px;margin:0 auto;display:grid}.consent h1{margin-bottom:0}.consent-text{background:var(--surface);box-shadow:var(--soft);border-radius:12px;gap:4px;padding:18px 20px;display:grid}.consent-text section{border-top:1px solid var(--line);padding:12px 0}.consent-text section:first-child{border-top:0;padding-top:0}.consent-text h2{margin:0 0 6px;font-size:1rem}.consent-text p,.consent-text li{color:var(--text-2);font-size:.9375rem;line-height:1.55}.consent-text p+p{margin-top:6px}.consent-text ul{gap:4px;margin:0;padding-left:18px;list-style:outside;display:grid}.consent-check{cursor:pointer;align-items:flex-start;gap:10px;font-weight:600;display:flex}.consent-check input{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0;margin-top:2px}.consent-out{color:var(--muted);justify-self:center}.consent-state{margin-top:4px;font-size:.8125rem;font-weight:600}.consent-state.is-ok{color:var(--ok)}.consent-state.is-missing{color:var(--warn)}.privacy-panel{justify-items:start;gap:10px;display:grid}.danger-zone{border:1.5px solid color-mix(in srgb, var(--pen) 40%, var(--line));border-radius:12px;width:100%;padding:12px 14px}.danger-zone>summary{cursor:pointer;color:var(--pen);font-weight:600}.danger-zone[open]{gap:10px;display:grid}.danger-zone label{gap:6px;display:grid}.danger-zone input{border:1.5px solid var(--line);background:var(--surface-2);min-height:42px;color:var(--text);font:inherit;border-radius:12px;padding:0 12px}.button.danger{border-color:var(--pen);background:var(--pen);color:#fff}.privacy-fold{margin-bottom:12px}.exercise-teacher-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-bottom:4px;display:flex}.button.danger-outline{border-color:color-mix(in srgb, var(--pen) 50%, var(--line));color:var(--pen)}.exercise-edit{background:var(--surface-2);border-radius:12px;gap:10px;margin-bottom:8px;padding:14px;display:grid}.exercise-edit label{color:var(--text-2);gap:4px;font-size:.8125rem;font-weight:600;display:grid}.exercise-edit input,.exercise-edit textarea{border:1.5px solid var(--line);background:var(--surface);color:var(--text);font:inherit;border-radius:12px;padding:8px 12px;font-weight:400}.exercise-edit input{min-height:42px}.exercise-edit-actions{justify-content:flex-end;gap:8px;display:flex}.page-loading{gap:14px;max-width:720px;animation:.2s .15s both loading-in;display:grid}.skeleton{background:var(--surface-2);border-radius:12px;animation:1.2s ease-in-out infinite alternate skeleton-pulse;display:block}.skeleton.is-kicker{width:120px;height:14px}.skeleton.is-title{width:55%;height:34px;margin-bottom:10px}.skeleton.is-card{border-radius:var(--radius);height:160px}.skeleton.is-row{height:56px}@keyframes skeleton-pulse{0%{opacity:.55}to{opacity:1}}@keyframes loading-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.skeleton,.page-loading{animation:none}}.class-rhythm{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:16px 0 12px;display:grid}.rhythm-item{border-radius:var(--radius);background:var(--surface);box-shadow:var(--soft);align-content:start;gap:4px;padding:14px 16px;display:grid}.rhythm-item>small{color:var(--muted);font-size:.75rem;font-weight:600}.rhythm-item>strong{font-size:1rem}.rhythm-item>strong.is-idle{color:var(--muted)}.rhythm-edit{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rhythm-edit select,.rhythm-edit input{border:1px solid var(--line);background:var(--surface);min-height:36px;color:var(--text);font:inherit;border-radius:10px;padding:0 10px}.exercise-card>.state-pill{flex:none;margin-left:auto}.exercise-card.is-finished{opacity:.78}.exercise-card.is-finished strong{text-decoration:none}.finished-list{gap:8px;margin-top:6px;display:grid}.finished-list>summary{min-height:40px;color:var(--muted);cursor:pointer;align-items:center;gap:8px;padding:0 4px;font-size:.875rem;font-weight:600;list-style:none;display:flex}.finished-list>summary::-webkit-details-marker{display:none}.finished-list>summary:before{content:"›";transition:transform .15s;display:inline-block}.finished-list[open]>summary:before{transform:rotate(90deg)}.finished-list>summary b{opacity:.7;font-weight:600}.exercise-list>.nothing{padding:8px 4px}details.story-card>summary{cursor:pointer;list-style:none}details.story-card>summary::-webkit-details-marker{display:none}.story-chevron{width:18px;height:18px;color:var(--muted);flex:none;transition:transform .15s}details.story-card[open] .story-chevron{transform:rotate(90deg)}details.story-card:not([open]){gap:0}.class-score-figures{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:10px;margin:0;display:grid}.class-score-figures p{gap:2px;margin:0;display:grid}.class-score-figures strong{font-size:1.75rem;font-weight:700;line-height:1.1}.class-score-figures strong.is-up{color:var(--score-high)}.class-score-figures strong.is-down{color:#c0563f}.class-score-figures span{color:var(--muted);font-size:.8125rem}.class-score-figures b.is-up{color:var(--score-high)}.class-score-figures b.is-down{color:#c0563f}.score-chart{width:100%;max-width:620px;height:auto;overflow:visible}.score-chart .grid{stroke:var(--line);stroke-width:1px}.score-chart .tick{fill:var(--muted);text-anchor:end;font-size:9px}.score-chart .tick.is-class{text-anchor:middle}.score-chart .series polyline{fill:none;stroke:currentColor;stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.score-chart .series circle{fill:currentColor;stroke:var(--surface);stroke-width:2px}.score-chart .series.is-class{color:var(--text)}.score-chart .series.is-work{color:var(--grammar)}.score-chart .series.is-audio{color:var(--speaking)}.score-chart .series.is-test{color:var(--text)}.chart-readout .is-test:before{background:var(--text)}.score-chart .series.is-work polyline,.score-chart .series.is-audio polyline{stroke-width:2px;stroke-dasharray:4 4}.score-chart .guide{stroke:var(--line);stroke-width:1.5px}.score-chart .hit{fill:#0000;cursor:pointer}.score-chart .point-value{fill:currentColor;paint-order:stroke;stroke:var(--surface);stroke-width:3px;font-size:11px;font-weight:700}.score-chart .tick.is-on{fill:var(--text);font-weight:700}.class-chart{gap:8px;display:grid}.chart-readout{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:.8125rem;display:flex}.chart-readout strong{color:var(--text);font-size:.875rem}.chart-readout b{color:var(--text)}.chart-readout small{margin-left:4px}.chart-readout span:before{content:"";vertical-align:0;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.chart-readout .is-class:before{background:var(--text)}.chart-readout .is-work:before{background:var(--grammar)}.chart-readout .is-audio:before{background:var(--speaking)}.chart-readout small{color:var(--muted)}.chart-readout .is-extra:before{background:var(--cards)}.chart-legend{color:var(--muted);gap:16px;margin:0;font-size:.8125rem;display:flex}.chart-legend span:before{content:"";vertical-align:-1px;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.chart-legend .is-class:before{background:var(--text)}.chart-legend .is-work:before{background:var(--grammar)}.chart-legend .is-audio:before{background:var(--speaking)}.chart-legend{flex-wrap:wrap}.class-rows{gap:0;margin:0;padding:0;font-size:.875rem;list-style:none;display:grid}.class-rows li{border-top:1px solid var(--line);color:var(--text-2);flex-wrap:wrap;gap:4px 14px;padding:8px 0;display:flex}.class-rows strong{min-width:64px;color:var(--text)}.card-stage{letter-spacing:.01em;border-radius:999px;align-items:center;gap:6px;min-height:22px;padding:0 9px;font-size:.6875rem;font-weight:700;display:inline-flex;position:absolute;top:14px;right:14px}.card-stage:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.card-stage.is-new{color:var(--muted);background:var(--surface-2)}.card-stage.is-once{color:#b7791f;background:#e3a63b29}.card-stage.is-learned{color:var(--score-high);background:color-mix(in srgb, var(--score-high) 14%, transparent)}.play-card:has(.card-stage.is-once){border-top:3px solid #e3a63b}.play-card:has(.card-stage.is-learned){border-top:3px solid var(--score-high)}.play-card>.flashcard-meta{padding-right:120px}.play-card .dont-know{box-shadow:inset 0 0 0 1px var(--line);color:var(--text-2);background:0 0}.drill-next{gap:4px;padding-top:16px;display:grid}.verdict.is-gave-up{color:var(--muted);font-weight:600}.play-card:has(.verdict.is-gave-up){box-shadow:var(--glow), 0 0 0 2px var(--line);animation:.32s cubic-bezier(.2,.8,.2,1) both card-in}.kpi-compare{border-collapse:collapse;width:100%;font-size:.9375rem}.kpi-compare th,.kpi-compare td{border-top:1px solid var(--line);text-align:right;padding:9px 4px}.kpi-compare th[scope=row]{text-align:left;color:var(--text-2);font-weight:500}.kpi-compare thead th{color:var(--muted);border-top:0;font-size:.8125rem;font-weight:600}.kpi-compare .is-total th,.kpi-compare .is-total td{color:var(--text);font-weight:700}.level-intro,.level-step,.level-result{background:var(--surface);max-width:560px;box-shadow:var(--glow);border-radius:12px;gap:14px;padding:20px;display:grid}.level-step h2{margin:0;font-size:1.25rem}.level-progress{color:var(--muted);gap:6px;font-size:.8125rem;display:grid}.level-sentence{margin:0;font-size:1.125rem}.level-options{gap:8px;display:grid}.level-options .choice.is-picked{border-color:var(--accent);background:var(--accent-soft)}.level-total{align-items:baseline;gap:12px;margin:0;display:flex}.level-total strong{font-size:3rem;line-height:1}.level-total span{color:var(--muted);font-weight:600}.level-parts{grid-template-columns:repeat(3,1fr);gap:8px;margin:0;padding:0;list-style:none;display:grid}.level-parts li{background:var(--surface-2);border-radius:12px;gap:2px;padding:12px;display:grid}.level-parts span{color:var(--muted);font-size:.8125rem}.level-parts b{font-size:1.375rem}.level-test-card{align-items:center;gap:12px;margin:14px 0;display:flex}.level-test-card>span:not(.kind-icon){flex:1;gap:2px;display:grid}.level-test-card small{color:var(--muted)}.level-retry{gap:10px;display:grid}.level-line{background:var(--surface);box-shadow:var(--soft);color:var(--text-2);border-radius:12px;margin:0 0 12px;padding:12px 16px;font-size:.9375rem}.english-map,.map-student{--map-usa:var(--ok);--map-falla:var(--pen);--map-visto:var(--warn);--map-sin:var(--line)}.map-card{border-radius:var(--radius);background:var(--surface);box-shadow:var(--soft);padding:16px}.map-summary{color:var(--muted);margin:0 0 10px;font-size:.8125rem}.map-legend{color:var(--text-2);flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;padding:0;font-size:.75rem;list-style:none;display:flex}.map-legend li{align-items:center;gap:6px;display:inline-flex}.map-legend li:before{content:"";background:var(--legend);border-radius:2px;width:8px;height:8px}.map-legend b{color:var(--text);font-variant-numeric:tabular-nums}.map-legend .is-usa{--legend:var(--map-usa)}.map-legend .is-visto{--legend:var(--map-visto)}.map-legend .is-falla{--legend:var(--map-falla)}.map-legend .is-sin{--legend:var(--map-sin)}.map-bar{gap:2px;height:10px;display:flex}.map-bar span{border-radius:3px}.map-bar .is-usa,.map-states thead i.is-usa,.map-dot.is-usa{background:var(--map-usa)}.map-bar .is-visto,.map-states thead i.is-visto,.map-dot.is-visto{background:var(--map-visto)}.map-bar .is-falla,.map-states thead i.is-falla,.map-dot.is-falla{background:var(--map-falla)}.map-bar .is-sin,.map-states thead i.is-sin,.map-dot.is-sin{background:var(--map-sin)}.map-next{margin:0;padding:6px 16px;list-style:none;display:grid}.map-next li{border-top:1px solid var(--line);grid-template-columns:92px auto minmax(0,1fr);align-items:baseline;gap:10px;padding:9px 0;display:grid}.map-next li:first-child{border-top:0}.map-next small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;overflow:hidden}.map-next-kind{background:var(--surface-2);color:var(--text-2);border-radius:999px;justify-self:start;padding:2px 9px;font-size:.75rem;font-weight:600}.map-next-kind.is-reforzar{background:color-mix(in srgb, var(--pen) 14%, var(--surface))}.map-next-kind.is-consolidar{background:color-mix(in srgb, var(--accent) 12%, var(--surface))}.map-point-detail{border-top:1px solid var(--line);gap:6px;margin-top:6px;padding-top:6px;display:grid}.map-point-detail p{gap:1px;margin:0;display:grid}.map-point-detail span{color:var(--muted);font-size:.6875rem;font-weight:600}.map-point-detail q{color:var(--text);font-family:var(--font-reading);font-size:.8125rem}.map-point-detail .is-use span{color:var(--ok)}.map-point-detail .is-fail span{color:var(--pen)}.map-fold{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.map-fold>summary{cursor:pointer;color:var(--accent);font-size:.8125rem;font-weight:600}.map-fold[open]>summary{margin-bottom:10px}.map-keys{color:var(--text-2);flex-wrap:wrap;gap:4px 16px;margin:0 0 6px;font-size:.75rem;display:flex}.map-keys .map-mark{margin-right:5px}.map-scroll{overflow-x:auto}.map-table{border-collapse:collapse;width:100%;font-size:.8125rem}.map-table th,.map-table td{border-bottom:1px solid var(--line);padding:5px 4px}.map-table tbody tr:last-child>*{border-bottom:0}.map-table thead th{color:var(--muted);text-align:center;font-size:.75rem;font-weight:600}.map-table tbody th{text-align:left;white-space:nowrap;font-weight:500}.map-table td{text-align:center;white-space:nowrap;width:34px}.map-dot{vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.map-mark{vertical-align:-1px;width:9px;height:9px;margin:0 1px;display:inline-block}.map-mark.is-use{background:var(--ok);border-radius:50%}.map-mark.is-fail{background:var(--pen);clip-path:polygon(20% 0,50% 30%,80% 0,100% 20%,70% 50%,100% 80%,80% 100%,50% 70%,20% 100%,0 80%,30% 50%,0 20%)}.map-mark.is-worked{border:2px solid var(--accent);transform:rotate(45deg)scale(.85)}.map-student{margin-top:24px}.map-student>summary{cursor:pointer;list-style:none}.map-student>summary::-webkit-details-marker{display:none}.map-student>summary>span{gap:6px;display:grid}.map-student>summary strong:after{content:" ›";color:var(--muted)}.map-student[open]>summary{margin-bottom:14px}.map-student .map-summary{margin:0 0 4px}@media (max-width:559px){.map-next li{grid-template-columns:auto minmax(0,1fr)}.map-next small{white-space:normal;grid-column:1/-1}}.pick-text{gap:2px;display:grid}.pick-text small{color:var(--muted);font-size:.8125rem}@media (max-width:559px){.map-table td{width:22px;padding:7px 1px}}.achievement-wall{display:grid}.achievement-wall .section-head{margin-top:8px}.badge-grid{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));column-gap:24px;margin:0;padding:0;list-style:none;display:grid}.badge-tile{border-bottom:1px solid var(--line);cursor:default;align-items:center;gap:10px;min-width:0;padding:10px 2px;display:flex}.badge-icon{width:24px;height:24px;color:var(--badge);flex-shrink:0;place-items:center;display:grid}.badge-icon svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.badge-tile.is-word{--badge:var(--vocabulary)}.badge-tile.is-fix{--badge:var(--ok)}.badge-tile.is-topic{--badge:var(--pen)}.badge-text strong.is-topic{font-family:inherit;font-size:.875rem}.badge-text{flex:1;min-width:0;display:grid}.badge-text small{color:var(--muted);font-size:.6875rem;font-weight:600}.badge-text strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9375rem;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.badge-more{margin-top:10px}.badge-more>summary{cursor:pointer;color:var(--accent);font-size:.8125rem;font-weight:600}.badge-more[open]>summary{margin-bottom:10px}.more-fold{margin-top:24px}.more-fold>summary{cursor:pointer;font-size:1rem;font-weight:700}.more-fold>.subtabs{margin-top:14px}.more-fold>summary:after{content:"›";color:var(--muted);margin-left:auto;transition:transform .15s ease-out}.more-fold[open]>summary:after{transform:rotate(90deg)}.level-hero{border-radius:var(--radius);background:var(--surface);box-shadow:var(--soft);gap:14px;padding:18px 20px 16px;display:grid}.level-hero-top{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.level-hero-level{letter-spacing:-.02em;margin:0;font-size:2.25rem;font-weight:700;line-height:1;display:grid}.level-hero-level span{color:var(--muted);letter-spacing:0;margin-bottom:6px;font-size:.8125rem;font-weight:600}.level-hero-score{color:var(--muted);margin:0;font-size:.875rem}.level-hero-score b{color:var(--text);font-size:1.25rem}.level-ruler{padding:0 14px 0 2px}.level-ruler-track{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.level-ruler-track span{background:var(--accent);border-radius:3px;height:100%;display:block}.level-ruler ol{height:18px;margin:6px 0 0;padding:0;list-style:none;position:relative}.level-ruler li{color:var(--muted);white-space:nowrap;font-size:.6875rem;font-weight:600;position:absolute;top:0;transform:translate(-50%)}.level-ruler li:first-child{transform:none}.level-ruler li.is-end{color:var(--text-2);transform:translate(-100%)}.level-ruler li.is-here{color:var(--text)}.level-ruler li:before{content:"";background:var(--line);width:1px;height:6px;position:absolute;top:-10px;left:50%}.level-ruler li:first-child:before{left:0}.level-ruler li.is-end:before{left:100%}.level-hero-note{color:var(--text-2);margin:0;font-size:.875rem}.level-hero-note span{color:var(--muted);font-size:.8125rem}.figure-level{color:var(--muted);font-size:1rem;font-weight:600}.speech-table-wrap{overflow-x:auto}.speech-table-wrap>p{margin:8px 0 0}.speech-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.8125rem}.speech-table th,.speech-table td{border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;padding:7px 6px}.speech-table tbody tr:last-child>*{border-bottom:0}.speech-table thead th{color:var(--muted);font-size:.75rem;font-weight:600}.speech-table tbody th{text-align:left;white-space:normal;font-weight:500}.speech-table tbody th small{color:var(--muted);font-size:.6875rem;font-weight:400;display:block}.speech-table .change{color:var(--text-2);font-weight:700}.speech-table .change.is-good{color:var(--ok)}.speech-table .change.is-bad{color:var(--pen)}.habit-line{color:var(--text-2);margin:4px 0 0;font-size:.875rem}.habit-line b{color:var(--text)}.map-point-count{color:var(--text);font-size:.75rem;font-weight:700}.map-point-count span{color:var(--muted);font-size:.6875rem;font-weight:500;display:block}.map-point-detail ins{color:var(--ok);font-family:var(--font-reading);font-size:.8125rem;text-decoration:none}.map-point-detail ins:before{content:"→ ";color:var(--muted)}.failing-topics{gap:10px;margin:0;padding:0;list-style:none;display:grid}.failing-topic{border-radius:var(--radius);background:var(--surface);box-shadow:var(--soft);gap:7px;padding:14px 16px;display:grid}.failing-head{align-items:baseline;gap:8px;display:flex}.failing-head strong{font-size:1rem}.failing-level{color:var(--muted);font-size:.6875rem;font-weight:700}.failing-share{color:var(--muted);margin-left:auto;font-size:.8125rem}.failing-share b{color:var(--pen);font-size:1rem}.failing-bar{gap:2px;height:6px;display:flex}.failing-bar span{border-radius:3px}.failing-bar .is-right{background:var(--ok)}.failing-bar .is-wrong{background:var(--pen)}.failing-count{color:var(--muted);margin:0;font-size:.75rem}.failing-fix{background:var(--surface-2);font-family:var(--font-reading);border-radius:10px;gap:1px;margin:0;padding:7px 10px;font-size:.875rem;display:grid}.failing-fix span{color:var(--muted);font-family:inherit;font-size:.6875rem;font-weight:600}.failing-fix s{color:var(--muted);-webkit-text-decoration-color:var(--pen);text-decoration-color:var(--pen)}.failing-fix ins{color:var(--text);text-decoration:none}.failing-topic .text-link{justify-self:start}.rhythm-lines{gap:2px;margin-top:4px;display:grid}.rhythm-lines p{color:var(--text-2);margin:0;font-size:.875rem;line-height:1.45}.rhythm-lines .rhythm-label{color:var(--muted)}.rhythm-lines b{color:var(--text);font-weight:600}.rhythm-lines b.is-idle{color:var(--muted);font-weight:500}.rhythm-lines .rhythm-edit{flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0;display:flex}.student-head{align-items:flex-start;margin-bottom:16px}.map-areas{gap:20px;display:grid}.map-area h3{align-items:baseline;gap:10px;margin:0 0 6px;font-size:.9375rem;display:flex}.map-area-fails{color:var(--pen);font-size:.75rem;font-weight:700}.map-rows{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.map-rows>li{border-bottom:1px solid var(--line)}.map-point{--state:var(--muted)}.map-point.is-usa{--state:var(--ok)}.map-point.is-visto{--state:var(--warn)}.map-point.is-falla{--state:var(--pen)}.map-point>summary{cursor:pointer;grid-template-columns:minmax(0,1fr) 96px 44px 88px;align-items:center;gap:12px;min-height:44px;padding:6px 4px;font-size:.875rem;list-style:none;display:grid}.map-point>summary::-webkit-details-marker{display:none}.map-point>summary:hover{background:var(--hover)}.map-point-name{color:var(--text)}.map-meter{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.map-meter i{background:var(--state);border-radius:3px;height:100%;display:block}.map-point-share{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;font-size:.75rem}.map-point-state{color:var(--state);white-space:nowrap;font-size:.75rem;font-weight:700}.map-point[open]>summary{background:var(--hover)}.map-point-detail{border-top:0;border-left:3px solid var(--state);gap:8px;margin:0;padding:8px 4px 12px 12px;display:grid}.map-none{color:var(--muted);margin:8px 0 0;font-size:.75rem}@media (max-width:599px){.map-point>summary{grid-template-columns:minmax(0,1fr) 44px 78px;gap:10px}.map-point-share{display:none}}.student-head-text{flex:1;min-width:0}.student-head-text .level-line{box-shadow:none;background:0 0;margin:6px 0 0;padding:0;font-size:.875rem}.student-actions{flex-wrap:wrap;gap:8px;display:flex}.student-actions .button{white-space:nowrap}.student-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 18px;display:grid}.student-kpis p{background:var(--surface);box-shadow:var(--soft);border-radius:12px;margin:0;padding:12px 14px}.student-kpis strong{font-size:1.375rem;display:block}.student-kpis span{color:var(--muted);font-size:.8125rem}.summary-grid{gap:16px;margin-top:16px;display:grid}.summary-col{align-content:start;gap:16px;min-width:0;display:grid}.summary-card{border-radius:var(--radius);background:var(--surface);box-shadow:var(--soft);padding:14px 18px}.summary-card h3{justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 8px;font-size:.9375rem;display:flex}.summary-card h3 a,.summary-link{color:var(--accent);white-space:nowrap;font-size:.8125rem;font-weight:600}.summary-card .all-clear{box-shadow:none;background:0 0;margin:4px 0;padding:0;font-weight:500}.summary-rows{margin:0;padding:0;list-style:none}.summary-rows li{border-top:1px solid var(--line);align-items:center;gap:10px;padding:9px 0;font-size:.875rem;display:flex}.summary-rows li:first-child{border-top:0}.summary-rows .row-main{flex:1;min-width:0;display:grid}.summary-rows small{color:var(--muted);font-size:.75rem}.nowrap{white-space:nowrap}.student-picker{display:none}@media (max-width:1199px){.student-head{flex-wrap:wrap}.student-actions{width:100%}}@media (min-width:1200px){.main:has(.split){max-width:1320px}.split,.split.has-pick{display:block}.split .split-list,.split.has-pick .split-list{display:none}.split .split-detail,.split.has-pick .split-detail{border-left:0;padding-left:0;display:block}.student-picker{flex-wrap:wrap;align-items:flex-start;gap:8px;margin-bottom:24px;display:flex}.student-chip{background:var(--surface);min-height:40px;box-shadow:var(--soft);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:5px 14px 5px 6px;font-size:.875rem;font-weight:600;list-style:none;display:inline-flex}.student-chip::-webkit-details-marker{display:none}.student-chip.is-selected{box-shadow:0 0 0 2px var(--accent)}.student-chip.is-add{color:var(--accent);padding:5px 16px}.student-chip.is-quiet{color:var(--text-2);padding:5px 16px;font-weight:500}.chip-dot{background:var(--accent);border-radius:50%;width:8px;height:8px}.picker-fold{position:relative}.picker-panel{z-index:5;border-radius:var(--radius);background:var(--surface);width:420px;box-shadow:var(--glow);padding:16px;position:absolute;top:48px;left:0}.student-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.summary-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}}
