:root{--bg:#f4f6f9;--panel:#ffffff;--ink:#1f2933;--muted:#6b7280;--line:#e2e8f0;--brand:#1d4ed8;--brand-dark:#1e40af;--ok:#15803d;--bad:#b91c1c;--soft:#eef2ff;--warn-bg:#fffbeb;--warn-line:#fde68a;--warn-ink:#92400e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.wrap{max-width:1040px;margin:0 auto;padding:20px}.narrow{max-width:480px;margin:0 auto}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 3px #0000000d;padding:22px;margin-bottom:18px}h1{font-size:23px;margin:0 0 6px}h2{font-size:18px;margin:0 0 12px}h3{font-size:15px;margin:0 0 6px}.muted{color:var(--muted)}.small{font-size:13px}.ok{color:var(--ok)}.err{color:var(--bad)}label{display:block;font-weight:600;margin:12px 0 5px;font-size:13px}.hint{font-weight:400;color:var(--muted);font-size:12px;margin-left:6px}input,textarea,select{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:9px;font:inherit;background:#fff;color:var(--ink)}textarea{resize:vertical;min-height:80px;line-height:1.55}input:focus,textarea:focus,select:focus{outline:2px solid var(--soft);border-color:var(--brand)}.row{display:flex;gap:12px;flex-wrap:wrap}.row>div{flex:1;min-width:110px}.btn{background:var(--brand);color:#fff;border:none;border-radius:10px;padding:10px 17px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block}.btn:hover{background:var(--brand-dark)}.btn.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand)}.btn.sm{padding:6px 12px;font-size:13px}.btn.danger{background:#fff;color:var(--bad);border:1px solid var(--bad)}.btn:disabled{opacity:.55;cursor:not-allowed}.bar{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px;align-items:center}.tag{display:inline-block;background:var(--soft);color:var(--brand-dark);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600;margin-left:6px}.tag.off{background:#fef2f2;color:var(--bad)}.tag.on{background:#ecfdf5;color:var(--ok)}.banner{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-ink);border-radius:10px;padding:11px 14px;font-size:14px;margin-bottom:14px}.qitem{border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px;background:#fafbff}.qview{border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:14px;background:#fff}.qview .qnum{font-weight:700;color:var(--brand-dark);margin-bottom:6px}.caseref{background:#f8fafc;border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:8px;padding:12px 14px;margin:8px 0;font-size:14px;overflow-x:auto}.caseref table{border-collapse:collapse}.caseref td,.caseref th{border:1px solid #cbd5e1;padding:5px 9px}.czprev{border:1px dashed var(--brand);border-radius:8px;padding:10px 12px;line-height:2.3;font-size:14px;background:#fff}.czprev select,.clozeq select{width:auto;display:inline-block;margin:0 4px;padding:4px 8px}.clozeq{line-height:2.4}.optrow{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;margin-bottom:7px;background:#fff;cursor:pointer}.optrow:hover{border-color:var(--brand)}.optrow.sel{border-color:var(--brand);background:var(--soft)}.optrow input[type=radio]{width:auto}.timerbox{position:sticky;top:0;z-index:20;background:#111827;color:#fff;border-radius:0 0 12px 12px;padding:10px 18px;display:flex;justify-content:space-between;align-items:center;font-weight:600}.timerbox .t{font-size:20px;font-variant-numeric:tabular-nums}.timerbox .t.low{color:#fbbf24}.savedot{font-size:12px;font-weight:500;color:#a7f3d0}.savedot.dirty{color:#fbbf24}.bigclock{font-size:52px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:1px}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%);background:#111827;color:#fff;padding:11px 18px;border-radius:10px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .25s;z-index:99}.toast.show{opacity:1}table.list{width:100%;border-collapse:collapse;font-size:14px}table.list th,table.list td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line)}table.list th{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px}a{color:var(--brand)}.matchrow{display:flex;gap:12px;align-items:center;margin-bottom:8px}.matchrow .left{flex:1;font-weight:600}.matchrow select{flex:1}.topnav{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.topnav .brand{font-weight:800;font-size:18px;color:var(--brand-dark);text-decoration:none}.exam-list-item{border:1px solid var(--line);border-radius:12px;padding:15px;margin-bottom:12px}.share{background:var(--soft);border-radius:10px;padding:11px 13px;margin-top:10px;font-size:13px;word-break:break-all}@media print{body{background:#fff}.noprint{display:none!important}.card{border:none;box-shadow:none;padding:0}.qview{break-inside:avoid;border:1px solid #ccc}}

/* ===== AD-LMS additions (Oct 2026) ===== */

/* typography + palette refresh (applies portal-wide) */
:root{--brand:#2457e6;--brand-dark:#1a3fb0;--soft:#e8efff;--bg:#f3f5fa;--line:#e2e6f0;--ink:#1b2130;--muted:#5f6b80;--violet:#6d4ae8;--amber:#d97706;--ok:#16a34a;--bad:#dc2626}
body{font-family:"Plus Jakarta Sans","Segoe UI",system-ui,sans-serif;font-size:15px}
h1,h2,h3,.brand,.timerbox>div:first-child,.bigclock{font-family:"Sora","Plus Jakarta Sans",system-ui,sans-serif;letter-spacing:-.01em}
h1{font-size:25px;font-weight:700}h2{font-size:18px;font-weight:700}h3{font-size:15px;font-weight:700}
.card{border-radius:16px;box-shadow:0 1px 2px #0d1b3d0a,0 6px 20px -12px #0d1b3d26}
.btn{border-radius:11px;font-weight:600}
.btn.go{background:#16a34a}.btn.go:hover{background:#15803d}
.btn.violet{background:var(--violet)}.btn.violet:hover{background:#5a3ad0}
.tag{font-weight:600}
.topnav .brand{font-size:19px;font-weight:800;background:linear-gradient(90deg,#2457e6,#6d4ae8);-webkit-background-clip:text;background-clip:text;color:transparent}
.timerbox{background:linear-gradient(90deg,#172554,#1e3a8a);border-radius:0 0 14px 14px}
.exam-list-item{border-radius:14px}

/* exam grouping */
details.exam-group{margin:10px 0 14px;border:1px solid var(--line);border-radius:14px;padding:0 12px 4px;background:#fff}
details.exam-group>summary{cursor:pointer;font-weight:700;font-size:15px;padding:11px 0;list-style:none;display:flex;gap:8px;align-items:center;font-family:"Sora",sans-serif}
details.exam-group>summary::before{content:"▸";display:inline-block;transition:transform .15s;color:var(--brand)}
details.exam-group[open]>summary::before{transform:rotate(90deg)}
details.exam-group>summary .muted{font-weight:400;font-family:"Plus Jakarta Sans",sans-serif}

/* cloze: uniform box width until answered, so box size reveals nothing */
.clozeq select.unanswered{width:150px;max-width:150px;color:var(--muted)}

/* results dashboard */
.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:640px){.rgrid{grid-template-columns:1fr}}
.rbox{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fafbff}.rbox.rcorrect{background:#ecfdf5;border-color:#a7f3d0}
.rlabel{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}
.rblank{display:inline-block;padding:1px 8px;border-radius:6px;margin:0 3px;font-weight:600}.rblank.ok{background:#ecfdf5;color:var(--ok)}.rblank.bad{background:#fef2f2;color:var(--bad)}.rblank .rfix{color:var(--ok);font-weight:600}

/* integrity mode for activities */
body.integrity .card.caseref,body.integrity .nosel,body.integrity .qview>div:not(:has(textarea)){user-select:none;-webkit-user-select:none}
.wmwrap{position:relative}.wm{position:absolute;inset:0;overflow:hidden;pointer-events:none;display:flex;flex-wrap:wrap;gap:34px 46px;align-content:space-around;justify-content:space-around;transform:rotate(-14deg) scale(1.25);opacity:.11;font-weight:700;font-size:15px;color:#2457e6;white-space:nowrap}
@media print{body.integrity #root{display:none}}

/* ===== debate console (presentation + control on one page) ===== */
.debate{--a:#2457e6;--b:#d97706}
.dctrl{background:linear-gradient(135deg,#eef3ff,#f3efff);border-color:#dfe4f7}
.spot{background:linear-gradient(135deg,#fff7e0,#fff1c2);border:2px solid #f0c75e;border-radius:18px;padding:22px 28px;margin-bottom:18px;animation:spotin .4s}
.spot-side{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:#92400e}
.spot-text{font-family:"Sora",sans-serif;font-size:30px;font-weight:700;line-height:1.3;margin:6px 0;color:#1b2130}
.spot-who{font-size:17px;color:#6b665c}
@keyframes spotin{from{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}
.dvote{background:#fff}
.dvote-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;font-family:"Sora",sans-serif;font-weight:700;font-size:18px;margin-bottom:10px}
.dvote-n{font-size:30px;color:var(--brand)}.dvote-n{font-variant-numeric:tabular-nums}
.dvote-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:760px){.dvote-grid{grid-template-columns:1fr}}
.dsub{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:4px 0 6px}
.vbar{display:grid;grid-template-columns:minmax(120px,38%) 1fr 96px;align-items:center;gap:12px;margin:8px 0;font-size:18px}
.vbar-l{font-weight:700;font-family:"Sora",sans-serif}
.vbar-t{background:#eef1f7;border-radius:10px;height:30px;overflow:hidden}
.vbar-f{height:30px;border-radius:10px;transition:width .6s}
.vbar-f.a{background:linear-gradient(90deg,#2457e6,#6d4ae8)}.vbar-f.b{background:linear-gradient(90deg,#d97706,#f59e0b)}
.vbar-n{font-weight:800;font-size:22px;font-variant-numeric:tabular-nums}.vbar-n span{font-weight:500;font-size:14px;color:var(--muted)}
.dgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:4px}@media(max-width:900px){.dgrid{grid-template-columns:1fr}}
.dpanel{border-radius:18px;padding:14px 16px 10px;border:1px solid var(--line);min-width:0}
.dpanel.pro{background:linear-gradient(180deg,#eafaf0,#f6fdf8);border-color:#bfe8cc}
.dpanel.con{background:linear-gradient(180deg,#fdeeee,#fff6f6);border-color:#f3c3c3}
.dpanel-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.dpanel-t{font-family:"Sora",sans-serif;font-weight:800;font-size:17px}
.dpanel.pro .dpanel-t{color:#15803d}.dpanel.con .dpanel-t{color:#b91c1c}
.dpanel-n{font-weight:800;font-size:20px;color:var(--ink);background:#ffffffb3;border-radius:999px;padding:2px 12px}
.cloud{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;justify-content:center;padding:8px 2px 12px;min-height:100px;line-height:1.1;border-bottom:1px dashed #0000001a;margin-bottom:8px}
.cloud span{white-space:nowrap;font-family:"Sora",sans-serif}
.dlist{max-height:260px;overflow-y:auto;background:#ffffffa6;border-radius:12px;padding:4px 8px}
.dline{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:6px 2px;border-top:1px solid #0000000d;font-size:14px}
.dline:first-child{border-top:none}
.dwho{font-weight:700;font-size:12px;color:var(--muted);white-space:nowrap}
.dtext{min-width:0}
.tk{position:fixed;left:0;right:0;bottom:0;background:#111a33;color:#f5f0e6;padding:10px 0;overflow:hidden;white-space:nowrap;font-size:19px;z-index:50}
.tk-inner{display:inline-block;animation-name:tk;animation-timing-function:linear;animation-iteration-count:infinite}
.tk-item{display:inline-block;margin-right:64px}.tk-item::before{content:"◆";color:#f0c75e;margin-right:12px}
@keyframes tk{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.wrap:has(.tk){padding-bottom:70px}

/* ===== verdict poll ===== */
.vhead{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 16px;margin-bottom:12px}
.vq{font-family:"Sora",sans-serif;font-weight:700;font-size:17px}
.vclock{font-family:"Sora",sans-serif;font-weight:800;font-size:30px;font-variant-numeric:tabular-nums;color:#1a3fb0;background:#e8efff;border-radius:12px;padding:4px 16px}
.vclock.low{color:#b45309;background:#fff3e0}.vclock.over{color:#b91c1c;background:#fde8e8}
.vsit .vtext{font-size:16px;line-height:1.5;margin:4px 0 10px}
.vbtns{display:flex;gap:10px;flex-wrap:wrap}
.vbtn{flex:1;min-width:160px;border:2px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px;font:inherit;font-weight:700;font-size:16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px}
.vbtn:disabled{cursor:not-allowed;opacity:.75}
.vbtn.yes.on{border-color:#16a34a;background:#eafaf0;color:#15803d}.vbtn.no.on{border-color:#dc2626;background:#fdeeee;color:#b91c1c}
.vbtn.correct{box-shadow:0 0 0 3px #16a34a55}
.vpct{font-weight:600;color:var(--muted);font-size:13px}
.vgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:900px){.vgrid{grid-template-columns:1fr}}
.vcard{margin:0;min-width:0}.vcard.focused{outline:3px solid #6d4ae8}
.vcard-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}
.vcard .vtext{line-height:1.45;margin:4px 0 8px;min-height:40px}
.vbars .vrow{display:grid;grid-template-columns:minmax(120px,36%) 1fr 84px;align-items:center;gap:10px;margin:5px 0;font-size:14px}
.vbars.big .vrow{font-size:20px;grid-template-columns:minmax(160px,32%) 1fr 120px}
.vlab{font-weight:700}.vlab.correct{color:#15803d}
.vtrack{background:#eef1f7;border-radius:8px;height:18px;overflow:hidden}.vbars.big .vtrack{height:30px;border-radius:10px}
.vfill{height:100%;border-radius:8px;transition:width .5s}.vfill.yes{background:linear-gradient(90deg,#16a34a,#4ade80)}.vfill.no{background:linear-gradient(90deg,#dc2626,#f87171)}
.vnum{font-weight:800;font-variant-numeric:tabular-nums}.vnum span{font-weight:500;color:var(--muted);font-size:.8em}
.vfocus{background:linear-gradient(135deg,#fff7e0,#fff1c2);border:2px solid #f0c75e;border-radius:18px;padding:18px 24px;margin-bottom:16px;animation:spotin .35s}
.vfocus-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-weight:700;color:#92400e;text-transform:uppercase;letter-spacing:.6px;font-size:13px}
.vfocus-text{font-family:"Sora",sans-serif;font-size:26px;font-weight:700;line-height:1.35;margin:10px 0 14px;color:#1b2130}
.vexpl{margin-top:12px;background:#ffffffa6;border-radius:12px;padding:12px 16px;font-size:17px;line-height:1.5}
.vexpl-a{font-weight:800;color:#15803d;margin-bottom:4px}
/* ===== case poll ===== */
.cp .cphead{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.cpk{font-size:13px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#6d4ae8}
.cptitle{font-family:"Sora",sans-serif;font-weight:800;font-size:26px;line-height:1.2;color:#1b2130}
.cptitle.big{font-size:38px;margin:4px 0 16px}
.cpfacts{display:flex;flex-direction:column;gap:12px}
.cpfact{display:grid;grid-template-columns:52px 1fr;gap:14px;align-items:start;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 20px}
.cpfact.in{animation:cpin .5s cubic-bezier(.16,1,.3,1)}
@keyframes cpin{from{opacity:0;transform:translateY(-14px) scale(.98)}to{opacity:1;transform:none}}
.cpfact.ghost{opacity:.45;border-style:dashed;background:transparent}.cpfact.ghost .cptext{color:var(--muted);font-size:16px}
.cpicon{font-size:34px;line-height:1;text-align:center}
.cplabel{font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#b45309;margin-bottom:4px}
.cptext{font-size:19px;line-height:1.5}
.console .cptext{font-size:23px;line-height:1.45}.console .cpicon{font-size:40px}.console .cpfact{padding:18px 24px}
.cpfacts.compact .cpfact{padding:8px 12px;border-radius:10px;grid-template-columns:30px 1fr;gap:10px}.cpfacts.compact .cpicon{font-size:20px}.cpfacts.compact .cptext{font-size:14px}.cpfacts.compact .cplabel{font-size:10px;margin-bottom:0}
.cpwait{font-size:16px;margin:12px 0}
.cpstage{background:linear-gradient(160deg,#fffdf5,#f6f2ff);border:2px solid #e3dcfb;border-radius:22px;padding:22px 28px;animation:spotin .35s}
.cpq{margin-top:18px;background:linear-gradient(135deg,#fff7e0,#fff1c2);border:2px solid #f0c75e;border-radius:18px;padding:18px 22px;animation:spotin .35s}
.cpqlab{font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#92400e;margin-bottom:6px}
.cpqtext{font-family:"Sora",sans-serif;font-size:21px;font-weight:700;line-height:1.35;margin-bottom:14px;color:#1b2130}
.cpqtext.big{font-size:28px}
.vbtn.big{font-size:20px;padding:16px 20px;min-width:200px}
.cpnav{display:inline-flex;gap:4px}.cpnav .btn{min-width:34px;padding:4px 8px}
.cpprinciple{margin-top:6px;font-style:italic;font-weight:600;color:#1a3fb0;font-size:15px}
@media(max-width:640px){.cptitle.big{font-size:28px}.cpqtext.big{font-size:22px}.console .cptext{font-size:19px}}
/* ===== rehearsal ===== */
.wrap:has(.rehearse){max-width:1560px}
.rgrid2{display:grid;grid-template-columns:minmax(0,1fr) 430px;gap:18px;align-items:start}
@media(max-width:1100px){.rgrid2{grid-template-columns:1fr}}
.rcol{min-width:0}
.rcol-h{font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);margin:0 0 8px 4px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.phone{position:sticky;top:12px}
.phone-body{background:var(--bg);border:10px solid #1f2937;border-radius:30px;padding:10px;max-height:calc(100vh - 80px);overflow:auto;box-shadow:0 12px 30px #0003}
.phone-body .card{padding:16px}.phone-body .timerbox{border-radius:12px}
.phone-body .vbtn.big{min-width:0;font-size:17px;padding:12px 14px}.phone-body .cptext{font-size:16px}.phone-body .cptitle{font-size:22px}.phone-body .cpqtext{font-size:18px}
.phone-body .rgrid{grid-template-columns:1fr}
.btn.violet{background:#6d4ae8}
.rgrid2.nodock{grid-template-columns:1fr}
.phone.floating{position:fixed;right:14px;bottom:14px;top:auto;width:372px;max-width:calc(100vw - 28px);z-index:60}
.phone.floating .rcol-h{background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px 10px;margin:0 0 6px;box-shadow:0 4px 14px #0002}
.phone.floating .phone-body{max-height:min(640px,calc(100vh - 90px))}
body.nocopy #root *:not(input):not(textarea):not(select){user-select:none;-webkit-user-select:none}
@media print{body.nocopy #root{display:none}}

/* ===== Courses & marks ledger (Nov 2026) ===== */
.ledger{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:12px}
.ledger table.list{min-width:100%;font-size:13px}
.ledger th,.ledger td{white-space:nowrap;vertical-align:top}
.ledger th.lcol{min-width:150px;max-width:220px;white-space:normal}
.ledger th.lcol a{color:var(--brand-dark);text-decoration:none}
.ledger td.lcell{text-align:center}
.ledger input.mark{width:72px;padding:4px 6px;font-size:13px;text-align:center}
.ledger tr.offroster td{background:#fff7f7}
.ledger thead th{position:sticky;top:0;background:#fff;z-index:1}
.ledger .part{font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap}
.ledger .part.ok{color:var(--ok)}
