:root{color:#f0f6fc;font-synthesis-weight:none;text-rendering:optimizelegibility;--bg:#0d1117;--panel:#0d1117;--panel-alt:#111820;--line:#30363d;--line-soft:#21262d;--text:#f0f6fc;--muted:#8b949e;--green:#3fb98c;--red:#d46a55;--blue:#5b7cfa;--fail:#d46a55;background:#0d1117;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.45}html,body,#app{width:100%;min-height:100%;margin:0}*{box-sizing:border-box}body{background:var(--bg)}*{scrollbar-width:thin;scrollbar-color:#30363d #0b1016}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#0b1016}::-webkit-scrollbar-thumb{background:#30363d;border:2px solid #0b1016;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#3f4a56}button,input,select,textarea{font:inherit}button{border:1px solid var(--line);min-height:32px;color:var(--text);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:6px 10px;font-weight:700;display:inline-flex}button:hover:not(:disabled){border-color:var(--green);color:var(--green)}button.danger:hover:not(:disabled){border-color:var(--red);color:#fff;background:#d46a551f}button.primary:hover:not(:disabled),button.success:hover:not(:disabled){border-color:var(--green);color:#fff}button:disabled{cursor:not-allowed;opacity:.45}button.primary,button.success{border-color:var(--green);background:var(--green);color:#fff}button.danger{border-color:var(--red);color:#ffd8d0}button.ghost{background:0 0}.icon-only{width:32px;padding:0}input,select,textarea{border:1px solid var(--line);width:100%;min-height:32px;color:var(--text);background:#0b1016;border-radius:6px;padding:6px 8px}input:focus,select:focus,textarea:focus{border-color:var(--green);outline:0}textarea{resize:vertical;max-height:120px}a{color:var(--green);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:800;text-decoration:none}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:middle;padding:7px 6px}th{color:var(--muted);font:800 11px/1.2 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}td,code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.muted{color:var(--muted)}.topbar{z-index:20;border-bottom:1px solid var(--line);background:var(--bg);grid-template-columns:auto minmax(120px,1fr) auto;align-items:center;gap:10px;min-height:52px;padding:8px 12px;display:grid;position:sticky;top:0}.brand{border-color:#0000;justify-content:flex-start;padding-left:0;font-size:16px;font-weight:900}.brand em{color:var(--muted);font:700 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.status-pill,.session-user{align-items:center;gap:6px;display:inline-flex}.status-pill{border:1px solid var(--line);min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;overflow:hidden}.status-pill.error{border-color:var(--red);color:#ffd8d0;background:#d46a551a}.session{position:relative}.session-menu{z-index:30;border:1px solid var(--line);background:var(--bg);min-width:150px;padding:6px;position:absolute;top:calc(100% + 6px);right:0}.home-grid,.room-grid{gap:14px;padding:14px;display:grid}.home-grid{grid-template-columns:minmax(320px,.9fr) minmax(360px,1fr) minmax(360px,1fr) minmax(260px,.7fr);height:calc(100vh - 52px);min-height:calc(100vh - 52px)}.room-grid{grid-template:"head head head""roster roster roster""comms submissions problems"minmax(0,1fr)/minmax(320px,1fr) minmax(300px,.85fr) minmax(360px,1fr);height:calc(100vh - 52px);min-height:620px}.panel,.command-panel,.arena-head{border:1px solid var(--line);background:var(--panel);border-radius:8px;min-width:0;transition:border-color .16s,transform .16s,box-shadow .16s;animation:.18s both card-in;box-shadow:0 8px 20px #00000038}.panel:hover,.command-panel:hover,.arena-head:hover{border-color:#3fb98c70;transform:translateY(-1px);box-shadow:0 10px 24px #00000042}.panel,.command-panel{padding:12px;overflow:auto}.arena-head{grid-area:head;grid-template-columns:minmax(0,1fr) minmax(420px,.9fr);align-items:center;gap:18px;padding:12px 14px;display:grid}.roster-panel{grid-area:roster}.comms-panel{grid-area:comms;grid-template-rows:minmax(0,1fr) auto auto;gap:10px;display:grid}.home-chat-panel{min-height:0;display:grid}.home-chat-panel .chat{grid-template-rows:auto minmax(0,1fr) auto;min-height:0;display:grid}.submissions-panel{grid-area:submissions;grid-template-rows:auto minmax(0,1fr);gap:10px;display:grid}.problems-panel{grid-area:problems;grid-template-rows:auto minmax(0,1fr);gap:10px;display:grid}.section-head,.panel-title{align-items:center;gap:8px;margin-bottom:10px;display:flex}.panel-title{border-bottom:1px solid var(--line-soft);margin-bottom:8px;padding-bottom:7px}.panel-title strong{letter-spacing:0;font:900 12px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.panel-title em{color:var(--muted);margin-left:auto;font:700 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.section-head h1,.section-head h2,.arena-head h1,.center-screen h1,.end-card h1,.ban-overlay h1{color:var(--text);letter-spacing:0;margin:0}.section-head h1,.arena-head h1{font-size:24px;line-height:1.1}.section-head h2{font-size:16px}.section-head p,.arena-head p,.center-screen p,.end-card p,.ban-overlay p{color:var(--muted);margin:3px 0 0}.eyebrow{color:var(--green);margin:0 0 5px;font:900 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.timer-block{gap:9px;display:grid}.timer-block>strong{color:var(--green);text-align:center;font:900 44px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.duel-progress{border:1px solid var(--line);height:28px;font:900 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:flex}.duel-progress>div{align-items:center;min-width:0;padding:0 8px;display:flex;overflow:hidden}.duel-progress .red-fill{background:var(--red);justify-content:flex-start}.duel-progress .blue-fill{background:var(--blue);justify-content:flex-end}.create-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.create-form label{color:var(--muted);gap:5px;font-weight:700;display:grid}.wide{grid-column:1/-1}.admin-panel{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.admin-panel p{color:var(--muted);margin:0 0 8px}.admin-room-list{gap:0;display:grid}.admin-moderation{border-bottom:1px solid var(--line-soft);grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:6px;margin-bottom:8px;padding-bottom:10px;display:grid}.admin-moderation input{grid-column:1/-1}.admin-room{border-bottom:1px solid var(--line-soft);grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 0;display:grid}.admin-room span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.room-list,.history-list,.teams,.problem-grid,.votes,.system-flow{gap:0;display:grid}.teams{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.room-card,.history-list p,.team-card,.problem-card,.vote,.player-row{border:1px solid var(--line-soft);background:var(--panel);border-radius:7px;transition:border-color .14s,transform .14s,background .14s}.room-card:hover,.history-list p:hover,.team-card:hover,.problem-card:hover,.vote:hover,.player-row:hover{background:var(--panel-alt);border-color:#3fb98c5c;transform:translateY(-1px)}.room-card{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;margin-bottom:8px;padding:9px;display:grid}.room-card strong,.room-card span,.history-list span,.history-list strong{display:block}.room-card span,.history-list span{color:var(--muted);font-size:12px}.room-card em{color:var(--muted);font:900 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.room-card em.live{color:var(--green)}.history-list p{justify-content:space-between;margin:0;padding:8px 0;display:flex}.room-controls{border-top:1px solid var(--line);gap:8px;padding-top:10px;display:grid}.match-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.segmented{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.segmented button.active{border-color:var(--green);color:var(--green)}.close-box{grid-template-columns:minmax(0,1fr) auto;gap:6px;display:grid}.team-card{margin-bottom:0;padding:10px}.team-card h3{margin:0 0 8px;font:900 12px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.team-card.red h3{color:var(--red)}.team-card.blue h3{color:var(--blue)}.player-row{grid-template-columns:34px minmax(0,1fr);gap:8px;margin-top:6px;padding:7px;display:grid}.avatar,.chat-avatar{border:1px solid var(--line);background:var(--panel-alt);color:var(--green);border-radius:50%;place-items:center;font:900 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:inline-grid}.avatar{width:32px;height:32px}.chat-avatar{width:22px;height:22px}.player-main{align-items:baseline;gap:8px;min-width:0;display:flex}.player-main span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.player-main small{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.player-tags{flex-wrap:wrap;grid-column:2;gap:5px;display:flex}.player-row em,.difficulty-badge{border:1px solid var(--line);color:var(--muted);align-items:center;gap:4px;padding:1px 5px;font:800 10px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:inline-flex}.player-row.banned{color:var(--red)}.ban-tools{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto auto;gap:5px;display:grid!important}.problem-grid{overflow:auto}.problem-card{gap:5px;margin-bottom:8px;padding:8px;display:grid}.problem-card>div:first-child{justify-content:space-between;gap:8px;display:flex}.problem-card.red{color:var(--red)}.problem-card.blue{color:var(--blue)}.problem-actions{grid-template-columns:repeat(3,1fr);gap:5px;display:grid}.difficulty-badge{border-color:var(--line);color:color-mix(in srgb, var(--difficulty-color) 76%, white)}.chat{grid-template-rows:auto minmax(0,1fr) auto;min-height:0;display:grid}.chat-log{border:1px solid var(--line-soft);background:#0b1016;border-radius:7px;flex-direction:column;gap:0;height:auto;min-height:210px;display:flex;overflow:auto}.chat-log p{border-bottom:1px solid var(--line-soft);grid-template-columns:26px minmax(92px,.4fr) minmax(0,1fr);gap:6px;margin:0;padding:7px;display:grid}.chat-log p>span:nth-child(2){color:var(--muted);font:800 11px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:block}.chat-text{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.chat-log .private{color:#f0c674}.chat-log .system{color:var(--muted)}.chat-log .judge.ok .chat-text{color:var(--green)}.chat-log .judge.fail .chat-text{color:var(--fail)}.chat-form{grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-top:8px;display:grid}.home-chat-panel .chat-log{height:auto;min-height:0}.judge-log{min-height:0;overflow:auto}.judge-log>div:last-child{border:1px solid var(--line-soft)}.judge-log p,.system-flow p{border-bottom:1px solid var(--line-soft);margin:0;padding:6px}.judge-log p{grid-template-columns:74px 64px minmax(0,1fr) 54px;gap:8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:grid}.judge-log time{color:var(--muted)}.judge-log .ok strong,.feed-table .ok td:last-child{color:var(--green)}.judge-log .fail strong,.feed-table .fail td:last-child{color:var(--fail)}.vote{grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:6px;margin-bottom:8px;padding:7px;display:grid}.feed-table{border:1px solid var(--line-soft)}.feed-table td{color:var(--text)}.feed-table td:first-child{color:var(--muted)}.system-flow{border:1px solid var(--line-soft);min-height:0;color:var(--muted);font-size:12px;overflow:auto}.center-screen{text-align:center;align-content:center;place-items:center;min-height:calc(100vh - 52px);padding:24px;display:grid}.end-overlay,.ban-overlay{z-index:50;background:#0d1117eb;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.end-card,.ban-overlay>div{border:1px solid var(--line);background:var(--bg);text-align:center;border-radius:8px;width:min(560px,100%);padding:28px;box-shadow:0 18px 44px #0006}.end-card h1,.ban-overlay h1{font-size:38px}.ban-overlay{z-index:80}.ban-overlay svg{color:var(--red)}.ban-overlay small{color:var(--muted)}@media (width<=1180px){.home-grid,.room-grid{grid-template-columns:1fr;height:auto;min-height:calc(100vh - 52px)}.room-grid{grid-template-rows:auto;grid-template-areas:"head""roster""comms""submissions""problems"}.arena-head{grid-template-columns:1fr}}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=720px){.topbar,.create-form,.admin-room,.admin-moderation,.close-box,.chat-form,.room-card,.vote,.judge-log p{grid-template-columns:1fr}.timer-block>strong{font-size:32px}.segmented,.problem-actions,.teams,.match-actions{grid-template-columns:1fr}.chat-log p{grid-template-columns:26px minmax(0,1fr)}.chat-text{grid-column:2}}
