:root{--bg:#eef2f7;--surface:#fff;--surface-2:#e4e9f1;--fg:#132031;--muted:#5a6a7e;--line:#d3dbe6;--accent:#1b58b3;--accent-soft:#dbe6f7;--on-accent:#fff;--good:#1d8a4a;--good-soft:#dcf1e4;--warn:#c48404;--warn-soft:#fbefd2;--bad:#c2372f;--bad-soft:#f8e0de;--new:#a3aebd;--code-bg:#f6f8fb;--tk-kw:#1b58b3;--tk-str:#1d7a45;--tk-num:#a3520c;--tk-com:#7b8797;--tk-type:#7a3cb0;--font-display:"Barlow Condensed", "Arial Narrow", "Helvetica Neue", sans-serif;--font-body:"Barlow", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--r:10px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d131b;--surface:#151e29;--surface-2:#1d2835;--fg:#e5ebf2;--muted:#8e9cae;--line:#283646;--accent:#5b9bf0;--accent-soft:#1b2d47;--on-accent:#0b1320;--good:#43c07a;--good-soft:#153324;--warn:#e5ad32;--warn-soft:#382c10;--bad:#f06c61;--bad-soft:#3d1c1a;--new:#52606f;--code-bg:#101820;--tk-kw:#7fb2ff;--tk-str:#7fd39c;--tk-num:#f0b36e;--tk-com:#6d7b8c;--tk-type:#c9a2f5;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0d131b;--surface:#151e29;--surface-2:#1d2835;--fg:#e5ebf2;--muted:#8e9cae;--line:#283646;--accent:#5b9bf0;--accent-soft:#1b2d47;--on-accent:#0b1320;--good:#43c07a;--good-soft:#153324;--warn:#e5ad32;--warn-soft:#382c10;--bad:#f06c61;--bad-soft:#3d1c1a;--new:#52606f;--code-bg:#101820;--tk-kw:#7fb2ff;--tk-str:#7fd39c;--tk-num:#f0b36e;--tk-com:#6d7b8c;--tk-type:#c9a2f5;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}img{max-width:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);margin:0;font-size:16px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:860px;margin:0 auto;padding-block:0 64px;padding-inline:16px}.bar{top:env(safe-area-inset-top,0px);z-index:10;background:var(--bg);border-bottom:1px solid var(--line);position:sticky}.bar-in{flex-wrap:wrap;align-items:center;gap:12px;max-width:860px;margin:0 auto;padding-block:10px;padding-inline:16px;display:flex}.brand{align-items:center;gap:10px;margin-right:auto;display:flex}.sign{background:var(--accent);width:34px;height:34px;color:var(--on-accent);font-family:var(--font-display);box-shadow:inset 0 0 0 2px var(--surface), 0 0 0 1px var(--accent);border-radius:7px;place-items:center;font-size:22px;font-weight:700;display:grid}.brand b{font-family:var(--font-display);letter-spacing:.01em;font-size:22px;font-weight:700;line-height:1;display:block}.brand small{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:12px}nav.tabs{gap:4px;display:flex;overflow-x:auto}nav.tabs button{font-family:var(--font-display);letter-spacing:.02em;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:7px 12px;font-size:17px;font-weight:600}nav.tabs button[aria-current=page]{background:var(--accent-soft);color:var(--accent)}nav.tabs button:hover{color:var(--fg)}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0;font-weight:700;line-height:1.1}h1{font-size:34px}h2{font-size:24px}h3{font-size:19px;font-weight:600}.eyebrow{letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:600}.muted{color:var(--muted)}.stack{flex-direction:column;gap:16px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}section.block{flex-direction:column;gap:14px;padding-block:22px 0;display:flex}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}.num{font-variant-numeric:tabular-nums}.btn{border:1px solid var(--line);background:var(--surface);border-radius:8px;align-items:center;gap:8px;padding:9px 16px;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--muted)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover{filter:brightness(1.08);border-color:var(--accent)}.btn-good{background:var(--good);border-color:var(--good);color:var(--surface)}.btn-bad{background:var(--bad);border-color:var(--bad);color:var(--surface)}.btn-ghost{color:var(--muted);background:0 0;border-color:#0000;padding-inline:8px}.btn-ghost:hover{color:var(--fg);border-color:#0000}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn-lg{padding:12px 20px;font-size:17px}kbd{font-family:var(--font-mono);opacity:.6;border:1px solid;border-radius:4px;padding:0 4px;font-size:11px}.sbar{background:var(--surface-2);border-radius:6px;height:12px;display:flex;overflow:hidden}.sbar.thin{height:6px}.sbar i{height:100%;display:block}.c-learned{background:var(--good)}.c-started{background:var(--warn)}.c-new{background:var(--new)}.legend{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.legend button{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);flex-direction:column;gap:2px;padding:12px 14px;display:flex}.legend button:hover{border-color:var(--muted)}.legend .lbl{color:var(--muted);align-items:center;gap:7px;font-size:13px;font-weight:500;display:flex}.legend .lbl i{border-radius:50%;width:10px;height:10px}.legend .val{font-family:var(--font-display);font-size:30px;font-weight:700;line-height:1.05}.hero{flex-direction:column;gap:14px;padding-block:26px 4px;display:flex}.hero .big{font-family:var(--font-display);font-size:52px;font-weight:700;line-height:1}.hero .big span{color:var(--muted);font-size:26px;font-weight:600}.actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.action{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);flex-direction:column;gap:6px;padding:18px;display:flex}.action:hover{border-color:var(--accent)}.action.main{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.action.main .muted{color:inherit;opacity:.8}.action h3{font-size:22px}.topics{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.topic{border-top:1px solid var(--line);cursor:pointer;grid-template-columns:auto minmax(0,1fr) 120px 52px;align-items:center;gap:12px;padding:10px 14px;display:grid}.topic:first-child{border-top:0}.topic:hover{background:var(--surface-2)}.topic input{width:17px;height:17px;accent-color:var(--accent);margin:0}.topic .t-name{min-width:0}.topic .t-name b{text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.topic .t-name small{color:var(--muted);font-size:12px}.topic .pct{text-align:right;color:var(--muted);font-size:14px}.topic.off b{color:var(--muted)}.seg{flex-wrap:wrap;gap:6px;display:flex}.seg button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 14px;font-size:14px;font-weight:500}.seg button[aria-pressed=true]{background:var(--fg);color:var(--bg);border-color:var(--fg)}.seg button .n{opacity:.6;margin-left:4px}label.field{color:var(--muted);flex-direction:column;gap:6px;font-size:13px;font-weight:500;display:flex}select,input[type=search]{border:1px solid var(--line);background:var(--surface);border-radius:8px;min-width:0;padding:8px 10px;font-size:15px}.check{align-items:center;gap:8px;font-size:15px;display:flex}.check input{width:17px;height:17px;accent-color:var(--accent)}.qcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;gap:16px;min-width:0;padding:20px;display:flex}.qmeta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13px;display:flex}.qmeta .tag{letter-spacing:.05em;text-transform:uppercase;background:var(--surface-2);color:var(--fg);border-radius:5px;padding:3px 8px;font-size:11px;font-weight:600}.pips{align-items:center;gap:3px;display:inline-flex}.pips i{background:var(--line);border-radius:2px;width:6px;height:12px}.pips i.on{background:var(--muted)}.lights{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.lights i{border:2px solid var(--line);border-radius:50%;width:12px;height:12px}.lights i.on{background:var(--good);border-color:var(--good)}.lights small{font-variant-numeric:tabular-nums;margin-left:4px}.qtext{white-space:pre-wrap;margin:0;font-size:19px;font-weight:500;line-height:1.4}.hint{color:var(--muted);margin-top:-8px;font-size:13px}pre.code{background:var(--code-bg);border:1px solid var(--line);font-family:var(--font-mono);tab-size:4;border-radius:8px;margin:0;padding:14px 16px;font-size:13.5px;line-height:1.6;overflow-x:auto}pre.code code{white-space:pre;font-family:inherit}.hljs-keyword,.hljs-literal,.hljs-built_in,.hljs-meta-keyword{color:var(--tk-kw);font-weight:600}.hljs-string,.hljs-attr,.hljs-regexp{color:var(--tk-str)}.hljs-number{color:var(--tk-num)}.hljs-comment,.hljs-doctag,.hljs-meta{color:var(--tk-com);font-style:italic}.hljs-title,.hljs-type,.hljs-name,.hljs-class .hljs-title{color:var(--tk-type)}.hljs-tag{color:var(--muted)}input.blank{font-family:var(--font-mono);border:0;border-bottom:2px solid var(--accent);background:var(--accent-soft);border-radius:4px 4px 0 0;outline:none;min-width:5ch;padding:1px 5px;font-size:13px}input.blank:focus{background:var(--surface);box-shadow:0 0 0 2px var(--accent)}input.blank.ok{border-color:var(--good);background:var(--good-soft)}input.blank.no{border-color:var(--bad);background:var(--bad-soft)}textarea.answer{resize:vertical;border:1px solid var(--line);background:var(--code-bg);width:100%;min-height:84px;font-family:var(--font-mono);border-radius:8px;padding:12px 14px;font-size:14px;line-height:1.55}textarea.answer.prose{font-family:var(--font-body);font-size:15px}textarea.answer:focus{outline:2px solid var(--accent);outline-offset:-1px}.opts{flex-direction:column;gap:8px;display:flex}.opt{text-align:left;border:1.5px solid var(--line);background:var(--surface);border-radius:9px;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 14px;font-size:16px;display:grid}.opt:hover:not([disabled]){border-color:var(--muted)}.opt .k{border:1.5px solid var(--line);width:28px;height:28px;font-family:var(--font-display);color:var(--muted);border-radius:7px;place-items:center;font-size:16px;font-weight:700;display:grid}.opt.multi .k{border-radius:50%}.opt .txt{overflow-wrap:anywhere;min-width:0}.opt .txt.mono{font-family:var(--font-mono);font-size:14px}.opt .mark{letter-spacing:.04em;text-transform:uppercase;font-size:12px;font-weight:600}.opt.sel{border-color:var(--accent);background:var(--accent-soft)}.opt.sel .k{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.opt[disabled]{cursor:default}.opt.is-correct{border-color:var(--good);background:var(--good-soft)}.opt.is-correct .k{background:var(--good);border-color:var(--good);color:var(--surface)}.opt.is-correct .mark{color:var(--good)}.opt.is-wrong{border-color:var(--bad);background:var(--bad-soft)}.opt.is-wrong .k{background:var(--bad);border-color:var(--bad);color:var(--surface)}.opt.is-wrong .mark{color:var(--bad)}.opt.is-missed{border-color:var(--good);border-style:dashed}.opt.is-missed .mark{color:var(--good)}.feedback{border:1px solid;border-radius:9px;flex-direction:column;gap:8px;padding:14px 16px;display:flex}.feedback.ok{background:var(--good-soft);border-color:var(--good)}.feedback.no{background:var(--bad-soft);border-color:var(--bad)}.feedback.info{background:var(--surface-2);border-color:var(--line)}.feedback b.head{font-family:var(--font-display);font-size:20px;font-weight:700}.feedback.ok b.head{color:var(--good)}.feedback.no b.head{color:var(--bad)}.feedback pre{font-family:var(--font-mono);white-space:pre-wrap;background:var(--surface);border:1px solid var(--line);border-radius:6px;margin:0;padding:8px 10px;font-size:13.5px}.feedback p{margin:0}.qfoot{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.qfoot .left{color:var(--muted);margin-right:auto;font-size:13px}.session-head{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 18px;padding-block:18px 12px;font-size:14px;display:flex}.session-head b{color:var(--fg);font-variant-numeric:tabular-nums}.session-head .grow{flex:160px}.exam-top{top:calc(env(safe-area-inset-top,0px) + var(--barh,57px));z-index:5;background:var(--bg);flex-direction:column;gap:10px;padding-block:12px;display:flex;position:sticky}.exam-line{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.timer{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.timer.low{color:var(--bad)}.grid30{grid-template-columns:repeat(15,minmax(0,1fr));gap:4px;display:grid}.grid30 button{aspect-ratio:1;border:1px solid var(--line);background:var(--surface);font-variant-numeric:tabular-nums;max-width:100%;color:var(--muted);border-radius:5px;padding:0;font-size:12px;font-weight:600;position:relative}.grid30 button.done{background:var(--surface-2);color:var(--fg);border-color:var(--muted)}.grid30 button.cur{outline:2px solid var(--accent);outline-offset:1px;color:var(--accent)}.grid30 button.flag:after{content:"";background:var(--warn);border-radius:50%;width:6px;height:6px;position:absolute;top:2px;right:2px}.grid30 button.r-ok{background:var(--good-soft);border-color:var(--good);color:var(--good)}.grid30 button.r-no{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.grid30 button.r-open{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.confirm{border:1.5px solid var(--warn);background:var(--warn-soft);border-radius:var(--r);flex-direction:column;gap:10px;padding:16px;display:flex}.result-hero{flex-wrap:wrap;align-items:flex-end;gap:18px 28px;padding-block:24px 6px;display:flex}.result-hero .score{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:64px;font-weight:700;line-height:.95}.result-hero .score span{color:var(--muted);font-size:30px}.verdict{font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;border:2px solid;border-radius:8px;padding:6px 14px;font-size:22px;font-weight:700}.verdict.pass{color:var(--good);border-color:var(--good)}.verdict.fail{color:var(--bad);border-color:var(--bad)}table.tbl{border-collapse:collapse;width:100%;font-size:14px}table.tbl th,table.tbl td{text-align:left;border-top:1px solid var(--line);padding:8px 10px}table.tbl th{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;border-top:0;font-size:12px;font-weight:600}table.tbl td.r,table.tbl th.r{text-align:right;font-variant-numeric:tabular-nums}.tbl-wrap{overflow-x:auto}.list{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.item{border-top:1px solid var(--line)}.item:first-child{border-top:0}.item>button.head{text-align:left;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;padding:11px 14px;display:grid}.item>button.head:hover{background:var(--surface-2)}.item .it-q{min-width:0}.item .it-q b{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:500;display:-webkit-box;overflow:hidden}.item .it-q small{color:var(--muted);font-size:12px}.item .body{padding:0 14px 14px}.item .body .qcard{border-style:dashed}.dot{border-radius:50%;flex:none;width:11px;height:11px;display:inline-block}.chip{white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600}.chip.ok{background:var(--good-soft);color:var(--good)}.chip.no{background:var(--bad-soft);color:var(--bad)}.chip.open{background:var(--warn-soft);color:var(--warn)}.num-badge{font-family:var(--font-display);color:var(--muted);font-variant-numeric:tabular-nums;min-width:24px;font-size:17px;font-weight:700}.empty{text-align:center;color:var(--muted);padding:28px}.done-card{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.hist{flex-direction:column;display:flex}.hist div{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding-block:8px;font-size:14px;display:grid}.hist div:first-child{border-top:0}@media (width<=620px){h1{font-size:28px}.hero .big{font-size:42px}.actions{grid-template-columns:minmax(0,1fr)}.legend .val{font-size:24px}.legend button{padding:10px}.topic{grid-template-columns:auto minmax(0,1fr) 44px}.topic .sbar{display:none}.grid30{grid-template-columns:repeat(10,minmax(0,1fr))}.qcard{padding:16px}.qtext{font-size:17px}.brand small{display:none}}@media (prefers-reduced-motion:no-preference){.qcard{animation:.18s ease-out rise}@keyframes rise{0%{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:none}}}
