:root{--paper:#f7f5ef;--paper-2:#efece2;--ink:#1c1a14;--muted:#6c675b;--teal:#08947c;--teal-deep:#067565;--teal-soft:#dcefea;--gold:#b07e2f;--correct:#08947c;--correct-soft:#dcefea;--wrong:#be3a28;--wrong-soft:#f6e2dc;--line:#e4dfd2;--card:#fffdf7;--body:"Oxygen", ui-sans-serif, system-ui, -apple-system, sans-serif;--mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s12:48px;--r-card:10px;--r-firm:8px;--r-token:6px;--r-pill:999px;--shadow-float:0 -1px 14px #1c1a1412;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--body);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior-y:none}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;font-family:inherit}input{font-family:inherit}a{color:inherit;text-decoration:none}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:4px}@keyframes reveal{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:none}}.app{flex-direction:column;max-width:480px;min-height:100%;margin:0 auto;display:flex;position:relative}.main{flex-direction:column;flex:1;display:flex}.view{padding:calc(var(--s6) + var(--safe-top)) var(--s4) 96px;flex:1}.loading{min-height:50vh;color:var(--muted);place-items:center;font-size:15px;display:grid}.topbar{align-items:center;gap:var(--s3);margin-bottom:var(--s6);display:flex}.topbar h1{font-size:20px;font-weight:700}.iconbtn{border-radius:var(--r-token);background:var(--paper-2);width:40px;height:40px;color:var(--ink);border:none;flex:none;place-items:center;display:grid}.screen-h{letter-spacing:-.01em;margin-bottom:var(--s4);text-wrap:balance;font-size:26px;font-weight:700}.status{color:var(--muted);margin-bottom:var(--s6);font-size:14px}.status b{color:var(--ink);font-weight:700}.catrow{gap:var(--s2);margin-bottom:var(--s8);flex-wrap:wrap;display:flex}.chip{border-radius:var(--r-pill);background:var(--paper-2);color:var(--muted);border:none;padding:7px 14px;font-size:13px;font-weight:400}.chip.on{background:var(--teal-deep);color:#fff;font-weight:700}.exam-cta{text-align:left;background:var(--teal-deep);color:#fff;border-radius:var(--r-firm);width:100%;padding:var(--s4) var(--s4) calc(var(--s4) + 2px);margin-bottom:var(--s8);border:none;display:block}.exam-cta .t{font-size:17px;font-weight:700}.exam-cta .s{color:#e7f3ef;margin-top:3px;font-size:14px}.grp-label{color:var(--muted);margin-bottom:var(--s3);font-size:13px;font-weight:700}.counts{gap:var(--s2);margin-bottom:var(--s8);display:flex}.count{text-align:center;background:var(--paper-2);color:var(--ink);font-family:var(--mono);border-radius:var(--r-firm);border:none;flex:1;padding:13px 0;font-size:14px;font-weight:500}.rowbtn{text-align:left;width:100%;padding:var(--s4) 0;border:none;border-top:1px solid var(--line);background:0 0;display:block}.rowbtn .t{color:var(--teal-deep);font-size:16px;font-weight:700}.rowbtn .s{color:var(--muted);margin-top:3px;font-size:14px}.rowbtn.off .t{color:var(--muted)}.nav{z-index:20;width:100%;max-width:480px;padding:var(--s2) var(--s2) calc(var(--s2) + var(--safe-bottom));background:var(--paper);border-top:1px solid var(--line);box-shadow:var(--shadow-float);justify-content:space-around;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav a{color:var(--muted);flex-direction:column;align-items:center;gap:3px;padding:5px 14px;font-size:11px;font-weight:400;display:flex}.nav a.on{color:var(--teal-deep);font-weight:700}.q-top{align-items:center;gap:var(--s3);margin-bottom:var(--s4);display:flex}.prog{border-radius:var(--r-pill);background:var(--paper-2);flex:1;height:4px;overflow:hidden}.prog i{background:var(--teal);height:100%;transition:width .3s;display:block}.timer{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right;flex:none;min-width:44px;font-size:15px;font-weight:600}.timer.warn{color:var(--wrong)}.qmeta{color:var(--muted);margin-bottom:var(--s4);font-size:14px}.qmeta .mono{color:var(--ink)}.media{border-radius:var(--r-card);aspect-ratio:16/10;background:#12201c;position:relative;overflow:hidden}.media-missing{background:var(--paper-2);color:var(--muted);place-items:center;font-size:14px;display:grid}.media-poster{justify-content:center;align-items:center;gap:var(--s2);color:#f4efe4;border:none;flex-direction:column;width:100%;display:flex}.media-poster .pl{border-radius:var(--r-pill);width:56px;height:56px;color:var(--ink);background:#fffffff0;place-items:center;display:grid}.poster-label{font-size:14px;font-weight:700}.media img,.media video{object-fit:cover;width:100%;height:100%;display:block}.media .once{color:#f4efe4;border-radius:var(--r-token);z-index:2;background:#0000008c;padding:4px 8px;font-size:11px;font-weight:700;position:absolute;top:10px;right:10px}.media .replay{color:#fff;z-index:3;justify-content:center;align-items:center;gap:var(--s2);background:#0000006b;border:none;flex-direction:column;width:100%;font-size:14px;font-weight:700;display:flex;position:absolute;inset:0}.media .replay .pl{border-radius:var(--r-pill);width:50px;height:50px;color:var(--ink);background:#fffffff0;place-items:center;display:grid}.qtext{letter-spacing:-.01em;margin:var(--s4) 0;text-wrap:pretty;max-width:64ch;font-size:22px;font-weight:700;line-height:1.25}.tf{gap:var(--s3);margin-top:var(--s6);display:flex}.tf button{border:1px solid var(--line);border-radius:var(--r-firm);background:var(--card);color:var(--ink);flex:1;padding:17px 0;font-size:17px;font-weight:700;transition:background .12s}.tf button.ok{background:var(--teal-deep);color:#fff;border-color:var(--teal-deep)}.tf button.bad{background:var(--wrong);color:#fff;border-color:var(--wrong)}.tf button.dim{opacity:.4}.opts{gap:var(--s2);margin-top:var(--s4);flex-direction:column;display:flex}.opt{gap:var(--s3);border-radius:var(--r-card);background:var(--card);text-align:left;border:1px solid #0000;align-items:flex-start;width:100%;padding:14px;font-size:16px;line-height:1.3;display:flex}.opt .k{border-radius:var(--r-token);background:var(--paper-2);width:26px;height:26px;font-size:14px;font-weight:700;font-family:var(--mono);flex:none;place-items:center;display:grid}.opt.correct{border-color:var(--correct);background:var(--correct-soft)}.opt.correct .k{background:var(--correct);color:#fff}.opt.wrong{border-color:var(--wrong);background:var(--wrong-soft)}.opt.wrong .k{background:var(--wrong);color:#fff}.explain{margin-top:var(--s4);background:var(--card);border-left:3px solid var(--teal);border-radius:0 var(--r-token) var(--r-token) 0;padding:13px 16px;font-size:15px;line-height:1.45}.explain.bad{border-left-color:var(--wrong)}.explain .verdict{font-weight:700}.explain .verdict.ok{color:var(--teal-deep)}.explain .verdict.no{color:var(--wrong)}.bignext{margin-top:var(--s4);border-radius:var(--r-firm);background:var(--teal-deep);color:#fff;border:none;width:100%;padding:16px;font-size:16px;font-weight:700}.res{text-align:center;padding-top:var(--s6);flex-direction:column;align-items:center;display:flex}.ring{border-radius:var(--r-pill);place-items:center;width:190px;height:190px;display:grid;position:relative}.ring:before{content:"";border-radius:var(--r-pill);background:var(--paper);position:absolute;inset:14px}.ring .in{position:relative}.ring .in .big{font-family:var(--mono);letter-spacing:-.03em;font-size:52px;font-weight:600;line-height:1}.ring .in .of{color:var(--muted);margin-top:2px;font-size:13px}.verdict{margin-top:var(--s6);letter-spacing:-.02em;font-size:28px;font-weight:700}.verdict.pass{color:var(--teal)}.verdict.fail{color:var(--wrong)}.badge{margin-top:var(--s2);color:var(--muted);font-size:14px}.resrow{gap:var(--s8);margin-top:var(--s6);display:flex}.metric{text-align:center}.metric .n{font-family:var(--mono);color:var(--ink);font-size:22px;font-weight:600}.metric .l{color:var(--muted);margin-top:2px;font-size:13px}.res-cta{margin-top:var(--s6);gap:var(--s3);width:100%;display:flex}.res-cta button{border-radius:var(--r-firm);border:none;flex:1;padding:15px;font-size:15px;font-weight:700}.res-cta .again{background:var(--teal-deep);color:#fff}.res-cta .revi{background:var(--paper-2);color:var(--ink)}.review{margin-top:var(--s8);text-align:left;width:100%}.review h3{color:var(--muted);margin-bottom:var(--s3);font-size:13px;font-weight:700}.rev-item{padding:2px 0 2px var(--s3);border-left:3px solid var(--wrong);margin-bottom:var(--s4)}.rev-item .q{font-size:15px;font-weight:700;line-height:1.3}.rev-item .a{color:var(--muted);margin-top:6px;font-size:14px;line-height:1.5}.rev-item .a .ok{color:var(--teal-deep);font-weight:700}.rev-item .a .no{color:var(--wrong);font-weight:700}.searchb{align-items:center;gap:var(--s2);background:var(--paper-2);border-radius:var(--r-card);margin-bottom:var(--s4);color:var(--muted);padding:11px 14px;display:flex}.searchb input{width:100%;color:var(--ink);background:0 0;border:none;outline:none;font-size:16px}.grouprow{gap:var(--s2);margin-bottom:var(--s6);scrollbar-width:none;padding-bottom:4px;display:flex;overflow-x:auto}.grouprow::-webkit-scrollbar{display:none}.grp{border-radius:var(--r-pill);white-space:nowrap;background:var(--paper-2);color:var(--muted);border:none;flex:none;padding:7px 13px;font-size:13px;font-weight:400}.grp.on{background:var(--teal-deep);color:#fff;font-weight:700}.signgrid{gap:var(--s4) var(--s3);grid-template-columns:1fr 1fr;display:grid}.sign{text-align:center;content-visibility:auto;contain-intrinsic-size:auto 150px;background:0 0;border:none;padding:0}.sign .glyph{background:var(--paper-2);border-radius:var(--r-card);aspect-ratio:1;margin-bottom:var(--s2);place-items:center;padding:16px;display:grid}.sign .glyph img{object-fit:contain;max-width:100%;max-height:100%}.sign .noimg{background:var(--paper-2);border-radius:var(--r-card);aspect-ratio:1;margin-bottom:var(--s2);font-family:var(--mono);color:var(--muted);place-items:center;font-size:16px;display:grid}.sign .code{font-family:var(--mono);color:var(--teal-deep);font-size:12px;font-weight:600}.sign .nm{color:var(--muted);margin-top:2px;font-size:12px;line-height:1.25}.signsheet{z-index:40;background:#1c1a1473;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.signsheet .card{background:var(--paper);width:100%;max-width:480px;padding:var(--s6) var(--s4) calc(var(--s6) + var(--safe-bottom));box-shadow:var(--shadow-float);overscroll-behavior:contain;border-radius:16px 16px 0 0;max-height:86vh;overflow:auto}.signsheet .big{width:124px;height:124px;margin:0 auto var(--s4);background:var(--paper-2);border-radius:var(--r-card);place-items:center;padding:16px;display:grid}.signsheet .big img{max-width:100%;max-height:100%}.signsheet .code{font-family:var(--mono);color:var(--teal-deep);text-align:center;font-size:14px;font-weight:600}.signsheet h2{text-align:center;text-transform:capitalize;margin:4px 0;font-size:20px;font-weight:700}.signsheet .grp-tag{text-align:center;color:var(--muted);margin-bottom:var(--s4);font-size:13px}.signsheet p{max-width:64ch;color:var(--ink);margin:0 auto;font-size:15px;line-height:1.5}.signsheet .close{margin-top:var(--s6);border-radius:var(--r-firm);background:var(--ink);width:100%;color:var(--paper);border:none;padding:14px;font-weight:700}.bigstat{background:var(--teal-deep);color:#fff;border-radius:var(--r-card);padding:var(--s6);margin-bottom:var(--s6)}.bigstat .pct{font-family:var(--mono);letter-spacing:-.03em;font-size:46px;font-weight:600}.bigstat .lbl{color:#e7f3ef;margin-top:2px;font-size:14px}.pgrid{gap:var(--s8);display:flex}.metric.wide{text-align:left}.section-h{color:var(--muted);margin:var(--s8) 0 var(--s3);font-size:13px;font-weight:700}.sessions{flex-direction:column;display:flex}.sessrow{align-items:center;gap:var(--s3);padding:var(--s3) 0;border-top:1px solid var(--line);font-size:14px;display:flex}.sessrow .dot{border-radius:var(--r-pill);flex:none;width:8px;height:8px}.sessrow .dot.p{background:var(--teal)}.sessrow .dot.f{background:var(--wrong)}.sessrow .sc{font-family:var(--mono);margin-left:auto;font-weight:600}.sessrow .when{color:var(--muted);font-size:12px}.empty{text-align:center;color:var(--muted);padding:var(--s12) var(--s4)}.empty p{font-size:15px;line-height:1.5}.empty .cta{margin-top:var(--s4);background:var(--teal);color:#fff;border-radius:var(--r-firm);border:none;padding:12px 22px;font-weight:700;display:inline-block}@media (prefers-reduced-motion:no-preference){.explain{animation:.22s both reveal}.signsheet .card{animation:.28s cubic-bezier(.2,.7,.2,1) both sheet-in}}@media (hover:hover){.exam-cta,.bignext,.res-cta button,.count,.close,.empty .cta,.chip,.grp,.tf button,.opt,.rowbtn,.iconbtn,.nav a,.sign{transition:background .12s,color .12s,filter .12s}.exam-cta:hover,.bignext:hover,.res-cta .again:hover,.close:hover,.empty .cta:hover{filter:brightness(1.08)}.count:hover,.res-cta .revi:hover,.chip:hover,.grp:hover,.iconbtn:hover{background:var(--line)}.rowbtn:hover .t{text-decoration:underline}.tf button:hover,.opt:hover{border-color:var(--muted)}.nav a:hover{color:var(--ink)}.sign:hover .glyph{outline:2px solid var(--teal-deep);outline-offset:2px}}
