/* ===== Exam session screen ===== */
.oprog{height:3px;background:transparent}
.oprog i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .3s}
.timer{display:inline-flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums;font-weight:600;font-size:14.5px;
  padding:8px 13px;border-radius:11px;border:1px solid var(--line-2);background:var(--card)}
.timer svg{width:15px;height:15px;color:var(--ink-3)}
.timer.low{color:var(--wrong);border-color:var(--wrong-line);background:var(--wrong-bg)}
.timer.low svg{color:var(--wrong)}
.answered-readout{font-size:12.5px;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}

.sections{display:flex;gap:7px;padding:11px 24px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);
  background:linear-gradient(#fffdf8bb,#fffdf800);position:sticky;top:57px;z-index:20;backdrop-filter:blur(8px)}
.sections::-webkit-scrollbar{display:none}
.tab{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;padding:8px 15px 9px;border-radius:12px;cursor:pointer;
  border:1px solid transparent;transition:.16s;min-width:132px}
.tab:hover{background:#fff}
.tab .top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tab .name{font-weight:600;font-size:13px;color:var(--ink-2)}
.tab .num{font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.tab .bar{height:4px;border-radius:999px;background:var(--line);overflow:hidden}
.tab .bar i{display:block;height:100%;background:var(--accent-2);border-radius:999px;transition:width .3s}
.tab.active{background:var(--ink);border-color:var(--ink)}
.tab.active .name{color:#fff}.tab.active .num{color:#c3bcab}.tab.active .bar{background:#3b372f}.tab.active .bar i{background:#fff}
.tab.locked{opacity:.5;cursor:not-allowed}

.exam-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:28px;max-width:1260px;width:100%;margin:0 auto;padding:26px 24px 40px}
.qcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-2);padding:28px 32px 30px;position:relative}
.qhead{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.qno{font-size:12.5px;color:var(--ink-3);font-weight:600}
.qno b{color:var(--ink);font-family:var(--display);font-size:20px;font-weight:600;margin-right:3px}
.qhead-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.chip{font-size:11px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--line-2);color:var(--ink-2);background:#fff;display:inline-flex;align-items:center;gap:6px}
.chip .tick{width:6px;height:6px;border-radius:50%;background:var(--correct)}
.chip.practice-only{background:var(--accent-soft);border-color:var(--correct-line);color:var(--accent)}
.flag-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:600;font-size:12px;padding:5px 11px;border-radius:999px;
  border:1px solid var(--line-2);color:var(--ink-3);background:#fff;cursor:pointer;transition:.15s}
.flag-btn svg{width:12px;height:12px}
.flag-btn.on{border-color:var(--flag-line);color:var(--flag);background:var(--flag-bg)}
.stem{font-size:22px;line-height:1.42;font-weight:500;letter-spacing:-.2px;margin-bottom:24px;max-width:60ch}
.stem-img{max-width:100%;margin:0 0 22px;border:1px solid var(--line);border-radius:var(--r-sm)}

.options{display:flex;flex-direction:column;gap:11px}
.opt{display:flex;align-items:center;gap:14px;padding:15px 17px;border:1.5px solid var(--line-2);border-radius:var(--r-sm);
  background:#fff;cursor:pointer;transition:.15s;position:relative;min-height:58px;overflow:hidden;text-align:left;font:inherit;width:100%}
.opt::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);transform:scaleY(0);transition:.15s}
.opt:hover:not(.locked){border-color:var(--ink-4)}
.opt:hover:not(.locked)::before{transform:scaleY(.6)}
.opt.locked{cursor:default}
.opt .letter{width:30px;height:30px;flex:0 0 auto;border-radius:8px;border:1.5px solid var(--line-2);display:grid;place-items:center;font-weight:700;font-size:14px;color:var(--ink-2);background:var(--paper)}
.opt .txt{font-size:16px;font-weight:500}
.opt .txt img{max-width:220px;display:block;margin-top:4px}
.opt .state{margin-left:auto;width:24px;height:24px;display:none;place-items:center}
.opt .state svg{width:22px;height:22px}
.opt.selected{border-color:var(--accent);background:var(--accent-soft)}
.opt.selected .letter{background:var(--accent);border-color:var(--accent);color:#fff}
.opt.correct{border-color:var(--correct-line);background:var(--correct-bg)}
.opt.correct::before{transform:scaleY(1);background:var(--correct)}
.opt.correct .letter{background:var(--correct);border-color:var(--correct);color:#fff}
.opt.correct .txt{color:var(--correct-ink);font-weight:600}
.opt.correct .state{display:grid;color:var(--correct)}
.opt.wrong{border-color:var(--wrong-line);background:var(--wrong-bg)}
.opt.wrong::before{transform:scaleY(1);background:var(--wrong)}
.opt.wrong .letter{background:var(--wrong);border-color:var(--wrong);color:#fff}
.opt.wrong .txt{color:var(--wrong-ink)}
.opt.wrong .state{display:grid;color:var(--wrong)}

.explain{margin-top:20px;border:1px solid var(--correct-line);background:linear-gradient(#eaf3ed,#e5f1e9);border-radius:var(--r-sm);
  padding:17px 19px;display:flex;gap:14px;animation:rise .32s ease both}
@keyframes rise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.explain .ic{width:31px;height:31px;flex:0 0 auto;border-radius:9px;background:var(--correct);color:#fff;display:grid;place-items:center}
.explain .ic svg{width:17px;height:17px}
.explain .label{font-size:10.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:var(--correct);margin-bottom:4px}
.explain p{font-size:14.5px;color:#274a38;line-height:1.55}
.explain .src{margin-top:7px;font-size:11.5px;color:#5b7a68}

.kbdhints{display:flex;align-items:center;gap:14px;margin-top:22px;font-size:11.5px;color:var(--ink-3);flex-wrap:wrap}
.kbdhints .k{display:inline-flex;align-items:center;gap:5px}
.kbdhints kbd{font-family:inherit;font-weight:600;font-size:11px;background:#fff;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:6px;padding:2px 6px;color:var(--ink-2)}
.qfoot{display:flex;align-items:center;gap:11px;margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}
.qfoot .spacer{flex:1}

/* navigator */
.navigator{align-self:start;position:sticky;top:118px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-2);padding:20px 20px 22px;max-height:calc(100vh - 140px);overflow:auto}
.side-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.side-head h3{font-family:var(--display);font-weight:600;font-size:16.5px}
.tally{display:flex;gap:7px}
.tally span{font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;font-variant-numeric:tabular-nums}
.tally .c{color:var(--correct);background:var(--correct-bg)}.tally .w{color:var(--wrong);background:var(--wrong-bg)}
.grabber{display:none}
.legend{display:flex;flex-wrap:wrap;gap:8px 12px;margin:0 0 16px}
.legend span{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-2)}
.legend .sw{width:13px;height:13px;border-radius:4px;border:1.5px solid var(--line-2);background:#fff}
.legend .sw.ok{background:var(--correct-bg);border-color:var(--correct-line)}
.legend .sw.no{background:var(--wrong-bg);border-color:var(--wrong-line)}
.legend .sw.an{background:var(--accent-soft);border-color:var(--correct-line)}
.legend .sw.cur{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.legend .sw.fl{background:var(--flag-bg);border-color:var(--flag-line)}
.navgroup{margin-bottom:14px}
.navgroup .gh{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.navgroup .gh .n{font-size:12px;font-weight:600;color:var(--ink-2)}
.navgroup .gh .p{font-size:10.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.grid{display:grid;grid-template-columns:repeat(10,1fr);gap:6px}
.cell{aspect-ratio:1;border-radius:7px;border:1.5px solid var(--line-2);background:#fff;font-size:11.5px;font-weight:600;color:var(--ink-2);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;transition:.12s;position:relative;font-variant-numeric:tabular-nums}
.cell:hover{transform:translateY(-1px);border-color:var(--ink-4)}
.cell .cellnum{line-height:1}
.cell .cellletter{font-size:8.5px;font-weight:700;opacity:.75;line-height:1;letter-spacing:.2px}
.cell.answered{background:var(--accent-soft);border-color:var(--correct-line);color:var(--accent-ink)}
.cell.ok{background:var(--correct-bg);border-color:var(--correct-line);color:var(--correct-ink)}
.cell.no{background:var(--wrong-bg);border-color:var(--wrong-line);color:var(--wrong-ink)}
.cell.cur{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);color:var(--accent)}
.cell.fl::after{content:"";position:absolute;top:3px;right:3px;width:5px;height:5px;border-radius:50%;background:var(--flag)}
.side-actions{display:flex;flex-direction:column;gap:9px;margin-top:18px}
.side-actions .btn{width:100%}

/* mobile bar + sheet */
.mbar{display:none}.backdrop{display:none}
@media (max-width:860px){
  .hide-sm{display:none!important}
  .sections{top:55px;padding:9px 16px}.tab{min-width:118px}
  .exam-body{grid-template-columns:1fr;gap:0;padding:18px 16px calc(96px + var(--safe-b))}
  .qcard{padding:22px 18px 24px;border-radius:14px}.stem{font-size:20px}
  .opt{min-height:60px}.kbdhints,.qfoot{display:none}
  .navigator{position:fixed;left:0;right:0;bottom:0;top:auto;max-height:80vh;border-radius:22px 22px 0 0;transform:translateY(102%);
    transition:transform .3s cubic-bezier(.22,1,.36,1);z-index:50;box-shadow:var(--shadow-3);padding-bottom:calc(22px + var(--safe-b))}
  body.sheet .navigator{transform:translateY(0)}
  .grabber{display:block;width:40px;height:4px;border-radius:999px;background:var(--line-2);margin:0 auto 14px}
  body.sheet .backdrop{display:block;position:fixed;inset:0;background:rgba(26,24,19,.4);z-index:40}
  .mbar{display:flex;align-items:center;gap:9px;position:fixed;left:0;right:0;bottom:0;z-index:45;padding:10px 14px calc(10px + var(--safe-b));
    background:rgba(255,253,248,.94);backdrop-filter:blur(10px);border-top:1px solid var(--line)}
  .mbar .btn{flex:1;padding:13px 10px}
  .mbar .q-toggle{flex:1.4;background:var(--ink);color:#fff;border-color:var(--ink)}
  .mbar .ib{flex:0 0 auto;width:48px;height:48px;padding:0}
  .mbar .ib svg{width:19px;height:19px}
}
