:root{--bg:#f6f7fb;--surface:#fff;--surface-2:#eef1f7;--text:#141a2b;--muted:#5b6478;--border:#d9deea;--accent:#2f5bea;--accent-text:#fff;--accent-soft:#e6ecff;--right:#1d8a4e;--right-soft:#e3f5ea;--wrong:#c43a31;--wrong-soft:#fbe7e5;--code-bg:#0f1626;--code-text:#e4e8f2;--radius:10px;--font:"DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0b1220;--surface:#111a2c;--surface-2:#17223a;--text:#e6e9f2;--muted:#97a1b8;--border:#253250;--accent:#6d8dff;--accent-text:#0b1220;--accent-soft:#1b2850;--right:#4cc785;--right-soft:#12301f;--wrong:#ff7a70;--wrong-soft:#3a1714;--code-bg:#070c17;--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.55 var(--font);margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{margin:.4rem 0;font-size:1.6rem;line-height:1.25}h2{margin:1.6rem 0 .6rem;font-size:1.1rem}.muted{color:var(--muted)}.small{font-size:.85rem}code{font-family:var(--mono);background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:.05em .35em;font-size:.88em}pre{background:var(--code-bg);color:var(--code-text);border-radius:8px;padding:.8rem 1rem;font-size:.85rem;line-height:1.45;overflow-x:auto}pre code{color:inherit;font-size:inherit;background:0 0;border:0;padding:0}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.topbar{z-index:10;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;height:56px;padding:0 16px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:.5rem;font-weight:700;display:inline-flex}.brand:hover{text-decoration:none}.brand-mark{background:var(--accent);width:28px;height:28px;color:var(--accent-text);border-radius:8px;place-items:center;font-weight:800;display:inline-grid}.layout{grid-template-columns:360px minmax(0,1fr);max-width:1600px;margin:0 auto;display:grid}.page{width:100%;min-width:0;max-width:820px;margin:0 auto;padding:24px 16px 96px;container-type:inline-size}.page:has(.practice-layout){max-width:1160px}.menu-btn{appearance:none;width:40px;height:40px;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:8px;margin:0 8px 0 -8px;font-size:1.25rem;display:none}.menu-btn:hover{background:var(--surface-2)}.menu-btn:focus-visible,.side-obj:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.sidebar{border-right:1px solid var(--border);height:calc(100vh - 56px);padding:20px 12px 48px 16px;font-size:.88rem;position:sticky;top:56px;overflow-y:auto}.side-exam-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);gap:.3rem;margin-bottom:.4rem;padding:.75rem .8rem;display:grid}.side-exam-card:hover{border-color:var(--accent);text-decoration:none}.side-exam-title{font-weight:700}.side-exam-meta{color:var(--muted);font-size:.78rem}.meter.wide{width:100%}.side-topic{margin-top:.35rem}.side-topic-btn{appearance:none;width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;grid-template-columns:.9rem auto 1fr auto;align-items:baseline;gap:.45rem;padding:.5rem 8px;font-weight:600;display:grid}.side-topic-btn:hover{background:var(--surface-2)}.side-topic-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.chev{color:var(--muted);transition:transform .15s}.side-topic-btn[aria-expanded=true] .chev{transform:rotate(90deg)}.side-topic-id{font:600 .72rem var(--mono);color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:.05rem .35rem}.side-topic-title{min-width:0;line-height:1.3}.side-topic-count{font:.72rem var(--mono);color:var(--muted)}.side-topic ul{border-left:1px solid var(--border);gap:1px;margin:0 0 .3rem 1.05rem;padding:0 0 0 .4rem;list-style:none;display:grid}.side-obj{color:var(--text);border-radius:6px;grid-template-columns:14px 2.4rem 1fr auto;align-items:center;gap:.45rem;padding:.38rem 8px;line-height:1.3;display:grid;position:relative}.side-obj .obj-id{font-size:.78rem}.side-obj-title{min-width:0}a.side-obj:hover{background:var(--surface-2);text-decoration:none}.side-obj.active{background:var(--accent-soft);font-weight:600}.side-obj.active:before{content:"";background:var(--accent);border-radius:1px;width:2px;position:absolute;top:6px;bottom:6px;left:calc(-.4rem - 1px)}.side-obj.empty,.side-obj.empty .obj-id{color:var(--muted)}.side-obj-count{color:var(--muted);font-size:.72rem;font-family:var(--mono)}.ring{background:var(--ring);border-radius:50%;width:14px;height:14px;-webkit-mask:radial-gradient(circle,#0000 3.5px,#000 4px);mask:radial-gradient(circle,#0000 3.5px,#000 4px)}.ring.none{border:1.5px dashed var(--border);background:0 0;-webkit-mask:none;mask:none}.scrim{display:none}@media (width<=900px){.layout{display:block}.menu-btn{place-items:center;display:inline-grid}.sidebar{z-index:20;background:var(--surface);visibility:hidden;width:min(360px,90vw);height:auto;transition:transform .2s,visibility .2s;position:fixed;top:56px;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{visibility:visible;transform:none;box-shadow:0 8px 32px #00000040}.scrim{z-index:15;background:#00000059;display:block;position:fixed;inset:56px 0 0}}@media (prefers-reduced-motion:reduce){.sidebar{transition:none}}.topic h2{align-items:baseline;gap:.5rem;display:flex}.topic-id,.obj-id{font-family:var(--mono);color:var(--accent);font-weight:600}.objectives{gap:6px;margin:0;padding:0;list-style:none;display:grid}.obj{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);grid-template-columns:3.4rem 1fr auto auto;align-items:center;gap:.75rem;padding:.7rem .9rem;display:grid}a.obj:hover{border-color:var(--accent);text-decoration:none}.obj-empty{opacity:.6}.obj-meta{color:var(--muted);white-space:nowrap;align-items:center;gap:.6rem;font-size:.85rem;display:flex}.obj-weight{color:var(--muted);font-size:.8rem;font-family:var(--mono)}.meter{background:var(--surface-2);border-radius:3px;width:64px;height:6px;display:flex;overflow:hidden}.meter-right{background:var(--right)}.meter-wrong{background:var(--wrong)}@media (width<=600px){.obj{grid-template-columns:3rem 1fr auto}.obj-meta{grid-column:2/4}.obj-weight{grid-area:1/3}}.crumbs{color:var(--muted);flex-wrap:wrap;gap:.4rem;font-size:.85rem;display:flex}.hero{padding-bottom:.4rem}.chips{flex-wrap:wrap;gap:.4rem;margin-top:.6rem;display:flex}.chip{color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.1rem .65rem;font-size:.8rem}.stats{grid-template-columns:repeat(3,1fr);gap:10px;margin:1.2rem 0;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);gap:.1rem;padding:.8rem 1rem;display:grid}.stat-num{font-size:1.6rem;font-weight:800;line-height:1.1}.stat-label{color:var(--muted);font-size:.8rem}.stat.right .stat-num{color:var(--right)}.stat.wrong .stat-num{color:var(--wrong)}.stat-bar{background:var(--surface-2);border-radius:3px;grid-column:1/-1;height:6px;display:flex;overflow:hidden}fieldset{border:0;min-width:0;margin:0;padding:0}legend{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem;padding:0;font-size:.75rem;font-weight:700}.sets{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.sets legend{grid-column:1/-1}.set-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;grid-template-columns:1fr auto;gap:.25rem .5rem;padding:.85rem 1rem;display:grid;position:relative}.set-card input{opacity:0;pointer-events:none;position:absolute}.set-card:hover:not(.disabled){border-color:var(--accent)}.set-card.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.set-card.disabled{opacity:.5;cursor:default}.set-card:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.set-label{font-weight:600}.set-count{font:700 .85rem var(--mono);color:var(--accent)}.set-hint{color:var(--muted);grid-column:1/-1;font-size:.8rem}.setup-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin:1.4rem 0 1rem;display:flex}.segmented{flex-wrap:wrap;display:inline-flex}.segmented legend{width:100%}.segmented label{border:1px solid var(--border);background:var(--surface);cursor:pointer;align-items:center;min-height:40px;padding:0 1rem;font-size:.9rem;display:inline-flex}.segmented label+label{margin-left:-1px}.segmented label:first-of-type{border-radius:8px 0 0 8px}.segmented label:last-of-type{border-radius:0 8px 8px 0}.segmented label.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600;position:relative}.segmented input{opacity:0;pointer-events:none;position:absolute}.segmented label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px;position:relative}.btn.big{min-height:48px;padding:0 1.6rem;font-size:1.02rem}.setup-foot{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:.6rem 1rem;padding-top:1rem;display:flex}.link-btn{appearance:none;font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:.85rem}.link-btn:hover{text-decoration:underline}@media (width<=600px){.stats{gap:6px}.stat{padding:.6rem .7rem}.sets{grid-template-columns:1fr}.setup-row .btn.big{width:100%}}.actions{flex-wrap:wrap;gap:.6rem;margin:1.2rem 0;display:flex}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);min-height:42px;color:var(--text);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:0 1.1rem;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--accent);text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn:disabled{opacity:.45;cursor:default;border-color:var(--border)}.btn:focus-visible,.option:focus-visible,.fill-input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.practice-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.progress-head{flex-wrap:wrap;justify-content:space-between;gap:.3rem 1rem;margin-top:.8rem;font-size:.9rem;display:flex}.ok{color:var(--right);font-weight:600}.bad{color:var(--wrong);font-weight:600}.qstrip{scrollbar-width:thin;gap:6px;margin:calc(.6rem - 6px) -6px calc(1rem - 6px);padding:6px 6px 10px;scroll-padding:0 40px;list-style:none;display:flex;overflow-x:auto}.qdot{appearance:none;border:1px solid var(--border);background:var(--surface);width:34px;height:34px;color:var(--muted);font:600 .8rem var(--mono);cursor:pointer;border-radius:8px;flex:none}.qdot:hover{border-color:var(--accent);color:var(--text)}.qdot.right{background:var(--right);border-color:var(--right);color:#fff}.qdot.wrong{background:var(--wrong);border-color:var(--wrong);color:#fff}.qdot.current{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);color:var(--text);border-color:var(--accent)}.qdot.right.current,.qdot.wrong.current{color:#fff}.qdot:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.question{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem}.stem{font-size:1.05rem}.hint{color:var(--muted);margin:.6rem 0 0;font-size:.9rem;font-weight:600}.options{gap:8px;margin:1rem 0 0;padding:0;list-style:none;display:grid}.option{text-align:left;border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;cursor:pointer;border-radius:8px;align-items:flex-start;gap:.75rem;padding:.65rem .8rem;display:flex}.option:hover:not(:disabled){border-color:var(--accent)}.option:disabled{cursor:default}.option-key{border:1px solid var(--border);width:1.6rem;height:1.6rem;color:var(--muted);border-radius:6px;flex:none;place-items:center;font-size:.8rem;font-weight:700;display:inline-grid}.option>span:nth-child(2){flex:1;padding-top:.05rem}.option-tag{flex:none;padding-top:.2rem;font-size:.75rem;font-weight:700}.option.selected{border-color:var(--accent);background:var(--accent-soft)}.option.selected .option-key{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.option.right{border-color:var(--right);background:var(--right-soft)}.option.right .option-key,.option.missed .option-key{background:var(--right);border-color:var(--right);color:#fff}.option.right .option-tag,.option.missed .option-tag{color:var(--right)}.option.missed{border-color:var(--right);border-style:dashed}.option.wrong{border-color:var(--wrong);background:var(--wrong-soft)}.option.wrong .option-key{background:var(--wrong);border-color:var(--wrong);color:#fff}.option.wrong .option-tag{color:var(--wrong)}.option.dim{opacity:.6}.fill{margin-top:1rem}.fill-input{width:100%;min-height:46px;font:1rem var(--mono);color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:0 .9rem}.fill-input.right{border-color:var(--right);background:var(--right-soft)}.fill-input.wrong{border-color:var(--wrong);background:var(--wrong-soft)}.feedback{border-left:4px solid var(--right);background:var(--surface-2);border-radius:0 8px 8px 0;margin-top:1.2rem;padding:.9rem 1rem}.feedback.wrong{border-left-color:var(--wrong)}.verdict{flex-wrap:wrap;align-items:baseline;gap:.3rem;margin:0;font-weight:700;display:flex}.verdict:before{content:"✓"}.feedback.wrong .verdict:before{content:"✕"}.explanation{border-top:1px solid var(--border);margin-top:.6rem;padding-top:.6rem}.feedback.right .verdict{color:var(--right)}.feedback.wrong .verdict{color:var(--wrong)}.verdict code{margin-right:.3rem}.book-link{margin:.7rem 0 0;font-size:.9rem}.qnav{background:linear-gradient(transparent, var(--bg) 30%);flex-wrap:wrap;justify-content:space-between;gap:.6rem;padding:.9rem 0;display:flex;position:sticky;bottom:0}.qnav-right{flex-wrap:wrap;gap:.6rem;margin-left:auto;display:flex}.btn.explain.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.practice-layout{grid-template-columns:minmax(0,1fr) 270px;align-items:start;gap:28px;display:grid}.practice{min-width:0}.ref-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);gap:.6rem;padding:1rem;font-size:.9rem;display:grid;position:sticky;top:80px}.ref-title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:.75rem;font-weight:700}.ref-book{text-wrap:balance;margin:0;font-weight:600;line-height:1.3}.ref-link{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;grid-template-columns:1fr auto;gap:.1rem .5rem;padding:.6rem .75rem;display:grid}.ref-link:hover{border-color:var(--accent);text-decoration:none}.ref-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ref-link.section{border-color:color-mix(in srgb, var(--accent) 45%, var(--border));background:var(--accent-soft)}.ref-kicker{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;grid-column:1;font-size:.72rem;font-weight:700}.ref-name{grid-column:1;font-weight:600;line-height:1.35}.ref-arrow{color:var(--accent);grid-area:1/2/span 2;align-self:center}.ref-hidden{border:1px dashed var(--border);color:var(--muted);border-radius:8px;margin:0;padding:.55rem .75rem;font-size:.82rem}.ref-meta{border-top:1px solid var(--border);gap:.35rem;margin:.2rem 0 0;padding-top:.7rem;display:grid}.ref-meta div{justify-content:space-between;gap:.6rem;display:flex}.ref-meta dt{color:var(--muted)}.ref-meta dd{text-align:right;margin:0}.dots{letter-spacing:.15em;color:var(--accent)}.dots-off{color:var(--border)}@container (width<=860px){.practice-layout{grid-template-columns:minmax(0,1fr);gap:0}.ref-panel{margin-top:.4rem;position:static}}.score{align-items:baseline;gap:1rem;margin:1rem 0;display:flex}.score-num{font-size:2.6rem;font-weight:800}.score-pct{color:var(--muted);font-size:1.2rem}.missed-list{gap:.8rem;padding-left:1.2rem;display:grid}.missed-list li{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.8rem 1rem}.missed-list details{margin-top:.5rem}.missed-list summary{cursor:pointer;color:var(--accent);font-weight:600}.empty{text-align:center;padding:3rem 0}
