:root{--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, monospace;--font-math: "Iowan Old Style", "Palatino Linotype", Georgia, "Times New Roman", serif;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--leading-tight: 1.2;--leading-normal: 1.55;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-xl: 26px;--radius-pill: 999px;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .12s;--dur-base: .22s;--dur-slow: .42s;--sidebar-w: 248px;--content-max: 1120px;--bottom-nav-h: 64px;--topbar-h: 62px;--hue-learn: 232;--hue-correct: 152;--hue-review: 38;--hue-challenge: 272;--hue-wrong: 358}:root,:root[data-theme=dark]{color-scheme:dark;--bg-base: #0a0e1a;--bg-elevated: #111728;--bg-raised: #161e33;--bg-sunken: #070a13;--bg-overlay: rgba(6, 9, 17, .72);--bg-hover: rgba(255, 255, 255, .045);--bg-active: rgba(255, 255, 255, .08);--surface-grad: radial-gradient( 1200px 600px at 12% -8%, rgba(99, 102, 241, .16), transparent 60% ), radial-gradient(900px 520px at 92% 0%, rgba(168, 85, 247, .12), transparent 58%), var(--bg-base);--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--border-focus: #8b9dff;--fg: #eef1f8;--fg-muted: #a6b0c8;--fg-subtle: #737f9c;--fg-inverse: #0a0e1a;--accent: #7c8cff;--accent-strong: #6473ff;--accent-soft: rgba(124, 140, 255, .16);--accent-fg: #0a0e1a;--success: #34d399;--success-soft: rgba(52, 211, 153, .14);--success-fg: #04211a;--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .14);--warning-fg: #241a02;--danger: #fb7185;--danger-soft: rgba(251, 113, 133, .14);--danger-fg: #2a060e;--challenge: #c084fc;--challenge-soft: rgba(192, 132, 252, .15);--info: #60a5fa;--info-soft: rgba(96, 165, 250, .14);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 8px 24px -8px rgba(0, 0, 0, .6);--shadow-lg: 0 24px 60px -18px rgba(0, 0, 0, .75);--shadow-glow: 0 0 0 1px rgba(124, 140, 255, .28), 0 12px 40px -12px rgba(124, 140, 255, .4);--track: rgba(255, 255, 255, .08)}:root[data-theme=light]{color-scheme:light;--bg-base: #f6f7fb;--bg-elevated: #ffffff;--bg-raised: #ffffff;--bg-sunken: #eceef6;--bg-overlay: rgba(23, 28, 43, .4);--bg-hover: rgba(15, 23, 42, .04);--bg-active: rgba(15, 23, 42, .07);--surface-grad: radial-gradient( 1100px 560px at 10% -10%, rgba(99, 102, 241, .12), transparent 58% ), radial-gradient(860px 480px at 94% -4%, rgba(168, 85, 247, .09), transparent 56%), var(--bg-base);--border: rgba(15, 23, 42, .1);--border-strong: rgba(15, 23, 42, .18);--border-focus: #4f46e5;--fg: #141a2b;--fg-muted: #4e5872;--fg-subtle: #737f9c;--fg-inverse: #ffffff;--accent: #4f46e5;--accent-strong: #4338ca;--accent-soft: rgba(79, 70, 229, .1);--accent-fg: #ffffff;--success: #059669;--success-soft: rgba(5, 150, 105, .12);--success-fg: #ffffff;--warning: #b45309;--warning-soft: rgba(180, 83, 9, .12);--warning-fg: #ffffff;--danger: #dc2626;--danger-soft: rgba(220, 38, 38, .1);--danger-fg: #ffffff;--challenge: #7c3aed;--challenge-soft: rgba(124, 58, 237, .11);--info: #2563eb;--info-soft: rgba(37, 99, 235, .11);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 10px 24px -12px rgba(15, 23, 42, .22);--shadow-lg: 0 28px 56px -24px rgba(15, 23, 42, .3);--shadow-glow: 0 0 0 1px rgba(79, 70, 229, .25), 0 14px 36px -14px rgba(79, 70, 229, .35);--track: rgba(15, 23, 42, .09)}:root{--cat-arithmetic: #60a5fa;--cat-algebra: #a78bfa;--cat-geometry: #34d399;--cat-combinatorics: #f472b6;--cat-data: #fbbf24;--cat-advanced: #fb923c}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--fg);background:var(--surface-grad);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}h1,h2,h3,h4{margin:0;line-height:var(--leading-tight);letter-spacing:-.02em;font-weight:650}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0}ul,ol{margin:0;padding:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-pill);border:3px solid transparent;background-clip:content-box}.skip-link{position:absolute;left:-9999px;top:0;z-index:200;padding:var(--sp-3) var(--sp-4);background:var(--accent);color:var(--accent-fg);border-radius:0 0 var(--radius-md) 0;font-weight:600}.skip-link:focus{left:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.boot-screen{height:100dvh;display:grid;place-content:center;justify-items:center;gap:var(--sp-4);color:var(--fg-muted)}.boot-mark{width:56px;height:56px;display:grid;place-items:center;border-radius:var(--radius-lg);background:linear-gradient(140deg,var(--accent),var(--challenge));color:#fff;font-size:var(--text-2xl);font-weight:800;animation:pulse-soft 1.4s var(--ease-out) infinite}.shell{min-height:100dvh;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.shell__main{min-width:0;display:flex;flex-direction:column}.shell__content{flex:1;padding:var(--sp-6) var(--sp-8) var(--sp-16);width:100%;max-width:calc(var(--content-max) + var(--sp-16));margin-inline:auto}.shell--focus .shell__content{padding:0;max-width:none}.sidebar{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-5) var(--sp-3);background:color-mix(in srgb,var(--bg-elevated) 72%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid var(--border);z-index:40}.sidebar__brand{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3) var(--sp-5)}.brand-mark{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:var(--radius-md);background:linear-gradient(140deg,var(--accent),var(--challenge));color:#fff;font-weight:800;font-size:var(--text-lg);box-shadow:var(--shadow-sm)}.brand-name{font-weight:700;font-size:var(--text-md);letter-spacing:-.02em}.brand-tag{font-size:var(--text-xs);color:var(--fg-subtle)}.nav-list{list-style:none;display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3);border-radius:var(--radius-md);color:var(--fg-muted);font-weight:550;font-size:var(--text-base);transition:background var(--dur-fast),color var(--dur-fast),transform var(--dur-fast);text-align:left}.nav-link:hover{background:var(--bg-hover);color:var(--fg);text-decoration:none}.nav-link[aria-current=page]{background:var(--accent-soft);color:var(--fg)}.nav-link[aria-current=page] .nav-icon{color:var(--accent)}.nav-icon{width:20px;flex:none;display:grid;place-items:center;color:var(--fg-subtle)}.nav-badge{margin-left:auto;min-width:20px;height:20px;padding-inline:6px;border-radius:var(--radius-pill);background:var(--danger-soft);color:var(--danger);font-size:var(--text-xs);font-weight:700;display:grid;place-items:center}.sidebar__footer{margin-top:auto;display:flex;flex-direction:column;gap:var(--sp-3)}.topbar{position:sticky;top:0;z-index:30;height:var(--topbar-h);display:flex;align-items:center;gap:var(--sp-3);padding-inline:var(--sp-6);background:color-mix(in srgb,var(--bg-base) 78%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.topbar__title{font-weight:650;font-size:var(--text-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar__spacer{flex:1}.topbar__stats{display:flex;align-items:center;gap:var(--sp-2)}.topbar__mobile-brand{display:none;align-items:center;gap:var(--sp-2)}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:50;height:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--bg-elevated) 92%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--border)}.bottom-nav__inner{height:var(--bottom-nav-h);display:grid;grid-auto-flow:column;grid-auto-columns:1fr}.bottom-nav__link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--fg-subtle);font-size:10.5px;font-weight:600;position:relative;transition:color var(--dur-fast)}.bottom-nav__link[aria-current=page]{color:var(--accent);text-decoration:none}.bottom-nav__link:hover{text-decoration:none}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-6)}.page-head__text{min-width:0;flex:1}.page-head h1{font-size:var(--text-2xl)}.page-head p{color:var(--fg-muted);margin-top:var(--sp-1)}.section{margin-bottom:var(--sp-10)}.section__head{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:var(--sp-3);row-gap:var(--sp-1);margin-bottom:var(--sp-4)}.section__title{font-size:var(--text-lg);font-weight:650}.section__hint{font-size:var(--text-sm);color:var(--fg-subtle)}.section__action{margin-left:auto}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--fg-subtle);margin-bottom:var(--sp-4)}.breadcrumbs a{color:var(--fg-muted)}.breadcrumbs a:hover{color:var(--fg)}.breadcrumbs span[aria-hidden]{opacity:.5}.grid{display:grid;gap:var(--sp-4)}.grid--cards{grid-template-columns:repeat(auto-fill,minmax(268px,1fr))}.grid--wide{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.stack{display:flex;flex-direction:column;gap:var(--sp-3)}.row{display:flex;align-items:center;gap:var(--sp-3)}.row--wrap{flex-wrap:wrap}@media (max-width: 1080px){:root{--sidebar-w: 208px}.shell__content{padding-inline:var(--sp-5)}}@media (max-width: 860px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.bottom-nav{display:block}.topbar{padding-inline:var(--sp-4)}.topbar__mobile-brand{display:flex}.shell__content{padding:var(--sp-5) var(--sp-4) calc(var(--bottom-nav-h) + var(--sp-10))}.shell--focus .shell__content{padding:0 0 calc(var(--bottom-nav-h))}.page-head h1{font-size:var(--text-xl)}.section__hint{flex-basis:100%;order:3}}@media (max-width: 420px){.grid--cards,.grid--wide,.grid--2{grid-template-columns:minmax(0,1fr)}.shell__content{padding-inline:var(--sp-3)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:42px;padding:0 var(--sp-4);border-radius:var(--radius-md);background:var(--bg-raised);border:1px solid var(--border);color:var(--fg);font-weight:600;font-size:var(--text-base);white-space:nowrap;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast),border-color var(--dur-fast),box-shadow var(--dur-fast),opacity var(--dur-fast)}.btn:hover:not(:disabled){background:var(--bg-active);border-color:var(--border-strong)}.btn:active:not(:disabled){transform:translateY(1px) scale(.99)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:linear-gradient(135deg,var(--accent),var(--accent-strong));border-color:transparent;color:var(--accent-fg);box-shadow:0 8px 22px -12px color-mix(in srgb,var(--accent) 80%,transparent)}.btn--primary:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-strong),var(--accent-strong));filter:brightness(1.06)}.btn--success{background:var(--success);border-color:transparent;color:var(--success-fg)}.btn--danger{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 40%,transparent);color:var(--danger)}.btn--ghost{background:transparent;border-color:transparent;color:var(--fg-muted)}.btn--ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--fg)}.btn--soft{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.btn--sm{min-height:34px;padding-inline:var(--sp-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn--lg{min-height:50px;padding-inline:var(--sp-6);font-size:var(--text-md);border-radius:var(--radius-lg)}.btn--block{width:100%}.btn--icon{width:40px;min-height:40px;padding:0;border-radius:var(--radius-md)}.btn--icon.btn--sm{width:34px;min-height:34px}.card{position:relative;background:color-mix(in srgb,var(--bg-elevated) 88%,transparent);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-sm);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base),border-color var(--dur-base)}.card--interactive{cursor:pointer;text-align:left;width:100%;display:block}.card--interactive:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}.card--flush{padding:0;overflow:hidden}.card--accent{background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 16%,transparent),transparent 62%),var(--bg-elevated);border-color:color-mix(in srgb,var(--accent) 32%,transparent)}.card__title{font-weight:650;font-size:var(--text-md)}.card__sub{color:var(--fg-muted);font-size:var(--text-sm)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px var(--sp-2);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:650;letter-spacing:.01em;background:var(--bg-hover);color:var(--fg-muted);white-space:nowrap}.badge--easy{background:var(--success-soft);color:var(--success)}.badge--medium{background:var(--warning-soft);color:var(--warning)}.badge--complex,.badge--hard{background:var(--danger-soft);color:var(--danger)}.badge--info{background:var(--info-soft);color:var(--info)}.badge--accent{background:var(--accent-soft);color:var(--accent)}.badge--challenge{background:var(--challenge-soft);color:var(--challenge)}.badge--success{background:var(--success-soft);color:var(--success)}.badge--danger{background:var(--danger-soft);color:var(--danger)}.badge--warning{background:var(--warning-soft);color:var(--warning)}.badge--outline{background:transparent;border:1px solid var(--border-strong)}.chip{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 var(--sp-3);border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--bg-elevated);color:var(--fg-muted);font-size:var(--text-sm);font-weight:600;transition:all var(--dur-fast)}.chip:hover{border-color:var(--border-strong);color:var(--fg)}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent)}.stat-pill{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 var(--sp-3);border-radius:var(--radius-pill);background:var(--bg-elevated);border:1px solid var(--border);font-size:var(--text-sm);font-weight:700}.stat-pill__icon{display:grid;place-items:center}.stat-pill--xp .stat-pill__icon{color:var(--warning)}.stat-pill--streak .stat-pill__icon{color:var(--danger)}.stat-pill--streak.is-cold{opacity:.66}.stat-pill--streak.is-cold .stat-pill__icon{color:var(--fg-subtle)}.progress{position:relative;height:8px;border-radius:var(--radius-pill);background:var(--track);overflow:hidden}.progress__fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--challenge));transition:width var(--dur-slow) var(--ease-out)}.progress--sm{height:5px}.progress--lg{height:12px}.progress--success .progress__fill{background:linear-gradient(90deg,var(--success),color-mix(in srgb,var(--success) 60%,var(--info)))}.progress--warning .progress__fill{background:linear-gradient(90deg,var(--warning),var(--danger))}.progress__label{display:flex;justify-content:space-between;gap:var(--sp-2);font-size:var(--text-xs);font-weight:600;color:var(--fg-subtle);margin-bottom:6px}.ring{--ring-size: 56px;--ring-value: 0;--ring-color: var(--accent);width:var(--ring-size);height:var(--ring-size);flex:none;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ring-color) calc(var(--ring-value) * 1%),var(--track) 0);position:relative}.ring:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:var(--bg-elevated)}.ring__value{position:relative;z-index:1;font-size:var(--text-sm);font-weight:700}.topic-card{--cat: var(--accent);display:flex;flex-direction:column;gap:var(--sp-3);border-radius:var(--radius-lg);padding:var(--sp-4);background:color-mix(in srgb,var(--bg-elevated) 88%,transparent);border:1px solid var(--border);text-align:left;width:100%;cursor:pointer;overflow:hidden;position:relative;transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base),border-color var(--dur-base)}.topic-card:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--cat),transparent 78%);opacity:.85}.topic-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--cat) 40%,transparent);box-shadow:var(--shadow-md)}.topic-card.is-locked{opacity:.62}.topic-card__top{display:flex;align-items:flex-start;gap:var(--sp-3)}.topic-card__icon{width:42px;height:42px;flex:none;display:grid;place-items:center;border-radius:var(--radius-md);background:color-mix(in srgb,var(--cat) 18%,transparent);color:var(--cat);font-size:var(--text-lg)}.topic-card__name{font-weight:650;font-size:var(--text-md);letter-spacing:-.01em}.topic-card__cat{font-size:var(--text-xs);color:var(--fg-subtle);font-weight:600;text-transform:uppercase;letter-spacing:.06em}.topic-card__desc{font-size:var(--text-sm);color:var(--fg-muted);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.topic-card__meta{display:flex;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--text-xs);color:var(--fg-subtle);margin-top:auto}.topic-card__meta span{display:inline-flex;align-items:center;gap:4px}.topic-card .progress__fill{background:linear-gradient(90deg,var(--cat),color-mix(in srgb,var(--cat) 45%,var(--challenge)))}.level-list{list-style:none;display:flex;flex-direction:column;gap:var(--sp-2);position:relative}.level-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-lg);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 82%,transparent);text-align:left;transition:all var(--dur-base) var(--ease-out)}.level-item:hover:not(:disabled){transform:translate(3px);border-color:var(--border-strong)}.level-item:disabled{cursor:not-allowed;opacity:.55}.level-item.is-current{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:linear-gradient(120deg,var(--accent-soft),transparent 70%),var(--bg-elevated);box-shadow:var(--shadow-glow)}.level-item.is-complete .level-item__marker{background:var(--success-soft);color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,transparent)}.level-item__marker{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-raised);font-weight:700;font-size:var(--text-sm);color:var(--fg-muted)}.level-item__body{min-width:0;flex:1}.level-item__title{font-weight:600;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.level-item__desc{font-size:var(--text-sm);color:var(--fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.level-item__meta{font-size:var(--text-xs);color:var(--fg-subtle);display:flex;gap:var(--sp-3);margin-top:3px}.level-item__right{flex:none;display:flex;align-items:center;gap:var(--sp-2);color:var(--fg-subtle)}.empty-state{display:grid;justify-items:center;gap:var(--sp-3);padding:var(--sp-10) var(--sp-5);text-align:center;color:var(--fg-muted);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg-elevated) 55%,transparent)}.empty-state__icon{width:52px;height:52px;display:grid;place-items:center;border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--fg-subtle)}.empty-state h3{color:var(--fg)}.revision-stage{display:flex;flex-direction:column;align-items:center;gap:var(--sp-5);padding:var(--sp-5) var(--sp-4) var(--sp-8);max-width:620px;margin-inline:auto;width:100%}.flashcard-deck{position:relative;width:100%;min-height:420px;perspective:1600px;touch-action:pan-y}.flashcard{position:relative;width:100%;min-height:420px;transform-style:preserve-3d;transition:transform var(--dur-slow) var(--ease-out),opacity var(--dur-base);cursor:pointer}.flashcard.is-flipped{transform:rotateY(180deg)}.flashcard.is-dragging{transition:none}.flashcard__face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-6);border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--bg-elevated);box-shadow:var(--shadow-lg);overflow-y:auto}.flashcard__face--front{align-items:center;justify-content:center;text-align:center;background:linear-gradient(150deg,var(--accent-soft),transparent 58%),var(--bg-elevated)}.flashcard__face--back{transform:rotateY(180deg);background:linear-gradient(150deg,var(--challenge-soft),transparent 55%),var(--bg-elevated)}.flashcard__eyebrow{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.flashcard__prompt{font-size:var(--text-xl);font-weight:650;line-height:1.35;max-width:34ch}.flashcard__hint-tap{margin-top:var(--sp-3);font-size:var(--text-sm);color:var(--fg-subtle);display:inline-flex;align-items:center;gap:6px}.flashcard__formula{font-family:var(--font-math);font-size:var(--text-2xl);font-weight:600;text-align:center;padding:var(--sp-4);border-radius:var(--radius-lg);background:var(--bg-sunken);border:1px solid var(--border);overflow-wrap:anywhere}.flashcard__section h4{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--fg-subtle);margin-bottom:var(--sp-1)}.flashcard__section p,.flashcard__section li{font-size:var(--text-sm);color:var(--fg-muted)}.flashcard__vars{list-style:none;display:grid;gap:4px}.flashcard__vars li{display:flex;gap:var(--sp-2)}.flashcard__vars b{font-family:var(--font-math);color:var(--fg);min-width:2.2em}.flashcard__example{font-size:var(--text-sm);color:var(--fg-muted);padding:var(--sp-3);border-radius:var(--radius-md);background:var(--info-soft);border-left:3px solid var(--info)}.flashcard__mistake{font-size:var(--text-sm);color:var(--fg-muted);padding:var(--sp-3);border-radius:var(--radius-md);background:var(--warning-soft);border-left:3px solid var(--warning)}.flashcard__swipe-tag{position:absolute;top:var(--sp-5);padding:6px var(--sp-3);border-radius:var(--radius-sm);font-weight:800;font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;opacity:0;transition:opacity var(--dur-fast);pointer-events:none;z-index:2}.flashcard__swipe-tag--know{right:var(--sp-5);color:var(--success);border:2px solid var(--success);transform:rotate(9deg)}.flashcard__swipe-tag--practice{left:var(--sp-5);color:var(--warning);border:2px solid var(--warning);transform:rotate(-9deg)}.revision-controls{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);flex-wrap:wrap;width:100%}.revision-controls .btn{flex:1;min-width:140px}.revision-progress{width:100%}.keyhint{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--fg-subtle)}@media (hover: none) and (pointer: coarse){.keyhint{display:none}}:root[data-keyhints=off] .keyhint{display:none}kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding-inline:5px;border-radius:5px;border:1px solid var(--border-strong);border-bottom-width:2px;background:var(--bg-raised);font-family:var(--font-mono);font-size:10px;color:var(--fg-muted)}.quiz{display:flex;flex-direction:column;min-height:100dvh}.quiz__header{position:sticky;top:0;z-index:20;padding:var(--sp-3) var(--sp-5);background:color-mix(in srgb,var(--bg-base) 88%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.quiz__header-row{display:flex;align-items:center;gap:var(--sp-3);max-width:820px;margin-inline:auto;width:100%}.quiz__counter{font-size:var(--text-sm);font-weight:700;color:var(--fg-muted);font-variant-numeric:tabular-nums}.quiz__progress{flex:1}.quiz__timer{font-variant-numeric:tabular-nums;font-weight:700;font-size:var(--text-sm);color:var(--fg-muted)}.quiz__timer.is-warning{color:var(--danger)}.quiz__body{flex:1;width:100%;max-width:820px;margin-inline:auto;padding:var(--sp-6) var(--sp-5) var(--sp-16)}.quiz__stage-strip{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-bottom:var(--sp-4)}.question-card{display:flex;flex-direction:column;gap:var(--sp-5)}.question-card__stem{font-size:var(--text-lg);font-weight:600;line-height:1.45;white-space:pre-wrap}.question-card__context{font-size:var(--text-base);color:var(--fg-muted);padding:var(--sp-4);border-radius:var(--radius-md);background:var(--bg-sunken);border:1px solid var(--border);white-space:pre-wrap}.options{list-style:none;display:grid;gap:var(--sp-3)}.option{display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;padding:var(--sp-4);border-radius:var(--radius-lg);border:1.5px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 80%,transparent);text-align:left;font-size:var(--text-base);line-height:1.45;transition:all var(--dur-fast) var(--ease-out)}.option:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 50%,transparent);background:var(--bg-active);transform:translateY(-1px)}.option:disabled{cursor:default}.option__key{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:8px;border:1.5px solid var(--border-strong);font-size:var(--text-xs);font-weight:800;color:var(--fg-muted);margin-top:1px}.option__text{flex:1;min-width:0;overflow-wrap:anywhere}.option__mark{flex:none;display:grid;place-items:center;opacity:0;transition:opacity var(--dur-fast)}.option.is-selected{border-color:var(--accent);background:var(--accent-soft)}.option.is-selected .option__key{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.option.is-correct{border-color:var(--success);background:var(--success-soft)}.option.is-correct .option__key{background:var(--success);border-color:var(--success);color:var(--success-fg)}.option.is-correct .option__mark{opacity:1;color:var(--success)}.option.is-wrong{border-color:var(--danger);background:var(--danger-soft)}.option.is-wrong .option__key{background:var(--danger);border-color:var(--danger);color:var(--danger-fg)}.option.is-wrong .option__mark{opacity:1;color:var(--danger)}.option.is-muted{opacity:.55}.numeric-input{display:flex;flex-direction:column;gap:var(--sp-2);max-width:320px}.input{width:100%;min-height:48px;padding:0 var(--sp-4);border-radius:var(--radius-md);border:1.5px solid var(--border);background:var(--bg-sunken);font-size:var(--text-lg);font-weight:600;font-variant-numeric:tabular-nums;transition:border-color var(--dur-fast)}.input:focus{border-color:var(--accent)}.input--text{font-size:var(--text-base);font-weight:500;min-height:42px}.input-hint{font-size:var(--text-xs);color:var(--fg-subtle)}.match-grid{display:grid;gap:var(--sp-3)}.match-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 75%,transparent)}.match-row.is-correct{border-color:var(--success);background:var(--success-soft)}.match-row.is-wrong{border-color:var(--danger);background:var(--danger-soft)}.match-row__left{font-weight:600;font-size:var(--text-base)}.select{width:100%;min-height:42px;padding:0 var(--sp-3);border-radius:var(--radius-md);border:1.5px solid var(--border);background:var(--bg-sunken);font-size:var(--text-sm)}.order-list{list-style:none;display:grid;gap:var(--sp-2);counter-reset:step}.order-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 82%,transparent);font-size:var(--text-base)}.order-item.is-correct{border-color:var(--success);background:var(--success-soft)}.order-item.is-wrong{border-color:var(--danger);background:var(--danger-soft)}.order-item__num{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:8px;background:var(--bg-raised);border:1px solid var(--border-strong);font-size:var(--text-xs);font-weight:800;color:var(--fg-muted)}.order-item__text{flex:1}.order-item__moves{display:flex;gap:4px;flex:none}.data-table-wrap{overflow-x:auto;border-radius:var(--radius-md);border:1px solid var(--border)}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.data-table th,.data-table td{padding:var(--sp-2) var(--sp-3);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.data-table thead th{background:var(--bg-sunken);font-weight:700;color:var(--fg-muted)}.data-table tbody tr:last-child td{border-bottom:none}.data-table caption{caption-side:top;padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs);color:var(--fg-subtle);text-align:left}.chart-wrap{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-3);background:color-mix(in srgb,var(--bg-elevated) 88%,transparent)}.chart-caption{padding:0 var(--sp-2) var(--sp-2);font-size:var(--text-xs);color:var(--fg-subtle)}.chart-body{display:flex;flex-direction:column;gap:var(--sp-3)}.chart-body--pie{align-items:center}.chart-svg{width:100%;height:auto;display:block;overflow:visible}.chart-svg--pie{max-width:260px}.chart-gridline{stroke:var(--border);stroke-width:1}.chart-axis-label{fill:var(--fg-subtle);font-size:11px;font-variant-numeric:tabular-nums}.chart-bar{transition:opacity var(--dur-base)}.chart-value-label{fill:var(--fg-muted);font-size:10px;font-weight:600;font-variant-numeric:tabular-nums}.chart-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.chart-point{stroke:var(--bg-elevated);stroke-width:1.5}.chart-pie-sector{stroke:var(--bg-elevated);stroke-width:2}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);list-style:none;font-size:var(--text-sm);color:var(--fg-muted)}.chart-legend__item{display:flex;align-items:center;gap:var(--sp-2)}.chart-legend__swatch{width:10px;height:10px;border-radius:3px;flex:none}.plane-svg{max-width:320px}.plane-gridline{stroke:var(--border);stroke-width:1}.plane-axis{stroke:var(--fg-subtle);stroke-width:1.5}.plane-axis-label{fill:var(--fg-subtle);font-size:10px;font-variant-numeric:tabular-nums}.plane-line{stroke:var(--accent);stroke-width:2}.plane-line--dashed{stroke-dasharray:5 4}.plane-segment{stroke:var(--fg);stroke-width:2}.plane-segment--dashed{stroke-dasharray:4 3}.plane-point{fill:var(--fg)}.plane-point-label{fill:var(--fg);font-size:12px;font-weight:600}.diagram-shape{fill:none;stroke:var(--fg);stroke-width:2;stroke-linejoin:round}.diagram-shape--fill{fill:color-mix(in srgb,var(--accent) 12%,transparent)}.diagram-line{stroke:var(--fg);stroke-width:2;fill:none}.diagram-line--dashed{stroke-dasharray:5 4}.diagram-mark{fill:none;stroke:var(--fg-muted);stroke-width:1.5}.diagram-mark--open{stroke-linecap:round;stroke-linejoin:round}.diagram-angle-label{fill:var(--fg-muted);font-size:11px;font-variant-numeric:tabular-nums}.diagram-point{fill:var(--fg)}.diagram-point-label{fill:var(--fg);font-size:13px;font-weight:600}.hint-panel{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--warning) 26%,var(--border));background:color-mix(in srgb,var(--warning) 6%,transparent)}.hint-panel__head{display:flex;align-items:center;gap:var(--sp-2);font-weight:650;font-size:var(--text-sm);color:var(--warning)}.hint-panel__head span.spacer{flex:1}.hint-list{list-style:none;display:flex;flex-direction:column;gap:var(--sp-2)}.hint-item{display:flex;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);background:var(--bg-elevated);border:1px solid var(--border);font-size:var(--text-base);animation:slide-up var(--dur-base) var(--ease-out)}.hint-item__num{flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:var(--warning-soft);color:var(--warning);font-size:var(--text-xs);font-weight:800}.hint-item__text{flex:1;color:var(--fg)}.feedback{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5);border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-elevated);animation:slide-up var(--dur-base) var(--ease-out)}.feedback--correct{border-color:color-mix(in srgb,var(--success) 45%,transparent);background:linear-gradient(160deg,var(--success-soft),transparent 62%),var(--bg-elevated)}.feedback--incorrect{border-color:color-mix(in srgb,var(--danger) 38%,transparent);background:linear-gradient(160deg,var(--danger-soft),transparent 62%),var(--bg-elevated)}.feedback__head{display:flex;align-items:center;gap:var(--sp-3)}.feedback__icon{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:var(--radius-md)}.feedback--correct .feedback__icon{background:var(--success-soft);color:var(--success)}.feedback--incorrect .feedback__icon{background:var(--danger-soft);color:var(--danger)}.feedback__title{font-weight:700;font-size:var(--text-md)}.feedback__sub{font-size:var(--text-sm);color:var(--fg-muted)}.feedback__xp{margin-left:auto;font-weight:800;color:var(--warning);font-size:var(--text-sm);white-space:nowrap}.solution__label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-subtle);margin-bottom:var(--sp-2)}.solution__text{font-size:var(--text-base);color:var(--fg);white-space:pre-wrap}.solution-steps{list-style:none;counter-reset:sol;display:grid;gap:var(--sp-2)}.solution-steps li{counter-increment:sol;display:flex;gap:var(--sp-3);font-size:var(--text-base);color:var(--fg-muted)}.solution-steps li:before{content:counter(sol);flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:6px;background:var(--accent-soft);color:var(--accent);font-size:var(--text-xs);font-weight:800}.formula-inline{font-family:var(--font-math);font-size:var(--text-md);padding:2px 8px;border-radius:6px;background:var(--bg-sunken);border:1px solid var(--border);display:inline-block}.mistake-tags{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.disclosure{border-top:1px solid var(--border);padding-top:var(--sp-3)}.disclosure__toggle{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:650;color:var(--fg-muted)}.disclosure__toggle:hover{color:var(--fg)}.disclosure__panel{padding-top:var(--sp-3);animation:slide-up var(--dur-base) var(--ease-out)}.quiz__actions{position:sticky;bottom:0;display:flex;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5) calc(var(--sp-4) + env(safe-area-inset-bottom));margin-inline:calc(var(--sp-5) * -1);background:linear-gradient(to top,var(--bg-base) 62%,transparent);z-index:10}.quiz__actions .btn--primary{flex:1}.results{max-width:720px;margin-inline:auto;display:flex;flex-direction:column;gap:var(--sp-5);padding-block:var(--sp-6) var(--sp-12)}.results__hero{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-5);border-radius:var(--radius-xl);background:linear-gradient(160deg,var(--accent-soft),transparent 60%),var(--bg-elevated);border:1px solid var(--border);text-align:center}.results__score{font-size:3.2rem;font-weight:800;letter-spacing:-.04em;line-height:1;background:linear-gradient(120deg,var(--accent),var(--challenge));-webkit-background-clip:text;background-clip:text;color:transparent}.hero-stats{width:100%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--sp-3)}.hero-stats .stat-tile{padding:var(--sp-3)}@media (max-width: 640px){.hero-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}.hero-stats .stat-tile__value{font-size:var(--text-lg)}.hero-stats .stat-tile__label{font-size:10px}}.share-grid{font-size:20px;letter-spacing:2px;line-height:1.3;max-width:100%;overflow-wrap:anywhere}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:var(--sp-3)}.stat-tile{padding:var(--sp-4);border-radius:var(--radius-lg);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 82%,transparent);display:flex;flex-direction:column;gap:2px}.stat-tile__value{font-size:var(--text-xl);font-weight:750;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat-tile__label{font-size:var(--text-xs);color:var(--fg-subtle);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.stat-tile--success .stat-tile__value{color:var(--success)}.stat-tile--danger .stat-tile__value{color:var(--danger)}.stat-tile--warning .stat-tile__value{color:var(--warning)}.review-item{display:flex;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--radius-lg);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 80%,transparent)}.review-item__icon{flex:none;width:28px;height:28px;display:grid;place-items:center;border-radius:8px}.review-item.is-correct .review-item__icon{background:var(--success-soft);color:var(--success)}.review-item.is-wrong .review-item__icon{background:var(--danger-soft);color:var(--danger)}.review-item__body{min-width:0;flex:1}.review-item__q{font-size:var(--text-base);font-weight:550;margin-bottom:4px}.review-item__meta{font-size:var(--text-xs);color:var(--fg-subtle);display:flex;flex-wrap:wrap;gap:var(--sp-2)}.session-card{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5);border-radius:var(--radius-xl);border:1px solid color-mix(in srgb,var(--accent) 26%,var(--border));background:linear-gradient(150deg,var(--accent-soft),transparent 55%),var(--bg-elevated);box-shadow:var(--shadow-md)}.session-card__head{display:flex;align-items:flex-start;gap:var(--sp-3)}.session-plan{list-style:none;display:grid;gap:var(--sp-2)}.session-plan li{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);background:color-mix(in srgb,var(--bg-base) 45%,transparent);border:1px solid var(--border);font-size:var(--text-sm)}.session-plan__icon{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:7px;background:var(--bg-raised);color:var(--accent)}.session-plan__count{margin-left:auto;font-weight:700;color:var(--fg-muted);font-variant-numeric:tabular-nums}.action-tile{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-4);border-radius:var(--radius-lg);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 84%,transparent);text-align:left;transition:all var(--dur-base) var(--ease-out)}.action-tile:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.action-tile__icon{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:var(--radius-md);background:var(--accent-soft);color:var(--accent)}.action-tile__body{flex:1;min-width:0}.action-tile__title{font-weight:650;display:flex;align-items:center;gap:var(--sp-2)}.action-tile__desc{font-size:var(--text-sm);color:var(--fg-muted)}.action-tile--review .action-tile__icon{background:var(--warning-soft);color:var(--warning)}.action-tile--challenge .action-tile__icon{background:var(--challenge-soft);color:var(--challenge)}.action-tile--mistakes .action-tile__icon{background:var(--danger-soft);color:var(--danger)}.action-tile--success .action-tile__icon{background:var(--success-soft);color:var(--success)}.streak-week{display:flex;gap:6px}.streak-day{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;font-size:10px;color:var(--fg-subtle);font-weight:700}.streak-day__dot{width:100%;aspect-ratio:1;max-width:34px;border-radius:var(--radius-sm);background:var(--track);border:1px solid var(--border);display:grid;place-items:center;color:transparent}.streak-day.is-active .streak-day__dot{background:linear-gradient(140deg,var(--success),color-mix(in srgb,var(--success) 60%,var(--info)));border-color:transparent;color:var(--success-fg)}.streak-day.is-today .streak-day__dot{box-shadow:0 0 0 2px var(--accent)}.bar-chart{display:flex;align-items:flex-end;gap:var(--sp-2);height:140px;padding-top:var(--sp-2)}.bar-chart__col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.bar-chart__bar{width:100%;max-width:34px;border-radius:var(--radius-sm) var(--radius-sm) 3px 3px;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 45%,transparent));min-height:3px;transition:height var(--dur-slow) var(--ease-out);position:relative}.bar-chart__label{font-size:10px;color:var(--fg-subtle);font-weight:700}.bar-chart__value{font-size:10px;color:var(--fg-muted);font-weight:700;font-variant-numeric:tabular-nums}.hbar{display:grid;grid-template-columns:minmax(96px,150px) 1fr auto;align-items:center;gap:var(--sp-3);font-size:var(--text-sm)}.hbar__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-muted)}.hbar__value{font-variant-numeric:tabular-nums;font-weight:700;color:var(--fg-muted);min-width:42px;text-align:right}.toast-root{position:fixed;z-index:120;bottom:calc(var(--sp-5) + env(safe-area-inset-bottom));right:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-2);pointer-events:none;max-width:min(380px,calc(100vw - var(--sp-8)))}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-lg);background:var(--bg-raised);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);pointer-events:auto;animation:toast-in var(--dur-base) var(--ease-spring)}.toast.is-leaving{animation:toast-out var(--dur-base) var(--ease-out) forwards}.toast__icon{flex:none;width:26px;height:26px;display:grid;place-items:center;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.toast--success .toast__icon{background:var(--success-soft);color:var(--success)}.toast--warning .toast__icon{background:var(--warning-soft);color:var(--warning)}.toast--danger .toast__icon{background:var(--danger-soft);color:var(--danger)}.toast--achievement .toast__icon{background:var(--challenge-soft);color:var(--challenge)}.toast__title{font-weight:650;font-size:var(--text-sm)}.toast__body{font-size:var(--text-sm);color:var(--fg-muted)}@media (max-width: 860px){.toast-root{right:var(--sp-3);left:var(--sp-3);bottom:calc(var(--bottom-nav-h) + var(--sp-3) + env(safe-area-inset-bottom));max-width:none}}.modal-root:empty{display:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:140;display:grid;place-items:center;padding:var(--sp-4);background:var(--bg-overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade-in var(--dur-base) var(--ease-out)}.modal{width:min(520px,100%);max-height:min(86dvh,760px);overflow-y:auto;border-radius:var(--radius-xl);border:1px solid var(--border-strong);background:var(--bg-elevated);box-shadow:var(--shadow-lg);padding:var(--sp-6);animation:modal-in var(--dur-base) var(--ease-spring)}.modal__head{display:flex;align-items:flex-start;gap:var(--sp-3);margin-bottom:var(--sp-4)}.modal__title{font-size:var(--text-lg);font-weight:700}.modal__actions{display:flex;gap:var(--sp-3);justify-content:flex-end;margin-top:var(--sp-6);flex-wrap:wrap}.achievement-modal{text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.achievement-medal{width:92px;height:92px;display:grid;place-items:center;border-radius:50%;font-size:40px;background:radial-gradient(circle at 32% 28%,var(--challenge-soft),transparent 70%),linear-gradient(140deg,var(--challenge),var(--accent));box-shadow:0 0 0 8px color-mix(in srgb,var(--challenge) 12%,transparent);animation:pop-in var(--dur-slow) var(--ease-spring)}.text-muted{color:var(--fg-muted)}.text-subtle{color:var(--fg-subtle)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-center{text-align:center}.font-bold{font-weight:700}.mt-auto{margin-top:auto}.ml-auto{margin-left:auto}.flex-1{flex:1}.divider{height:1px;background:var(--border);margin-block:var(--sp-4)}.tabular{font-variant-numeric:tabular-nums}.segmented{display:inline-flex;flex-wrap:wrap;max-width:100%;padding:3px;gap:3px;border-radius:var(--radius-md);background:var(--bg-sunken);border:1px solid var(--border)}.segmented button{padding:6px var(--sp-3);border-radius:calc(var(--radius-md) - 4px);font-size:var(--text-sm);font-weight:650;color:var(--fg-subtle);transition:all var(--dur-fast)}.segmented button[aria-pressed=true]{background:var(--bg-elevated);color:var(--fg);box-shadow:var(--shadow-sm)}.toolbar{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;margin-bottom:var(--sp-4)}.search-input{flex:1;min-width:180px;position:relative;display:flex;align-items:center}.search-input svg{position:absolute;left:var(--sp-3);color:var(--fg-subtle);pointer-events:none}.search-input input{width:100%;min-height:40px;padding:0 var(--sp-3) 0 38px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-elevated);font-size:var(--text-sm)}.search-input input:focus{border-color:var(--accent)}.setting-row{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}.setting-row:last-child{border-bottom:none}.setting-row__body{flex:1;min-width:0}.setting-row__title{font-weight:600}.setting-row__desc{font-size:var(--text-sm);color:var(--fg-muted)}.switch{position:relative;width:46px;height:27px;flex:none;border-radius:var(--radius-pill);background:var(--track);border:1px solid var(--border);transition:background var(--dur-base)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:var(--fg-subtle);transition:transform var(--dur-base) var(--ease-spring),background var(--dur-base)}.switch[aria-checked=true]{background:var(--accent);border-color:transparent}.switch[aria-checked=true]:after{transform:translate(19px);background:#fff}.concept-pill{display:inline-flex;align-items:center;gap:6px;padding:5px var(--sp-3);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:650;border:1px solid var(--border);background:var(--bg-elevated)}.concept-pill__dot{width:7px;height:7px;border-radius:50%;background:var(--fg-subtle)}.concept-pill--new .concept-pill__dot{background:var(--fg-subtle)}.concept-pill--learning .concept-pill__dot{background:var(--danger)}.concept-pill--familiar .concept-pill__dot{background:var(--warning)}.concept-pill--proficient .concept-pill__dot{background:var(--info)}.concept-pill--strong .concept-pill__dot{background:var(--success)}.lesson{max-width:720px;margin-inline:auto;display:flex;flex-direction:column;gap:var(--sp-5);padding-block:var(--sp-5) var(--sp-12)}.lesson__block{padding:var(--sp-5);border-radius:var(--radius-lg);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 85%,transparent)}.lesson__block h3{margin-bottom:var(--sp-2)}.lesson__block p{color:var(--fg-muted);white-space:pre-wrap}.lesson__block+.lesson__block{margin-top:0}.lesson__callout{padding:var(--sp-4);border-radius:var(--radius-md);border-left:3px solid var(--info);background:var(--info-soft);font-size:var(--text-base)}.lesson__example{font-family:var(--font-math);padding:var(--sp-4);border-radius:var(--radius-md);background:var(--bg-sunken);border:1px solid var(--border);white-space:pre-wrap;font-size:var(--text-md);overflow-x:auto}@media (max-width: 640px){.quiz__body{padding:var(--sp-5) var(--sp-4) var(--sp-12)}.quiz__actions{margin-inline:calc(var(--sp-4) * -1);padding-inline:var(--sp-4)}.flashcard,.flashcard-deck{min-height:290px}.segmented{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.segmented::-webkit-scrollbar{display:none}.segmented button{flex:none}.revision-stage h1{font-size:var(--text-xl)}.flashcard__face{padding:var(--sp-5)}.flashcard__prompt{font-size:var(--text-lg)}.flashcard__formula{font-size:var(--text-xl)}.revision-stage{gap:var(--sp-4);padding-top:var(--sp-3)}.revision-controls .btn{min-width:0}.match-row{grid-template-columns:minmax(0,1fr)}.results__score{font-size:2.6rem}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes view-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{0%{opacity:0;transform:scale(.72)}to{opacity:1;transform:scale(1)}}@keyframes modal-in{0%{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-in{0%{opacity:0;transform:translate(24px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes toast-out{to{opacity:0;transform:translate(16px) scale(.96)}}@keyframes pulse-soft{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.07);opacity:.82}}@keyframes shake-x{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}@keyframes xp-float{0%{opacity:0;transform:translateY(6px) scale(.9)}25%{opacity:1;transform:translateY(-2px) scale(1.05)}to{opacity:0;transform:translateY(-28px) scale(1)}}@keyframes confetti-fall{0%{opacity:1;transform:translate3d(0,-8vh,0) rotate(0)}to{opacity:0;transform:translate3d(var(--drift, 0px),92vh,0) rotate(var(--spin, 540deg))}}@keyframes card-out-right{to{opacity:0;transform:translate(130%) rotate(18deg)}}@keyframes card-out-left{to{opacity:0;transform:translate(-130%) rotate(-18deg)}}@keyframes count-up-flash{0%{color:var(--warning);transform:scale(1.18)}to{color:inherit;transform:scale(1)}}.view-enter{animation:view-in var(--dur-base) var(--ease-out)}.animate-shake{animation:shake-x .42s var(--ease-out)}.animate-pop{animation:pop-in var(--dur-base) var(--ease-spring)}.animate-flash{animation:count-up-flash .6s var(--ease-out)}.xp-float{position:fixed;z-index:130;pointer-events:none;font-weight:800;font-size:var(--text-md);color:var(--warning);text-shadow:0 2px 10px rgba(0,0,0,.3);animation:xp-float 1.1s var(--ease-out) forwards}.confetti-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:125;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:0;width:9px;height:14px;border-radius:2px;animation:confetti-fall var(--fall, 2.4s) var(--ease-out) forwards}.stagger>*{animation:slide-up var(--dur-base) var(--ease-out) backwards}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:40ms}.stagger>*:nth-child(3){animation-delay:80ms}.stagger>*:nth-child(4){animation-delay:.12s}.stagger>*:nth-child(5){animation-delay:.16s}.stagger>*:nth-child(6){animation-delay:.2s}.stagger>*:nth-child(n+7){animation-delay:.24s}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.flashcard.is-flipped{transition:none}}:root[data-motion=reduced] *,:root[data-motion=reduced] *:before,:root[data-motion=reduced] *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:60ms!important}:root[data-motion=reduced] .confetti-root{display:none}
