:root{--bg: #0a0e17;--bg-deep: #070b13;--topbar: #0c1220;--panel: #101725;--panel-2: #141d30;--line: #1e2942;--line-2: #24314c;--text: #e8eefb;--text-2: #c6d0e2;--muted: #7c8aa6;--dim: #556080;--accent: #1e5bff;--accent-2: #4d82ff;--accent-border: #24407e;--accent-tint: #0f1a30;--gold: #f9bc13;--gold-border: #6b5410;--danger: #ff6b6b;--ok: #4ade80;--warn: #fbbf24;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}body{margin:0;font-family:Space Grotesk,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.auth{min-height:100vh;display:grid;place-items:center;background:radial-gradient(760px 380px at 50% -8%,#122043 0%,var(--bg) 62%)}.auth-card{width:400px;background:radial-gradient(700px 340px at 50% -8%,#122043,#0a0e17 62%);border:1px solid #1c2740;border-radius:16px;padding:40px 36px;box-shadow:0 24px 60px #0000008c}.auth-logo{display:block;width:128px;margin:0 auto}.auth-eyebrow{text-align:center;color:var(--dim);letter-spacing:4px;font-size:10px;margin-top:14px}.tagline{text-align:center;color:var(--muted);margin:12px 0 22px;font-size:13px}.tabs{display:flex;gap:8px;margin-bottom:16px}.tabs button{flex:1;background:var(--panel);color:var(--muted);border:1px solid var(--line);border-radius:9px;padding:9px;cursor:pointer}.tabs button.on{color:var(--text);border-color:var(--accent);background:var(--accent-tint);font-weight:600}form{display:flex;flex-direction:column;gap:10px}input,textarea,select{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:10px 12px;font-size:14px;font-family:inherit}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent-2)}button{background:var(--panel-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px 14px;cursor:pointer;font-size:14px}button.primary{background:var(--accent);color:#fff;border:none;font-weight:600;box-shadow:0 0 16px #1e5bff4d}button.primary:hover:not(:disabled){background:#2f6bff}button:disabled{opacity:.5;cursor:default}.error{color:var(--danger);font-size:13px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:13px 22px;border-bottom:1px solid #16203280;background:var(--topbar)}.brand{display:flex;align-items:center;gap:11px}.brand-logo{height:20px;display:block}.brand-tag{color:var(--dim);font-weight:500;font-size:11px;letter-spacing:1.5px;border-left:1px solid var(--line-2);padding-left:11px}.who{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:13px}.badge-admin{font-size:10px;letter-spacing:1px;font-weight:700;color:#fff;background:var(--accent);padding:2px 6px;border-radius:4px}.timer{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums;font-family:var(--mono)}.timer .timer-clock{font-size:22px;font-weight:600;letter-spacing:1px}.timer .timer-status{font-size:10px;font-weight:700;letter-spacing:1.5px;padding:2px 6px;border-radius:4px}.timer.idle{color:var(--muted);font-size:13px}.timer.running .timer-clock{color:var(--accent-2)}.timer.running .timer-status{color:var(--accent-2);border:1px solid var(--accent-border)}.timer.paused .timer-clock{color:var(--warn)}.timer.paused .timer-status{background:var(--warn);color:#2a220f}.timer.ended .timer-clock{color:var(--danger)}.timer.ended .timer-status{background:var(--danger);color:#2a1414}.admin-panel{max-width:1200px;margin:16px auto 0;padding:16px 24px}.admin-panel{background:var(--panel);border:1px solid var(--accent);border-radius:12px}.admin-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.admin-head h2{margin:0;font-size:16px}.admin-status{font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:3px 8px;border-radius:4px;background:var(--panel-2);color:var(--muted)}.admin-status.running{color:var(--ok)}.admin-status.paused{color:var(--warn)}.admin-status.ended{color:var(--danger)}.admin-controls{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.admin-controls .dur{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.admin-controls .dur input{width:90px}.admin-controls button.danger{border-color:var(--danger);color:var(--danger)}.admin-shell{max-width:none;margin:0;padding:0 22px}.admin-tabs{display:flex;gap:4px;margin:16px 0 0;border-bottom:1px solid var(--line)}.admin-tabs button{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);border-radius:0;padding:12px 18px;font-size:14px;font-weight:500}.admin-tabs button.on{color:var(--text);border-bottom-color:var(--accent)}.admin-tabs button:hover:not(.on){color:var(--text)}.tabpane[hidden]{display:none}.music-player{margin-left:auto;display:flex;align-items:center;gap:6px;padding-bottom:6px}.music-tracks{font-family:var(--mono);font-size:11px;color:var(--text-2);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:4px 6px;max-width:150px}.admin-tabs .music-btn{display:grid;place-items:center;width:26px;height:26px;padding:0;background:var(--panel-2);border:1px solid var(--line);border-radius:6px;color:var(--muted);border-bottom-width:1px}.admin-tabs .music-btn:hover{color:var(--text);border-color:var(--line-2)}.admin-tabs .music-btn.play.on{color:var(--accent-2);border-color:var(--accent-border);background:var(--accent-tint)}.music-vol{display:flex;align-items:center;gap:5px;color:var(--dim);margin-left:2px}.music-vol input[type=range]{width:70px;height:3px;padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--line-2);border:none;border-radius:2px}.music-vol input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:11px;height:11px;border-radius:50%;background:var(--accent-2);cursor:pointer}.music-vol input[type=range]::-moz-range-thumb{width:11px;height:11px;border:none;border-radius:50%;background:var(--accent-2);cursor:pointer}.admin-panels .admin-panel{max-width:760px;margin:20px 0 0;padding:20px}.admin-panels .layout{padding:8px 0 0}.scoreboard-xl{max-width:1100px;margin-top:20px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 24px}.xl-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}.xl-head h2{margin:0;font-size:20px}.live-dot{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--accent-2)}.live-dot:before{content:"● "}.xl-table{display:flex;flex-direction:column;gap:6px}.xl-row{display:grid;grid-template-columns:90px 1fr 160px 120px;align-items:center;padding:14px 18px;border-radius:10px;background:var(--panel-2);font-size:16px}.xl-progress{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}.xl-progress .dots{display:inline-flex;gap:5px}.xl-progress .dots i{width:10px;height:10px;border-radius:50%;background:var(--line);border:1px solid var(--line)}.xl-progress .dots i.on{background:var(--accent);border-color:var(--accent)}.xl-colhead .xl-progress,.xl-colhead span:nth-child(3){color:var(--muted)}.xl-row .xl-pts{text-align:right;font-weight:700;color:var(--accent-2);font-family:var(--mono);font-variant-numeric:tabular-nums}.xl-colhead{background:transparent;padding:4px 18px;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:1.5px}.xl-colhead .xl-pts{color:var(--dim);font-weight:500;font-family:inherit}.xl-rank{font-size:19px;font-family:var(--mono);font-variant-numeric:tabular-nums}.xl-name{font-weight:600}.xl-row.rank-1{background:linear-gradient(90deg,rgba(249,188,19,.16),var(--panel-2) 55%)}.xl-row.rank-1 .xl-rank,.xl-row.rank-1 .xl-pts{color:var(--gold)}.xl-row.rank-2{background:linear-gradient(90deg,rgba(203,213,225,.16),var(--panel-2) 60%)}.xl-row.rank-3{background:linear-gradient(90deg,rgba(180,120,80,.18),var(--panel-2) 60%)}.xl-row.me{outline:1px solid var(--accent)}.xl-empty{color:var(--muted);padding:18px;text-align:center}.xl-myrank{margin-top:14px;color:var(--muted);font-size:14px}.backend-cfg{max-width:860px;margin-top:20px;display:flex;flex-direction:column;gap:20px}.cfg-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 24px}.cfg-card h2{margin:0 0 14px;font-size:16px}.cfg-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.cfg-head h2{margin:0}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted);margin-bottom:12px}.field input,.field textarea{font-family:inherit}.field textarea{resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.cfg-actions{display:flex;align-items:center;gap:12px}.cfg-actions .hint{color:var(--muted);font-size:12px}.reg-badge{font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:3px 8px;border-radius:4px}.reg-badge.open{background:#4ade8026;color:var(--ok)}.reg-badge.closed{background:#ff6b6b26;color:var(--danger)}.pool-stats{display:flex;gap:28px;margin-bottom:16px}.pool-stats .stat{display:flex;flex-direction:column}.pool-stats .num{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.pool-stats .num.accent{color:var(--accent)}.pool-stats .lbl{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.slots{margin-top:16px;display:flex;flex-direction:column;gap:6px}.slot-row{display:grid;grid-template-columns:44px 1fr 160px;gap:12px;align-items:center}.slot-head{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:0 4px 2px}.slot-num{color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}.slot-row input.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;width:100%}.slot-row input.mono[readonly]{color:var(--muted);background:var(--panel)}.slot-row .asg{color:var(--accent);font-weight:600}.slot-row .free{color:var(--ok)}.slot-row .empty{color:var(--muted)}.cfg-msg{border-radius:10px;padding:10px 14px;font-size:14px}.cfg-msg.ok{background:#0f2a1e;border:1px solid var(--ok);color:var(--ok)}.cfg-msg.error{background:#2a1414;border:1px solid var(--danger);color:var(--danger)}.reg-closed{background:#2a1414;border:1px solid var(--danger);color:var(--danger);border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:14px}.level-design{max-width:1200px;margin-top:20px;display:grid;grid-template-columns:220px 1fr;gap:20px;align-items:start}.ld-list{display:flex;flex-direction:column;gap:6px}.ld-item{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:center;text-align:left;padding:10px;background:var(--panel)}.ld-item.on{border-color:var(--accent-2)}.ld-item.disabled{opacity:.5}.ld-num{color:var(--muted);text-align:center}.ld-name{font-size:13px}.ld-add{margin-top:6px;border-style:dashed;color:var(--muted)}.ld-editor{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 24px}.ld-editor-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ld-editor-head h2{margin:0;font-size:18px}.ld-enabled{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.ld-enabled input{width:auto}.ld-editor .field input.mono,.ld-editor .field textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.module{border:1px solid var(--line);border-radius:10px;margin:10px 0;background:var(--panel);overflow:hidden}.module.open{border-color:var(--accent-2)}.module-head{width:100%;display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--panel-2);border:none;border-radius:0;text-align:left;cursor:pointer}.module-head:hover{background:var(--line)}.module-caret{color:var(--muted);width:14px;font-size:12px}.module-title{font-weight:600;font-size:14px;flex:1}.module-summary{color:var(--muted);font-size:12px;background:var(--panel);padding:2px 8px;border-radius:999px;border:1px solid var(--line)}.module-body{padding:14px}.module-body .field:last-child{margin-bottom:0}.filters{display:flex;flex-direction:column;gap:10px}.filter-card{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.filter-card.unknown{display:flex;justify-content:space-between;color:var(--warn)}.filter-head{display:flex;align-items:center;justify-content:space-between}.filter-x{background:none;border:none;color:var(--muted);font-size:18px;padding:0 6px}.filter-desc{color:var(--muted);font-size:12px;margin:4px 0 10px}.filter-param{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.filter-param label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.filter-add{display:flex;gap:8px}.filter-add select{flex:1}.wysiwyg{border:1px solid var(--line);border-radius:10px;overflow:hidden}.wysiwyg-toolbar{display:flex;flex-wrap:wrap;gap:4px;padding:8px;background:var(--panel-2);border-bottom:1px solid var(--line)}.wysiwyg-toolbar button{padding:4px 8px;font-size:12px;background:var(--panel)}.wysiwyg-toolbar button.on{border-color:var(--accent);color:var(--accent)}.wysiwyg-body{padding:12px 14px;min-height:140px;background:var(--bg)}.wysiwyg-body .ProseMirror{outline:none;min-height:120px}.wysiwyg-body .ProseMirror:focus{outline:none}.wysiwyg-body img{max-width:100%;border-radius:6px}.wysiwyg-body h2{font-size:18px}.wysiwyg-body h3{font-size:15px}.wysiwyg-body pre{background:var(--panel-2);padding:10px;border-radius:8px;overflow-x:auto}.wysiwyg-body code{font-family:ui-monospace,Menlo,monospace}.wysiwyg-body blockquote{border-left:3px solid var(--line);margin:8px 0;padding-left:12px;color:var(--muted)}.briefing-chip{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--accent-2);background:var(--accent-tint);border:1px solid var(--accent-border);border-radius:999px;padding:5px 12px;margin-bottom:12px;cursor:pointer}.briefing-chip:hover{border-color:var(--accent)}.modal.briefing-modal{width:660px;max-width:92vw;max-height:78vh;padding:0;overflow:hidden;display:flex;flex-direction:column}.briefing-modal-head{flex:none;display:flex;align-items:center;gap:11px;padding:18px 24px;border-bottom:1px solid var(--line);margin:0}.briefing-mark{width:20px;height:20px;display:block;flex:none}.briefing-modal-head h3{margin:0;font-size:17px;font-weight:600;flex:1}.briefing-close{background:none;border:none;color:var(--muted);padding:0 4px;cursor:pointer}.briefing-close:hover{color:var(--text)}.briefing-modal-body{flex:1;min-height:0;overflow-y:auto;padding:20px 24px}.briefing-modal-body .training-body{max-width:60ch}.briefing-modal-foot{flex:none;display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-top:1px solid var(--line)}.briefing-foot-meta{font-size:12px;color:var(--dim)}.training-body blockquote{position:relative;margin:12px 0;padding:12px 14px 12px 20px;border:1px solid var(--accent-border);background:var(--accent-tint);border-radius:11px;color:var(--text-2)}.training-body blockquote:before{content:"";position:absolute;left:9px;top:12px;bottom:12px;width:3px;background:var(--accent);border-radius:2px}.training-body blockquote p{margin:0}.celebrate{position:relative;width:440px;max-width:92vw;overflow:hidden;background:var(--panel);border:1px solid var(--gold-border);border-radius:16px;padding:30px 28px;text-align:center;box-shadow:0 24px 60px #00000080,0 0 40px #f9bc131a}.celebrate-glow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(320px 220px at 50% 18%,rgba(249,188,19,.14),transparent 70%)}.celebrate>*:not(.celebrate-glow){position:relative}.celebrate-ring{width:60px;height:60px;margin:0 auto 16px;border-radius:50%;background:#f9bc131f;border:1px solid var(--gold);color:var(--gold);display:grid;place-items:center;box-shadow:0 0 24px #f9bc1347;animation:celebrate-pulse 2s infinite}@keyframes celebrate-pulse{0%,to{box-shadow:0 0 20px #f9bc1333}50%{box-shadow:0 0 34px #f9bc136b}}.celebrate h2{margin:0 0 4px;font-size:22px;font-weight:700}.celebrate-sub{margin:0 0 16px;color:var(--muted);font-size:13px}.celebrate-flag{font-family:var(--mono);font-size:14px;color:var(--gold);background:var(--bg-deep);border:1px solid var(--line-2);border-radius:10px;padding:12px;letter-spacing:1px;margin-bottom:14px;word-break:break-all}.celebrate-pts{display:inline-flex;align-items:baseline;gap:7px;font-size:15px;font-weight:700;color:var(--ok);margin-bottom:16px}.celebrate-pts .cp-num{font-family:var(--mono)}.celebrate-pts .cp-lbl{font-weight:500;color:var(--muted)}.celebrate-take{text-align:left;background:var(--accent-tint);border:1px solid var(--accent-border);border-radius:11px;padding:13px 15px;font-size:13px;line-height:1.55;color:var(--text-2);margin-bottom:18px}.celebrate-take b{color:var(--accent-2)}.celebrate-next{width:100%}.training-body{margin-top:4px;line-height:1.55;font-size:13px}.training-body img{max-width:100%;border-radius:6px;margin:8px 0}.training-body h1{font-size:16px}.training-body h2{font-size:14px}.training-body h3{font-size:13px}.training-body h1,.training-body h2,.training-body h3,.training-body h4{margin:10px 0 5px}.training-body pre{background:var(--panel);padding:10px;border-radius:8px;overflow-x:auto}.training-body a{color:var(--accent-2)}.training-body ul,.training-body ol{padding-left:22px}.gate-notice{background:#2a220f;border:1px solid var(--warn);color:var(--warn);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:14px}.layout{display:grid;grid-template-columns:1fr 320px;gap:22px;padding:22px 28px;max-width:1360px;margin:0 auto}.game{display:grid;grid-template-columns:220px 1fr;gap:20px;align-items:start}.levels{display:flex;flex-direction:column;gap:6px;position:sticky;top:16px}.levels:before{content:"Levels";font-size:10px;letter-spacing:1.5px;color:var(--dim);text-transform:uppercase;margin:2px}.level{display:grid;grid-template-columns:24px 1fr 14px;gap:9px;align-items:center;text-align:left;padding:10px 11px;background:var(--panel)}.level.on{border-color:var(--accent);background:var(--accent-tint);box-shadow:0 0 0 1px #1e5bff33}.level.on .lv-num{color:var(--accent-2)}.level.on .lv-name{font-weight:600}.level.solved .lv-badge{color:var(--gold)}.level.locked{opacity:.5}.lv-num{color:var(--dim);font-size:12px;font-family:var(--mono)}.lv-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.level{border-radius:9px}.play{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 24px;display:flex;flex-direction:column}.play-head{display:flex;align-items:center;gap:11px}.play-head h2{margin:0;font-size:20px;font-weight:600}.level-badge{font-size:10px;letter-spacing:1px;color:var(--accent-2);border:1px solid var(--accent-border);background:#1e5bff14;padding:2px 8px;border-radius:999px}.play h2{margin:0;font-size:20px}.objective{color:var(--muted);margin:7px 0 14px;font-size:14px;line-height:1.5;max-width:640px}.play textarea{width:100%;resize:vertical}.actions{display:flex;gap:10px;margin:12px 0}.chat{margin-top:16px;min-height:260px;max-height:56vh;overflow-y:auto;display:flex;flex-direction:column;gap:9px;padding:16px;background:var(--bg-deep);border:1px solid #16203280;border-radius:12px}.chat-empty{color:#8494ab;font-size:14px;line-height:1.5;margin:auto;text-align:center;max-width:340px;display:flex;flex-direction:column;align-items:center;gap:12px}.chat-empty-icon{color:var(--accent-2);opacity:.5}.bubble{max-width:min(88%,780px);padding:9px 12px;border-radius:14px;font-size:13px;line-height:1.5}.bubble pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit}.bubble.user{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}.bubble.assistant{align-self:flex-start;background:var(--panel-2);border:1px solid var(--line-2);border-bottom-left-radius:4px;color:var(--text-2)}.bubble.assistant.blocked{border-color:var(--gold)}.bubble.assistant.error{border-color:var(--danger);color:var(--danger)}.bubble.assistant.blur-bubble{position:relative;overflow:hidden;min-width:300px;min-height:56px;border-color:var(--gold);border-style:dashed}.bubble.assistant.blur-bubble.blocked{border-color:var(--danger);border-style:solid}.blur-content{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit;color:var(--muted);filter:blur(5px);-webkit-user-select:none;user-select:none;min-height:1.5em;animation:blur-flicker 2.4s ease-in-out infinite}.blur-bubble.blocked .blur-content{filter:blur(5px) saturate(.6);animation:none;opacity:.8}@keyframes blur-flicker{0%,to{opacity:.55}50%{opacity:.8}}.blur-bubble.evaluating:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(100deg,transparent 30%,rgba(249,188,19,.16) 50%,transparent 70%);background-size:220% 100%;animation:blur-sweep 1.5s linear infinite}@keyframes blur-sweep{0%{background-position:120% 0}to{background-position:-120% 0}}.blur-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:4px}.blur-label{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:12px;font-weight:600;letter-spacing:.3px;padding:5px 12px;border-radius:999px;background:#0a0e17d9;border:1px solid var(--gold);color:var(--gold);box-shadow:0 2px 10px #0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.blur-label.blocked{border-color:var(--danger);color:var(--danger)}.eval-spinner{width:12px;height:12px;flex:none;border:2px solid rgba(249,188,19,.25);border-top-color:var(--gold);border-radius:50%;animation:eval-spin .7s linear infinite}@keyframes eval-spin{to{transform:rotate(360deg)}}.eval-dots{display:inline-flex}.eval-dots i{width:3px;height:3px;margin-left:2px;border-radius:50%;background:var(--gold);opacity:.3;align-self:flex-end;margin-bottom:2px;animation:eval-blink 1.2s infinite}.eval-dots i:nth-child(2){animation-delay:.2s}.eval-dots i:nth-child(3){animation-delay:.4s}@keyframes eval-blink{0%,60%,to{opacity:.3}30%{opacity:1}}.bubble.assistant.revealed{animation:blur-in .55s ease both}@keyframes blur-in{0%{filter:blur(6px);opacity:0}to{filter:blur(0);opacity:1}}.doc-editor{display:flex;flex-direction:column;gap:6px}.doc-frame-text{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit;color:var(--muted);font-size:13px;padding:2px}.doc-slot{border:1px dashed var(--warn);border-radius:10px;overflow:hidden;background:#221d0f}.doc-slot-label{font-size:11px;font-weight:600;letter-spacing:.3px;color:var(--warn);padding:6px 10px;background:#f0be461a;border-bottom:1px dashed var(--warn)}.doc-input{width:100%;border:none;background:transparent;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;padding:10px;color:var(--text)}.doc-input:focus{outline:none}.composer{margin-top:12px;display:flex;flex-direction:column;gap:8px}.composer textarea{width:100%;resize:vertical;background:var(--bg-deep);border-color:var(--line-2)}.composer-actions{display:flex;gap:10px;justify-content:flex-end}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;z-index:50}.modal{width:420px;max-width:92vw;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px}.modal h3{margin:0 0 4px}.modal-hint{color:var(--muted);font-size:13px;margin:0 0 14px}.modal input{width:100%}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.reset-options{display:flex;flex-direction:column;gap:10px;margin:4px 0}.reset-option{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;padding:12px 14px;background:var(--panel-2)}.reset-option span{color:var(--muted);font-size:12px}.reset-option.danger{border-color:var(--danger)}.reset-option.danger strong{color:var(--danger)}.flag-result{margin-top:12px;padding:8px 12px;border-radius:8px;font-size:14px}.flag-result.ok{background:#0f2a1e;border:1px solid var(--ok);color:var(--ok)}.flag-result.no{background:#2a1414;border:1px solid var(--danger);color:var(--danger)}.hangman-toggle{display:flex;align-items:center;gap:8px;font-size:14px}.hangman-toggle input{width:auto}.hangman-note{color:var(--muted);font-size:12px;margin:8px 0 4px;line-height:1.5}.reply,.status{border-radius:10px;padding:12px;margin-top:12px}.reply{background:var(--panel-2);border:1px solid var(--line)}.reply-label{color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px}.reply pre,.status pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit}.flag-hit{background:var(--gold);color:#1a1400;padding:0 3px;border-radius:3px;font-weight:700}.flag-progress{display:flex;align-items:center;gap:11px;margin-top:10px;padding:10px 13px;background:var(--bg-deep);border:1px solid var(--line);border-radius:11px}.flag-progress-label{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim)}.flag-progress-value{font-family:var(--mono);font-size:16px;letter-spacing:2px;color:var(--gold)}.status.solved{background:#0f2a1e;border:1px solid var(--ok)}.status.blocked{background:#2a220f;border:1px solid var(--warn)}.status.fail,.status.error{background:#2a1414;border:1px solid var(--danger)}.hint-btn{background:var(--panel-2);border:1px solid var(--line);color:var(--muted);opacity:.6;transition:opacity .2s,border-color .2s,color .2s,box-shadow .2s}.hint-btn.lit{opacity:1;color:var(--gold);border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 0 12px #f9bc1359;animation:hint-pulse 1.8s ease-in-out infinite}@keyframes hint-pulse{0%,to{box-shadow:0 0 0 1px var(--gold),0 0 8px #f9bc1340}50%{box-shadow:0 0 0 1px var(--gold),0 0 16px #f9bc1380}}.hint-list{display:flex;flex-direction:column;gap:10px}.hint-item{padding:12px 14px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px}.hint-item.locked{opacity:.65}.hint-item-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.hint-cost{font-size:12px;color:var(--gold);font-weight:600}.hint-cost.free{color:var(--ok)}.hint-text{margin:0;white-space:pre-wrap;word-break:break-word;line-height:1.5}.hint-locked{font-size:13px;color:var(--muted)}.req-list{display:flex;flex-direction:column;gap:6px;margin-top:6px}.req-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:14px}.req-item input{width:auto}.req-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);min-width:18px}.req-name{color:var(--text)}.hint-edit{padding:12px 14px;margin-bottom:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px}.hint-edit-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.hint-edit-nums{display:flex;gap:12px}.hint-edit-nums>*{flex:1}.scoreboard{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;height:fit-content}.sb-head{display:flex;align-items:center;gap:9px;margin-bottom:13px}.sb-head h2{margin:0;font-size:15px;font-weight:600}.sb-head .live-dot{margin-left:auto}.board{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.board li{display:grid;grid-template-columns:30px 1fr auto auto;gap:8px;padding:9px 11px;border-radius:9px;background:var(--panel-2);align-items:center}.board li:first-child:not(.empty){background:linear-gradient(90deg,rgba(249,188,19,.16),var(--panel-2) 62%)}.board li:first-child:not(.empty) .rank{color:var(--gold)}.board li:first-child:not(.empty) .pts{color:var(--gold)}.board li:first-child:not(.empty) .sb-dots i.on{background:var(--gold)}.board li.me{outline:1px solid var(--accent)}.board li.empty{grid-template-columns:1fr}.board .rank{color:var(--muted);font-family:var(--mono);font-size:13px}.board .name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board .pts{color:var(--accent-2);font-weight:700;font-family:var(--mono);font-size:13px}.board .empty{color:var(--muted);background:none}.sb-dots{display:inline-flex;gap:3px;align-items:center}.sb-dots i{width:5px;height:5px;border-radius:50%;background:var(--line-2)}.sb-dots i.on{background:var(--accent)}.myrank{margin-top:13px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}.myrank b{color:var(--text)}.xl-row.rank-1 .xl-progress .dots i.on{background:var(--gold);border-color:var(--gold)}.app-fit{height:100vh;overflow:hidden;display:flex;flex-direction:column}.app-fit .topbar{flex:none}.app-fit .layout{flex:1;min-height:0;max-width:none;margin:0;grid-template-columns:1fr 336px;padding:24px 30px}.app-fit .game{height:100%;min-height:0;align-items:stretch;grid-template-columns:250px 1fr}.app-fit .levels{position:static;min-height:0;overflow-y:auto;padding-right:2px}.app-fit .play{height:100%;min-height:0}.app-fit .chat{flex:1;min-height:0;max-height:none}.app-fit .composer{flex:none}.app-fit .scoreboard{height:100%;min-height:0;overflow-y:auto}.hint-btn,.hint-locked,.status.solved strong{display:inline-flex;align-items:center;gap:6px}.doc-slot-label{display:flex;align-items:center;gap:6px}.lv-badge{display:inline-flex;align-items:center;justify-content:center;color:var(--dim)}.briefing-close{display:inline-flex;align-items:center}.blur-label svg,.briefing-chip svg,.hint-btn svg{flex:none}.mnav,.sheet-overlay{display:none}@media(max-width:760px){.app-fit .layout,.layout{grid-template-columns:1fr;padding:12px 12px 76px}.game,.app-fit .game{grid-template-columns:1fr}.levels,.scoreboard{display:none}.topbar{padding:11px 14px}.brand-logo{height:18px}.play{padding:16px}.play-head h2{font-size:18px}.mnav{display:flex;justify-content:space-around;align-items:center;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:8px 8px calc(8px + env(safe-area-inset-bottom,0px));background:var(--topbar);border-top:1px solid #16203280}.mnav-btn{background:none;border:none;color:var(--muted);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;padding:2px 16px}.mnav-btn.on{color:var(--accent-2);font-weight:600}.sheet-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:#0000008c}.sheet{position:absolute;left:0;right:0;bottom:0;height:84%;background:var(--panel);border-top:1px solid var(--line);border-radius:22px 22px 0 0;box-shadow:0 -20px 50px #00000080;display:flex;flex-direction:column;overflow:hidden;animation:sheet-up .25s ease}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-handle{width:40px;height:5px;border-radius:99px;background:#2a3854;margin:10px auto;flex:none}.seg{flex:none;margin:0 18px 14px;display:flex;background:var(--topbar);border:1px solid var(--line);border-radius:11px;padding:4px}.seg button{flex:1;background:none;border:none;border-radius:8px;padding:9px;color:var(--muted);font-size:14px;cursor:pointer}.seg button.on{background:var(--accent);color:#fff;font-weight:600}.sheet-body{flex:1;overflow-y:auto}.sheet-progress{display:flex;justify-content:space-between;align-items:center;padding:0 18px 8px}.sheet-progress span:first-child{font-size:12px;color:var(--dim);letter-spacing:1px;text-transform:uppercase}.sheet-progress span:last-child{font-size:12px;color:var(--muted);font-family:var(--mono)}.sheet-level{width:100%;display:flex;align-items:center;gap:12px;padding:14px 18px;background:none;border:none;border-bottom:1px solid #16203280;color:var(--text);text-align:left;cursor:pointer;font-size:15px}.sl-num{width:28px;height:28px;flex:none;border-radius:8px;background:var(--panel-2);color:var(--muted);display:grid;place-items:center;font-family:var(--mono);font-size:12px}.sl-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet-level.solved .sl-num{background:#f9bc131f;color:var(--gold)}.sheet-level.solved svg{color:var(--gold)}.sheet-level.locked{opacity:.5}.sheet-level.locked svg{color:var(--dim)}.sheet-level.now{background:linear-gradient(90deg,rgba(30,91,255,.12),transparent);box-shadow:inset 3px 0 0 var(--accent)}.sheet-level.now .sl-num{background:#1e5bff2e;color:var(--accent-2)}.sheet-level.now .sl-name{font-weight:600}.sl-now{font-size:11px;color:var(--accent-2);font-weight:600}.sheet-rank{display:grid;grid-template-columns:44px 1fr auto;gap:10px;align-items:center;padding:14px 18px;border-bottom:1px solid #16203280}.sheet-rank:first-child{background:linear-gradient(90deg,rgba(249,188,19,.14),transparent 70%)}.sheet-rank:first-child .sr-rank{color:var(--gold)}.sheet-rank.me{box-shadow:inset 3px 0 0 var(--accent)}.sr-rank{color:var(--muted);font-family:var(--mono)}.sr-name{font-weight:600}.sr-name em{font-style:normal;color:var(--accent-2);font-size:11px;font-weight:500}.sr-pts{color:var(--accent-2);font-weight:700;font-family:var(--mono)}.sheet-empty{padding:24px;text-align:center;color:var(--muted)}}.help-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;background:none;border:1px solid var(--line-2);border-radius:8px;color:var(--muted);cursor:pointer}.help-btn:hover{color:var(--text);border-color:var(--accent)}.htp{width:640px;max-width:92vw;height:528px;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:0 30px 70px #00000080;color:var(--text)}.htp-hd{flex:none;display:flex;align-items:center;gap:10px;padding:15px 20px;border-bottom:1px solid var(--line)}.htp-hd img{display:block}.htp-hd-title{font-weight:700;font-size:15px;flex:1}.htp-hd-step{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:1px}.htp-x{display:inline-flex;align-items:center;justify-content:center;padding:0;background:none;border:none;cursor:pointer}.htp-stage{flex:1;min-height:0;position:relative;display:grid;place-items:center;padding:20px;overflow:hidden;background:radial-gradient(300px 200px at 50% 40%,rgba(30,91,255,.08),transparent 70%)}.htp-text{flex:none;padding:8px 24px 0;text-align:center}.htp-text h3{margin:0 0 6px;font-size:19px;font-weight:700}.htp-text p{margin:0 auto;font-size:14px;line-height:1.6;color:var(--text-2);max-width:46ch}.htp-ft{flex:none;display:flex;align-items:center;justify-content:space-between;padding:16px 20px 18px}.htp-back{padding:9px 16px;border-radius:9px;background:var(--panel-2);border:1px solid var(--line-2);color:var(--muted);font-size:13px;font-family:inherit;cursor:pointer}.htp-back:disabled{opacity:.45;cursor:default}.htp-next{padding:9px 18px;border-radius:9px;background:var(--accent);border:none;color:#fff;font-weight:600;font-size:13px;font-family:inherit;cursor:pointer;box-shadow:0 0 16px #1e5bff52}.htp-dots{display:flex;gap:7px;align-items:center}.htp-dot{height:8px;width:8px;border-radius:99px;background:#2a3854;cursor:pointer;transition:all .25s}.htp-dot.on{width:22px;background:var(--accent)}.htp-card{box-sizing:border-box}.htp-brief{width:250px;max-width:90%;background:#0c1220;border:1px solid var(--line-2);border-radius:12px;padding:16px;box-shadow:0 14px 34px #00000073;animation:iwfloat 3.2s ease-in-out infinite}.htp-brief-hd{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:600;font-size:14px;color:var(--accent-2)}.htp-skel{display:block;height:7px;border-radius:4px;background:var(--line);margin-bottom:7px}.htp-brief-code{border:1px solid var(--accent-border);background:var(--accent-tint);border-radius:8px;padding:8px 10px;font-family:var(--mono);font-size:11px;line-height:1.5;color:#9fb3d6;margin-top:5px}.htp-brief-code b{color:var(--gold);font-weight:400}.htp-talk{width:290px;max-width:94%;display:flex;flex-direction:column;gap:9px}.htp-bub{max-width:90%;padding:8px 12px;font-size:13px;line-height:1.45}.htp-bub.user{align-self:flex-end;max-width:88%;background:var(--accent);color:#fff;border-radius:13px 13px 4px;animation:iwpopin .5s ease both}.htp-bub.bot{align-self:flex-start;background:var(--panel-2);border:1px solid var(--line-2);color:#cdd6e5;border-radius:13px 13px 13px 4px;animation:iwpopin .5s ease .55s both}.htp-mono-gold{color:var(--gold);font-family:var(--mono)}.htp-typing{align-self:flex-start;display:inline-flex;gap:4px;padding:9px 12px;background:var(--panel-2);border:1px solid var(--line-2);border-radius:13px}.htp-typing i{width:5px;height:5px;border-radius:50%;background:var(--muted);animation:iwdot 1.2s infinite}.htp-typing i:nth-child(2){animation-delay:.2s}.htp-typing i:nth-child(3){animation-delay:.4s}.htp-track{width:300px;max-width:94%}.htp-track-chip{position:relative;overflow:hidden;background:#0c1220;border:1px solid var(--line);border-radius:11px;padding:14px 16px;display:flex;align-items:center;gap:10px}.htp-track-lbl{font-size:10px;letter-spacing:1.5px;color:var(--dim)}.htp-track-val{font-family:var(--mono);font-size:15px;letter-spacing:2px;color:var(--gold)}.htp-shimmer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(100deg,transparent 35%,rgba(249,188,19,.2) 50%,transparent 65%);background-size:220% 100%;animation:iwshimmer 1.8s linear infinite}.htp-track-bar{margin-top:10px;height:6px;border-radius:99px;background:var(--line);overflow:hidden}.htp-track-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--gold));animation:iwfill 2.2s ease-in-out infinite alternate}.htp-track-count{margin-top:7px;text-align:center;font-size:11px;color:var(--muted);font-family:var(--mono)}.htp-hint{display:flex;flex-direction:column;align-items:center;gap:14px;width:260px;max-width:94%}.htp-hint-pill{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--gold);border-radius:10px;color:var(--gold);font-size:14px;font-weight:600;box-shadow:0 0 16px #f9bc1340;animation:iwglowpulse 1.8s infinite}.htp-hint-card{width:100%;box-sizing:border-box;background:var(--panel-2);border:1px solid var(--line-2);border-radius:11px;padding:12px 14px;animation:iwpopin .5s ease both}.htp-hint-row{display:flex;justify-content:space-between;margin-bottom:6px}.htp-hint-row b{font-size:13px}.htp-hint-row span{font-size:12px;color:var(--gold);font-weight:600}.htp-hint-card p{margin:0;font-size:13px;color:var(--text-2);line-height:1.5}.htp-submit{display:flex;flex-direction:column;align-items:center;gap:15px;width:270px;max-width:94%}.htp-submit-input{width:100%;box-sizing:border-box;background:var(--bg-deep);border:1px solid var(--accent);border-radius:10px;padding:12px 13px;font-family:var(--mono);font-size:14px;color:var(--gold);letter-spacing:1px}.htp-caret{border-left:1.5px solid var(--accent);animation:iwblink 1.1s step-end infinite}.htp-submit-ok{display:inline-flex;align-items:center;gap:9px;color:var(--ok);font-weight:700;font-size:15px}.htp-submit-check{width:30px;height:30px;border-radius:50%;background:#4ade801f;border:1px solid var(--ok);display:grid;place-items:center;animation:iwglowpulse 1.6s infinite}@keyframes iwfloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes iwfill{0%{width:14%}to{width:86%}}@keyframes iwpopin{0%{opacity:0;transform:translateY(9px) scale(.96)}to{opacity:1;transform:none}}@keyframes iwblink{0%,48%{opacity:1}49%,to{opacity:0}}@keyframes iwshimmer{0%{background-position:140% 0}to{background-position:-140% 0}}@keyframes iwdot{0%,60%,to{opacity:.3}30%{opacity:1}}@keyframes iwglowpulse{0%,to{opacity:.5}50%{opacity:1}}@media(max-width:760px){.htp-overlay{padding:0}.htp{width:100%;height:100%;max-width:none;max-height:none;border:none;border-radius:0;box-shadow:none}}.app-body{position:relative}.app-fit .app-body{flex:1;min-height:0;display:flex;flex-direction:column}.htp-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0e178c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.admin-status.countdown{color:var(--accent-2)}.countdown-live{font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:5px}.countdown-live b{font-family:var(--mono);color:var(--accent-2);font-size:15px}.countdown-live em{font-style:normal;color:var(--warn)}.timer.countdown .timer-clock{color:var(--accent-2)}.timer.countdown .timer-status{color:var(--accent-2);border:1px solid var(--accent-border)}.timer.warn .timer-clock{color:var(--gold);animation:timer-breathe 2s ease-in-out infinite}.timer.warn .timer-status{color:var(--gold);border:1px solid var(--gold-border);background:transparent}.timer.critical .timer-clock{color:var(--danger);animation:timer-throb .7s ease-in-out infinite}.timer.critical .timer-status{color:var(--danger);border:1px solid var(--danger);background:transparent}@keyframes timer-breathe{0%,to{opacity:.72}50%{opacity:1}}@keyframes timer-throb{0%,to{opacity:.62;transform:scale(1)}50%{opacity:1;transform:scale(1.09)}}.htp-overlay{animation:htp-in .5s ease}.htp-overlay.htp-closing{animation:htp-out .6s ease forwards;pointer-events:none}@keyframes htp-in{0%{opacity:0}to{opacity:1}}@keyframes htp-out{to{opacity:0}}.gameover-overlay{display:flex;align-items:center;justify-content:center}.gameover{text-align:center;padding:8px 16px;animation:gameover-rise .55s cubic-bezier(.2,.8,.2,1) both}.gameover-eyebrow{font-size:12px;font-weight:700;letter-spacing:3px;text-transform:uppercase;color:var(--danger);opacity:.85}.gameover-title{font-size:clamp(52px,12vw,108px);line-height:1;font-weight:800;letter-spacing:-1px;margin:10px 0 4px;color:#fff;text-shadow:0 0 32px rgba(255,107,107,.45)}@keyframes gameover-rise{0%{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}.scoreboard.sb-hidden,.scoreboard-xl.sb-hidden{position:relative;overflow:hidden}.sb-hidden .sb-inner{filter:blur(9px);pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.85}.sb-veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:16px;animation:htp-in .4s ease}.sb-veil-eyebrow{font-size:11px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--gold)}.sb-veil-title{font-size:clamp(17px,2vw,26px);font-weight:800;line-height:1.15;color:#fff;max-width:16ch;text-shadow:0 0 20px rgba(0,0,0,.5)}.sb-veil-ico{color:var(--muted)}.sb-veil-caption{font-size:13px;font-weight:600;color:var(--muted)}.sb-vis{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:11px}.sb-vis-head{font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin:0}.sb-vis-row{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--text-2);cursor:pointer}.sb-vis-row input[type=checkbox]{margin-top:2px;width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex:none}.sb-vis-row>span{display:flex;flex-direction:column;gap:2px}.sb-vis-row small{color:var(--muted);font-size:12px;font-weight:400}.sb-vis-row.inline{align-items:center;gap:8px}.sb-vis-row.inline>span{flex-direction:row}.sb-vis-row.inline input[type=number]{width:62px;margin-top:0}
