:root{--b:#2d6cdf;--ok:#1a9b4b;--bad:#d33;--bg:#f4f6fa}
body{font-family:system-ui,sans-serif;margin:0;background:var(--bg);color:#222}
header{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:#1e2a44;color:#fff}header h1{font-size:20px;margin:0}
main{max-width:1100px;margin:auto;padding:12px}
.card{background:#fff;border-radius:10px;padding:16px;margin:12px 0;box-shadow:0 1px 4px #0002}
label{display:block;margin:8px 0}input,select{padding:8px;font-size:15px;box-sizing:border-box;border:1px solid #bbb;border-radius:6px}
label input{display:block;width:100%}
button{padding:8px 14px;font-size:15px;border:0;border-radius:6px;background:var(--b);color:#fff;cursor:pointer;margin:4px 4px 0 0}
button.sec{background:#e3e8f2;color:#223}button.red{background:var(--bad)}button:disabled{opacity:.5;cursor:default}
.big{font-size:64px;font-weight:800;letter-spacing:10px;text-align:center;color:var(--b);font-family:monospace}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.team{border:2px solid #dde;border-radius:10px;padding:10px;background:#fff}.team.mine{border-color:var(--b)}
.pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#e3e8f2;margin:1px}
.pill.code{background:#dff3e4}.pill.logic{background:#fdeccc}.pill.arch{background:#e2e6ff}.pill.math{background:#f6dcf0}
.st-solved{color:var(--ok);font-weight:bold}.st-failed{color:var(--bad);font-weight:bold}.st-assigned{color:#a60}
table{border-collapse:collapse;width:100%}td,th{padding:5px;border-bottom:1px solid #eee;text-align:left;font-size:14px;vertical-align:top}
.CodeMirror{height:auto;min-height:110px;border:1px solid #ccc;font-size:14px}
pre.out{background:#111;color:#0f0;padding:8px;min-height:18px;white-space:pre-wrap;max-height:240px;overflow:auto}
.task h3{margin:0 0 6px}.muted{color:#777;font-size:13px}.err{color:var(--bad)}
.timer{font-size:28px;font-weight:bold}
#toast{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:#333;color:#fff;padding:10px 16px;border-radius:8px;display:none;z-index:99}
#reveal{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:50}
.rv-box{background:#fff;border-radius:16px;padding:24px;width:min(680px,94vw);text-align:center}
.rv-window{position:relative;overflow:hidden;height:120px;border-radius:10px;background:#1e2a44}
#rv-strip{display:flex;position:absolute;left:0;top:10px;will-change:transform}
.rv-card{width:160px;height:100px;margin:0 5px;flex:none;border-radius:10px;background:linear-gradient(135deg,#ffd54f,#ff8a65);display:flex;align-items:center;justify-content:center;font-weight:bold;padding:6px;box-sizing:border-box}
.rv-mark{position:absolute;left:50%;top:0;bottom:0;width:4px;background:#fff;transform:translateX(-50%);box-shadow:0 0 10px #fff}
.win{animation:pulse 1s infinite}@keyframes pulse{50%{transform:scale(1.08)}}
.mc label{display:block;padding:6px;border:1px solid #ddd;border-radius:6px;margin:4px 0;cursor:pointer}
#reveal[hidden]{display:none}
.choice{display:flex;gap:16px;margin:12px 0;flex-wrap:wrap}.bigbtn{flex:1;min-width:200px;padding:32px 12px;font-size:24px;font-weight:bold;border-radius:14px}#c-join{background:#1a9b4b}.tcode{font-family:monospace;font-size:15px}
.layout{display:flex;gap:14px;align-items:flex-start}.content{flex:1;min-width:0}
aside#side{width:240px;flex:none;position:sticky;top:8px;background:#fff;border-radius:10px;padding:10px;box-shadow:0 1px 4px #0002;margin-top:12px;max-height:calc(100vh - 20px);overflow:auto}
aside summary{font-weight:bold;cursor:pointer;margin-bottom:6px}.sd-team{padding:6px;border-radius:8px;margin:4px 0;border:2px solid transparent}.sd-team.mine{border-color:var(--b);background:#eef3ff}
.sd-name{font-weight:600;font-size:14px}.bar{height:8px;background:#e3e8f2;border-radius:4px;overflow:hidden;margin:4px 0}.bar i{display:block;height:100%;background:linear-gradient(90deg,#1a9b4b,#7ed957)}
@media(max-width:760px){.layout{flex-direction:column}aside#side{width:auto;position:static;max-height:none;box-sizing:border-box;width:100%}}
.pill.solo{background:#ffe0b2;font-weight:bold}.team.solo{border-style:dashed}#c-solo{background:#e67e22}
pre.code{background:#f6f8fc;border:1px solid #dde3ee;border-radius:6px;padding:8px;white-space:pre;overflow:auto;font-size:13px}
ol.order{padding-left:28px}ol.order li{margin:4px 0;padding:4px;border:1px solid #dde;border-radius:6px;background:#fafbff}ol.order li button{padding:2px 8px;margin:0 4px 0 0}ol.order code{white-space:pre}
textarea.freeans{width:100%;box-sizing:border-box;font:inherit;padding:8px}.pill.fun{background:#ffe6f0}.pill.free{background:#e8f4ff}.st-review{color:#2d6cdf;font-weight:bold}
#toastbox{position:fixed;top:64px;left:50%;transform:translateX(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.ntoast{background:#1e293b;color:#fff;padding:10px 16px;border-radius:10px;box-shadow:0 6px 20px #0004;font-weight:600;max-width:90vw;animation:tin .3s;transition:opacity .4s}
.ntoast.first{background:#7c3aed}.ntoast.fin{background:#059669;font-size:17px}.ntoast.out{opacity:0}
@keyframes tin{from{transform:translateY(-12px);opacity:0}}
#chatfab{position:fixed;right:18px;bottom:18px;width:58px;height:58px;border-radius:50%;font-size:26px;z-index:40;box-shadow:0 6px 20px #0004;padding:0}
#chatbadge{position:absolute;top:-4px;right:-4px;background:#dc2626;color:#fff;border-radius:10px;font-size:12px;padding:2px 6px;font-weight:700}
#chatbadge[hidden]{display:none}
#chatpanel{position:fixed;right:18px;bottom:86px;width:360px;max-width:calc(100vw - 36px);height:480px;max-height:70vh;background:#fff;border-radius:14px;box-shadow:0 10px 40px #0005;z-index:41;display:flex;flex-direction:column;overflow:hidden}
#chatpanel[hidden]{display:none}
.ch-h{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#f1f5f9}.ch-h button{margin:0;padding:4px 10px}
#ch-list{flex:1;overflow:auto;padding:8px 10px}
.msg{background:#f1f5f9;border-radius:10px;padding:6px 9px;margin:6px 0;max-width:92%}.msg.me{background:#dbeafe;margin-left:auto}
.msg.k-help{border-left:4px solid #f59e0b}.msg.k-done{border-left:4px solid #10b981}.msg.k-look{border-left:4px solid #6366f1}
.mh{font-size:12px}.mt{word-wrap:break-word}.tlink{display:block;font-size:13px}
.rxs{margin-top:3px}.rx{background:transparent;border:1px solid #cbd5e1;color:#111;border-radius:12px;padding:1px 6px;margin:1px;font-size:13px;opacity:.5}.rx.has{opacity:1}.rx.on{background:#fde68a;border-color:#f59e0b;opacity:1}
span.rx{display:inline-block}
.ch-q{display:flex;flex-wrap:wrap;gap:4px;padding:6px 8px;border-top:1px solid #e2e8f0}.ch-q button,.ch-q select{margin:0;padding:4px 8px;font-size:13px}.ch-q select{max-width:100%;flex:1 1 100%}
.ch-in{display:flex;gap:6px;padding:6px 8px 10px}.ch-in input{flex:1;margin:0}.ch-in button{margin:0}
.task.flash{box-shadow:0 0 0 4px #f59e0b}
#blitz,#finale{position:fixed;inset:0;background:#0f172acc;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}
.bl-box,.fin-box{background:#fff;border-radius:16px;padding:22px 26px;max-width:620px;width:100%;max-height:92vh;overflow:auto;box-shadow:0 20px 60px #0008}
.bl-box{border-top:8px solid #f59e0b}.bl-timer{font-size:40px;font-weight:800;color:#d97706;text-align:center}
.lb{width:100%}.lb td,.lb th{padding:4px 8px}
.fin-box{max-width:860px;text-align:center;border-top:8px solid #10b981}.fin-medal{font-size:72px}
.fin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:16px 0;text-align:left}
.fm{background:#f8fafc;border-radius:12px;padding:10px}.fm-n{font-weight:700;margin-bottom:6px}
.ach{background:#fef3c7;border-radius:8px;padding:5px 8px;margin:4px 0;display:flex;flex-direction:column}.ach span{font-size:12px;color:#555}
.pill.fin{background:#d1fae5;color:#065f46}.pill.ach-p{background:#fef3c7;color:#92400e}
.tchat{margin-top:8px}.ch-ro{max-height:240px;overflow:auto}.blitzcard{border-left:6px solid #f59e0b}
.ntoast.assign{background:#2563eb}.ntoast.unassign{background:#64748b}.ntoast.click{pointer-events:auto;cursor:pointer}
.newb{background:#dc2626;color:#fff;font-size:11px;border-radius:8px;padding:2px 7px;margin-right:6px;vertical-align:middle;animation:npulse 1.2s infinite}
#newcnt{background:#dc2626;color:#fff;border-radius:10px;padding:2px 10px;margin-left:8px;cursor:pointer;font-weight:700}#newcnt[hidden]{display:none}
@keyframes npulse{50%{opacity:.55}}
.rhelp{display:inline-block;font-size:12px;color:#2563eb;border-bottom:1px dashed #2563eb;cursor:help;margin:4px 0}.sd-r{font-size:14px}
body:has(#finale) #toastbox{top:auto;bottom:16px}
#blbadge{position:fixed;left:18px;bottom:18px;z-index:45;background:#f59e0b;color:#111;font-weight:700;padding:8px 14px;border-radius:20px;box-shadow:0 6px 20px #0003}
.bl-res{text-align:center;max-width:360px}.bl-big{font-size:64px;font-weight:800}.ntoast.blitzres{background:#d97706}
/* ===== v9: mobile-first ===== */
*{-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{font-size:16px}
main{padding:8px 10px}
button{min-height:44px;padding:10px 14px;font-size:16px;border-radius:10px}
input,select,textarea{font-size:16px;min-height:44px;border-radius:10px}
button.wide{display:block;width:100%;margin:8px 0}
.card{padding:14px;border-radius:14px;margin:10px 0}
.bigbtn{min-width:0;flex:1 1 140px;padding:22px 8px;font-size:19px}
.big{font-size:44px;letter-spacing:6px}
body.student header{display:none}
body.student main{padding:0 10px calc(76px + env(safe-area-inset-bottom))}
.hdr{position:sticky;top:0;z-index:30;background:#1e2a44;color:#fff;margin:0 -10px;padding:8px 14px calc(8px);display:flex;flex-direction:column;gap:2px;box-shadow:0 2px 8px #0003}
.hdr .muted{color:#b8c3dc}.hdr .h1{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hdr .h2{font-size:15px}.hdr .rt{font-size:18px;color:#ffd54f}
#newcnt{display:inline-block;margin:4px 0 0;padding:4px 10px;align-self:flex-start}
#tabs{position:fixed;left:0;right:0;bottom:0;z-index:35;display:flex;background:#fff;border-top:1px solid #dde3ee;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -2px 10px #0001}
#tabs button{flex:1;background:none;color:#556;margin:0;border-radius:0;min-height:58px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;position:relative;padding:4px}
#tabs .ti{font-size:22px;line-height:1}#tabs button.on{color:var(--b);font-weight:700;box-shadow:inset 0 3px 0 var(--b)}
#tabs .tb{position:absolute;top:4px;left:calc(50% + 6px);background:#dc2626;color:#fff;border-radius:10px;font-size:11px;padding:1px 6px;min-width:10px}
#tabs .tb[hidden]{display:none}
.tab[hidden]{display:none}
aside#side{width:auto;position:static;max-height:none;box-shadow:none;background:none;padding:0;margin:0}
.sd-team{padding:10px;background:#fff;border:2px solid #eef1f6}
.lh{font-size:18px;margin:14px 2px 6px}.lh .muted{font-weight:normal;display:block;margin-top:2px}.lh2{font-size:15px;color:#667;margin:14px 2px 4px}
.cap{margin:10px 4px}
.tcard{display:flex;flex-direction:column;align-items:stretch;gap:4px;width:100%;text-align:left;background:#fff;color:#222;border:2px solid #e3e8f2;border-left:6px solid #f59e0b;border-radius:14px;padding:12px;margin:8px 0;box-shadow:0 1px 3px #0001}
.tcard .tc-top{display:flex;justify-content:space-between;align-items:center;gap:6px}.tcard .tc-t{font-weight:600;font-size:16px}.tc-st{font-size:13px}
.tcard.st-b-solved{border-left-color:var(--ok);opacity:.85}.tcard.st-b-failed{border-left-color:var(--bad);opacity:.85}.tcard.st-b-review{border-left-color:var(--b)}
.pcard{border-bottom:1px solid #eef1f6;padding:8px 0}.pcard .prow{display:flex;gap:8px;align-items:center;margin-top:6px;flex-wrap:wrap}.pcard select{flex:1;min-width:0}
#pooldet summary{min-height:44px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;cursor:pointer}
#taskview{position:fixed;inset:0;z-index:40;background:var(--bg);overflow:auto;padding-bottom:env(safe-area-inset-bottom)}
#taskview[hidden]{display:none}
.tv-h{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:8px;background:#1e2a44;color:#fff;padding:6px 8px}.tv-h button{margin:0;flex:none}
.tv-t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#tv-st{color:#b8c3dc;flex:none}
#tv-body{padding:0 8px 24px}#tv-body .task{margin-top:8px}
body.tv-open #tabs{display:none}
.desc{overflow-wrap:anywhere}.desc pre,pre.code{max-width:100%;overflow:auto}
.CodeMirror{min-height:180px;font-size:15px;border-radius:10px}
.keyrow{display:flex;gap:4px;overflow-x:auto;padding:6px 0;position:sticky;bottom:0;background:var(--bg);z-index:3}
.keyrow button{flex:none;min-width:48px;margin:0;padding:6px 10px;font-family:monospace;font-size:17px;font-weight:700}
.btnrow{display:flex;gap:8px;flex-wrap:wrap}.btnrow button{flex:1 1 140px;margin:4px 0}
.task .ans{width:100%;margin-bottom:6px}
.mc label{padding:12px;min-height:44px;box-sizing:border-box}
ol.order li{display:flex;align-items:center;gap:4px;flex-wrap:wrap}ol.order li button{min-height:40px;min-width:44px}ol.order code{white-space:pre-wrap;overflow-wrap:anywhere}
.task.closed .desc{opacity:.85}.myans{background:#f1f5f9;border-radius:10px;padding:8px 10px;margin:8px 0;overflow-wrap:anywhere}
#tab-chat #chatpanel{position:static;width:auto;max-width:none;height:calc(100dvh - 160px - env(safe-area-inset-bottom));max-height:none;margin:10px 0;box-shadow:0 1px 4px #0002}
.ch-q button,.ch-q select{min-height:40px}.ch-in input{min-height:44px}.ch-in button{min-width:52px}
.rx{min-height:34px;padding:2px 9px;font-size:15px}
#helpmodal{position:fixed;inset:0;z-index:55;background:#0f172acc;display:flex;align-items:flex-end;justify-content:center}
.hm-box{background:var(--bg);width:100%;max-width:720px;max-height:94dvh;overflow:auto;border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom)}
.hm-box .tv-h{border-radius:16px 16px 0 0}.hm-body{padding:10px 14px 18px}.hm-reply{position:sticky;bottom:0;background:var(--bg);padding-top:6px}
/* тосты — сверху под шапкой, не закрывают поля ввода внизу */
#toastbox{top:calc(64px + env(safe-area-inset-top));width:calc(100% - 20px);max-width:520px}
.ntoast{font-size:14px;padding:9px 12px;text-align:center;width:100%;box-sizing:border-box}
#toast{bottom:auto;top:calc(70px + env(safe-area-inset-top));max-width:calc(100% - 24px);text-align:center;box-sizing:border-box}
#blbadge{left:10px;right:auto;bottom:calc(68px + env(safe-area-inset-bottom));font-size:14px}
body.tv-open #blbadge{bottom:12px}
.bl-box,.fin-box{padding:16px;border-radius:16px;max-height:calc(100dvh - 24px);box-sizing:border-box}
.bl-timer{font-size:34px}.fin-medal{font-size:56px}.fin-box h1{font-size:22px}.fin-box h2{font-size:18px}
.fin-grid{grid-template-columns:1fr}
.rv-box{padding:14px;width:calc(100vw - 20px);max-width:680px;box-sizing:border-box}
table{display:block;overflow-x:auto}
@media(min-width:760px){
  body.student main{max-width:1000px;margin:auto}
  .hdr{flex-direction:row;justify-content:space-between;align-items:center;border-radius:0 0 12px 12px;margin:0}
  #tabs{left:50%;right:auto;transform:translateX(-50%);width:min(1000px,100%);border-radius:14px 14px 0 0}
  #mylist{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:0 12px}#mylist .lh,#mylist .lh2,#mylist .card{grid-column:1/-1}
  .fin-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
  #helpmodal{align-items:center}.hm-box{border-radius:16px}
  #tv-body{max-width:900px;margin:auto}
  #tab-chat #chatpanel{max-width:720px;margin:10px auto}
}
.msg.k-sys{background:#fef9c3;max-width:100%;font-size:14px;text-align:center;border-radius:8px}
button.kick{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5;padding:4px 10px;min-height:32px;font-size:14px;margin:0}
button.red-o{color:#b91c1c;border-color:#fca5a5;margin-top:10px}
.loose{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 0;border-bottom:1px solid #eee}.loose button{margin-left:auto}
/* v12: единственный слот уведомлений */
#toast,#toastbox{display:none!important}
#nslot{position:fixed;left:50%;top:calc(58px + env(safe-area-inset-top));transform:translate(-50%,-140%);opacity:0;z-index:80;background:#1e293b;color:#fff;font-size:14px;font-weight:600;padding:8px 14px;border-radius:10px;box-shadow:0 4px 14px #0003;max-width:calc(100% - 32px);text-align:center;pointer-events:none;transition:transform .25s,opacity .25s}
#nslot.show{transform:translate(-50%,0);opacity:1}#nslot.click{pointer-events:auto;cursor:pointer}
#nslot.assign{background:#2563eb}#nslot.blitz{background:#d97706}#nslot.help{background:#b45309}#nslot.fin{background:#059669}
#blbadge{cursor:pointer}
.fd{font-size:14px;padding:5px 0;border-bottom:1px solid #eee}.fd.unread{font-weight:600}
.pill.prog{background:#fff3c4}
.caphint{background:#eef6ff;border-radius:8px;padding:6px 9px;margin:6px 0;font-size:14px}
.loads{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.ld{background:#f1f5f9;border-radius:12px;padding:3px 9px;font-size:13px}.ld.over{background:#fee2e2;color:#b91c1c}
.out .fb{white-space:pre-wrap}
.mc label{display:flex!important;align-items:center;gap:10px;font-family:inherit}
.mc input[type=radio]{width:22px!important;height:22px;min-height:0;flex:none;margin:0;padding:0}
.mc label:has(input:checked){border-color:#2563eb;background:#eef4ff}
/* ===== v14: тёмная тема ===== */
#themebtn{position:fixed;top:calc(6px + env(safe-area-inset-top));right:8px;z-index:90;width:38px;height:38px;min-height:0;padding:0;margin:0;border-radius:50%;border:1px solid #fff4;background:#0003;color:#fff;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}
header{padding-right:56px}body.student .hdr{padding-right:56px}
html[data-theme=dark]{--bg:#0f141c;color-scheme:dark}
html[data-theme=dark] body{color:#e5e9f0}
html[data-theme=dark] header,html[data-theme=dark] .hdr,html[data-theme=dark] .tv-h{background:#161e2c}
html[data-theme=dark] .card,html[data-theme=dark] .team,html[data-theme=dark] aside#side,html[data-theme=dark] #chatpanel,html[data-theme=dark] .rv-box,html[data-theme=dark] .bl-box,html[data-theme=dark] .fin-box,html[data-theme=dark] .sd-team,html[data-theme=dark] .tcard,html[data-theme=dark] .ach,html[data-theme=dark] .fm,html[data-theme=dark] .ch-h{background:#1a2230;color:#e5e9f0;box-shadow:0 1px 4px #0006;border-color:#2c3646}
html[data-theme=dark] .sd-team.mine{background:#1d2a44;border-color:#3b6fd8}
html[data-theme=dark] .muted{color:#97a3b6}
html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{background:#0f1520;color:#e5e9f0;border-color:#364257}
html[data-theme=dark] input::placeholder,html[data-theme=dark] textarea::placeholder{color:#6b778a}
html[data-theme=dark] button.sec{background:#2a3446;color:#e5e9f0;border-color:#3a465a}
html[data-theme=dark] #tabs{background:#161e2c;border-top-color:#2c3646}html[data-theme=dark] #tabs button{color:#aab4c5}html[data-theme=dark] #tabs button.on{color:#7aa7ff}
html[data-theme=dark] pre.code,html[data-theme=dark] code{background:#0b1018;color:#d6deeb}
html[data-theme=dark] .msg{background:#232d3d;color:#e5e9f0}html[data-theme=dark] .msg.me{background:#1f3a66}html[data-theme=dark] .msg.k-sys{background:#3a3418;color:#f3e7b3}
html[data-theme=dark] .mc label{border-color:#364257}html[data-theme=dark] .mc label:has(input:checked){background:#1f3a66;border-color:#5b8cff}
html[data-theme=dark] ol.order li{background:#141b27;border-color:#364257}
html[data-theme=dark] .pcard{border-bottom-color:#2c3646}html[data-theme=dark] .fd,html[data-theme=dark] .loose{border-bottom-color:#2c3646}
html[data-theme=dark] .pill{background:#2a3446;color:#e5e9f0}html[data-theme=dark] .pill.code{background:#17402a}html[data-theme=dark] .pill.prog{background:#4a3d12}html[data-theme=dark] .pill.fun{background:#4a1f33}html[data-theme=dark] .pill.free{background:#173a5a}html[data-theme=dark] .pill.logic{background:#4a3612}html[data-theme=dark] .pill.arch{background:#262f5c}html[data-theme=dark] .pill.math{background:#4a1f45}html[data-theme=dark] .pill.solo{background:#4a3612}
html[data-theme=dark] .caphint{background:#16263f}html[data-theme=dark] .ld{background:#232d3d}html[data-theme=dark] .ld.over{background:#4a1d1d;color:#fca5a5}
html[data-theme=dark] button.kick{background:#3a1a1a;color:#fca5a5;border-color:#7f1d1d}html[data-theme=dark] button.red-o{color:#fca5a5;border-color:#7f1d1d}
html[data-theme=dark] table td,html[data-theme=dark] table th{border-color:#2c3646}
html[data-theme=dark] .bar{background:#2a3446}
html[data-theme=dark] #nslot{background:#e5e9f0;color:#0f141c}html[data-theme=dark] #nslot.assign{background:#3b82f6;color:#fff}html[data-theme=dark] #nslot.blitz,html[data-theme=dark] #nslot.help{background:#d97706;color:#fff}
html[data-theme=dark] .st-assigned{color:#fbbf24}html[data-theme=dark] .st-review{color:#7aa7ff}
html[data-theme=dark] a{color:#7aa7ff}
html[data-theme=dark] .CodeMirror{background:#0b1018;color:#d6deeb;border-color:#364257}
html[data-theme=dark] .CodeMirror-gutters{background:#111826;border-color:#2c3646}html[data-theme=dark] .CodeMirror-linenumber{color:#5c6a80}
html[data-theme=dark] .CodeMirror-cursor{border-left-color:#fff}html[data-theme=dark] .CodeMirror-selected,html[data-theme=dark] .CodeMirror-focused .CodeMirror-selected{background:#2a3d5e}
html[data-theme=dark] .cm-keyword{color:#c792ea}html[data-theme=dark] .cm-def,html[data-theme=dark] .cm-variable-2{color:#82aaff}html[data-theme=dark] .cm-string{color:#c3e88d}html[data-theme=dark] .cm-number{color:#f78c6c}html[data-theme=dark] .cm-comment{color:#6b778a}html[data-theme=dark] .cm-builtin{color:#ffcb6b}html[data-theme=dark] .cm-variable,html[data-theme=dark] .cm-property{color:#d6deeb}html[data-theme=dark] .cm-operator{color:#89ddff}
html[data-theme=dark] .keyrow{background:#141b27}
/* v15: сложность */
.lvl{display:inline-block;font-size:12px;font-weight:700;border-radius:10px;padding:2px 7px;white-space:nowrap;letter-spacing:-.5px}
.lvl.l1{background:#dcfce7;color:#166534}.lvl.l2{background:#dbeafe;color:#1e40af}.lvl.l3{background:#ffedd5;color:#9a3412}.lvl.l4{background:#fee2e2;color:#991b1b}
.lvlbar{display:flex;gap:6px;overflow-x:auto;padding:4px 0 8px}.lvlf{flex:none;margin:0;padding:6px 10px;min-height:36px;font-size:13px;border-radius:16px;background:#eef1f6;color:#222;border:1px solid #dde3ee}
.lvlf.on{outline:2px solid #2563eb;font-weight:700}.lvlf.l1{background:#dcfce7}.lvlf.l2{background:#dbeafe}.lvlf.l3{background:#ffedd5}.lvlf.l4{background:#fee2e2}
html[data-theme=dark] .lvl.l1,html[data-theme=dark] .lvlf.l1{background:#14532d;color:#bbf7d0}html[data-theme=dark] .lvl.l2,html[data-theme=dark] .lvlf.l2{background:#1e3a8a;color:#bfdbfe}
html[data-theme=dark] .lvl.l3,html[data-theme=dark] .lvlf.l3{background:#7c2d12;color:#fed7aa}html[data-theme=dark] .lvl.l4,html[data-theme=dark] .lvlf.l4{background:#7f1d1d;color:#fecaca}
html[data-theme=dark] .lvlf{background:#2a3446;color:#e5e9f0;border-color:#3a465a}html[data-theme=dark] .lvlf.on{outline-color:#7aa7ff}
/* ===== v16: БОСС-ЗАДАЧА — отдельный «эпичный» интерфейс ===== */
#boss{--bz-bg:radial-gradient(ellipse at 50% 0%,#5b0f1f 0%,#1d0614 45%,#07050b 100%);--bz-p:#ffffff10;--bz-pb:#ffffff22;--bz-t:#f8eaea;--bz-m:#d6b4bd;--bz-acc:#ffd43b;--bz-red:#ff3b5c;--bz-card:#1b0f19ee;
  position:fixed;inset:0;z-index:2000;overflow-y:auto;background:var(--bz-bg);color:var(--bz-t);font-family:system-ui,sans-serif;-webkit-overflow-scrolling:touch}
html[data-theme=light] #boss,html:not([data-theme]) #boss{--bz-bg:radial-gradient(ellipse at 50% 0%,#ffe3b3 0%,#ffb18a 35%,#7a1630 100%);--bz-p:#fffaf3e8;--bz-pb:#7a163033;--bz-t:#2a0b14;--bz-m:#7a4a55;--bz-acc:#b45309;--bz-red:#c8102e;--bz-card:#fffaf3f2}
body.bossmode{overflow:hidden}body.bossmode #tabs,body.bossmode #blbadge{display:none}
#boss #toast{z-index:2100}
#bz-stage{max-width:720px;margin:auto;padding:14px 14px 40px}
#bz-fade{position:fixed;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity 1.2s ease}
#boss.fading #bz-fade{opacity:1}
.bz-muted{color:var(--bz-m);font-size:13px}
.bz-panel{background:var(--bz-p);border:1px solid var(--bz-pb);border-radius:16px;padding:12px 14px;margin:12px 0;backdrop-filter:blur(6px)}
.bz-panel h3{margin:0 0 8px;font-size:17px;letter-spacing:.3px}
#boss button{border-radius:12px;min-height:44px;font-weight:700;margin:4px 4px 0 0}
.bz-go{background:linear-gradient(180deg,#ff4d6d,#b3001b);color:#fff;font-size:17px;padding:12px 20px;box-shadow:0 0 0 2px #ffd43b55,0 6px 24px #ff003c66;animation:bzpulse 1.6s ease-in-out infinite}
.bz-ok{background:linear-gradient(180deg,#ffd43b,#e0a800);color:#2a1600}
.bz-ghost{background:transparent;color:var(--bz-t);border:1px solid var(--bz-pb)!important}
.bz-bar{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;margin:14px 0}
@keyframes bzpulse{50%{box-shadow:0 0 0 4px #ffd43b88,0 6px 36px #ff003caa;transform:scale(1.03)}}
/* интро */
.bz-intro{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden;background:#050307;color:#fff}
.bz-flash{position:absolute;inset:0;background:#ff1e3c;opacity:0;animation:bzflash 1.2s ease-out .1s 1,bzflash2 .25s 1.5s 3}
@keyframes bzflash{0%{opacity:.9}100%{opacity:0}}@keyframes bzflash2{50%{opacity:.35;background:#fff}}
.bz-cracks{position:absolute;inset:-20%;background:repeating-conic-gradient(from 10deg,#ff1e3c18 0 4deg,transparent 4deg 18deg);animation:bzspin 9s linear infinite;opacity:.8}
@keyframes bzspin{to{transform:rotate(360deg)}}
.bz-warn{position:relative;font-weight:800;letter-spacing:6px;color:#ffd43b;font-size:16px;animation:bzblink .5s steps(2) 6}
@keyframes bzblink{50%{opacity:0}}
.bz-title{position:relative;font-size:clamp(46px,15vw,110px);line-height:1;margin:14px 0;font-weight:900;letter-spacing:4px;text-shadow:0 0 18px #ff1e3c,0 0 48px #ff1e3c,0 4px 0 #6b0010}
.bz-title span{display:inline-block;opacity:0;transform:scale(3) translateY(-30px);animation:bzslam .45s cubic-bezier(.2,1.6,.4,1) forwards}
@keyframes bzslam{to{opacity:1;transform:none}}
.bz-intro .bz-title{animation:bzshake .5s 2.1s 2}
@keyframes bzshake{20%{transform:translate(-6px,3px)}40%{transform:translate(5px,-4px)}60%{transform:translate(-4px,-2px)}80%{transform:translate(4px,3px)}}
.bz-sub{position:relative;font-size:17px;color:#ffd6dd;opacity:0;animation:bzin .8s 2.4s forwards;padding:0 16px}
.bz-won .bz-sub{animation-delay:.6s;color:var(--bz-m)}
@keyframes bzin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.bz-eyesbig{position:relative;display:flex;gap:46px;margin-top:30px;opacity:0;animation:bzin .6s 2.9s forwards}
.bz-eyesbig i{width:58px;height:30px;border-radius:50%;background:radial-gradient(#fff6a8,#ffd23f 45%,#ff6a00);box-shadow:0 0 30px #ffb300,0 0 60px #ff3b00;position:relative}
.bz-eyesbig i:after{content:'';position:absolute;left:25px;top:2px;width:8px;height:26px;border-radius:4px;background:#200}
/* лобби */
.bz-lobby{animation:bzin .7s both}
.bz-lh{display:flex;align-items:center;gap:12px}.bz-lh h2{margin:0;font-size:26px;color:var(--bz-acc);text-shadow:0 2px 12px #ff1e3c55}
.bz-mini .bz-svg{width:84px;height:76px;filter:drop-shadow(0 0 12px #ff1e3c88)}
.bz-list{display:flex;flex-direction:column;gap:8px}
.bz-hero{display:grid;grid-template-columns:40px 1fr auto auto;align-items:center;gap:8px;background:var(--bz-card);border:1px solid var(--bz-pb);border-radius:14px;padding:10px 12px;opacity:0;animation:bzhero .5s forwards}
.bz-hero.me{border-color:var(--bz-acc);box-shadow:0 0 0 2px #ffd43b44}
@keyframes bzhero{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:none}}
.bz-rk{font-size:22px;text-align:center;font-weight:800}
.bz-hn{display:flex;flex-direction:column;min-width:0}.bz-hn b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bz-hn small,.bz-hp small{color:var(--bz-m);font-size:12px}
.bz-hp{display:flex;flex-direction:column;align-items:flex-end}.bz-hp b{font-size:20px;color:var(--bz-acc)}
.bz-watch{font-size:12px;color:var(--bz-m);white-space:nowrap}
.bz-wait{text-align:center;margin:18px 0;font-size:17px;color:var(--bz-acc);animation:bzblink2 1.6s ease-in-out infinite}
@keyframes bzblink2{50%{opacity:.4}}
/* бой */
.bz-fight.rise .bz-top{animation:bzrise 1.4s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes bzrise{from{opacity:0;transform:translateY(80px) scale(.6);filter:brightness(3)}to{opacity:1;transform:none}}
.bz-top{text-align:center;position:sticky;top:0;z-index:2;padding:6px 0 10px;background:linear-gradient(var(--bz-shade,#07050bdd) 70%,transparent)}
html[data-theme=light] .bz-top,html:not([data-theme]) .bz-top{--bz-shade:#ffd7b2e6}
.bz-boss{position:relative;display:inline-block}
.bz-boss .bz-svg{width:150px;height:136px;filter:drop-shadow(0 0 22px #ff1e3caa);animation:bzbreath 3s ease-in-out infinite}
@keyframes bzbreath{50%{transform:translateY(-6px) scale(1.03)}}
.bz-eyes{animation:bzeye 4s infinite}@keyframes bzeye{0%,92%,100%{opacity:1}95%{opacity:.1}}
.bz-tongue{animation:bztongue 1.3s ease-in-out infinite;transform-origin:110px 124px}@keyframes bztongue{50%{transform:scaleY(.6)}}
.bz-boss.hit .bz-svg{animation:bzhit .6s}
@keyframes bzhit{0%{filter:brightness(4) drop-shadow(0 0 30px #fff)}25%{transform:translateX(-14px) rotate(-6deg)}50%{transform:translateX(12px) rotate(5deg)}100%{transform:none}}
.bz-num{position:absolute;left:50%;top:10px;font-size:40px;font-weight:900;color:#ff3b5c;text-shadow:0 2px 0 #fff,0 0 18px #ff1e3c;animation:bznum 1.6s ease-out forwards;pointer-events:none}
@keyframes bznum{from{transform:translate(-50%,0) scale(.6);opacity:1}to{transform:translate(-50%,-90px) scale(1.4);opacity:0}}
.bz-name{font-weight:900;font-size:20px;letter-spacing:1px;color:var(--bz-acc);text-transform:uppercase}
.bz-hpbar{position:relative;height:26px;border-radius:14px;background:#00000066;border:2px solid #ffd43b88;overflow:hidden;margin:8px auto 0;max-width:520px}
.bz-hpbar i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#22c55e,#86efac);transition:width 1s cubic-bezier(.3,1.4,.5,1)}
.bz-hpbar i.mid{background:linear-gradient(90deg,#f59e0b,#fde047)}.bz-hpbar i.low{background:linear-gradient(90deg,#dc2626,#fb7185);animation:bzblink2 .8s infinite}
.bz-hpbar span{position:relative;font-weight:800;line-height:22px;color:#fff;text-shadow:0 1px 2px #000}
.bz-mine{border:2px solid var(--bz-acc);box-shadow:0 0 30px #ffd43b22}
.bz-mh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.bz-mine h3{margin:8px 0 4px}
.bz-mine .desc,.bz-mbox .desc{font-size:15px;line-height:1.45}
#boss .CodeMirror{height:auto;min-height:150px;border-radius:10px;border:1px solid var(--bz-pb);font-size:15px}
#boss .keyrow button{min-height:36px;padding:4px 10px;background:var(--bz-p);color:var(--bz-t);border:1px solid var(--bz-pb)}
.bz-out{background:#00000055;color:#e9ffe9;border-radius:10px;padding:8px;white-space:pre-wrap;min-height:20px;font-size:13px}
html[data-theme=light] .bz-out,html:not([data-theme]) .bz-out{background:#2a0b14;color:#fff}
.bz-reqc{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;background:linear-gradient(90deg,#ffd43b33,transparent);border:1px solid var(--bz-acc);border-radius:14px;padding:10px 12px;margin:10px 0;animation:bzin .4s}
.bz-pc{border-top:1px solid var(--bz-pb);padding:9px 0}.bz-pc:first-child{border-top:0}.bz-pc.done{opacity:.65}
.bz-pt{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.bz-pb{margin-top:2px}.bz-pb button{min-height:38px!important;padding:6px 12px;font-size:14px}
.bz-tag{display:inline-block;font-size:12px;padding:2px 8px;border-radius:10px;background:var(--bz-p);border:1px solid var(--bz-pb)}
.bz-tag.ok{color:#16a34a;border-color:#16a34a66}.bz-tag.fight{color:var(--bz-red);border-color:#ff3b5c66}
.bz-li{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0;border-top:1px dashed var(--bz-pb);animation:bzin .5s}.bz-li:first-of-type{border-top:0}
.bz-hit{color:var(--bz-red);font-weight:900}.bz-at{margin-left:auto}
.bz-done{border-color:#16a34a;text-align:center}
.bz-modal{position:fixed;inset:0;z-index:2050;background:#000a;display:flex;align-items:flex-end;justify-content:center}
.bz-mbox{background:var(--bz-card);color:var(--bz-t);width:100%;max-width:720px;max-height:88vh;overflow:auto;border-radius:18px 18px 0 0;padding:14px;border:1px solid var(--bz-pb);animation:bzup .3s}
html[data-theme=dark] .bz-mbox{background:#1b0f19}
@keyframes bzup{from{transform:translateY(40px);opacity:0}}
.bz-code{background:#0d1117;color:#e6edf3;border-radius:10px;padding:10px;white-space:pre-wrap;font-size:13px;min-height:60px}
/* победа */
.bz-won{text-align:center;padding-top:20px;animation:bzin .8s both}
.bz-boss.dead .bz-svg{width:170px;height:150px;animation:bzdie 2.2s forwards}
@keyframes bzdie{0%{filter:brightness(3)}30%{transform:rotate(-10deg)}100%{transform:translateY(40px) rotate(18deg) scale(.8);filter:grayscale(1) brightness(.6);opacity:.55}}
.bz-vt{font-size:clamp(32px,10vw,64px);margin:8px 0;color:var(--bz-acc);text-shadow:0 0 24px #ffd43b88,0 3px 0 #7a4b00;animation:bzslam .7s .3s both}
.bz-won .bz-panel{text-align:left}
/* учитель */
.bosscard{border:2px solid #b3001b;background:linear-gradient(135deg,#fff,#ffe4e8)}
html[data-theme=dark] .bosscard{background:linear-gradient(135deg,#1a2230,#3a0f1c)!important}
.bossbtn{background:linear-gradient(180deg,#ff4d6d,#b3001b);font-weight:800}
.bz-wait{background:var(--bz-card);border:1px solid var(--bz-pb);border-radius:14px;padding:12px;font-weight:700}
.bz-top{position:static;background:none;padding-bottom:0}
.bz-hpwrap{position:sticky;top:0;z-index:3;padding:8px 0;margin:0 -4px;background:linear-gradient(var(--bz-shade,#07050bee) 75%,transparent)}
html[data-theme=light] .bz-hpwrap,html:not([data-theme]) .bz-hpwrap{--bz-shade:#ffcfa8ee}
.bz-hpwrap .bz-hpbar{margin-top:0}
.bz-out:empty{display:none}
.bz-reqc>span:first-child{flex:1 1 200px}
html[data-theme=light] #boss .keyrow,html:not([data-theme]) #boss .keyrow{background:transparent}
a.btnlink{display:inline-block;padding:8px 14px;font-size:15px;border-radius:6px;background:var(--b);color:#fff;text-decoration:none;margin:4px 4px 0 0}a.btnlink.sec{background:#e3e8f2;color:#223}
html[data-theme=dark] a.btnlink.sec{background:#2a3446;color:#e5e9f0}
