:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#dfe3e8;--bg-veil:#dfe3e8e6;--panel:#f2f4f7;--panel-2:#e7eaee;--ink:#1b1f24;--ink-dim:#5b6672;--line:#b1b9c1;--line-soft:#d3d8de;--accent:#1f6feb;--accent-ink:#fff;--danger:#c0392b;--team1:#2f8f46;--team1-soft:#cfe9d4;--team1-head:#57bd6f;--team2:#b02a2a;--team2-soft:#f2cfcf;--team2-head:#c94040;--center-head:#ffe680;--slot-taken:#d3e8d6;--slot-taken-ink:#1e4526;--slot-free:#f0d6d6;--slot-free-ink:#6d2a2a;--fill-free:#f0d6d6;--fill-free-ink:#6d2a2a;--fill-wait:#f3e6bd;--fill-wait-ink:#6b5410;--fill-ok:#d3e8d6;--fill-ok-ink:#1e4526;--fill-problem:#edc9c4;--fill-problem-ink:#7a2118;--warn:#a8801a;--staff:#7b3fb5;--menu-bg:#ffffffeb;--menu-border:#1b1f2447;--staff-cell:#ddd2ef;--c-green:#cfe6cf;--c-red:#eed2d2;--c-yellow:#f0e4bd;--c-purple:#ddd0ec;--c-blue:#cfdcee;--c-grey:#dcdfe2;--cls-lt:#3f8f3f;--cls-mt:#2f6fbf;--cls-ht:#4c525a;--cls-td:#b03a3a;--cls-spg:#7a3fa0;--cls-none:#8a9099;--radius:8px;--shadow:0 1px 2px #10182814, 0 4px 16px #1018280f}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#222831;--bg-veil:#1c21289e;--panel:#2a313a;--panel-2:#333b45;--ink:#e8ebef;--ink-dim:#a3adb8;--line:#47515d;--line-soft:#3a434e;--accent:#4d8ef7;--danger:#e05a4a;--team1:#43a05c;--team1-soft:#26382b;--team1-head:#2f6b41;--team2:#c05252;--team2-soft:#3a2727;--team2-head:#7d3232;--center-head:#6b5c22;--slot-taken:#24402c;--slot-taken-ink:#bfe3c6;--slot-free:#402828;--slot-free-ink:#edc0c0;--fill-free:#402828;--fill-free-ink:#edc0c0;--fill-wait:#443a1e;--fill-wait-ink:#ecd79a;--fill-ok:#24402c;--fill-ok-ink:#bfe3c6;--fill-problem:#4b2a24;--fill-problem-ink:#f0b9b0;--warn:#d8b64a;--staff:#b98bee;--menu-bg:#0a0e138c;--menu-border:#e8ebef57;--staff-cell:#3b3050;--c-green:#2a4530;--c-red:#462c2c;--c-yellow:#4a4223;--c-purple:#3b2f4d;--c-blue:#26374b;--c-grey:#333a42;--cls-lt:#4e9e4e;--cls-mt:#4a86cf;--cls-ht:#6b727b;--cls-td:#c25050;--cls-spg:#9159b8;--shadow:0 1px 2px #0006, 0 6px 20px #00000059}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg) url(/background.jpg) center center / cover no-repeat fixed}body{background:var(--bg-veil);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh;font:14px/1.45 Segoe UI,system-ui,-apple-system,Noto Sans,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.topbar{background:var(--panel);border-bottom:1px solid var(--line-soft);z-index:40;align-items:center;gap:18px;height:52px;padding:0 18px;display:flex;position:sticky;top:0}.topbar__brand{letter-spacing:.14em;color:var(--ink);font-size:13px;font-weight:800}.topbar nav{flex-wrap:wrap;flex:1;gap:14px;display:flex}.topbar nav a{color:var(--ink-dim);font-size:13px;font-weight:600}.topbar nav a:hover,.topbar nav a[data-active=true]{color:var(--ink);text-decoration:none}.topbar__user{color:var(--ink-dim);align-items:center;gap:10px;font-size:13px;display:flex}.page{max-width:1240px;margin:0 auto;padding:20px 16px 60px}.page--wide{max-width:1500px}.card{background:color-mix(in srgb, var(--panel) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line-soft);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card+.card{margin-top:16px}h1{margin:0 0 4px;font-size:20px}h2{margin:0 0 12px;font-size:16px}.card--centered>h2,.centered,.card--centered label{text-align:center}.muted{color:var(--ink-dim)}.small{font-size:12px}button,.btn{font:inherit;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:600;line-height:1.3}button:hover:not(:disabled),.btn:hover{border-color:var(--accent);text-decoration:none}button:disabled{opacity:.55;cursor:not-allowed}.btn--primary,button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 45%, var(--line))}button.ghost{color:var(--ink-dim);background:0 0;border-color:#0000;padding:4px 6px}button.ghost:hover{background:var(--panel-2)}input,select,textarea{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;width:100%;padding:6px 9px}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb, var(--accent) 40%, transparent);outline-offset:-1px;border-color:var(--accent)}label{color:var(--ink-dim);margin-bottom:4px;font-size:12px;font-weight:600;display:block}.field+.field{margin-top:12px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row--end{justify-content:flex-end}.grow{flex:1}.error{color:var(--danger);font-size:13px;font-weight:600}.notice{background:var(--panel-2);border:1px solid var(--line-soft);border-left:3px solid var(--accent);border-radius:6px;padding:8px 12px;font-size:13px}.badge{background:var(--panel-2);border:1px solid var(--line-soft);color:var(--ink-dim);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-block}.badge--live{background:color-mix(in srgb, var(--team1) 20%, transparent);border-color:var(--team1);color:var(--team1)}.badge--wait{background:color-mix(in srgb, var(--center-head) 40%, transparent);color:#8a6d10;border-color:#c8a93a}:root[data-theme=dark] .badge--wait{color:#e8cf7a}.badge--closed{background:color-mix(in srgb, var(--team2) 18%, transparent);border-color:var(--team2);color:var(--team2)}.roster{background:color-mix(in srgb, var(--panel) 94%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.roster__scroll{overflow-x:auto}table.grid{border-collapse:collapse;table-layout:fixed;width:100%;min-width:900px}table.grid th,table.grid td{border:1px solid var(--line);vertical-align:middle;text-overflow:ellipsis;white-space:nowrap;height:30px;padding:3px 8px;font-size:13px;overflow:hidden}.grid__title{text-align:center;color:var(--danger);background:var(--panel);letter-spacing:.01em;height:36px;font-size:17px;font-weight:800}.grid__subtitle{text-align:center;color:var(--danger);background:var(--panel);font-weight:700}.grid__team1{background:var(--team1-head);color:#fff;text-align:center;letter-spacing:.06em;font-weight:800}.grid__team2{background:var(--team2-head);color:#fff;text-align:center;letter-spacing:.06em;font-weight:800}.grid__center-head{background:var(--center-head);text-align:center;white-space:normal;font-size:12px;font-weight:700;line-height:1.15}.grid__col1{background:var(--team1-soft);text-align:center;font-size:12px;font-weight:700}.grid__col2{background:var(--team2-soft);text-align:center;font-size:12px;font-weight:700}.grid__colc{background:var(--panel-2);text-align:center;font-size:12px;font-weight:700}td.cell-gun{text-align:center;background:var(--panel-2);color:var(--ink)}td.cell-tank{text-align:center;background:var(--panel-2);font-weight:700}td.cell-type{text-align:center;background:var(--panel-2);padding:3px}td.cell-note{text-align:center;color:var(--ink-dim);font-size:12px}.type-badge{color:#fff;background:var(--cls-none);border-radius:4px;min-width:62px;padding:2px 8px;font-size:12px;font-weight:800;display:inline-block}.type-badge[data-cls=lt]{background:var(--cls-lt)}.type-badge[data-cls=mt]{background:var(--cls-mt)}.type-badge[data-cls=ht]{background:var(--cls-ht)}.type-badge[data-cls=td]{background:var(--cls-td)}.type-badge[data-cls=spg]{background:var(--cls-spg)}.type-badge[data-top=true]{box-shadow:inset 0 0 0 2px #e5c04a}.tank{grid-template-columns:95px minmax(0,1fr);align-items:center;width:100%;max-width:265px;margin:0 auto;display:grid}.tank__icon{vertical-align:middle;grid-area:1/1;justify-self:start;width:auto;max-width:90px;height:24px}.tank__name{text-align:left;text-overflow:ellipsis;white-space:nowrap;grid-area:1/2;overflow:hidden}.tank[data-side="2"]{grid-template-columns:minmax(0,1fr) 95px}.tank[data-side="2"] .tank__icon{grid-column:2;justify-self:end}.tank[data-side="2"] .tank__name{text-align:right;grid-column:1}.tank__icon[data-flip=true]{transform:scaleX(-1)}.tank__icon[data-kind=class]{opacity:.75;height:18px}:root[data-theme=dark] .tank__icon{filter:invert()}td.slot{height:32px;padding:0;position:relative}.slot__overlay{z-index:1;position:absolute;inset:0}td.slot[data-fill=free]{background:var(--fill-free);color:var(--fill-free-ink)}td.slot[data-fill=wait]{background:var(--fill-wait);color:var(--fill-wait-ink)}td.slot[data-fill=ok]{background:var(--fill-ok);color:var(--fill-ok-ink)}td.slot[data-fill=problem]{background:var(--fill-problem);color:var(--fill-problem-ink)}td.slot[data-mine=true]{box-shadow:inset 0 0 0 2px var(--accent)}td.slot[data-staff=true]{background:var(--staff-cell)}td.slot[data-staff=true] .slot__nick{font-weight:700}.slot__inner{justify-content:center;align-items:center;gap:5px;height:100%;min-height:28px;padding:2px 46px;display:flex}.slot__nick{text-overflow:ellipsis;white-space:nowrap;text-align:center;min-width:0;font-weight:600;overflow:hidden}.slot__take{width:100%;height:100%;color:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border:0;border-radius:0;padding:0;font-size:15px;font-weight:800;transition:background .12s,transform 80ms;position:absolute;inset:0}.slot__take:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 18%, transparent);border-color:#0000}.slot__take:active:not(:disabled){transform:scale(.985)}.slot__menu{z-index:2;border:1px solid var(--menu-border);background:var(--menu-bg);width:40px;height:22px;color:var(--ink);border-radius:4px;padding:0;font-size:14px;font-weight:800;line-height:1;position:absolute;top:50%;right:3px;transform:translateY(-50%)}td.slot[data-team="2"] .slot__menu{left:3px;right:auto}.slot__menu:hover{background:var(--accent);border-color:var(--accent);color:#fff}.tag{border:1px solid;border-radius:4px;flex:none;padding:2px 5px;font-size:10px;font-weight:800;line-height:1}.tag--afk{color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, transparent)}.tag--staff{color:var(--staff)}.slot__lock{z-index:1;opacity:.65;pointer-events:none;font-size:12px;position:absolute;top:50%;left:6px;transform:translateY(-50%)}td.slot[data-team="2"] .slot__lock{left:auto;right:6px}.tag--shot{border-color:#0000;padding:0 2px;font-size:13px}.tag--shot[data-v=ok]{color:var(--team1)}.tag--shot[data-v=problem]{color:var(--danger)}.tag--shot[data-v=wait]{color:var(--warn)}.tag--shot[data-v=none]{opacity:.4}.grid__footer td{text-align:center;height:26px;font-size:12px;font-weight:700}.fill-bar{background:var(--line-soft);border-radius:3px;height:100%;min-height:22px;position:relative;overflow:hidden}.fill-bar__value{background:color-mix(in srgb, var(--team1) 55%, transparent);transition:width .35s;position:absolute;inset:0 auto 0 0}.fill-bar{justify-content:center;align-items:center;display:flex}.fill-bar__text{font-size:12px;font-weight:800;position:relative}.legend{flex-wrap:wrap;gap:8px;margin-top:10px;font-size:12px;display:flex}.legend__item{border:1px solid var(--line-soft);background:var(--panel);color:var(--ink-dim);border-radius:999px;align-items:center;gap:6px;padding:2px 10px;font-weight:600;display:inline-flex}.legend__item:before{content:"";border:1px solid var(--line-soft);border-radius:3px;width:10px;height:10px}.legend__item[data-fill=free]:before{background:var(--fill-free)}.legend__item[data-fill=wait]:before{background:var(--fill-wait)}.legend__item[data-fill=ok]:before{background:var(--fill-ok)}.legend__item[data-fill=problem]:before{background:var(--fill-problem)}.prep{margin-top:16px}.prep__text{white-space:pre-wrap;line-height:1.55}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.toolbar__spacer{flex:1}.countdown{font-variant-numeric:tabular-nums;font-size:15px;font-weight:800}.stats{flex-wrap:wrap;gap:18px;margin-top:14px;display:flex}.stats__group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chip{background:var(--panel-2);border:1px solid var(--line-soft);border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:700;display:inline-flex}.chip__dot{background:var(--cls-none);border-radius:50%;width:8px;height:8px}.chip__dot[data-cls=lt]{background:var(--cls-lt)}.chip__dot[data-cls=mt]{background:var(--cls-mt)}.chip__dot[data-cls=ht]{background:var(--cls-ht)}.chip__dot[data-cls=td]{background:var(--cls-td)}.chip__dot[data-cls=spg]{background:var(--cls-spg)}.overlay{z-index:55;position:fixed;inset:0}.popover{z-index:60;background:var(--panel);border:1px solid var(--line);width:330px;max-width:calc(100vw - 16px);box-shadow:var(--shadow);border-radius:10px;padding:12px;animation:.14s pop-in;position:fixed;overflow-y:auto}@keyframes pop-in{0%{opacity:0;transform:translateY(-5px)scale(.98)}to{opacity:1;transform:none}}.actions{flex-direction:column;gap:10px;display:flex}.actions__head{color:var(--ink-dim);justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.actions__close{padding:0 4px;font-size:14px}.actions__who{align-items:center;gap:8px;font-size:14px;display:flex}.actions__group{border-top:1px solid var(--line-soft);flex-direction:column;gap:6px;padding-top:10px;display:flex}.actions__label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-dim);font-size:11px;font-weight:800}button.wide{text-align:left;width:100%}.afk-btn{align-items:center;gap:9px;width:100%;font-weight:700;transition:transform 80ms,background .18s,border-color .18s,color .18s;display:flex}.afk-btn:active:not(:disabled){transform:scale(.96)}.afk-btn__dot{background:var(--line);border-radius:50%;width:10px;height:10px;transition:background .2s,box-shadow .2s}.afk-btn[data-on=true]{background:color-mix(in srgb, var(--danger) 14%, transparent);border-color:var(--danger);color:var(--danger)}.afk-btn[data-on=true] .afk-btn__dot{background:var(--danger);animation:1.8s ease-in-out infinite afk-pulse}@keyframes afk-pulse{0%,to{box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 26%, transparent)}50%{box-shadow:0 0 0 7px color-mix(in srgb, var(--danger) 6%, transparent)}}.shot{border-top:1px solid var(--line-soft);flex-direction:column;gap:8px;padding-top:10px;display:flex}.shot__title{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-dim);align-items:center;gap:8px;font-size:11px;font-weight:800;display:flex}.shot__verdict{text-transform:none;letter-spacing:0;border:1px solid;border-radius:999px;padding:1px 7px;font-size:10px;font-weight:700}.shot__verdict[data-v=ok]{color:var(--team1)}.shot__verdict[data-v=problem]{color:var(--danger)}.shot__verdict[data-v=wait]{color:var(--warn)}.shot__preview{border:1px solid var(--line-soft);border-radius:7px;display:block;position:relative;overflow:hidden}.shot__preview img{object-fit:cover;width:100%;height:112px;transition:transform .25s;display:block}.shot__preview:hover img{transform:scale(1.03)}.shot__open{color:#fff;background:#0009;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:700;position:absolute;bottom:6px;right:6px}.shot__note{color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent);border-radius:6px;padding:6px 8px;font-size:12px}.dropzone{border:1.5px dashed var(--line);text-align:center;color:var(--ink-dim);cursor:pointer;border-radius:8px;padding:14px 12px;font-size:12px;font-weight:600;transition:border-color .18s,background .18s,color .18s;position:relative;overflow:hidden}.dropzone:hover,.dropzone[data-drag=true]{border-color:var(--accent);color:var(--ink);background:color-mix(in srgb, var(--accent) 8%, transparent)}.dropzone[data-drag=true]{border-style:solid}.dropzone__fill{transform-origin:0;background:color-mix(in srgb, var(--accent) 28%, transparent);transition:transform .18s;position:absolute;inset:0}.dropzone__label{position:relative}.dropzone[data-flash=true]{border-color:var(--team1);border-style:solid}.dropzone[data-flash=true]:after{content:"";background:color-mix(in srgb, var(--team1) 45%, transparent);animation:.9s forwards flash-out;position:absolute;inset:0}@keyframes flash-out{0%{opacity:1}to{opacity:0}}.verdict{gap:6px;display:flex}.verdict__btn{flex:1;font-size:12px;transition:transform 80ms,background .18s,border-color .18s,color .18s}.verdict__btn:active:not(:disabled){transform:scale(.95)}.verdict__btn[data-v=ok][data-active=true]{background:color-mix(in srgb, var(--team1) 18%, transparent);border-color:var(--team1);color:var(--team1)}.verdict__btn[data-v=problem][data-active=true]{background:color-mix(in srgb, var(--danger) 15%, transparent);border-color:var(--danger);color:var(--danger)}table.list{border-collapse:collapse;width:100%}table.list th,table.list td{text-align:center;border-bottom:1px solid var(--line-soft);padding:8px 10px;font-size:13px}table.list th:first-child,table.list td:first-child{text-align:left}table.list th{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.04em;font-size:12px}input.rename{background:0 0;border-color:#0000;padding:4px 6px;font-weight:600}input.rename:hover{border-color:var(--line-soft);background:var(--panel-2)}input.rename:focus{border-color:var(--accent);background:var(--panel)}table.list tr:hover td{background:var(--panel-2)}.code{background:var(--panel-2);border:1px solid var(--line-soft);border-radius:5px;padding:1px 7px;font-family:Cascadia Mono,Consolas,monospace;font-size:13px}.editor-grid th,.editor-grid td{border:1px solid var(--line-soft);padding:4px 6px;font-size:13px}.editor-grid{border-collapse:collapse;width:100%}.editor-grid input{padding:3px 6px;font-size:13px}.editor-grid th{background:var(--panel-2);color:var(--ink-dim);font-size:12px}.picker{position:relative}.picker__list{z-index:90;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px;position:fixed;overflow-y:auto}.picker__item{cursor:pointer;align-items:center;gap:8px;height:30px;padding:0 9px;font-size:13px;display:flex}.picker__item[data-active=true],.picker__item:hover{background:var(--panel-2)}.picker__nation{color:var(--ink-dim);margin-left:auto;font-size:11px}.toast-host{z-index:80;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);box-shadow:var(--shadow);border-radius:6px;max-width:340px;padding:9px 14px;font-size:13px;font-weight:600}.toast[data-kind=error]{border-left-color:var(--danger);color:var(--danger)}.toast[data-kind=ok]{border-left-color:var(--team1)}.roster-group+.roster-group{margin-top:18px}.roster-group__date{background:var(--panel-2);border:1px solid var(--line-soft);color:var(--ink-dim);border-radius:999px;margin-bottom:6px;padding:3px 12px;font-size:12px;font-weight:700;display:inline-block}.hint-fab{z-index:70;border:1px solid var(--line);background:var(--panel);width:44px;height:44px;color:var(--ink-dim);box-shadow:var(--shadow);cursor:pointer;border-radius:50%;padding:0;font-size:20px;font-weight:800;line-height:1;transition:transform .12s,color .18s,border-color .18s,background .18s;position:fixed;bottom:18px;left:18px}.hint-fab:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-2px)}.hint-fab:active{transform:scale(.94)}.hint-fab[data-open=true]{background:var(--accent);border-color:var(--accent);color:#fff}.hint-overlay{z-index:68;position:fixed;inset:0}.hint-panel{z-index:72;background:var(--panel);border:1px solid var(--line);width:380px;max-width:calc(100vw - 36px);max-height:min(70vh,620px);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;animation:.16s hint-in;display:flex;position:fixed;bottom:74px;left:18px;overflow:hidden}@keyframes hint-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.hint-panel__head{border-bottom:1px solid var(--line-soft);background:var(--panel-2);justify-content:space-between;align-items:center;padding:12px 14px;font-size:14px;display:flex}.hint-panel__body{padding:6px 14px 14px;overflow-y:auto}.hint-item{border-bottom:1px solid var(--line-soft);padding:12px 0}.hint-item:last-child{border-bottom:0;padding-bottom:4px}.hint-item__title{margin-bottom:4px;font-size:13px;font-weight:700}.hint-item__text{color:var(--ink-dim);font-size:13px;line-height:1.5}@media (max-width:720px){.hint-fab{width:40px;height:40px;font-size:18px;bottom:12px;left:12px}.hint-panel{width:auto;bottom:62px;left:12px;right:12px}.page{padding:14px 8px 48px}.topbar{flex-wrap:wrap;gap:10px;height:auto;padding:8px 12px}table.grid{min-width:760px}.card{padding:14px 12px}}@media print{.topbar,.toolbar,.no-print{display:none!important}body{background:#fff}}
