/* Coursewise online quizzes */
.qchip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:999px;font:700 11.5px/1 var(--mono);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;background:var(--surface2);border:1px solid var(--line);color:var(--muted)}
.qchip.open{background:color-mix(in srgb,var(--good) 14%,transparent);border-color:color-mix(in srgb,var(--good) 40%,transparent);color:var(--good)}
.qchip.open::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;animation:qzBlink 1.4s infinite}
.qchip.soon{background:color-mix(in srgb,var(--brand) 12%,transparent);border-color:color-mix(in srgb,var(--brand) 32%,transparent);color:var(--brand)}
.qchip.done{background:color-mix(in srgb,var(--brand) 9%,transparent);color:var(--ink2)}
.qchip.wait{background:color-mix(in srgb,var(--amber) 22%,transparent);border-color:color-mix(in srgb,var(--amber) 55%,transparent);color:color-mix(in srgb,var(--amber) 55%,var(--ink))}
.qchip.miss{color:var(--muted)}
.qchip.draft{border-style:dashed}
@keyframes qzBlink{50%{opacity:.25}}

/* list of quizzes */
.qzl{display:grid;gap:14px}
.qzl-card{--c:var(--brand);display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:18px 20px;border-radius:20px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .25s var(--ease),box-shadow .25s}
.qzl-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.qzl-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--line)}
.qzl-card.open::before{background:var(--good)}.qzl-card.soon::before{background:var(--brand)}.qzl-card.wait::before{background:var(--amber)}.qzl-card.done::before{background:linear-gradient(var(--brand),#8b5cf6)}
.qzl-card.open{border-color:color-mix(in srgb,var(--good) 35%,var(--line))}
.qzl-ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 11%,transparent);color:var(--brand)}
.qzl-card.open .qzl-ic{background:color-mix(in srgb,var(--good) 14%,transparent);color:var(--good);animation:qzTickle 2.6s var(--ease) infinite}
.qzl-card.wait .qzl-ic{background:color-mix(in srgb,var(--amber) 22%,transparent);color:color-mix(in srgb,var(--amber) 60%,var(--ink))}
.qzl-ic .ico{width:26px;height:26px}
@keyframes qzTickle{0%,80%,100%{transform:none}84%{transform:rotate(-10deg)}88%{transform:rotate(9deg)}92%{transform:rotate(-5deg)}}
.qzl-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qzl-top h3{margin:0;font-size:19px}
.qzl-main .tb .ico{width:13px;height:13px;margin-right:4px}
.qzl-ins{margin:10px 0 0;padding:10px 12px;border-radius:12px;background:var(--surface2);font-size:15px;color:var(--ink2)}
.qzl-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;text-align:right}
.qzl-side.row{flex-direction:row;flex-wrap:wrap;justify-content:flex-end;max-width:330px}
.qzl-when{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--brand)}.qzl-when .ico{width:16px;height:16px}
.qzl-score{--p:0;width:86px;height:86px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(closest-side,var(--surface) 78%,transparent 80% 100%),conic-gradient(var(--brand) calc(var(--p)*1%),var(--line) 0);animation:pop .6s var(--ease) both}
.qzl-score b{font:800 24px/1 var(--display)}.qzl-score span{font-size:12px;color:var(--muted)}
.qzl-stats{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:14.5px;color:var(--muted)}
.qzl-stats b{color:var(--ink)}.qzl-stats .warn,.qzl-stats .warn b{color:color-mix(in srgb,var(--amber) 60%,var(--ink))}
@media (max-width:760px){.qzl-card{grid-template-columns:auto 1fr}.qzl-side,.qzl-side.row{grid-column:1/-1;align-items:flex-start;justify-content:flex-start;text-align:left;max-width:none}}

/* dashboard notice */
.qznotice:empty{display:none}
.qznotice{display:grid;gap:10px;margin:0 0 16px}
.qz-notice{--c:var(--brand);display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:16px;text-decoration:none;color:var(--ink);background:color-mix(in srgb,var(--good) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--good) 40%,var(--line));box-shadow:var(--shadow)}
.qz-notice .pmuted{margin-left:4px;font-size:14.5px}.qz-notice .ico{margin-left:auto;width:18px;height:18px;transition:transform .2s}
.qz-notice:hover .ico{transform:translateX(4px)}
.qz-pulse{width:12px;height:12px;border-radius:50%;background:var(--good);box-shadow:0 0 0 0 color-mix(in srgb,var(--good) 60%,transparent);animation:qzPing 1.6s infinite;flex:none}
@keyframes qzPing{70%{box-shadow:0 0 0 12px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* waiting-to-send banner */
.qzout{position:fixed;right:16px;bottom:16px;z-index:95;display:flex;align-items:center;gap:12px;max-width:min(460px,calc(100vw - 32px));padding:12px 14px;border-radius:18px;background:var(--surface);border:2px solid var(--amber);box-shadow:var(--shadow-lg);animation:rise .5s var(--ease) both}
.qzout b{display:block;font-size:15px}.qzout span{font-size:13.5px;color:var(--muted)}
.qzout-i{width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--amber) 25%,transparent);animation:qzBob 1.6s ease-in-out infinite}
.qzout .btn{margin-left:auto;flex:none}
@keyframes qzBob{50%{transform:translateY(-4px)}}

/* rules before starting */
.qz-rules{display:grid;gap:10px;margin-bottom:6px}
.qz-rule{display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:start;padding:12px;border-radius:14px;background:var(--surface2);animation:rise .5s var(--ease) both}
.qz-rule:nth-child(2){animation-delay:.07s}.qz-rule:nth-child(3){animation-delay:.14s}.qz-rule:nth-child(4){animation-delay:.21s}
.qz-rule>span{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 12%,transparent);color:var(--brand)}
.qz-rule p{margin:2px 0 0;font-size:14.5px;color:var(--muted)}
.qz-offnote{padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--amber) 18%,transparent);border:1px solid color-mix(in srgb,var(--amber) 50%,transparent);font-size:14.5px}

/* ---------------- the full-screen runner ---------------- */
html.qz-on,html.qz-on body{overflow:hidden}
.qz{position:fixed;inset:0;z-index:110;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);animation:qzIn .35s var(--ease) both;-webkit-user-select:none;user-select:none}
.qz:fullscreen{width:100%;height:100%}
.qz::backdrop{background:var(--bg)}
.qz.out{animation:qzOut .3s ease forwards}
@keyframes qzIn{from{opacity:0;transform:scale(.985)}}
@keyframes qzOut{to{opacity:0;transform:scale(.985)}}
.qz-load,.qz-end{margin:auto;display:grid;justify-items:center;text-align:center;gap:10px;padding:24px;max-width:560px}
.qz-load b{font:700 20px var(--display)}.qz-load span{color:var(--muted)}
.qz-spin{width:54px;height:54px;border-radius:50%;border:5px solid var(--line);border-top-color:var(--brand);animation:pwSpin .8s linear infinite}
.qz-top{display:flex;align-items:center;gap:14px;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
.qz-title{display:flex;align-items:center;gap:10px;min-width:0;margin-right:auto}
.qz-title b{font:700 17px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qz-badge{padding:4px 9px;border-radius:8px;background:var(--brand);color:#fff;font:700 11px var(--mono);text-transform:uppercase;letter-spacing:.06em}
.qz-net{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border-radius:999px;font:600 13px var(--body);transition:all .3s}
.qz-net .ico{width:15px;height:15px}
.qz-net.on{color:var(--good);background:color-mix(in srgb,var(--good) 10%,transparent)}
.qz-net.off{color:color-mix(in srgb,var(--amber) 55%,var(--ink));background:color-mix(in srgb,var(--amber) 22%,transparent);animation:qzNudge .5s var(--ease)}
@keyframes qzNudge{30%{transform:translateY(-3px)}}
.qz-sim{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);padding:5px 10px;border:1px dashed var(--line);border-radius:10px;cursor:pointer}
.qz-timer{--p:100;position:relative;display:flex;align-items:center;gap:8px;font:800 20px/1 var(--mono);color:var(--ink);transition:color .3s}
.qz-timer svg{width:40px;height:40px;transform:rotate(-90deg)}
.qz-timer circle{fill:none;stroke:var(--line);stroke-width:4}
.qz-timer circle.v{stroke:var(--brand);stroke-linecap:round;stroke-dasharray:calc(var(--p)*1) 100;transition:stroke-dasharray .25s linear,stroke .3s}
.qz-timer.warn{color:#c77a00}.qz-timer.warn circle.v{stroke:var(--amber)}
.qz-timer.crit{color:var(--bad);animation:qzBeat 1s infinite}.qz-timer.crit circle.v{stroke:var(--bad)}
@keyframes qzBeat{50%{transform:scale(1.07)}}
.qz-body{flex:1;display:grid;grid-template-columns:200px 1fr;min-height:0}
.qz-body.qz-lock{pointer-events:none;filter:blur(2px);opacity:.6}
.qz-nav{padding:18px 14px;border-right:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);gap:8px;align-content:start;overflow:auto}
.qz-nav button{aspect-ratio:1;border-radius:12px;border:1.5px solid var(--line);background:var(--surface);font:700 14px var(--mono);cursor:pointer;transition:all .2s var(--ease)}
.qz-nav button:hover{transform:translateY(-2px)}
.qz-nav button.done{background:color-mix(in srgb,var(--brand) 14%,var(--surface));border-color:color-mix(in srgb,var(--brand) 45%,transparent);color:var(--brand)}
.qz-nav button.on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 6px 16px color-mix(in srgb,var(--brand) 40%,transparent);transform:scale(1.08)}
.qz-main{display:flex;flex-direction:column;min-height:0;overflow:auto;padding:28px clamp(16px,4vw,56px) 18px}
.qz-card{width:min(860px,100%);margin:0 auto;flex:1}
.qz-card.in>*{animation:qzSlide .45s var(--ease) both}
.qz-card.in>*:nth-child(2){animation-delay:.05s}.qz-card.in>*:nth-child(3){animation-delay:.1s}.qz-card.in>*:nth-child(4){animation-delay:.15s}
.qz-card.back.in>*{animation-name:qzSlideB}
@keyframes qzSlide{from{opacity:0;transform:translateX(34px)}}
@keyframes qzSlideB{from{opacity:0;transform:translateX(-34px)}}
.qz-qh{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.qz-num{font:800 15px var(--mono);color:var(--brand)}.qz-num small{color:var(--muted);font-weight:600}
.qz-type{padding:4px 10px;border-radius:999px;font:700 11.5px var(--mono);text-transform:uppercase;letter-spacing:.04em;background:color-mix(in srgb,var(--brand) 11%,transparent);color:var(--brand)}
.qz-type.short{background:color-mix(in srgb,#8b5cf6 14%,transparent);color:#7c4ddb}
.qz-type.code{background:color-mix(in srgb,var(--good) 14%,transparent);color:var(--good)}
.qz-pts{margin-left:auto;font:600 13px var(--mono);color:var(--muted)}
.qz-q{font:600 clamp(19px,2.1vw,23px)/1.45 var(--body);margin-bottom:14px}
.qz-q code,.qzl-ins code,.qzm code{font:600 .88em var(--mono);padding:1px 6px;border-radius:6px;background:var(--surface2);border:1px solid var(--line)}
.qz-code{margin:0 0 16px;padding:14px 16px;border-radius:14px;background:#141a35;color:#e6e9f7;font:14.5px/1.55 var(--mono);white-space:pre-wrap;overflow:auto;max-height:320px}
.qz-code.short{background:var(--surface2);color:var(--ink);border:1px solid var(--line)}
.qz-opts{display:grid;gap:10px}
.qz-opt{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:14px 16px;border-radius:16px;border:2px solid var(--line);background:var(--surface);cursor:pointer;font-size:17px;transition:border-color .2s,background .2s,transform .2s var(--ease);animation:rise .45s var(--ease) both;animation-delay:calc(var(--k)*60ms + 80ms)}
.qz-opt:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line));transform:translateX(4px)}
.qz-opt i{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font:800 14px var(--mono);font-style:normal;background:var(--surface2);border:1.5px solid var(--line);transition:all .2s}
.qz-opt.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--surface))}
.qz-opt.on i{background:var(--brand);border-color:var(--brand);color:#fff}
.qz-opt.on i:empty::after{content:"✓"}
.qz-opt.pop i{animation:pop .4s var(--ease)}
.qz-short,.qz-codein{width:100%;border:2px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);padding:14px 16px;font:17px/1.5 var(--body);resize:vertical;outline:none;transition:border-color .2s,box-shadow .2s}
.qz-short:focus,.qz-codein:focus{border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 15%,transparent)}
.qz-ed{border-radius:14px;overflow:hidden;border:2px solid #2a3360;background:#141a35}
.qz-edbar{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;background:#1c2448;color:#c9d2ff;font:600 13px var(--mono)}
.qz-edbar span{display:inline-flex;align-items:center;gap:6px}.qz-edbar .ico{width:15px;height:15px}.qz-edbar .pmuted{color:#8a93bd}
.qz-codein{min-height:280px;border:0;border-radius:0;background:#141a35;color:#e6e9f7;font:15px/1.6 var(--mono);tab-size:4;caret-color:#ffc27d}
.qz-codein:focus{box-shadow:none}
.qz-pager{width:min(860px,100%);margin:22px auto 0;display:flex;align-items:center;justify-content:space-between;gap:12px}
.qz-pager span{color:var(--muted);font-size:14.5px}
.qz-pager .btn:disabled{opacity:.35;pointer-events:none}
.qz-foot{padding:8px 20px;text-align:center;font-size:13px;color:var(--muted);border-top:1px solid var(--line);background:var(--surface)}
.qz-foot kbd{font:700 12px var(--mono);padding:2px 6px;border-radius:6px;border:1px solid var(--line);background:var(--surface2)}
.qz-end h2{margin:6px 0 0;font:800 clamp(26px,3vw,34px) var(--display)}
.qz-end p{margin:0;color:var(--ink2)}
.qz-why{padding:8px 14px;border-radius:12px;background:color-mix(in srgb,var(--amber) 18%,transparent);font-weight:600}
.qz-end.ok h2,.qz-end.locked h2{animation:rise .5s .15s var(--ease) both}
.qz-tick svg{width:96px;height:96px}
.qz-tick circle{fill:none;stroke:var(--good);stroke-width:3;stroke-dasharray:160;stroke-dashoffset:160;animation:qzDraw .7s ease forwards}
.qz-tick path{fill:none;stroke:var(--good);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:qzDraw .4s .55s ease forwards}
@keyframes qzDraw{to{stroke-dashoffset:0}}
.qz-score{display:flex;align-items:baseline;gap:8px;margin-top:8px}
.qz-score b{font:800 64px/1 var(--display);background:linear-gradient(120deg,var(--brand),#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent}
.qz-score span{font:700 24px var(--display);color:var(--muted)}
.qz-bar{width:min(360px,80vw);height:10px;border-radius:99px;background:var(--line);overflow:hidden}
.qz-bar i{display:block;height:100%;width:var(--p);border-radius:inherit;background:linear-gradient(90deg,var(--brand),#8b5cf6);animation:qzGrow 1s .2s var(--ease) both}
@keyframes qzGrow{from{width:0}}
.qz-lockic{width:96px;height:96px;border-radius:28px;display:grid;place-items:center;background:color-mix(in srgb,var(--amber) 22%,transparent);color:color-mix(in srgb,var(--amber) 55%,var(--ink));animation:lockbob 2s ease-in-out infinite}
.qz-lockic .ico{width:46px;height:46px}
.qz-wait{display:flex;align-items:center;gap:10px;margin-top:6px;color:var(--muted);font-weight:600}
.qz-wait i{width:12px;height:12px;border-radius:50%;background:var(--amber);animation:qzPing 1.4s infinite;box-shadow:0 0 0 0 color-mix(in srgb,var(--amber) 70%,transparent)}
@media (max-width:760px){.qz-body{grid-template-columns:1fr;grid-template-rows:auto 1fr}.qz-nav{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:42px;border-right:0;border-bottom:1px solid var(--line);padding:10px 14px}.qz-net span,.qz-sim{display:none}.qz-top{flex-wrap:wrap;gap:8px}}

/* ---------------- teacher: editor, results, marking ---------------- */
.qze-modal .pbox.wide{width:min(980px,100%)}
.qze-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}
.qze-grid>label{display:grid;gap:4px;font-weight:600;font-size:14px}
.qze-grid .wide,.qze-grid .chk{grid-column:span 2}
.qze-grid label:nth-child(1),.qze-grid label:nth-child(6){grid-column:1/-1}
.qze input:not([type=checkbox]),.qze textarea{width:100%;padding:9px 11px;border-radius:11px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:15px var(--body)}
.qze textarea.mono{font:14px/1.5 var(--mono)}
.qze input:focus,.qze textarea:focus{outline:none;border-color:var(--brand)}
.qze label.chk,.qze .chk{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px}
.qze-secs{display:flex;flex-wrap:wrap;gap:10px;align-items:center;min-height:40px}
.qze-qhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--line)}
.qze-qhead h4{margin:0;font-size:17px}
.qze-add{display:flex;gap:8px;flex-wrap:wrap}
.qze-list{display:grid;gap:12px;margin:12px 0}
.qze-empty{padding:28px;text-align:center;border:2px dashed var(--line);border-radius:16px;color:var(--muted)}
.qze-q{display:grid;gap:8px;padding:14px;border-radius:16px;background:var(--surface2);border:1px solid var(--line)}
.qze-q.new{animation:rise .45s var(--ease) both}
.qze-qtop{display:flex;align-items:center;gap:8px}
.qze-qtop .iconbtn{width:32px;height:32px;border-radius:9px}
.qze-qtop .iconbtn:disabled{opacity:.3}
.qze-pts{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600}
.qze-pts input{width:70px!important;padding:5px 8px!important}
.qze details summary{cursor:pointer}
.qze-opts{display:grid;gap:6px}
.qze-opt{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}
.qze-opt .iconbtn{width:32px;height:32px}
.qze-ok{position:relative;cursor:pointer}
.qze-ok input{position:absolute;opacity:0}
.qze-ok span{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font:800 13px var(--mono);border:1.5px solid var(--line);background:var(--surface);transition:all .2s}
.qze-ok input:checked+span{background:var(--good);border-color:var(--good);color:#fff;transform:scale(1.06)}
.qze-ok input:focus-visible+span{outline:2px solid var(--brand)}
.qze label.small{display:grid;gap:4px;font-weight:600;font-size:13.5px}
@media (max-width:700px){.qze-grid{grid-template-columns:1fr 1fr}}
.qzr-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.qzr-stats div{padding:14px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}
.qzr-stats b{display:block;font:800 28px/1.1 var(--display)}.qzr-stats span{font-size:13.5px;color:var(--muted)}
.qzr-stats .warn b{color:color-mix(in srgb,var(--amber) 60%,var(--ink))}
@media (max-width:700px){.qzr-stats{grid-template-columns:1fr 1fr}}
.qzr tr.click{cursor:pointer}
.qzr .nowrap{white-space:nowrap;text-align:right}
.qzr .iconbtn{width:32px;height:32px;display:inline-grid;vertical-align:middle}
.qzm{display:grid;gap:12px}
.qzm-q{padding:14px;border-radius:16px;border:1px solid var(--line);background:var(--surface2)}
.qzm-q.todo{border-color:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 20%,transparent)}
.qzm-q .qz-q{font-size:17px}
.qzm-opts{display:grid;gap:4px;margin-bottom:8px}
.qzm-opts div{display:flex;gap:8px;align-items:center;padding:6px 10px;border-radius:10px;border:1px solid transparent}
.qzm-opts i{font:700 12px var(--mono);font-style:normal;color:var(--muted)}
.qzm-opts .right{border-color:color-mix(in srgb,var(--good) 45%,transparent);background:color-mix(in srgb,var(--good) 8%,transparent)}
.qzm-opts .picked:not(.right){border-color:color-mix(in srgb,var(--bad) 45%,transparent);background:color-mix(in srgb,var(--bad) 7%,transparent)}
.qzm-opts b{font-size:12.5px;color:var(--muted)}
.qzm-pts{display:flex;align-items:center;gap:8px;margin-top:8px;font-weight:700}
.qzm-pts input{width:80px;padding:7px 9px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:15px var(--mono)}

/* nine dashboard tabs fit on one row */
html .mywrap .dtabs{gap:2px}
html .mywrap .dtabs a{padding:0 11px;font-size:14px;gap:6px}
.qzl-main{min-width:0}
.qzl-main .tb{white-space:normal;height:auto;min-height:24px;padding-block:3px}
/* facts before starting a quiz */
.qz-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.qz-facts div{padding:14px 10px;border-radius:16px;text-align:center;background:color-mix(in srgb,var(--brand) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--brand) 22%,var(--line));animation:pop .5s var(--ease) both}
.qz-facts div:nth-child(2){animation-delay:.07s}.qz-facts div:nth-child(3){animation-delay:.14s}
.qz-facts b{display:block;font:800 30px/1.1 var(--display);color:var(--brand)}
.qz-facts span{font-size:13px;color:var(--muted);font-weight:600}
.qz-fswarn{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;margin-bottom:12px;border-radius:14px;background:color-mix(in srgb,var(--bad) 9%,transparent);border:1px solid color-mix(in srgb,var(--bad) 35%,transparent);font-size:14.5px}
.qz-fswarn .ico,.qz-fswarn svg{flex:none;width:22px;height:22px;color:var(--bad)}

/* ================= proctored quizzes ================= */
/* Wi-Fi bars */
.qz-bars{display:inline-flex;align-items:flex-end;gap:2px;height:16px;vertical-align:middle}
.qz-bars i{width:4px;border-radius:2px;background:color-mix(in srgb,currentColor 22%,transparent);transition:background .3s,height .3s}
.qz-bars i:nth-child(1){height:25%}.qz-bars i:nth-child(2){height:50%}.qz-bars i:nth-child(3){height:75%}.qz-bars i:nth-child(4){height:100%}
.qz-bars.good{color:var(--good)}.qz-bars.good i{background:currentColor}
.qz-bars.fair{color:#c08a00}.qz-bars.fair i:nth-child(-n+3){background:currentColor}
.qz-bars.poor{color:var(--bad)}.qz-bars.poor i:nth-child(1){background:currentColor;animation:qzBlink 1s infinite}
.qz-bars.off{color:var(--bad)}.qz-bars.off i{height:20%!important;animation:qzBlink 1s infinite}
.qz-net.good{color:var(--good);background:color-mix(in srgb,var(--good) 10%,transparent)}
.qz-net.fair{color:#a87600;background:color-mix(in srgb,var(--amber) 16%,transparent)}
.qz-net.poor,.qz-net.off{color:var(--bad);background:color-mix(in srgb,var(--bad) 10%,transparent);animation:qzNudge .5s var(--ease)}
.qz-net.big{height:44px;padding:0 18px;font-size:16px}.qz-net.big .qz-bars{height:22px}.qz-net.big .qz-bars i{width:6px}
.qz-wl{white-space:nowrap}
/* top bar extras */
.qz-rec{display:inline-flex;align-items:center;gap:6px;font:800 12px var(--mono);color:var(--bad);letter-spacing:.08em}
.qz-rec i{width:10px;height:10px;border-radius:50%;background:var(--bad);animation:qzBlink 1.2s infinite}
.qz-rulesbtn{width:36px;height:36px}
.qz-timer>div{display:grid;line-height:1}.qz-timer small{font:600 10px var(--body);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.qz-progress{height:4px;background:var(--line)}.qz-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),#8b5cf6);transition:width .5s var(--ease)}
.qz-used{color:var(--bad);display:inline-flex;align-items:center;gap:6px}.qz-used .ico{width:14px;height:14px}
/* the 5-second come-back screen */
.qz-grace{position:absolute;inset:0;z-index:5;display:grid;place-items:center;background:color-mix(in srgb,var(--bad) 18%,var(--bg));backdrop-filter:blur(6px);text-align:center;padding:20px}
.qz-grace.in>div{animation:pop .4s var(--ease) both}
.qz-grace h2{margin:12px 0 6px;font:800 34px var(--display);color:var(--bad)}
.qz-grace p{max-width:520px;margin:0 auto;font-size:17px}
.qz-grace{cursor:pointer}.qz-grace #qzGraceDo{display:inline-block;margin:6px 0 10px;padding:10px 18px;border-radius:999px;background:var(--bad);color:#fff;font-size:17px}
.qz-gring{--p:100;position:relative;width:150px;height:150px;margin:0 auto}
.qz-gring svg{width:100%;height:100%;transform:rotate(-90deg)}
.qz-gring circle{fill:none;stroke:var(--line);stroke-width:9}.qz-gring circle.v{stroke:var(--bad);stroke-linecap:round;stroke-dasharray:calc(var(--p)*1) 100;transition:stroke-dasharray .1s linear}
.qz-grace .qz-gring circle.v{stroke-dasharray:var(--p) 100}
.qz-gring b{position:absolute;inset:0;display:grid;place-items:center;font:800 60px var(--display);color:var(--bad);animation:qzBeat 1s infinite}
/* type chips */
.qz-type.order{background:color-mix(in srgb,#f59e0b 18%,transparent);color:#b26b00}
.qz-type.match{background:color-mix(in srgb,#ec4899 14%,transparent);color:#c0307a}
.qz-type.blanks{background:color-mix(in srgb,#06b6d4 16%,transparent);color:#0b8aa1}
.qz-hint{display:flex;align-items:center;gap:8px;margin:2px 0 12px;font-size:14px;color:var(--muted)}.qz-hint .ico{width:15px;height:15px}
/* order */
.qz-order{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.qz-oi{display:flex;align-items:center;gap:12px;padding:14px 14px;border-radius:16px;border:2px solid var(--line);background:var(--surface);cursor:grab;touch-action:none;font-size:17px;transition:transform .28s var(--ease),box-shadow .2s,border-color .2s;animation:rise .45s var(--ease) both;animation-delay:calc(var(--k)*70ms + 80ms)}
.qz-oi:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line))}
.qz-oi.drag{cursor:grabbing;z-index:3;position:relative;border-color:var(--brand);box-shadow:0 14px 34px color-mix(in srgb,var(--brand) 30%,transparent);transition:box-shadow .2s,border-color .2s;animation:none}
.qz-oi.bump{animation:pop .35s var(--ease)}
.qz-grip{color:var(--muted);letter-spacing:-3px;font-weight:800}
.qz-on{flex:none;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--brand);color:#fff;font:800 14px var(--mono)}
.qz-ot{flex:1}
.qz-oarr{display:flex;flex-direction:column;gap:2px}.qz-oarr button{border:0;background:var(--surface2);border-radius:6px;width:28px;height:20px;font-size:10px;cursor:pointer;color:var(--muted)}.qz-oarr button:hover{background:var(--brand);color:#fff}
/* chips and slots (match, blanks) */
.qz-bank{display:flex;flex-wrap:wrap;gap:10px;padding:14px;margin-top:14px;border-radius:16px;border:2px dashed var(--line);background:var(--surface2);min-height:62px}
.qz-chip{display:inline-flex;align-items:center;padding:9px 14px;border-radius:12px;background:var(--surface);border:2px solid color-mix(in srgb,var(--brand) 40%,var(--line));font:600 16px var(--body);cursor:grab;touch-action:none;user-select:none;box-shadow:0 3px 0 color-mix(in srgb,var(--brand) 25%,transparent);transition:transform .2s var(--ease),opacity .2s,box-shadow .2s;animation:pop .4s var(--ease) both;animation-delay:calc(var(--k,0)*40ms)}
.qz-chip:hover{transform:translateY(-2px)}
.qz-chip.pick{background:var(--brand);color:#fff;transform:translateY(-3px) scale(1.04)}
.qz-chip.used,.qz-chip.lift{opacity:.25;pointer-events:none;box-shadow:none}
.qz-chip.ghost{position:fixed;left:0;top:0;z-index:1000;pointer-events:none;box-shadow:0 16px 30px rgba(0,0,0,.25);animation:none;opacity:.95;border-color:var(--brand)}
.qz-chip code{font:600 .9em var(--mono)}
.qz-slot{display:inline-flex;align-items:center;justify-content:center;min-width:120px;min-height:46px;padding:3px;border-radius:14px;border:2px dashed color-mix(in srgb,var(--brand) 45%,var(--line));background:color-mix(in srgb,var(--brand) 5%,var(--surface));transition:all .2s var(--ease);vertical-align:middle}
.qz-slot.over{border-style:solid;border-color:var(--brand);background:color-mix(in srgb,var(--brand) 14%,var(--surface));transform:scale(1.05)}
.qz-slot.full{border-style:solid;border-color:color-mix(in srgb,var(--good) 50%,var(--line));background:color-mix(in srgb,var(--good) 7%,var(--surface))}
.qz-slot.land{animation:qzLand .45s var(--ease)}
.qz-slot .qz-chip{animation:none;box-shadow:none;border-color:transparent;background:transparent}
@keyframes qzLand{0%{transform:scale(.9)}60%{transform:scale(1.07)}100%{transform:none}}
.qz-slot.gap{min-width:90px;min-height:38px;margin:2px 4px}
.qz-gcode .qz-slot.gap{background:#222b55;border-color:#5b6bd6;color:#fff}.qz-gcode .qz-slot .qz-chip{color:#ffd28a;font-family:var(--mono)}
.qz-gtext{line-height:2.4}
.qz-match{display:grid;gap:10px}
.qz-mrow{display:grid;grid-template-columns:1fr 46px minmax(170px,1fr);align-items:center;gap:6px;animation:rise .45s var(--ease) both;animation-delay:calc(var(--k)*70ms + 80ms)}
.qz-mp{padding:12px 14px;border-radius:14px;background:var(--surface);border:2px solid var(--line);font-size:16.5px;font-weight:600}
.qz-link{height:3px;border-radius:3px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 11px)}
.qz-mrow:has(.qz-slot.full) .qz-link{background:var(--good);animation:qzGrow .4s var(--ease)}
.qz-mrow .qz-slot{width:100%}
@media (max-width:760px){.qz-mrow{grid-template-columns:1fr}.qz-link{display:none}}
/* preview clips */
.qz-pv{width:min(640px,90vw);text-align:left;padding:12px 14px;border-radius:14px;background:var(--surface2);display:grid;gap:4px;font-size:14px}
.qz-pvclips{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}.qz-pvclips figure{margin:0;width:200px}.qz-pvclips video{width:100%;border-radius:10px;background:#000}.qz-pvclips figcaption{font-size:12px;color:var(--muted)}

/* ---------------- the gate (before starting) ---------------- */
.qzg-modal .pbox.wide{width:min(880px,100%)}
.qz-facts:has(> div:nth-child(4)){grid-template-columns:repeat(4,1fr)}
@media (max-width:600px){.qz-facts:has(> div:nth-child(4)){grid-template-columns:1fr 1fr}}
.qzg-h{display:flex;align-items:center;gap:8px;margin:18px 0 10px;font-size:17px}.qzg-h .ico{width:18px;height:18px;color:var(--brand)}
.qzv-table{display:grid;gap:6px}
.qzv-row{display:grid;grid-template-columns:1.25fr 1fr;gap:12px;padding:10px 14px;border-radius:12px;border-left:5px solid var(--bad);background:color-mix(in srgb,var(--bad) 6%,var(--surface2));font-size:14.5px;animation:rise .45s var(--ease) both;animation-delay:calc(var(--k)*60ms)}
.qzv-row.soft{border-left-color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,var(--surface2))}
.qzv-row span{color:var(--ink2)}
@media (max-width:600px){.qzv-row{grid-template-columns:1fr}}
.qzg-checks{display:grid;gap:8px}
.qzg-ck{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:14px;background:var(--surface2);border:1.5px solid var(--line);transition:border-color .3s,background .3s}
.qzg-ck>i{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font:800 15px var(--body);font-style:normal;background:var(--line);color:#fff}
.qzg-ck>i::after{content:"…"}
.qzg-ck.ok{border-color:color-mix(in srgb,var(--good) 45%,var(--line))}.qzg-ck.ok>i{background:var(--good);animation:pop .4s var(--ease)}.qzg-ck.ok>i::after{content:"✓"}
.qzg-ck.warn>i{background:var(--amber)}.qzg-ck.warn>i::after{content:"!"}
.qzg-ck.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}.qzg-ck.bad>i{background:var(--bad)}.qzg-ck.bad>i::after{content:"✗"}
.qzg-ck>div{flex:1;display:grid}.qzg-ck span{font-size:13.5px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.qzg-agree{margin:14px 0 4px;padding:12px 14px;border-radius:14px;background:color-mix(in srgb,var(--brand) 7%,var(--surface));border:1.5px solid color-mix(in srgb,var(--brand) 30%,var(--line));display:flex;gap:10px;align-items:flex-start;font-weight:600;cursor:pointer}
.qzg-agree input{margin-top:3px;width:18px;height:18px}

/* ---------------- teacher: editor extras ---------------- */
.qze select{width:100%;padding:9px 11px;border-radius:11px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:15px var(--body)}
.qze-import{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 14px;margin:4px 0 12px;border-radius:14px;border:2px dashed color-mix(in srgb,var(--brand) 40%,var(--line));background:color-mix(in srgb,var(--brand) 5%,var(--surface))}
.qze-import>div:first-child{display:flex;gap:10px;align-items:center}.qze-import>div:first-child>.ico{width:26px;height:26px;color:var(--brand)}
.qze-import>div:first-child>div{display:grid}
.qze-import .row{display:flex;gap:10px;align-items:center}
.qze-import label.btn{cursor:pointer}
.phd .row{display:flex;gap:8px;flex-wrap:wrap}

/* ---------------- teacher: live dashboard ---------------- */
.qzd-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:12px 0 14px}
.qzd-tile{padding:14px 16px;border-radius:18px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);position:relative;overflow:hidden}
.qzd-tile b{display:block;font:800 32px/1.1 var(--display)}.qzd-tile span{font-size:13.5px;color:var(--muted)}
.qzd-tile::after{content:"";position:absolute;right:-18px;top:-18px;width:70px;height:70px;border-radius:50%;background:color-mix(in srgb,var(--brand) 8%,transparent)}
.qzd-tile.live b{color:var(--good)}.qzd-tile.live::before{content:"";position:absolute;right:14px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--good);animation:qzPing 1.6s infinite;box-shadow:0 0 0 0 color-mix(in srgb,var(--good) 60%,transparent)}
.qzd-tile.good b{color:var(--brand)}.qzd-tile.warn b{color:color-mix(in srgb,var(--amber) 60%,var(--ink))}.qzd-tile.bad b{color:var(--bad)}
@media (max-width:800px){.qzd-tiles{grid-template-columns:1fr 1fr}}
.qzd-mid{display:grid;grid-template-columns:1.2fr 1fr;gap:14px;margin-bottom:14px}
@media (max-width:900px){.qzd-mid{grid-template-columns:1fr}}
.qzd-top{display:grid;gap:6px}
.qzd-trow{display:grid;grid-template-columns:minmax(120px,1fr) 1.2fr 30px;gap:10px;align-items:center;padding:6px 8px;border:0;border-radius:10px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;animation:rise .4s var(--ease) both;animation-delay:calc(var(--k)*60ms)}
.qzd-trow:hover{background:var(--surface2)}
.qzd-trow i{height:10px;border-radius:6px;background:linear-gradient(90deg,var(--amber),var(--bad));width:var(--w);animation:qzGrow .7s var(--ease) both}
.qzd-trow b{font:800 15px var(--mono);color:var(--bad);text-align:right}
.qzd-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.qzd-filters button{height:34px;padding:0 12px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:600 13.5px var(--body);cursor:pointer;transition:all .2s}
.qzd-filters button b{margin-left:4px;color:var(--muted)}
.qzd-filters button.on{background:var(--brand);border-color:var(--brand);color:#fff}.qzd-filters button.on b{color:#fff}
.qzd-prog{width:90px;height:7px;border-radius:9px;background:var(--line);overflow:hidden;display:inline-block;vertical-align:middle;margin-right:6px}.qzd-prog i{display:block;height:100%;background:var(--good);transition:width .6s var(--ease)}
.qzr tr.qzs-attempting td:first-child{box-shadow:inset 4px 0 var(--good)}.qzr tr.qzs-lost td:first-child,.qzr tr.qzs-waiting td:first-child{box-shadow:inset 4px 0 var(--amber)}.qzr tr.qzs-cancelled{opacity:.6}
.qzr button.qchip{cursor:pointer}
.qchip.bad{background:color-mix(in srgb,var(--bad) 14%,transparent);border-color:color-mix(in srgb,var(--bad) 45%,transparent);color:var(--bad)}
.qzl-stats .live{display:inline-flex;align-items:center;gap:6px;color:var(--good)}.qzl-stats .live b{color:var(--good)}.qzl-stats .live i{width:8px;height:8px;border-radius:50%;background:var(--good);animation:qzBlink 1.2s infinite}
.qchip .ico{width:12px;height:12px}
.btn.danger.ghost{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line));background:transparent}
/* violations list + marking extras */
.qzvl{display:grid;gap:10px}
.qzvl-row{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:start;padding:12px;border-radius:14px;background:var(--surface2);border-left:5px solid var(--amber);animation:rise .4s var(--ease) both;animation-delay:calc(var(--k)*60ms)}
.qzvl-row.submitted{border-left-color:var(--bad)}
.qzvl-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--amber) 20%,transparent)}.qzvl-row.submitted .qzvl-ic{background:color-mix(in srgb,var(--bad) 14%,transparent);color:var(--bad)}
.qzvl-row>div:nth-child(2){display:grid;gap:2px}
.qzvl-clip video{width:100%;max-width:560px;margin-top:8px;border-radius:12px;background:#000}
.qzm-mk{font-style:normal;font-weight:800}.qzm-mk.y{color:var(--good)}.qzm-mk.n{color:var(--bad)}
.qzm-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.qzm-cols ol{margin:6px 0 0;padding-left:22px}
.qzm-list{display:grid;gap:4px;margin-bottom:8px}
.qz [hidden],.qzg [hidden],.qz-grace[hidden]{display:none!important}
.qzdrive{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px;margin-bottom:14px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}
.qzdrive>div:nth-child(2){flex:1;display:grid;min-width:200px}
.qzdrive .row{display:flex;gap:8px;flex-wrap:wrap}
.qzdrive-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 11%,transparent);color:var(--brand)}
.qzvl-clip .linkbtn{display:inline-flex;gap:6px;align-items:center;margin-top:6px}
.qzr td:first-child,.qzr td:nth-child(2){white-space:nowrap}
.qz-dos{margin:4px 0 6px;padding-left:20px;display:grid;gap:4px;font-size:14.5px}
.qz-dos li::marker{color:var(--accent)}
.qz-rule-warn{margin-top:10px}

/* live progress graph (series colours: validated categorical slots, light and dark) */
.qzg-chart{--s-att:#2a78d6;--s-vio:#eb6834;--s-sub:#1baf7a;--s-none:#8a8f9e;position:relative}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .qzg-chart{--s-att:#3987e5;--s-vio:#d95926;--s-sub:#199e70;--s-none:#80869a}}
:root[data-theme="dark"] .qzg-chart{--s-att:#3987e5;--s-vio:#d95926;--s-sub:#199e70;--s-none:#80869a}
.qzg-chart .s-attempting{--c:var(--s-att)}.qzg-chart .s-viol{--c:var(--s-vio)}.qzg-chart .s-submitted{--c:var(--s-sub)}.qzg-chart .s-none{--c:var(--s-none)}
.qzg-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0 0 6px;font-size:13.5px;color:var(--muted)}
.qzg-legend span{display:inline-flex;align-items:center;gap:6px}.qzg-legend i,.qzg-tip i{width:14px;height:3px;border-radius:2px;background:var(--c)}.qzg-legend .s-none i,.qzg-tip .s-none i{background:repeating-linear-gradient(90deg,var(--c) 0 4px,transparent 4px 7px)}
.qzg-legend b{color:var(--ink)}
.qzg-wrap{position:relative;overflow:hidden}
.qzg-svg{display:block;width:100%;height:auto;touch-action:pan-y}
.qzg-svg .gl{stroke:var(--line);stroke-width:1}
.qzg-svg .ax{fill:var(--muted);font:12px var(--mono, monospace)}
.qzg-svg .ln{fill:none;stroke:var(--c);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.qzg-svg .ln.s-none{stroke-dasharray:5 4}
.qzg-svg.draw .ln:not(.s-none){stroke-dasharray:1;stroke-dashoffset:1;animation:qzgDraw 1.2s var(--ease) forwards}
@keyframes qzgDraw{to{stroke-dashoffset:0}}
.qzg-svg .pt{fill:var(--c);stroke:var(--surface);stroke-width:2}
.qzg-svg .pulse{fill:none;stroke:var(--c);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:qzgPulse 1.6s ease-out infinite}
@keyframes qzgPulse{from{transform:scale(1);opacity:.9}to{transform:scale(3.2);opacity:0}}
.qzg-svg .lbl{fill:var(--ink2);font-size:12.5px;font-weight:600}
.qzg-svg .cx{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}
.qzg-svg .hit{fill:transparent;cursor:crosshair}
.qzg-svg [hidden]{display:none}
.qzg-tip{position:absolute;top:28px;min-width:160px;padding:8px 10px;border-radius:10px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);font-size:13px;pointer-events:none;display:grid;gap:3px}
.qzg-tip[hidden]{display:none}
.qzg-tip span{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center;color:var(--muted)}.qzg-tip span b{color:var(--ink);font-family:var(--mono, monospace)}
.qzg-live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--bad);margin-right:4px;animation:blinkp 1.4s infinite}
@media (prefers-reduced-motion:reduce){.qzg-svg.draw .ln{animation:none;stroke-dashoffset:0}.qzg-svg .pulse{animation:none;opacity:0}}
/* the question's scenario, in its own card */
.qz-scn{position:relative;padding:16px 20px 16px 64px;border-radius:18px;font-size:clamp(17px,1.8vw,20px);background:linear-gradient(135deg,color-mix(in srgb,var(--brand) 9%,var(--surface)),color-mix(in srgb,var(--good) 7%,var(--surface)));border:1px solid color-mix(in srgb,var(--brand) 22%,transparent);box-shadow:0 8px 24px color-mix(in srgb,var(--brand) 10%,transparent);animation:qzScn .5s var(--ease) both}
.qz-scn::before{content:'?';position:absolute;left:18px;top:16px;width:32px;height:32px;border-radius:11px;display:grid;place-items:center;font:800 17px var(--body);color:#fff;background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 55%,var(--good)));box-shadow:0 6px 14px color-mix(in srgb,var(--brand) 35%,transparent)}
.qz-scn b{color:var(--brand)}
.qz-scn code{background:var(--surface)!important}
@keyframes qzScn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.qz-scn{animation:none}}
/* cancelling: keep or discard the answers */
.qzc-keep{display:grid;gap:8px;margin:12px 0}
.qzc-keep .chk{align-items:flex-start;gap:10px;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .2s}
.qzc-keep .chk:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 6%,var(--surface))}
.qzc-keep input{margin-top:3px}

/* Attendance taken inside a quiz or exam */
.qzd-att{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 18px;margin:12px 0 0}
.qzd-att-n{display:flex;align-items:center;gap:12px;flex:1;min-width:220px}
.qzd-att-n>div{display:grid}.qzd-att-n b{font:800 26px/1.1 var(--display);margin-right:4px}
.qzd-att-ic{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:color-mix(in srgb,var(--good,#16a34a) 14%,transparent);color:var(--good,#16a34a)}
.qzd-att-ic svg{width:20px;height:20px}
.qzd-att-s{display:flex;align-items:center}
.qzl-att{display:grid;gap:6px;justify-items:end;max-width:320px}
.qzl-att .row{display:flex;gap:8px;flex-wrap:nowrap}
.qzl-att input{width:130px;text-align:center;letter-spacing:.2em;font-weight:700;padding:8px 10px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text)}
.qzl-att .perr:empty{display:none}
@media (max-width:760px){.qzl-att{justify-items:start}}
.qze-extra{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:40px}
.qze-extra>span{display:contents}
.qze-extra input{flex:1;min-width:220px}
.qze-x{border:0;background:none;color:inherit;font-size:15px;line-height:1;padding:0 0 0 6px;cursor:pointer;opacity:.7}.qze-x:hover{opacity:1}
.qzl-att .btn{white-space:nowrap}
.qzam-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}
.qzam-bar input{flex:1;min-width:200px;padding:9px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text)}
.qzam-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 14px;max-height:52vh;overflow:auto;padding:4px 2px}
.qzam-row{padding:6px 4px;border-radius:10px}.qzam-row:hover{background:color-mix(in srgb,var(--line) 40%,transparent)}
.qzam-row[hidden]{display:none}

/* Question visuals: bar charts, True/False buttons, the CoALA picture */
.qzb{display:grid;gap:8px;margin:4px 0 16px;padding:14px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}
.qzb-row{display:grid;grid-template-columns:minmax(64px,auto) 1fr 48px;align-items:center;gap:12px}
.qzb-l{font-weight:700;font-size:15px}
.qzb-tr{height:22px;border-radius:999px;background:color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden}
.qzb-fill{height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--accent,#5b5bf7),color-mix(in srgb,var(--accent,#5b5bf7) 55%,#22c1c3));transition:width .7s cubic-bezier(.2,.8,.2,1)}
.qzb-row b{font:700 14px/1 var(--mono,ui-monospace,monospace);text-align:right}
.qz-opts.tf{grid-template-columns:1fr 1fr;display:grid;gap:14px}
.qz-opts.tf .qz-opt{justify-content:center;padding:22px 16px;font-size:18px;font-weight:700}
.qz-opts.tf .qz-opt i{font-style:normal}
.qz-opts.tf .qz-opt.t i{color:#16a34a}.qz-opts.tf .qz-opt.f i{color:#dc2626}
.qz-coala{display:block;width:100%;max-width:640px;margin:4px auto 16px;color:var(--muted)}
.qz-coala .bx rect{fill:var(--surface);stroke:var(--line);stroke-width:1.5}
.qz-coala .bx.hub rect{stroke:var(--accent,#5b5bf7);stroke-width:2.5}
.qz-coala text{fill:var(--text);font:700 15px var(--display,inherit);text-anchor:middle}
.qz-coala text.s{fill:var(--muted);font:500 11.5px var(--body,inherit)}
.qz-coala .ln path{stroke:currentColor;stroke-width:2;fill:none}
.qz-coala .tg text{fill:var(--accent,#5b5bf7);font:800 15px var(--display,inherit)}
@media (max-width:560px){.qzb-row{grid-template-columns:auto 1fr 40px;gap:8px}}
.qz-visual{display:block;width:100%;max-width:640px;height:auto;margin:4px auto 16px;color:var(--text)}
