:root{--bg:#0f1420;--surface:#171d2b;--surface-2:#1f2637;--line:#2b3448;--text:#e8ecf4;--muted:#9aa6bd;--brand:#3b82f6;--brand-2:#1d4ed8;--ok:#22c55e;--bad:#ef4444;--warn:#f59e0b;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root{--bg:#f4f6fb;--surface:#fff;--surface-2:#f0f3f9;--line:#dfe4ee;--text:#16203a;--muted:#64708a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.55 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:880px;padding:0 16px calc(48px + env(safe-area-inset-bottom));margin:0 auto}.booting{min-height:100vh}.auth{place-items:center;min-height:100vh;padding:32px 20px;display:grid}.auth-card{width:100%;max-width:400px}.auth-brand{text-align:center;margin-bottom:28px}.auth-brand span{margin-bottom:10px;font-size:34px;display:block}.auth-brand h1{letter-spacing:-.01em;margin:0 0 6px;font-size:21px;font-weight:500}.auth-brand p{color:var(--muted);margin:0;font-size:14px}.tabs{background:var(--surface-2);border-radius:12px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:22px;padding:4px;display:grid}.tabs button{color:var(--muted);background:0 0;border:0;border-radius:9px;padding:9px;font-size:14px}.tabs button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0000001f}.auth form{flex-direction:column;display:flex}.auth form .primary{margin-top:6px;padding:13px}.auth-error{color:var(--bad);margin:0 0 14px;font-size:13px}.auth-foot{text-align:center;color:var(--muted);margin:20px 0 0;font-size:13px}.auth-foot button{color:var(--brand);background:0 0;border:0;padding:0;font-size:13px}.signout{color:var(--muted)}.topbar{z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:space-between;align-items:center;padding:18px 0;display:flex;position:sticky;top:0}.brand{color:var(--text);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;font-size:17px;display:flex}.brand-mark{font-size:22px}.topbar nav{gap:6px;display:flex}.topbar nav button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;min-height:44px;padding:10px 12px;font-size:14px}.topbar nav button.active{background:var(--surface-2);color:var(--text)}main{display:block}.stack{flex-direction:column;gap:18px;display:flex}.home{flex-direction:column;gap:20px;display:flex}.greet h1{letter-spacing:-.02em;margin:6px 0;font-size:24px}.greet p{color:var(--muted);max-width:46ch;margin:0;font-size:15px}.stat-row{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.stat-row div{background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:12px;flex-direction:column;gap:2px;padding:12px;display:flex}.stat-row b{font-size:20px}.stat-row span{color:var(--muted);font-size:12px}.start .modes{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.mode{text-align:left;background:var(--surface-2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:14px;align-items:flex-start;gap:12px;min-height:60px;padding:15px;display:flex}.mode .radio{border:2px solid var(--line);background:var(--surface);border-radius:50%;flex:none;width:20px;height:20px;margin-top:2px;transition:border-color .15s}.mode.on{border-color:var(--brand);background:color-mix(in srgb, var(--brand) 10%, var(--surface-2))}.mode.on .radio{border-color:var(--brand);border-width:6px}.mode-text{flex-direction:column;gap:3px;display:flex}.mode-text strong{font-size:15px}.mode-text span{color:var(--muted);font-size:13px;line-height:1.4}.training{flex-direction:column;gap:14px;margin-bottom:4px;display:flex}.field-label{color:var(--muted);margin-bottom:8px;font-size:14px;display:block}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip-btn{border:1px solid var(--line);background:var(--surface-2);min-width:52px;min-height:44px;color:var(--text);border-radius:12px;padding:0 14px;font-size:15px}.chip-btn.on{border-color:var(--brand);background:color-mix(in srgb, var(--brand) 14%, var(--surface-2))}.themes{grid-template-columns:1fr 1fr;gap:8px;display:grid}.theme-btn{text-align:left;background:var(--surface-2);border:1px solid var(--line);color:var(--text);border-radius:12px;flex-direction:column;align-items:flex-start;gap:2px;min-height:76px;padding:12px;display:flex}.theme-btn.on{border-color:var(--brand);background:color-mix(in srgb, var(--brand) 12%, var(--surface-2))}.theme-icon{font-size:17px}.theme-name{font-size:13px;line-height:1.3}.theme-count{color:var(--muted);font-size:11px}.primary.big{width:100%;min-height:52px;margin-top:4px;font-size:16px}.section-title{justify-content:space-between;align-items:baseline;margin:0 0 10px;font-size:15px;font-weight:600;display:flex}.section-title span{color:var(--muted);font-size:13px;font-weight:400}.modules{border:1px solid var(--line);border-radius:14px;margin:0;padding:0;list-style:none;overflow:hidden}.modules li{background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:14px;display:flex}.modules li+li{border-top:1px solid var(--line)}.modules b{color:var(--muted);font-size:13px;font-weight:600}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.card h2{margin:0 0 14px;font-size:18px}label{color:var(--muted);flex-direction:column;gap:6px;margin-bottom:14px;font-size:14px;display:flex}input,select{background:var(--surface-2);border:1px solid var(--line);color:var(--text);border-radius:10px;width:100%;min-height:48px;padding:13px 12px;font-size:16px}input:focus,select:focus{outline:2px solid var(--brand);outline-offset:1px}.row{grid-template-columns:2fr 1fr;gap:12px;display:grid}button{font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:linear-gradient(180deg, var(--brand), var(--brand-2));color:#fff;border:0;border-radius:10px;padding:12px 20px;font-weight:600}.ghost{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:999px;padding:8px 14px}.ghost.danger{border-color:color-mix(in srgb, var(--bad) 40%, transparent);color:var(--bad)}.bars{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.bars li{grid-template-columns:1fr 2fr auto;align-items:center;gap:12px;font-size:14px;display:grid}.bar{background:var(--surface-2);border-radius:999px;height:9px;overflow:hidden}.bar>div{background:var(--brand);border-radius:999px;height:100%}.bar>div.ok{background:var(--ok)}.bar>div.bad{background:var(--warn)}.examhead{justify-content:space-between;align-items:center;display:flex}.examhead h2{margin:6px 0 0;font-size:20px}.chip{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:12px}.timer{font-variant-numeric:tabular-nums;font-size:28px;font-weight:700}.timer.warn{color:var(--bad)}.progress{background:var(--surface-2);border-radius:999px;height:6px;overflow:hidden}.progress>div{background:var(--brand);height:100%;transition:width .25s}.statement{margin:0 0 16px;font-size:17px;line-height:1.5}.sign{border:1px solid var(--line);background:#fff;border-radius:12px;flex-direction:column;align-items:center;gap:8px;margin:0 0 18px;padding:18px;display:flex}.sign img{width:180px;max-width:60%;height:auto}.sign figcaption{color:#64708a;letter-spacing:.04em;text-transform:uppercase;font-size:12px}.check{color:var(--text);flex-direction:row;align-items:center;gap:10px;font-size:14px}.check input{width:18px;height:18px;min-height:0;accent-color:var(--brand);flex:none;margin-top:1px;padding:0}.check small{color:var(--muted);font-size:13px}.options{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.option{text-align:left;background:var(--surface-2);border:1px solid var(--line);width:100%;color:var(--text);border-radius:12px;align-items:flex-start;gap:12px;padding:13px 14px;display:flex}.option:hover{border-color:color-mix(in srgb, var(--brand) 60%, var(--line))}.option.on{border-color:var(--brand);background:color-mix(in srgb, var(--brand) 14%, var(--surface-2))}.option.correct{border-color:var(--ok);background:color-mix(in srgb, var(--ok) 14%, var(--surface-2))}.option.wrong{border-color:var(--bad);background:color-mix(in srgb, var(--bad) 14%, var(--surface-2))}.letter{background:var(--bg);border-radius:8px;flex:none;place-items:center;width:26px;height:26px;font-size:13px;font-weight:700;display:grid}.mark{color:var(--muted);white-space:nowrap;margin-left:auto;font-size:11px}.navbtns{justify-content:space-between;gap:12px;display:flex}.navbtns button:not(.primary){background:var(--surface);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:12px 18px}.palette{flex-wrap:wrap;gap:6px;display:flex}.dot{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--muted);border-radius:9px;font-size:13px}.dot.done{background:color-mix(in srgb, var(--brand) 22%, var(--surface));color:var(--text);border-color:var(--brand)}.dot.current{outline:2px solid var(--text);outline-offset:1px}.examfoot{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.examfoot .muted{margin-right:auto}.scorecard{flex-wrap:wrap;align-items:center;gap:26px;display:flex}.scorecard.pass{border-color:color-mix(in srgb, var(--ok) 55%, var(--line))}.scorecard.fail{border-color:color-mix(in srgb, var(--bad) 55%, var(--line))}.score{flex-direction:column;align-items:center;min-width:140px;display:flex}.score b{font-size:44px;line-height:1}.score b span{color:var(--muted);font-size:20px}.score>span{color:var(--muted);margin-top:6px;font-size:13px}.scorecard h2{margin:0 0 6px}.scorecard p{margin:0 0 14px}.modal-backdrop{z-index:50;padding:20px calc(20px + env(safe-area-inset-right)) calc(20px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left));-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080c16b8;place-items:center;animation:.18s ease-out fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:18px;width:100%;max-width:420px;padding:26px 22px;animation:.22s cubic-bezier(.2,.9,.3,1.2) pop;box-shadow:0 24px 60px #00000061}.modal-title{letter-spacing:-.02em;color:var(--text);margin:0 0 14px;font-size:24px;font-weight:700;line-height:1.3}.modal-body{color:var(--muted);white-space:pre-line;margin:0 0 22px;font-size:15px;line-height:1.55}.modal-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.modal-actions button{border-radius:12px;min-height:52px;font-size:16px}.modal-actions .ghost{color:var(--text);border-width:1px}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.96)}to{opacity:1;transform:none}}.message-answer{font-size:13px;margin:12px 0 0!important}.message-answer b{color:var(--text)}.message{border-left:3px solid var(--brand)}.message h2{margin-bottom:8px}.message p{color:var(--muted);white-space:pre-line;margin:0;font-size:15px;line-height:1.55}textarea{background:var(--surface-2);border:1px solid var(--line);color:var(--text);font:inherit;resize:vertical;border-radius:10px;width:100%;padding:13px 12px;font-size:16px}textarea:focus{outline:2px solid var(--brand);outline-offset:1px}.msg-form textarea{min-height:110px}.msg-card{flex-direction:column;gap:8px;display:flex}.msg-card.off{opacity:.55}.msg-card p{color:var(--muted);white-space:pre-line;margin:0;font-size:14px;line-height:1.5}.review header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.review.ok{border-left:3px solid var(--ok)}.review.bad{border-left:3px solid var(--bad)}.tag{border-radius:999px;padding:3px 10px;font-size:12px}.tag.ok{background:color-mix(in srgb, var(--ok) 20%, transparent);color:var(--ok)}.tag.bad{background:color-mix(in srgb, var(--bad) 20%, transparent);color:var(--bad)}.explanation{color:var(--muted);background:var(--surface-2);border-radius:10px;margin:14px 0 0;padding:12px;font-size:14px}.admin{flex-direction:column;gap:18px;display:flex}.admin-head h1{margin:6px 0 2px;font-size:22px}.admin-head p{margin:0;font-size:14px}.admin-tabs{margin:0;display:flex;overflow-x:auto}.admin-tabs button{white-space:nowrap;flex:1 0 auto;min-height:40px;padding:9px 14px}.admin-stats b{font-size:19px}.kv{margin:0;padding:0;list-style:none}.kv li{justify-content:space-between;align-items:center;gap:12px;padding:11px 0;font-size:14px;display:flex}.kv li+li{border-top:1px solid var(--line)}.kv small{font-weight:400}.cards{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.small{font-size:13px}.search{gap:8px;margin:0;display:flex}.search input{flex:1}.search .primary{white-space:nowrap;padding:0 18px}.user-card{flex-direction:column;gap:10px;display:flex}.user-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.user-top strong{font-size:15px}.user-top p{margin:4px 0 0;font-size:13px}.user-num{text-align:right;flex-direction:column;display:flex}.user-num b{font-size:20px}.user-num span{color:var(--muted);font-size:12px}.user-actions{flex-wrap:wrap;gap:8px;display:flex}.user-actions button{min-height:40px}.tag.admin{background:color-mix(in srgb, var(--brand) 22%, transparent);color:var(--brand)}.user-name{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.question-card{flex-direction:column;gap:10px;display:flex}.question-card.off{opacity:.55}.q-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.q-body{align-items:flex-start;gap:14px;display:flex}.q-body img{background:#fff;border-radius:8px;flex:none;width:56px;height:auto;padding:4px}.q-body p{margin:0 0 6px;font-size:14px;line-height:1.45}.q-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.chart{align-items:flex-end;gap:4px;height:120px;margin-bottom:10px;display:flex}.chart-col{flex-direction:column;flex:1;align-items:center;gap:6px;height:100%;display:flex}.chart-bar{flex:1;align-items:flex-end;width:100%;display:flex}.chart-bar>div{background:color-mix(in srgb, var(--brand) 35%, transparent);border-radius:4px 4px 0 0;align-items:flex-end;width:100%;min-height:2px;display:flex}.chart-bar i{background:var(--ok);border-radius:4px 4px 0 0;width:100%;display:block}.chart-col span{color:var(--muted);font-size:10px}.legend{align-items:center;gap:6px;margin:0;display:flex}.legend i{border-radius:3px;width:10px;height:10px;display:inline-block}.legend .dot-ok{background:var(--ok)}.legend .dot-all{background:color-mix(in srgb, var(--brand) 35%, transparent);margin-left:8px}.linkish{color:var(--brand);font-size:inherit;text-align:left;background:0 0;border:0;padding:0}.filter-pill{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;font-size:14px;display:flex}.filter-pill button{min-height:36px;margin-left:auto}.pager{justify-content:space-between;gap:12px;display:flex}.pager button{min-height:44px;padding:0 18px}.exam-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.exam-row strong{font-size:15px}.exam-row p{margin:4px 0 0}.exam-score{text-align:right;flex-direction:column;align-items:flex-end;gap:4px;display:flex}.exam-score b{font-size:18px}.table{border-collapse:collapse;width:100%;font-size:14px}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;font-weight:500}.table td{border-bottom:1px solid var(--line);padding:10px}.alert{background:color-mix(in srgb, var(--bad) 18%, var(--surface));border:1px solid var(--bad);color:var(--text);cursor:pointer;border-radius:10px;margin-bottom:16px;padding:12px 14px}.muted{color:var(--muted)}footer{color:var(--muted);text-align:center;margin-top:40px;font-size:13px}@media (width<=620px){.row{grid-template-columns:1fr}.bars li{grid-template-columns:1fr auto}.bars .bar{grid-column:1/-1}.card{padding:16px}.topbar{gap:8px;padding:12px 0}.topbar nav button{padding:10px 8px}.brand{gap:8px;font-size:14px}.brand span{white-space:nowrap}.brand-word{display:none}.brand-mark{font-size:19px}.check{align-items:flex-start}.check input{margin-top:3px}}@media (width>=700px){.app{padding-left:20px;padding-right:20px}.greet h1{font-size:28px}.start .modes{flex-direction:row}.start .modes .mode{flex:1}.primary.big{width:auto;min-width:220px}}
