:root{--bg:#0f1115;--card:#1a1d24;--muted:#8b93a1;--line:#2a2f3a;--fg:#e7eaf0;--accent:#5b9bff;--ok:#3ecf8e;--bad:#ff6b6b;--tag:#242833;--warn:#e0a458}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overscroll-behavior-y:none}button,input,select{font:inherit;color:inherit}.app{max-width:760px;margin:0 auto;min-height:100%;display:flex;flex-direction:column}.pad{padding:16px calc(16px + env(safe-area-inset-left)) calc(24px + env(safe-area-inset-bottom))}.top{position:sticky;top:0;z-index:20;background:#0f1115f5;backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top))}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.spacer{flex:1}h1{font-size:20px;margin:0}h2{font-size:16px;margin:22px 0 10px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.muted{color:var(--muted)}.small{font-size:13px}.center{text-align:center}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:12px}.btn{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 16px;cursor:pointer;display:flex;align-items:center;gap:10px;width:100%;text-align:left;transition:.15s}.btn:active{transform:scale(.985)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#0b1220;font-weight:700;justify-content:center}.btn.ghost{background:transparent}.btn.sm{width:auto;padding:8px 13px;border-radius:999px;font-size:14px}.btn:disabled{opacity:.45}.tag{background:var(--tag);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px;white-space:nowrap}.tag.accent{color:var(--accent);border-color:var(--accent)}.tag.ok{color:var(--ok);border-color:var(--ok)}.grid{display:grid;gap:10px}.g2{grid-template-columns:1fr 1fr}.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center}.stat b{display:block;font-size:26px;line-height:1.1}input,select{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px;width:100%}.q{font-weight:600;margin:0 0 14px;font-size:17px}.q img,.exp img{max-width:100%;border-radius:10px;height:auto}.q p,.exp p{margin:.5em 0}.opts{list-style:none;padding:0;margin:0}.opt{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:13px;margin-bottom:9px;display:flex;gap:11px;cursor:pointer;align-items:flex-start;width:100%;text-align:left}.opt .ltr{color:var(--muted);font-weight:800;flex:none;width:18px}.opt.correct{border-color:var(--ok);background:#3ecf8e1a}.opt.wrong{border-color:var(--bad);background:#ff6b6b1a}.opt.dim{opacity:.55}.bar{height:4px;background:var(--line);border-radius:4px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--accent);transition:width .3s}.exp{border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.sheet{position:fixed;inset:0;background:#0009;display:flex;align-items:flex-end;z-index:50}.sheet>div{background:var(--card);width:100%;max-height:88vh;border-radius:18px 18px 0 0;border-top:1px solid var(--line);display:flex;flex-direction:column}.msgs{overflow:auto;padding:16px;display:flex;flex-direction:column;gap:10px}.msg{padding:10px 13px;border-radius:14px;max-width:88%;white-space:pre-wrap}.msg.u{background:var(--accent);color:#0b1220;align-self:flex-end;border-bottom-right-radius:4px}.msg.a{background:var(--tag);align-self:flex-start;border-bottom-left-radius:4px}.banner{background:var(--warn);color:#0b1220;font-size:13px;padding:6px 16px;text-align:center;font-weight:600}.flip{perspective:1200px;height:62vh}.flip .in{position:relative;width:100%;height:100%;transition:transform .5s;transform-style:preserve-3d}.flip.on .in{transform:rotateY(180deg)}.face{position:absolute;inset:0;backface-visibility:hidden;border:1px solid var(--line);border-radius:14px;padding:16px;overflow:auto;background:var(--card)}.face.back{transform:rotateY(180deg);background:#1c2530}
