:root{
  --bg:#eef1f6;
  --card:#ffffff;
  --ink:#151a22;
  --muted:#5b6675;
  --line:#e2e7ef;
  --brand:#1f5fdb;
  --brand-ink:#14449e;
  --ok:#12925b;
  --ok-bg:#e3f6ec;
  --bad:#d1394b;
  --bad-bg:#fce8ea;
  --warn:#c47a00;
  --shadow:0 1px 2px rgba(20,30,50,.06),0 8px 24px rgba(20,30,50,.08);
  --radius:16px;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0e1219;--card:#161c26;--ink:#e9edf4;--muted:#95a1b3;--line:#26303e;
    --brand:#4f86f7;--brand-ink:#7ba6ff;--ok:#2bbd7e;--ok-bg:#12321f;
    --bad:#f2637a;--bad-bg:#3a1720;--warn:#e0a63a;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.35);
  }
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
}
.wrap{max-width:680px;margin:0 auto;padding:16px 14px 40px}
.hidden{display:none!important}

/* Top bar */
.topbar{
  position:sticky;top:0;z-index:20;background:var(--card);border-bottom:1px solid var(--line);
  padding:12px 14px;display:flex;align-items:center;gap:10px;
  padding-top:calc(12px + env(safe-area-inset-top));
}
.topbar .brand{font-weight:800;letter-spacing:-.02em;font-size:1.05rem}
.topbar .brand small{display:block;font-weight:600;color:var(--muted);font-size:.72rem;letter-spacing:0}
.topbar .spacer{flex:1}

/* Timer pill */
.timer{
  font-variant-numeric:tabular-nums;font-weight:800;font-size:1.05rem;
  background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:6px 14px;
  display:inline-flex;align-items:center;gap:7px;
}
.timer.warn{color:#fff;background:var(--bad);border-color:var(--bad)}
.timer .dot{width:8px;height:8px;border-radius:50%;background:var(--ok)}
.timer.warn .dot{background:#fff;animation:blink 1s steps(2,start) infinite}
@keyframes blink{to{opacity:.2}}

/* Cards / hero */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}
.hero h1{font-size:1.5rem;line-height:1.2;margin:0 0 6px;letter-spacing:-.02em}
.hero .sub{color:var(--muted);margin:0 0 18px}
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}
.fact{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:12px 8px;text-align:center}
.fact b{display:block;font-size:1.35rem;line-height:1.1}
.fact span{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.rules{color:var(--muted);font-size:.92rem;margin:14px 0 0;padding-left:18px}
.rules li{margin:3px 0}

/* Buttons */
.btn{
  appearance:none;border:0;cursor:pointer;font:inherit;font-weight:700;
  border-radius:12px;padding:14px 18px;width:100%;display:inline-flex;
  align-items:center;justify-content:center;gap:8px;transition:transform .06s ease,filter .15s ease;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--brand);color:#fff}
.btn-primary:hover{filter:brightness(1.06)}
.btn-ghost{background:transparent;color:var(--brand-ink);border:1.5px solid var(--line)}
.btn-danger{background:var(--bad);color:#fff}
.btn-row{display:flex;gap:10px;margin-top:16px}
.btn-row .btn{width:auto;flex:1}
.btn-sm{padding:11px 14px;font-size:.92rem}
.linklike{background:none;border:0;color:var(--brand-ink);font:inherit;font-weight:600;cursor:pointer;padding:8px;text-decoration:underline}

/* Exam controls */
.exam-controls{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.exam-controls .spacer{flex:1}
.chip{
  appearance:none;border:1.5px solid var(--line);background:var(--card);color:var(--ink);
  font:inherit;font-weight:700;font-size:.82rem;padding:7px 12px;border-radius:999px;cursor:pointer;
}
.chip:active{transform:translateY(1px)}
#btnQuit{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 30%,var(--line))}

.qhead{display:flex;align-items:center;gap:10px;margin-bottom:2px}
.qhead .qnum{flex:1}
.flagbtn{
  appearance:none;border:1.5px solid var(--line);background:var(--card);color:var(--muted);
  font:inherit;font-weight:700;font-size:.8rem;padding:6px 11px;border-radius:999px;cursor:pointer;white-space:nowrap;
}
.flagbtn.on{background:var(--warn);color:#fff;border-color:var(--warn)}
.navdot.flagged{border-color:var(--warn);box-shadow:inset 0 0 0 2px var(--warn)}
.navdot.flagged::after{content:"⚑";position:absolute;top:-6px;right:-4px;font-size:.7rem;color:var(--warn)}
.navdot{position:relative}

/* Progress */
.exam-head{margin-bottom:12px}
.progressbar{height:6px;background:var(--line);border-radius:999px;overflow:hidden;margin:10px 0}
.progressbar i{display:block;height:100%;background:var(--brand);transition:width .25s ease}
.qmeta{display:flex;justify-content:space-between;color:var(--muted);font-size:.85rem;font-weight:600}

/* Question */
.qcard .qnum{color:var(--brand-ink);font-weight:800;font-size:.8rem;letter-spacing:.03em;text-transform:uppercase}
.qcard .qtext{font-size:1.14rem;font-weight:650;line-height:1.35;margin:6px 0 16px}
.options{display:flex;flex-direction:column;gap:10px}
.opt{
  display:flex;gap:12px;align-items:flex-start;text-align:left;width:100%;
  background:var(--bg);border:1.5px solid var(--line);border-radius:12px;padding:14px;
  cursor:pointer;font:inherit;color:var(--ink);transition:border-color .12s,background .12s;
}
.opt:hover{border-color:var(--brand)}
.opt .key{
  flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:var(--card);
  border:1.5px solid var(--line);display:grid;place-items:center;font-weight:800;font-size:.85rem;color:var(--muted);
}
.opt .txt{flex:1}
.opt.sel{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--card))}
.opt.sel .key{background:var(--brand);color:#fff;border-color:var(--brand)}
/* review states */
.opt.correct{border-color:var(--ok);background:var(--ok-bg)}
.opt.correct .key{background:var(--ok);color:#fff;border-color:var(--ok)}
.opt.wrong{border-color:var(--bad);background:var(--bad-bg)}
.opt.wrong .key{background:var(--bad);color:#fff;border-color:var(--bad)}
.opt .mark{margin-left:auto;font-weight:800}

/* Navigator grid */
.navgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:7px;margin-top:14px}
.navdot{
  aspect-ratio:1;border-radius:9px;border:1.5px solid var(--line);background:var(--bg);
  font-weight:700;font-size:.85rem;color:var(--muted);cursor:pointer;display:grid;place-items:center;
}
.navdot.answered{background:var(--brand);color:#fff;border-color:var(--brand)}
.navdot.current{outline:2px solid var(--brand-ink);outline-offset:1px}
.navdot.correct{background:var(--ok);color:#fff;border-color:var(--ok)}
.navdot.bad{background:var(--bad);color:#fff;border-color:var(--bad)}

/* Result */
.scorebig{text-align:center;padding:8px 0 4px}
.scorebig .num{font-size:3.2rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.scorebig .num small{font-size:1.3rem;color:var(--muted);font-weight:700}
.verdict{display:inline-block;margin-top:10px;padding:8px 18px;border-radius:999px;font-weight:800;font-size:1.05rem}
.verdict.pass{background:var(--ok-bg);color:var(--ok)}
.verdict.fail{background:var(--bad-bg);color:var(--bad)}
.rstats{display:flex;justify-content:center;gap:22px;margin-top:14px;color:var(--muted);font-weight:600;font-size:.9rem}
.rstats b{color:var(--ink);font-size:1.05rem}
.review-head{display:flex;align-items:center;justify-content:space-between;margin:22px 2px 6px}
.toggle{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.85rem;font-weight:600;cursor:pointer}
.toggle input{width:18px;height:18px;accent-color:var(--brand)}
.review-item{border-top:1px solid var(--line);padding:16px 0}
.review-item:first-child{border-top:0}
.review-q{font-weight:650;margin-bottom:10px}
.badge{display:inline-block;font-size:.72rem;font-weight:800;padding:2px 8px;border-radius:6px;margin-right:6px;vertical-align:middle}
.badge.ok{background:var(--ok-bg);color:var(--ok)}
.badge.bad{background:var(--bad-bg);color:var(--bad)}
.badge.skip{background:var(--line);color:var(--muted)}

/* Study */
.search{width:100%;padding:13px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:inherit;margin-bottom:12px}
.study-item{margin-bottom:12px}
.study-item .qtext{font-weight:650;margin-bottom:10px}
.study-item .opt{cursor:default}
.study-item .opt:hover{border-color:var(--line)}
.study-item .opt.correct:hover{border-color:var(--ok)}
.count-note{color:var(--muted);font-size:.85rem;margin:2px 0 12px;text-align:center}

.foot{text-align:center;color:var(--muted);font-size:.78rem;margin-top:26px;line-height:1.6}
.foot a{color:var(--brand-ink)}
.section-title{font-weight:800;font-size:1.1rem;margin:22px 2px 10px;letter-spacing:-.01em}

/* Countdown overlay */
.countdown{
  position:fixed;inset:0;z-index:50;display:grid;place-items:center;
  background:radial-gradient(120% 120% at 50% 30%,rgba(31,95,219,.96),rgba(20,68,158,.98));
  color:#fff;text-align:center;cursor:pointer;
}
.cd-label{font-weight:700;opacity:.85;letter-spacing:.02em;margin-bottom:4px}
.cd-num{font-size:6rem;font-weight:800;line-height:1;letter-spacing:-.04em;animation:cdpop .6s ease}
.cd-num.go{font-size:3.6rem}
.cd-skip{margin-top:18px;font-size:.8rem;opacity:.7}
@keyframes cdpop{from{transform:scale(.4);opacity:0}60%{transform:scale(1.08);opacity:1}to{transform:scale(1)}}

/* sticky exam footer nav */
.exam-nav{
  position:sticky;bottom:0;background:var(--card);border-top:1px solid var(--line);
  margin:16px -14px -40px;padding:12px 14px calc(12px + env(safe-area-inset-bottom));
  display:flex;gap:10px;
}
.exam-nav .btn{flex:1}
