/* Shared styles for every exam page. Loaded by each <exam>/index.html shell. */
:root{--bg:#f5f7fa;--surface:#fff;--border:#dce1e8;--border-focus:#1B4F8A;--text:#2C3E50;--text-2:#4a5568;--text-m:#8b90a0;--ac:#1B4F8A;--ac-l:#D6EAF8;--ac-h:#1A2E45;--ac-s:#EEF5FB;--d1:#0097A7;--d1b:#E8F6F8;--d2:#2E86C1;--d2b:#D6EAF8;--d3:#5B38B6;--d3b:#F0EBF9;--d4:#C0522A;--d4b:#FDF0EB;--d5:#1B4F8A;--d5b:#EEF5FB;--ok-bg:#ecfdf5;--ok-bd:#6ee7b7;--ok-tx:#065f46;--err-bg:#FDF0EB;--err-bd:#e8a88a;--err-tx:#8B2500;--danger:#C0522A;--sh:0 1px 3px rgba(26,46,69,.06);--sh-m:0 4px 14px rgba(26,46,69,.1);--sh-l:0 12px 40px rgba(26,46,69,.18);--r:10px;--rl:14px}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Inter',-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}
.hdr{background:linear-gradient(135deg,#1B4F8A,#1A2E45);color:#fff;padding:2rem 1.5rem 1.5rem;text-align:center;box-shadow:0 4px 20px rgba(27,79,138,.35)}
.hdr h1{font-size:1.5rem;font-weight:800;letter-spacing:-.03em}.hdr .sub{font-size:.8rem;opacity:.75;margin-top:.15rem}
.hdr{position:relative}.hub-nav{position:absolute;left:1.5rem;top:2rem;height:2.25rem;display:flex;align-items:center}@media(max-width:700px){.hub-nav{position:static;display:block;height:auto;text-align:left;margin:-.5rem 0 .6rem}}.hub-link{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:600;color:#fff;opacity:.8;text-decoration:none;padding:.2rem .1rem}.hub-link:hover{opacity:1;text-decoration:underline}
.hdr-actions{display:flex;justify-content:center;gap:.5rem;margin-top:1rem;flex-wrap:wrap}
.btn-h{font-family:inherit;font-size:.78rem;font-weight:600;padding:.45rem 1rem;border-radius:8px;cursor:pointer;border:1.5px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff;transition:all .15s;display:flex;align-items:center;gap:.35rem}
.btn-h:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.5)}.btn-h svg{width:15px;height:15px}
.mode-sel{max-width:700px;margin:2rem auto;padding:0 1rem;display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:500px){.mode-sel{grid-template-columns:1fr}}
.mode-card{background:var(--surface);border:2px solid var(--border);border-radius:var(--rl);padding:1.75rem 1.25rem;text-align:center;cursor:pointer;transition:all .2s;box-shadow:var(--sh)}
.mode-card:hover{border-color:#1B4F8A;box-shadow:var(--sh-m);transform:translateY(-2px)}
.mode-card svg{width:40px;height:40px;color:var(--ac);margin-bottom:.75rem}
.mode-card h2{font-size:1.05rem;font-weight:700;margin-bottom:.35rem}
.mode-card p{font-size:.8rem;color:var(--text-2);line-height:1.5}
.mode-card .tag{display:inline-block;font-size:.7rem;font-weight:600;padding:.2rem .6rem;border-radius:20px;margin-top:.6rem;background:var(--ac-l);color:var(--ac-h)}
.container{max-width:820px;margin:0 auto;padding:.75rem}
.btn{font-family:inherit;font-size:.78rem;font-weight:600;padding:.45rem .85rem;border-radius:7px;cursor:pointer;border:none;transition:all .12s;display:inline-flex;align-items:center;gap:.3rem}
.btn-p{background:var(--ac);color:#fff}.btn-p:hover{background:var(--ac-h)}
.btn-g{background:transparent;color:var(--text-2);border:1px solid var(--border)}.btn-g:hover{background:var(--bg)}
.btn-d{background:transparent;color:var(--danger);border:1px solid var(--err-bd)}.btn-d:hover{background:var(--err-bg)}
.btn-sm{font-size:.72rem;padding:.3rem .6rem}.btn svg{width:13px;height:13px;pointer-events:none}
.badge{font-size:.65rem;font-weight:600;padding:.12rem .45rem;border-radius:20px;text-transform:uppercase;letter-spacing:.03em}

.b-type{background:var(--bg);color:var(--text-2)}.b-custom{background:#F0EBF9;color:#5B38B6}
.nav{display:flex;gap:.2rem;padding:.65rem .75rem;overflow-x:auto;background:var(--surface);border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch}.nav::-webkit-scrollbar{display:none}
.nav-t{padding:.4rem .7rem;border-radius:7px;font-size:.75rem;font-weight:500;white-space:nowrap;cursor:pointer;border:none;background:transparent;color:var(--text-2);transition:all .15s;font-family:inherit}
.nav-t:hover{background:var(--bg)}.nav-t.on{background:var(--ac-l);color:var(--ac-h);font-weight:600}
.tc{font-family:'JetBrains Mono',monospace;font-size:.65rem;background:rgba(0,0,0,.06);padding:.1rem .35rem;border-radius:4px;margin-left:.25rem}.nav-t.on .tc{background:rgba(15,118,110,.12)}
.prog{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;background:var(--surface);border-bottom:1px solid var(--border)}
.prog-bar{flex:1;height:5px;background:var(--bg);border-radius:3px;overflow:hidden}.prog-fill{height:100%;background:var(--ac);border-radius:3px;transition:width .3s}
.prog-lbl{font-size:.72rem;font-weight:600;color:var(--text-2);white-space:nowrap}
.sc-hdr{padding:1rem;margin:.5rem 0 .6rem;border-radius:var(--r);background:var(--surface);border:1px solid var(--border);box-shadow:var(--sh);display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}
.sc-hdr h2{font-size:1rem;font-weight:700;margin-bottom:.25rem}.sc-hdr p{font-size:.78rem;color:var(--text-2);line-height:1.5}
.qc{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:.6rem;box-shadow:var(--sh);overflow:hidden;transition:box-shadow .2s}
.qc:hover{box-shadow:var(--sh-m)}.qc.cust{border-left:3px solid var(--ac)}
.qh{display:flex;align-items:center;gap:.4rem;padding:.6rem .85rem;border-bottom:1px solid var(--border);flex-wrap:wrap}
.qn{font-family:'JetBrains Mono',monospace;font-size:.75rem;font-weight:600;color:var(--ac)}
.qhr{margin-left:auto;display:flex;gap:.25rem}
.qb{padding:.85rem}.qb>p{font-size:.85rem;line-height:1.6;margin-bottom:.6rem}
.opts{list-style:none}.opts li{padding:.5rem .7rem;margin-bottom:.3rem;border-radius:7px;font-size:.82rem;line-height:1.45;background:var(--bg);border:1px solid transparent;transition:all .12s;cursor:pointer}
.opts li:hover{border-color:var(--border);background:#eef0f4}.opts li.sel{border-color:var(--ac);background:var(--ac-l);font-weight:500}
.opts li.ok{border-color:var(--ok-bd);background:var(--ok-bg)}.opts li.wrong{border-color:var(--err-bd);background:var(--err-bg)}.opts li.disabled{cursor:default;opacity:.85}
.ol{font-family:'JetBrains Mono',monospace;font-weight:600;margin-right:.35rem;font-size:.78rem}
.qa{padding:.6rem .85rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.4rem;flex-wrap:wrap}
.ans-b{padding:.85rem;margin:0 .85rem .85rem;border-radius:8px;background:var(--ok-bg);border:1px solid var(--ok-bd)}
.ans-b .al{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ok-tx);margin-bottom:.3rem}
.ans-b .av{font-size:.88rem;font-weight:700;color:var(--ok-tx);margin-bottom:.5rem}
.ans-b .rat{font-size:.8rem;color:#1a3a2a;line-height:1.55}
.ans-b .wn{margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(6,95,70,.12);font-size:.75rem;color:#3a6a50;line-height:1.5;font-style:italic}
.ans-b .ref-link{margin-top:.5rem;padding-top:.5rem;border-top:1px solid rgba(6,95,70,.12)}
.ans-b .ref-link a{font-size:.75rem;color:var(--ac);text-decoration:none;font-weight:600}
.ans-b .ref-link a:hover{text-decoration:underline}
.score-s{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:1rem;margin:.5rem 0;box-shadow:var(--sh)}.score-s h3{font-size:.9rem;margin-bottom:.6rem}
.ds{display:grid;gap:.4rem}.dsr{display:flex;align-items:center;gap:.4rem;font-size:.75rem}
.dsr .dn{flex:1;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dsr .db{width:80px;height:5px;background:var(--bg);border-radius:3px;overflow:hidden}.dsr .dbf{height:100%;border-radius:3px;transition:width .5s}
.dsr .dp{font-family:'JetBrains Mono',monospace;font-weight:600;font-size:.72rem;width:2.5rem;text-align:right}
.timer-bar{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem 1rem;background:var(--surface);border-bottom:1px solid var(--border);font-size:.82rem}
.timer{font-family:'JetBrains Mono',monospace;font-size:1.1rem;font-weight:700;color:var(--ac)}
.timer.warn{color:#C0522A;animation:pulse 1s ease infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
.timer-bar .qi{font-weight:600;color:var(--text-2)}
.qnum-dot{width:26px;height:26px;border-radius:6px;font-size:.65rem;font-weight:600;border:1px solid var(--border);background:var(--surface);cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;transition:all .12s}
.qnum-dot:hover{border-color:var(--ac)}.qnum-dot.cur{border-color:var(--ac);background:var(--ac);color:#fff}
.qnum-dot.ans{background:var(--ac-l);border-color:var(--ac);color:var(--ac-h)}.qnum-dot.flagged{background:#FDF0EB;border-color:#C0522A}
.report{max-width:600px;margin:1.5rem auto;padding:1.5rem;background:var(--surface);border-radius:var(--rl);border:1px solid var(--border);box-shadow:var(--sh-m);text-align:center}
.report .big-score{font-size:3rem;font-weight:800;margin:.5rem 0}
.report .big-score.pass{color:var(--ac)}.report .big-score.fail{color:var(--danger)}.report .big-score.border{color:#C0522A}
.report .verdict{font-size:1.1rem;font-weight:700;margin-bottom:1rem;padding:.5rem 1rem;border-radius:8px;display:inline-block}
.verdict.pass{background:var(--ok-bg);color:var(--ok-tx)}.verdict.fail{background:var(--err-bg);color:var(--err-tx)}.verdict.border{background:#FDF0EB;color:#C0522A}
.modal-ov{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem;overflow-y:auto;backdrop-filter:blur(2px)}
.modal{background:var(--surface);border-radius:var(--rl);box-shadow:var(--sh-l);width:100%;max-width:640px;animation:mIn .2s ease}
@keyframes mIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.modal-hd{padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-hd h2{font-size:1rem;font-weight:700}
.modal-x{background:none;border:none;cursor:pointer;color:var(--text-2);padding:.3rem;border-radius:6px;display:flex}.modal-x:hover{background:var(--bg)}.modal-x svg{width:18px;height:18px}
.modal-bd{padding:1.25rem;max-height:70vh;overflow-y:auto}.modal-ft{padding:.85rem 1.25rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem}
.fg{margin-bottom:1rem}.fg label{display:block;font-size:.78rem;font-weight:600;margin-bottom:.3rem;color:var(--text-2)}.fg .hint{font-size:.7rem;color:var(--text-m);margin-top:.2rem}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}@media(max-width:500px){.fr{grid-template-columns:1fr}}
input[type=text],input[type=number],input[type=password],textarea,select{width:100%;font-family:inherit;font-size:.85rem;padding:.5rem .7rem;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--text);transition:border-color .15s}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--border-focus);background:var(--ac-s)}textarea{resize:vertical;min-height:70px;line-height:1.5}
.oir{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}
.oir .orl{font-family:'JetBrains Mono',monospace;font-weight:600;font-size:.82rem;width:1.5rem;text-align:center;color:var(--ac);flex-shrink:0}
.oir input[type=text]{flex:1}.oir .oc{display:flex;align-items:center;gap:.2rem;font-size:.7rem;color:var(--text-m);cursor:pointer;flex-shrink:0;user-select:none}
.oir .oc input[type=checkbox]{width:auto;margin:0;cursor:pointer;accent-color:var(--ac)}
.rb{background:none;border:none;cursor:pointer;color:var(--text-m);padding:.2rem;border-radius:4px;display:flex;flex-shrink:0}.rb:hover{color:var(--danger);background:var(--err-bg)}.rb svg{width:14px;height:14px}
.add-opt{font-family:inherit;font-size:.75rem;color:var(--ac);background:none;border:1px dashed var(--border);border-radius:7px;padding:.35rem .7rem;cursor:pointer;margin-top:.3rem}.add-opt:hover{border-color:var(--ac);background:var(--ac-s)}
.dz{border:2px dashed var(--border);border-radius:var(--r);padding:2rem 1rem;text-align:center;cursor:pointer;transition:all .15s;background:var(--bg)}
.dz:hover,.dz.dov{border-color:var(--ac);background:var(--ac-s)}.dz svg{width:36px;height:36px;color:var(--text-m);margin-bottom:.5rem}
.dz p{font-size:.82rem;color:var(--text-2)}.dz input[type=file]{display:none}
.u-st{padding:.6rem .85rem;border-radius:8px;font-size:.8rem;margin-top:.75rem;display:flex;align-items:center;gap:.4rem}
.u-st.ok{background:var(--ok-bg);color:var(--ok-tx);border:1px solid var(--ok-bd)}
.u-st.err{background:var(--err-bg);color:var(--err-tx);border:1px solid var(--err-bd)}
.u-st.info{background:#eff6ff;color:#1e40af;border:1px solid #93c5fd}
.ptbl{width:100%;border-collapse:collapse;font-size:.75rem;margin-top:.75rem}
.ptbl th{background:var(--bg);padding:.4rem .5rem;text-align:left;font-weight:600;color:var(--text-2);border-bottom:2px solid var(--border);position:sticky;top:0}
.ptbl td{padding:.35rem .5rem;border-bottom:1px solid var(--border);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ptbl tr:hover td{background:var(--ac-s)}
.pw{max-height:280px;overflow-y:auto;border:1px solid var(--border);border-radius:8px}
.ta{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap;align-items:center}
.empty{text-align:center;padding:2rem 1rem;color:var(--text-m);font-size:.85rem}
.foot{text-align:center;padding:1.5rem 1rem;font-size:.72rem;color:var(--text-m)}.foot a{color:#2E86C1;text-decoration:none}
@media(max-width:600px){.hdr{padding:1.25rem .75rem 1rem}.hdr h1{font-size:1.15rem}.container{padding:.4rem}.modal-bd{padding:.85rem}}
/* Home page domain list: name rows toggle their description. */
.dom-btn{display:flex;align-items:center;gap:.5rem;width:100%;font:inherit;font-size:.8rem;text-align:left;background:none;border:0;border-radius:6px;padding:.4rem .3rem;margin:0 -.3rem;cursor:pointer;color:inherit;box-sizing:content-box}
.dom-btn:hover{background:var(--bg)}
.dom-btn:focus-visible{outline:2px solid var(--ac);outline-offset:1px}
.dom-chev{width:1rem;text-align:center;font-size:1.1rem;line-height:1;color:var(--text-m);transition:transform .15s}
.dom-btn.open .dom-chev{transform:rotate(90deg)}
.dom-all{font:inherit;font-size:.74rem;font-weight:600;color:var(--ac);background:none;border:0;cursor:pointer;padding:.15rem .2rem;white-space:nowrap}
.dom-all:hover{text-decoration:underline}
.tips-btn{padding:.5rem .3rem}
.tips-btn:hover{background:rgba(255,255,255,.55)}
/* Exam facts grid on the home page. One column on phones, where two columns
   squeezed labels into their values. */
.exam-facts{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:.75rem 0;font-size:.78rem}
.exam-fact{display:flex;justify-content:space-between;gap:.75rem;padding:.35rem .6rem;background:var(--bg);border-radius:6px}
.exam-fact span:last-child{text-align:right}
@media(max-width:560px){.exam-facts{grid-template-columns:1fr}}
/* "About these questions" provenance notice on the exam home page. */
.notice{margin-top:.85rem;padding:.75rem .9rem;border-left:3px solid var(--ac);background:#EEF5FB;border-radius:0 8px 8px 0}
.notice strong{display:block;font-size:.8rem;color:#1A2E45;margin-bottom:.2rem}
.notice p{font-size:.76rem;color:var(--text-2);line-height:1.6;margin:0}

/* ===== Gloss finish ===========================================================
   A "polished paint" layer over the base styles: same navy palette, with a
   lit top edge on surfaces, layered shadows, glossy buttons and bars, and a
   one-time light sweep across the header. Motion is dropped for users who ask
   for reduced motion. */
:root{--gloss-sh:inset 0 1px 0 #fff,0 1px 2px rgba(26,46,69,.05),0 10px 28px -14px rgba(26,46,69,.22);--gloss-sh-h:inset 0 1px 0 #fff,0 2px 4px rgba(26,46,69,.06),0 18px 36px -14px rgba(27,79,138,.35)}
body{background:radial-gradient(1100px 480px at 50% -160px,rgba(46,134,193,.13),transparent 70%),radial-gradient(800px 520px at 100% 0,rgba(0,151,167,.06),transparent 65%),var(--bg);min-height:100vh}

/* Header: deeper gradient, glossy top half, a single shine sweep on load. */
.hdr{background:linear-gradient(135deg,#2a6db3 0%,#1B4F8A 42%,#1A2E45 100%);overflow:hidden;box-shadow:0 12px 32px -10px rgba(27,79,138,.6),inset 0 -1px 0 rgba(255,255,255,.08)}
.hdr::before{content:'';position:absolute;left:0;right:0;top:0;height:48%;background:linear-gradient(180deg,rgba(255,255,255,.11),rgba(255,255,255,.03) 70%,rgba(255,255,255,0));pointer-events:none}
.hdr::after{content:'';position:absolute;top:-20%;bottom:-20%;left:-50%;width:35%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);animation:gloss-sweep 2.6s cubic-bezier(.3,.6,.3,1) .35s 1 both;pointer-events:none}
@keyframes gloss-sweep{from{left:-50%}to{left:130%}}
.hdr>*:not(.hub-nav){position:relative;z-index:1}
.hub-nav{z-index:2}
.hdr h1{text-shadow:0 1px 2px rgba(0,0,0,.28),0 0 24px rgba(120,180,240,.25)}
.btn-h{background:linear-gradient(180deg,rgba(255,255,255,.24),rgba(255,255,255,.08));box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 2px 8px -2px rgba(0,0,0,.25)}
.btn-h:hover{background:linear-gradient(180deg,rgba(255,255,255,.34),rgba(255,255,255,.14))}

/* Surfaces */
.panel,.qc,.score-s,.report,.sc-hdr,.modal,.mode-card{background:linear-gradient(180deg,#fff 0%,#f8fafd 100%);border-color:rgba(27,79,138,.11);box-shadow:var(--gloss-sh)}
.panel{border:1px solid rgba(27,79,138,.11);border-radius:var(--rl);padding:1.25rem}
.panel-tint{background:linear-gradient(180deg,#f4f9fe 0%,#e8f2fb 100%);border-color:#d3e5f6}
.panel-link{color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s}
.panel-link:hover{transform:translateY(-2px);box-shadow:var(--gloss-sh-h);border-color:rgba(27,79,138,.3)}
.qc:hover{box-shadow:var(--gloss-sh-h)}
.qh{background:linear-gradient(180deg,rgba(238,245,251,.7),rgba(238,245,251,0))}

/* Mode cards: glossy icon badge and a sheen that crosses on hover. */
.mode-card{position:relative;overflow:hidden;border-width:1px}
.mode-card::after{content:'';position:absolute;top:0;bottom:0;left:-70%;width:45%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.75),transparent);transform:skewX(-18deg);transition:left .7s ease;pointer-events:none}
.mode-card:hover::after{left:130%}
.mode-card:hover{border-color:rgba(27,79,138,.45);box-shadow:var(--gloss-sh-h),0 0 0 3px rgba(46,134,193,.12);transform:translateY(-3px)}
.mode-card svg{width:64px;height:64px;padding:13px;border-radius:50%;background:radial-gradient(circle at 32% 26%,#fff 0%,#e3effa 45%,#c9dff3 100%);box-shadow:inset 0 1px 1px #fff,inset 0 -2px 4px rgba(27,79,138,.12),0 6px 14px -6px rgba(27,79,138,.45)}
.mode-card .tag,.badge,.nav-t.on{box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.mode-card .tag{background:linear-gradient(180deg,#e6f1fb,#cfe3f5)}

/* Buttons */
.btn-p{background:linear-gradient(180deg,#2f72b8 0%,#1B4F8A 55%,#173f6e 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.32),0 3px 8px -2px rgba(27,79,138,.5);text-shadow:0 -1px 0 rgba(0,0,0,.22)}
.btn-p:hover{background:linear-gradient(180deg,#3a7fc6 0%,#2059a0 55%,#1A2E45 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 6px 14px -4px rgba(27,79,138,.55)}
.btn-g{background:linear-gradient(180deg,#fff,#f1f5f9);box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(26,46,69,.08)}
.btn-g:hover{background:linear-gradient(180deg,#fff,#e8eef5)}

/* Answer options */
.opts li{background:linear-gradient(180deg,#f9fbfd,#f1f4f8);box-shadow:inset 0 1px 0 #fff}
.opts li:hover{background:linear-gradient(180deg,#fdfeff,#eaf1f8)}
.opts li.sel{background:linear-gradient(180deg,#eaf3fc,#d3e6f7);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 0 0 2px rgba(46,134,193,.15)}
.opts li.ok,.opts li.wrong{box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.ans-b{box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}

/* Bars and progress: a glossy highlight over whatever colour the bar has. */
.gbar,.dsr .dbf,.prog-fill{position:relative}
.gbar::after,.dsr .dbf::after,.prog-fill::after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,0) 60%)}
.prog-fill{background:linear-gradient(90deg,#2E86C1,#1B4F8A)}
.nav-t.on{background:linear-gradient(180deg,#e6f1fb,#cfe3f5)}
.qnum-dot{background:linear-gradient(180deg,#fff,#f2f5f9)}
.qnum-dot.cur{background:linear-gradient(180deg,#2f72b8,#173f6e);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 2px 6px -1px rgba(27,79,138,.5)}
.qnum-dot.ans{background:linear-gradient(180deg,#eaf3fc,#cfe3f5)}

/* Small surfaces */
.exam-fact{background:linear-gradient(180deg,#f8fafd,#eef2f7);box-shadow:inset 0 1px 0 #fff}
.notice{background:linear-gradient(180deg,#f2f8fd,#e6f0fa);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.timer{text-shadow:0 0 14px rgba(46,134,193,.35)}
.report .big-score{text-shadow:0 2px 12px rgba(27,79,138,.18)}

@media (prefers-reduced-motion:reduce){.hdr::after{display:none}.mode-card::after{display:none}.mode-card:hover,.panel-link:hover{transform:none}}

/* ===== Glass finish ===========================================================
   Frosted, semi-transparent surfaces over a softly coloured backdrop. Blur is
   reserved for a handful of large surfaces; the many question cards in Study
   Mode get translucency only, so long lists still scroll smoothly. Browsers
   without backdrop-filter keep the opaque gloss above. */
.notice-end{margin:.5rem 0 2rem}
body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:
 radial-gradient(520px 420px at 8% 22%,rgba(0,151,167,.16),transparent 70%),
 radial-gradient(620px 480px at 92% 30%,rgba(91,56,182,.12),transparent 70%),
 radial-gradient(700px 520px at 30% 92%,rgba(46,134,193,.16),transparent 70%),
 radial-gradient(520px 420px at 85% 88%,rgba(192,82,42,.08),transparent 70%)}
.hdr::before{background:linear-gradient(180deg,rgba(255,255,255,.17),rgba(255,255,255,.04) 70%,rgba(255,255,255,0))}
.hdr{box-shadow:0 12px 32px -10px rgba(27,79,138,.6),inset 0 -1px 0 rgba(255,255,255,.18),inset 0 1px 0 rgba(255,255,255,.22)}
.btn-h{backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .panel,.mode-card,.report,.score-s,.sc-hdr,.nav,.prog,.timer-bar{background:linear-gradient(180deg,rgba(255,255,255,.78),rgba(255,255,255,.56));backdrop-filter:blur(16px) saturate(170%);-webkit-backdrop-filter:blur(16px) saturate(170%);border:1px solid rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.95),inset 0 0 0 1px rgba(255,255,255,.2),0 12px 32px -14px rgba(27,79,138,.3)}
 .nav,.prog,.timer-bar{border-width:0 0 1px;border-color:rgba(27,79,138,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}
 .qc{background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(255,255,255,.72));border:1px solid rgba(255,255,255,.8);box-shadow:inset 0 1px 0 #fff,0 10px 28px -14px rgba(27,79,138,.28)}
 .panel-tint{background:linear-gradient(180deg,rgba(240,247,253,.8),rgba(226,239,250,.6));border-color:rgba(255,255,255,.8)}
 .notice{background:linear-gradient(180deg,rgba(238,245,252,.82),rgba(226,239,250,.64));backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 10px 26px -14px rgba(27,79,138,.28)}
 .mode-card:hover,.panel-link:hover{border-color:rgba(255,255,255,.95);box-shadow:inset 0 1px 0 #fff,0 0 0 3px rgba(46,134,193,.14),0 20px 40px -16px rgba(27,79,138,.42)}
 .exam-fact,.opts li{background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(240,245,250,.55));border-color:rgba(255,255,255,.7)}
 .opts li:hover{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(234,242,250,.75))}
 .btn-g{background:linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,.55));border-color:rgba(27,79,138,.14);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
 .qh{background:linear-gradient(180deg,rgba(238,245,251,.55),rgba(238,245,251,0))}
}

/* Static crawler summary inside #app (.seo). It is replaced as soon as the app
   boots, but give it the app's type scale so the brief moment before that does
   not flash browser-default headings. */
.seo{max-width:820px;margin:0 auto;padding:1rem .75rem 2rem}
.seo h2{font-size:1rem;font-weight:700;margin:1.1rem 0 .35rem;color:var(--text)}
.seo p,.seo li{font-size:.82rem;color:var(--text-2);line-height:1.65}
.seo p{margin-bottom:.5rem}
.seo ul{padding-left:1.1rem;margin-bottom:.5rem}
.seo a{color:var(--ac)}
