:root{--navy:#3b1585;--navy2:#4c1d95;--gold:#c9a227;--gold2:#e6c766;--cream:#faf7f0;--ink:#1b2333;--muted:#5b6475;--line:#e3ddd0;--bg:#f3f1ec;--ok:#1d7a46;--bad:#b42318;--warn:#a15c07}
*{box-sizing:border-box}[hidden]{display:none!important}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 "Segoe UI",system-ui,-apple-system,Arial,sans-serif}
a{color:var(--navy)}button,input,select,textarea{font:inherit;color:inherit}
.wrap{max-width:1200px;margin:0 auto;padding:24px 20px 60px}.wrap.narrow{max-width:760px}
.muted{color:var(--muted)}.tiny{font-size:12.5px}.r{text-align:right}
.h1{font:600 26px/1.25 Georgia,serif;color:var(--navy);margin:6px 0 6px}.h2{font:600 19px/1.3 Georgia,serif;color:var(--navy);margin:26px 0 10px}
h3{font:600 16px/1.3 Georgia,serif;color:var(--navy);margin:0 0 10px}
/* bar */
.bar{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;position:sticky;top:0;z-index:10;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.bar-in{display:flex;align-items:center;gap:16px;padding-top:10px;padding-bottom:10px}
.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none}
.brand img{height:40px;border-radius:4px;background:#fff}
.brand b{display:block;font:600 17px/1.2 Georgia,serif}.brand small{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold2)}
.bar-r{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.who{font-weight:600}.who small{color:var(--gold2);margin-left:6px}
.anav{display:flex;gap:4px;flex-wrap:wrap}.anav a{color:#dfe5ef;text-decoration:none;padding:7px 12px;border-radius:999px;font-weight:600;font-size:14px}
.anav a.on,.anav a:hover{background:rgba(255,255,255,.12);color:#fff}.anav a.on{background:linear-gradient(135deg,var(--gold2),var(--gold));color:var(--navy)}
.bar .btn.line{background:transparent;color:#fff;border-color:rgba(255,255,255,.35)}
/* buttons */
.btn{border:1px solid transparent;border-radius:10px;padding:10px 18px;font-weight:700;cursor:pointer;font-size:14.5px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;line-height:1.2}
.btn.gold{background:linear-gradient(135deg,var(--gold2),var(--gold));color:var(--navy)}.btn.navy{background:var(--navy);color:#fff}
.btn.line{background:#fff;border-color:#cfc8b8;color:var(--navy)}.btn.danger{background:#fff;border-color:#e9b8b3;color:var(--bad)}
.btn.sm{padding:6px 11px;font-size:13px;border-radius:8px}.btn.big{padding:14px 26px;font-size:16px}.btn.block{width:100%}
.btn:disabled{opacity:.45;cursor:default}
.row-btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}form.inl{display:inline}
/* cards & forms */
.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 4px 18px rgba(11,31,58,.05)}
.card.empty{text-align:center;color:var(--muted);padding:40px}
label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:12px}
input,select,textarea{width:100%;margin-top:4px;padding:10px 12px;border:1px solid #d6d0c2;border-radius:9px;background:#fff;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,162,39,.18)}
input[type=checkbox],input[type=radio]{width:auto;margin:0}input[type=file]{width:auto;border:0;padding:0}
.check{display:flex;gap:10px;align-items:flex-start;color:var(--ink);font-weight:500;font-size:14px}.check input{margin-top:3px}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.cols .wide{grid-column:1/-1}
.checks{margin:6px 0 4px}.two{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
.titlebar{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.flash{max-width:1160px;margin:14px auto 0;padding:12px 16px;border-radius:10px;background:#e3f3ea;color:var(--ok);font-weight:600;border:1px solid #b7dfc6}
.flash.err{background:#fde8e6;color:var(--bad);border-color:#f2c0ba}.flash.static{margin:10px 0}
code{background:var(--cream);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:13px}
/* login */
.login-page{background:radial-gradient(ellipse at top,#1d3660,var(--navy) 60%)}
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{background:#fff;border-radius:18px;padding:30px 28px;width:min(400px,100%);box-shadow:0 30px 70px rgba(0,0,0,.35);border-top:5px solid var(--gold)}
.login-logo{height:58px;display:block;margin:0 auto 10px}.login-card h1{font:600 22px/1.3 Georgia,serif;color:var(--navy);text-align:center;margin:0 0 4px}
.login-card>p{text-align:center;margin:0 0 18px}.login-page .flash{max-width:400px}
/* student */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:18px}
.pill{display:inline-block;background:#f6eed3;color:#7a5d0c;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;letter-spacing:.04em}
.exam-card h2{font:600 19px/1.3 Georgia,serif;color:var(--navy);margin:10px 0 6px}
.facts{list-style:none;padding:0;margin:8px 0 14px;display:flex;flex-wrap:wrap;gap:6px 16px;color:var(--muted)}.facts b{color:var(--navy)}.facts.big{font-size:16px}
.res{font-weight:700;color:var(--muted)}.res.pass{color:var(--ok)}.res.fail{color:var(--bad)}
.rules{padding-left:20px}.rules li{margin-bottom:6px}
/* exam screen */
.exam-page{background:#eef0f4;user-select:none;-webkit-user-select:none}
.xbar{position:sticky;top:0;z-index:5;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:10px 20px;gap:12px}
.xbar-l{display:flex;align-items:center;gap:12px}.xbar img{height:36px;background:#fff;border-radius:4px}.xbar b{display:block}.xbar small{color:var(--gold2);font-size:12.5px}
.timer{font:700 26px/1 "Consolas",monospace;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.25);padding:8px 16px;border-radius:10px;min-width:110px;text-align:center}
.timer.warn{background:#a15c07;border-color:#a15c07}.timer.danger{background:var(--bad);border-color:var(--bad);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.7}}
.xwrap{max-width:1200px;margin:0 auto;padding:20px;display:grid;grid-template-columns:1fr 290px;gap:20px;align-items:start}
.qpanel{background:#fff;border-radius:14px;padding:24px;border:1px solid var(--line);min-height:420px;display:flex;flex-direction:column}
.qhead{display:flex;justify-content:space-between;font-weight:700;color:var(--navy);border-bottom:2px solid var(--gold);padding-bottom:10px;margin-bottom:16px}
.qtext{font-size:18px;line-height:1.6;margin-bottom:18px;white-space:pre-wrap}
.opts{display:grid;gap:10px;margin-bottom:20px}
.opt{display:flex;gap:12px;align-items:center;border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;color:var(--ink);font-weight:500;font-size:16px;margin:0;transition:.15s}
.opt:hover{border-color:var(--gold);background:#fffcf2}.opt.on{border-color:var(--navy);background:#eef3fb}
.opt input{position:absolute;opacity:0}.opt b{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--cream);border:1px solid var(--line);color:var(--navy)}
.opt.on b{background:var(--navy);color:#fff;border-color:var(--navy)}
.qnav{margin-top:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.qnav #next{margin-left:auto}.qnav .review{margin:0}
.side .card{position:sticky;top:80px}
.palette{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:12px}
.palette button{border:1px solid #cfc8b8;background:#fff;border-radius:8px;padding:8px 0;font-weight:700;cursor:pointer}
.palette button.ans{background:#1d7a46;color:#fff;border-color:#1d7a46}.palette button.rev{box-shadow:inset 0 0 0 3px #e6a700}
.palette button.cur{outline:2px solid var(--navy);outline-offset:2px}
.legend{list-style:none;padding:0;margin:0 0 10px;font-size:12.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 14px}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid #cfc8b8;margin-right:5px;vertical-align:-1px}.legend i.ans{background:#1d7a46;border-color:#1d7a46}.legend i.rev{box-shadow:inset 0 0 0 3px #e6a700}
.overlay{position:fixed;inset:0;background:rgba(11,31,58,.75);display:grid;place-items:center;z-index:50;padding:20px}
.ov-box{background:#fff;border-radius:16px;padding:26px;max-width:440px;text-align:center;border-top:5px solid var(--gold)}.ov-box h2{font:600 21px Georgia,serif;color:var(--navy);margin:0 0 8px}.ov-box .row-btns{justify-content:center}
/* result */
.result-card{border-top:6px solid var(--gold)}.result-card.pass{border-top-color:var(--ok)}.result-card.fail{border-top-color:var(--bad)}
.score{display:flex;gap:26px;align-items:center;margin:18px 0 6px;flex-wrap:wrap}
.ring{--p:0;width:140px;height:140px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ok) calc(var(--p)*1%),#eee 0);position:relative}
.fail .ring{background:conic-gradient(var(--bad) calc(var(--p)*1%),#eee 0)}
.ring:before{content:"";position:absolute;inset:14px;background:#fff;border-radius:50%}.ring b{position:relative;font:700 28px Georgia,serif;color:var(--navy)}
.verdict{font:600 20px/1.3 Georgia,serif;color:var(--navy);margin:0 0 8px}
/* admin */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:14px 0 6px}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;border-bottom:3px solid var(--gold)}.stat.live{border-bottom-color:var(--ok)}
.stat span{font-size:12.5px;color:var(--muted);font-weight:600}.stat b{display:block;font:700 24px/1.2 Georgia,serif;color:var(--navy);margin-top:3px}
.tablewrap{overflow-x:auto;border-radius:12px}
table.list{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);font-size:14px}
table.list th{background:var(--navy);color:#fff;text-align:left;font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:10px 12px;font-weight:600;white-space:nowrap}
table.list td{padding:9px 12px;border-top:1px solid var(--line);vertical-align:middle}
table.list tr.off td{color:#9aa1ad}table.list .acts{white-space:nowrap;text-align:right}table.list td.alert{color:var(--bad);font-weight:800}
.tag{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:#eef1f6;color:var(--navy);white-space:nowrap}
.tag.pass{background:#e3f3ea;color:var(--ok)}.tag.fail{background:#fde8e6;color:var(--bad)}.tag.writing-now{background:#fdf0dc;color:var(--warn)}.tag.not-started{background:#eef1f6;color:var(--muted)}
.tabsrow{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 14px}.tabsrow a{padding:7px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);text-decoration:none;font-weight:600;font-size:14px}.tabsrow a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
details.import{margin-bottom:14px;padding:14px 20px}details.import summary{cursor:pointer;font-weight:700;color:var(--navy)}
.plain{padding-left:18px}
.sheet{padding-left:22px}.sheet>li{background:#fff;border:1px solid var(--line);border-left:5px solid #cfc8b8;border-radius:10px;padding:12px 16px;margin-bottom:10px}
.sheet>li.right{border-left-color:var(--ok)}.sheet>li.wrong{border-left-color:var(--bad)}.sheet>li p{margin:0 0 6px;font-weight:600}
.sheet ul{list-style:none;padding:0;margin:0}.sheet ul li{padding:3px 8px;border-radius:6px}.sheet ul li.correct{background:#e3f3ea}.sheet ul li.given:not(.correct){background:#fde8e6}.sheet em{color:var(--muted);font-size:12.5px}
/* login slips */
.slips-page{background:#fff}.tools{padding:14px;text-align:center}
.slips{display:grid;grid-template-columns:1fr 1fr;gap:10mm;padding:10mm;max-width:210mm;margin:0 auto}
.slip{border:1.5px dashed #9ca3af;border-radius:10px;padding:12px 14px;break-inside:avoid}.slip img{height:30px}.slip h4{margin:6px 0;font:600 14px Georgia,serif;color:var(--navy)}
.slip dl{display:grid;grid-template-columns:80px 1fr;margin:0;font-size:13.5px;gap:2px}.slip dt{color:var(--muted)}.slip dd{margin:0}.slip .pin{font:700 17px Consolas,monospace;letter-spacing:.1em}.slip p{font-size:12px;margin:6px 0 0;word-break:break-all}
.sheet .setans{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--muted)}.sheet .setans label{display:flex;align-items:center;gap:6px;margin:0;font-size:13px;font-weight:400;color:var(--muted)}.sheet .setans select{width:auto;min-width:130px;margin:0;padding:4px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;color:var(--ink,#1b2333)}
/* score card */
.btn.wa{background:#25d366;color:#fff}.btn.wa:hover{background:#1ebe5b}
.sc-tools{margin-bottom:16px;padding:14px 16px}.sc-tools-row{display:flex;gap:8px;flex-wrap:wrap}
.sc-wa{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-top:12px}.sc-wa label{margin:0;flex:1 1 220px}.sc-wa input{width:100%;margin-top:4px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:#fff}
.sc-tools p{margin:8px 0 0}
.scorecard{background:#fff;border:1px solid var(--line);border-top:6px solid var(--gold);border-radius:14px;padding:26px 28px;box-shadow:0 4px 18px rgba(11,31,58,.06)}
.scorecard.pass{border-top-color:var(--ok)}.scorecard.fail{border-top-color:var(--bad)}
.sc-head{display:flex;align-items:center;gap:14px;padding-bottom:16px;border-bottom:2px solid var(--navy)}
.sc-head img{height:54px}.sc-org{flex:1;min-width:0}.sc-org b{display:block;font:700 20px/1.2 Georgia,serif;color:var(--navy)}
.sc-org span{display:block;font-size:12.5px;color:var(--ink)}.sc-org small{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#7a5d0c}
.sc-title{text-align:right;font:700 18px/1.2 Georgia,serif;color:var(--navy);text-transform:uppercase;letter-spacing:.06em}.sc-title small{display:block;font:600 11.5px "Segoe UI",sans-serif;color:var(--muted);letter-spacing:.04em;margin-top:4px}
.sc-info{display:grid;grid-template-columns:1fr 1fr;gap:6px 24px;margin:18px 0}
.sc-info dl{display:grid;grid-template-columns:96px 1fr;gap:6px 10px;margin:0;font-size:14px}.sc-info dt{color:var(--muted)}.sc-info dd{margin:0;font-weight:600;color:var(--navy)}
.sc-score{display:flex;align-items:center;gap:24px;padding:16px;background:var(--cream);border-radius:12px;margin-bottom:16px}
.sc-ring{flex:none;display:block}
.sc-marks span{display:block;font-size:13px;color:var(--muted)}.sc-marks b{display:block;font:700 34px/1.1 Georgia,serif;color:var(--navy);margin:2px 0 8px}.sc-marks b small{font-size:20px;color:var(--muted)}
.sc-marks .tag{font-style:normal;font-size:13px;font-weight:800;letter-spacing:.08em;padding:4px 14px}
.sc-table{width:100%;border-collapse:collapse;font-size:14px;margin-bottom:6px}.sc-table th,.sc-table td{border:1px solid var(--line);padding:7px 10px;text-align:left}
.sc-table th{background:#f8f6f0;color:var(--muted);font-weight:600;width:25%}.sc-table td{font-weight:600;color:var(--navy)}
.sc-topics th{width:auto}.sc-topics thead th{color:var(--navy)}.sc-topics td{font-weight:400;color:var(--ink)}.sc-topics .r{text-align:right}
.sc-h{margin:18px 0 8px}
.sc-foot{margin-top:20px;padding-top:12px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted);text-align:center}.sc-foot p{margin:2px 0}
@media(max-width:600px){.scorecard{padding:18px 16px}.sc-head{flex-wrap:wrap}.sc-title{text-align:left;width:100%}.sc-info{grid-template-columns:1fr}.sc-score{flex-direction:column;text-align:center}.sc-table th,.sc-table td{padding:6px 7px;font-size:13px}}
@media print{.sc-page .wrap{padding:0;max-width:none}.scorecard{box-shadow:none;border-radius:0;-webkit-print-color-adjust:exact;print-color-adjust:exact}.sc-score,.sc-table th,.tag{-webkit-print-color-adjust:exact;print-color-adjust:exact}@page{size:A4;margin:14mm}}
.btn.armed{background:#c9a227!important;border-color:#c9a227!important;color:#3b1585!important}
.sheet small.changed{display:block;margin-top:6px;color:#8a5a00;font-size:12.5px}
@media print{.noprint,.flash{display:none!important}.bar,.row-btns{display:none}body{background:#fff}}
@media(max-width:900px){.xwrap{grid-template-columns:1fr}.side .card{position:static}.stats{grid-template-columns:1fr 1fr}.two,.cols{grid-template-columns:1fr}.bar-in{flex-wrap:wrap}}
@media(max-width:560px){.qpanel{padding:16px}.qtext{font-size:16.5px}.opt{font-size:15px}.timer{font-size:20px;min-width:84px}.qnav .btn{flex:1}.qnav #next{margin-left:0}.slips{grid-template-columns:1fr}.xbar small{display:none}}
.login-sub{text-align:center;font:600 12px/1.4 'Segoe UI',sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#c8102e;margin:-2px 0 10px}
.login-logo{height:auto;width:200px;max-width:80%}
.brand img{height:44px;padding:3px 6px}