:root,:root[data-theme=light]{--bg:#f3f4f7;--surface:#fff;--surface-2:#f5f6f9;--border:#e4e6ec;--border-strong:#d1d5df;--text:#16181d;--text-muted:#59606e;--text-faint:#838b99;--accent:#2f47c9;--accent-hover:#263ba8;--accent-weak:#ebeeff;--accent-contrast:#fff;--correct:#157347;--correct-bg:#e7f4ec;--correct-border:#b6ddc4;--incorrect:#c02b2b;--incorrect-bg:#fbecea;--incorrect-border:#f0c4bf;--focus:#2f47c9;--shadow-sm:0 1px 2px #10121b0a, 0 1px 3px #10121b0f;--shadow-md:0 2px 6px #10121b0f, 0 8px 24px #10121b14;--code-bg:#f7f8fb;--code-border:#e4e6ec;--code-text:#2b303b;--tok-keyword:#9b258f;--tok-type:#0f766e;--tok-string:#1f7a3d;--tok-number:#b25000;--tok-comment:#7b8494;--tok-punct:#6b7280}:root[data-theme=dark]{--bg:#0e1014;--surface:#171a20;--surface-2:#1d2129;--border:#272b34;--border-strong:#363c48;--text:#e7e9ef;--text-muted:#9aa2b1;--text-faint:#727a89;--accent:#8494ff;--accent-hover:#9aa7ff;--accent-weak:#1c2136;--accent-contrast:#0e1014;--correct:#56d68a;--correct-bg:#14301f;--correct-border:#245c39;--incorrect:#f78585;--incorrect-bg:#331919;--incorrect-border:#5e2b2b;--focus:#8494ff;--shadow-sm:0 1px 2px #0000004d, 0 1px 3px #00000059;--shadow-md:0 2px 6px #00000059, 0 12px 28px #00000073;--code-bg:#12151b;--code-border:#262a33;--code-text:#cdd2dc;--tok-keyword:#c99be0;--tok-type:#59c2b0;--tok-string:#86d69a;--tok-number:#e0a878;--tok-comment:#6c7686;--tok-punct:#8a93a3}:root{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-eyebrow:.72rem;--fs-xs:.8125rem;--fs-sm:.875rem;--fs-base:.9375rem;--fs-md:1rem;--fs-lg:1.125rem;--fs-xl:1.375rem;--fs-2xl:1.75rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:40px;--sp-9:56px;--r-sm:6px;--r-md:8px;--r-lg:12px;--ease:cubic-bezier(.2, 0, 0, 1);--dur:.14s}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.55}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}p{margin:0 0 var(--sp-3)}.muted{color:var(--text-muted)}:where(a,button,[tabindex]):focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.eyebrow,.study>.muted:first-of-type,.trainer>.muted:first-of-type{font-family:var(--font-mono);font-size:var(--fs-eyebrow);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint)}.app-header{padding:var(--sp-4) var(--sp-6);border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface) 70%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(6px);backdrop-filter:saturate(1.4)blur(6px);z-index:10;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.brand{letter-spacing:-.01em;color:var(--text);font-weight:600}.brand:before{content:"";width:8px;height:8px;margin-right:var(--sp-2);background:var(--accent);vertical-align:middle;border-radius:2px;display:inline-block}.app-main{max-width:760px;padding:var(--sp-8) var(--sp-6) var(--sp-9);margin:0 auto}.theme-toggle{font:inherit;font-size:var(--fs-sm);background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease)}.theme-toggle:hover{border-color:var(--accent);background:var(--surface-2)}.home h1{font-size:var(--fs-2xl);letter-spacing:-.02em;margin:0 0 var(--sp-2);font-weight:700;line-height:1.15}.home>.muted{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-faint)}.subjects{gap:var(--sp-4);margin:var(--sp-7) 0;display:grid}.subject-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease)}.subject-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.subject-card h2{font-size:var(--fs-lg);letter-spacing:-.01em;margin:0 0 var(--sp-1);font-weight:600}.subject-card .muted{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-faint)}.subject-actions{gap:var(--sp-2);margin-top:var(--sp-4);display:flex}.subject-actions a{font-size:var(--fs-sm);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);border:1px solid var(--border-strong);color:var(--text);transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), color var(--dur) var(--ease);font-weight:500}.subject-actions a:first-child{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.subject-actions a:first-child:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-contrast)}.subject-actions a:last-child:hover{border-color:var(--accent);color:var(--accent)}.mistakes-entry{margin-top:var(--sp-6);padding-top:var(--sp-5);border-top:1px solid var(--border)}.mistakes-entry a{font-weight:500}.study>.muted,.trainer>.muted,.mistakes>.muted{margin:0 0 var(--sp-2)}.study [data-testid=study-counter],.trainer [data-testid=trainer-counter],.mistakes [data-testid=mistakes-counter]{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.03em;color:var(--text-faint);margin-bottom:var(--sp-5)}.question-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-7);box-shadow:var(--shadow-sm)}.question-prompt{font-size:var(--fs-lg);letter-spacing:-.01em;margin:0 0 var(--sp-5);font-weight:600;line-height:1.4}.question-hint{font-size:var(--fs-sm);margin:0 0 var(--sp-4)}.code-block{margin:0 0 var(--sp-5);background:var(--code-bg);border:1px solid var(--code-border);border-radius:var(--r-md);position:relative;overflow:hidden}.code-lang{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-faint);background:var(--surface-2);border-left:1px solid var(--code-border);border-bottom:1px solid var(--code-border);border-bottom-left-radius:var(--r-sm);padding:2px var(--sp-2);font-size:.68rem;position:absolute;top:0;right:0}.code-block pre{padding:var(--sp-4) var(--sp-4) var(--sp-4);margin:0;overflow-x:auto}.code-block code{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--code-text);white-space:pre;line-height:1.6;display:block}.code-plain{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tok-keyword{color:var(--tok-keyword)}.tok-type{color:var(--tok-type)}.tok-string{color:var(--tok-string)}.tok-number{color:var(--tok-number)}.tok-comment{color:var(--tok-comment);font-style:italic}.tok-punct{color:var(--tok-punct)}.option-list{margin:var(--sp-5) 0 0;gap:var(--sp-2);padding:0;list-style:none;display:grid}.option{gap:var(--sp-3);text-align:left;width:100%;font:inherit;font-size:var(--fs-base);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);color:var(--text);cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);align-items:baseline;display:flex}.option:hover:not(:disabled){border-color:var(--accent);background:var(--accent-weak)}.option:disabled{cursor:default}.option.selected{border-color:var(--accent);background:var(--accent-weak)}.option.correct{border-color:var(--correct-border);background:var(--correct-bg)}.option.correct .option-id{color:var(--correct)}.option.incorrect{border-color:var(--incorrect-border);background:var(--incorrect-bg)}.option.incorrect .option-id{color:var(--incorrect)}.option-id{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-faint);flex:none;font-weight:600}.option-text{flex:auto}.explanation{margin-top:var(--sp-6);border-top:1px solid var(--border);padding-top:var(--sp-5)}.explanation h3{font-family:var(--font-mono);font-size:var(--fs-eyebrow);letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);margin:0 0 var(--sp-3);font-weight:600}.explanation-core{font-size:var(--fs-base);margin:0 0 var(--sp-4);line-height:1.6}.explanation-disputed{font-size:var(--fs-sm);color:var(--text);background:var(--incorrect-bg);border:1px solid var(--incorrect-border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);margin:0 0 var(--sp-4);line-height:1.55}.explanation-options{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.explanation-options li{font-size:var(--fs-sm);color:var(--text-muted);padding-left:var(--sp-3);border-left:2px solid var(--border-strong);line-height:1.55}.explanation-options li.correct{border-left-color:var(--correct)}.explanation-options li.correct strong{color:var(--correct)}.explanation-options li.incorrect strong{color:var(--text-faint)}.nav-row{justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-6);display:flex}.nav-row button,.nav-row a{font:inherit;font-size:var(--fs-sm);background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-5);cursor:pointer;transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease), color var(--dur) var(--ease);font-weight:500}.nav-row button:hover:not(:disabled),.nav-row a:hover{border-color:var(--accent);color:var(--accent)}.nav-row button:disabled{opacity:.45;cursor:default}.nav-row button:only-child,.nav-row button:last-child:not(:disabled),.nav-row a:last-child{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.nav-row button:only-child:hover,.nav-row button:last-child:not(:disabled):hover,.nav-row a:last-child:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-contrast)}.nav-row button:first-child:not(:only-child){background:var(--surface);border-color:var(--border-strong);color:var(--text)}.nav-row button:first-child:not(:only-child):hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
