@font-face{font-family:DotGothic16;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dotgothic16-latin-400-normal-BYJEY5oh.woff2) format("woff2"),url(/assets/dotgothic16-latin-400-normal-cp5t3xa_.woff) format("woff")}@font-face{font-family:DotGothic16;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dotgothic16-japanese-400-normal-DqORjlTR.woff2) format("woff2"),url(/assets/dotgothic16-japanese-400-normal-f9lPNYbv.woff) format("woff")}:root{--font-jp: "DotGothic16", "Hiragino Sans", "Noto Sans JP", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", "Roboto Mono", Menlo, monospace, "DotGothic16";--font-display: var(--font-jp);--void: #030910;--surface: rgba(12, 32, 52, .55);--surface-2: rgba(7, 20, 35, .65);--line: rgba(56, 189, 248, .28);--line-soft: rgba(56, 189, 248, .14);--ink: #dcf4ff;--ink-muted: #7fa0ba;--ink-faint: #48607a;--accent: #22d3ee;--accent-soft: #7dd3fc;--accent-glow: rgba(34, 211, 238, .55);--danger: #fb7185;--warn: #fbbf24;--good: #34d399;--team-allies: #4f8bff;--team-axis: #fb7185;--team-spectator: #34d399;--hairline: 1px;--radius: 6px}*{box-sizing:border-box}html{height:100%;-webkit-text-size-adjust:100%}body{margin:0;min-height:100%;background:var(--void);color:var(--ink);font-family:var(--font-jp);text-rendering:optimizeLegibility}::selection{background:var(--accent);color:var(--void)}a{color:inherit}button,input,select,textarea{font-family:var(--font-jp)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.scanlines{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background-color:var(--void);background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px),radial-gradient(ellipse 55% 40% at 10% 0%,rgba(34,211,238,.09),transparent 60%),radial-gradient(ellipse 50% 40% at 100% 100%,rgba(34,211,238,.07),transparent 60%);background-size:36px 36px,36px 36px,auto,auto;animation:grid-drift 30s linear infinite}@keyframes grid-drift{0%{background-position:0 0,0 0,0 0,0 0}to{background-position:0 360px,360px 0,0 0,0 0}}.text-accent{color:var(--accent-soft);text-shadow:0 0 10px var(--accent-glow)}.hud-panel{position:relative;background:linear-gradient(165deg,#0f2a4280,#0712208c),var(--surface);border:var(--hairline) solid var(--line);border-radius:var(--radius);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 0 0 1px #22d3ee0d inset,0 0 28px -10px var(--accent-glow)}button{position:relative;overflow:hidden;isolation:isolate}.ripple{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(125,211,252,.55),transparent 70%);transform:translate(-50%,-50%) scale(0);pointer-events:none;z-index:-1;animation:ripple-out .65s ease-out forwards}@keyframes ripple-out{to{transform:translate(-50%,-50%) scale(1);opacity:0}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.login-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:100%;max-width:380px;padding:30px 26px 24px}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:26px}.login-brand-mark{width:34px;height:34px;border-radius:4px;background:#22d3ee1f;border:var(--hairline) solid var(--accent);color:var(--accent-soft);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:.62rem;text-shadow:0 0 8px var(--accent-glow);box-shadow:0 0 16px -4px var(--accent-glow)}.login-brand-text .name{font-family:var(--font-display);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}.login-brand-text .sub{font-family:var(--font-mono);font-size:.66rem;color:var(--ink-faint);letter-spacing:.08em;margin-top:5px}.login-field{margin-bottom:16px}.login-field label{display:block;font-size:.72rem;color:var(--ink-muted);margin-bottom:7px}.login-field input{width:100%;background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:4px;color:var(--ink);padding:10px 11px;font-size:.85rem;letter-spacing:.02em}.login-field input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #22d3ee24}.login-field .hint{margin-top:6px;font-size:.68rem;color:var(--ink-faint);line-height:1.5}.login-error{background:color-mix(in oklab,var(--danger) 14%,var(--surface));border:var(--hairline) solid color-mix(in oklab,var(--danger) 55%,var(--line));border-radius:4px;color:var(--ink);padding:9px 10px;font-size:.75rem;margin-bottom:16px;line-height:1.5}.login-submit{width:100%;background:linear-gradient(135deg,#0891b2,var(--accent));color:#01131a;border:none;border-radius:4px;padding:12px;font-family:var(--font-display);font-weight:700;font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;box-shadow:0 0 20px -4px var(--accent-glow)}.login-submit:hover:not(:disabled){box-shadow:0 0 26px -2px var(--accent-glow)}.login-submit:disabled{opacity:.5;cursor:default;box-shadow:none}.login-back{display:inline-block;margin-top:14px;font-size:.72rem;color:var(--ink-muted);background:none;border:none;cursor:pointer;padding:0}.login-back:hover{color:var(--accent-soft)}.dash{height:100vh;height:100dvh;padding:6px;display:flex;flex-direction:column;gap:4px;width:100%;overflow:hidden}.dash-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:10px 14px}.dash-brand{display:flex;align-items:center;gap:10px}.dash-brand-mark{width:28px;height:28px;border-radius:4px;background:#22d3ee1f;border:var(--hairline) solid var(--accent);color:var(--accent-soft);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:.52rem;text-shadow:0 0 8px var(--accent-glow);box-shadow:0 0 14px -4px var(--accent-glow)}.dash-brand-name{font-family:var(--font-display);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}.dash-user{display:flex;align-items:center;gap:10px;font-size:.72rem;color:var(--ink-muted)}.dash-logout{background:none;border:var(--hairline) solid var(--line);border-radius:4px;color:var(--ink-muted);padding:6px 12px;font-size:.7rem;cursor:pointer}.dash-logout:hover{border-color:var(--accent);color:var(--accent-soft)}.dash-top-strip{flex:0 0 auto;display:flex;gap:2px}.dash-gauge{flex:1 1 0;min-width:0}.dash-gauge .panel-body{padding-bottom:10px}.dash-main{flex:1 1 auto;min-height:0;min-width:0;display:flex;gap:2px}.dash-side{flex:0 0 260px;display:flex;flex-direction:column;gap:2px;min-height:0;min-width:0}.dash-side-right{flex-basis:320px}.dash-side-left .dash-cell-auto .panel-body{padding-top:16px;padding-bottom:20px}.dash-monitor{flex:1 1 0;min-width:320px;display:flex;flex-direction:column;min-height:0}.dash-chat-cell{flex:5 1 0;min-height:0}.dash-search-compact{flex:0 0 auto}.dash-search-compact .search-results:empty,.dash-search-compact .search-results:has(.empty-note){display:none}.dash-main .hud-panel,.dash-top-strip .hud-panel{display:flex;flex-direction:column;min-height:0}.dash-cell-auto{flex:0 0 auto}.dash-cell-fill{flex:1 1 auto;min-height:0}.dash-main .panel-title{flex:0 0 auto}.dash-main .panel-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:8px}.dash-main .panel-body.scroll-y{overflow-y:auto}.dash-main .chat-log-list,.dash-main .search-results{flex:1 1 auto;min-height:0}@media(max-width:1180px){.dash{height:auto;min-height:100vh;min-height:100dvh;overflow:visible}.dash-top-strip,.dash-main{flex-direction:column}.dash-side,.dash-side-right,.dash-monitor,.dash-gauge,.dash-chat-cell{flex-basis:auto}.dash-main .hud-panel,.dash-top-strip .hud-panel{display:block}.dash-main .panel-body{max-height:none}.dash-main .panel-body.scroll-y{max-height:320px}}.panel-title{font-family:var(--font-display);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);padding:12px 14px 0}.panel-title .badge-todo{font-size:.62rem;color:var(--ink-faint);border:var(--hairline) solid var(--line);border-radius:3px;padding:2px 6px;margin-left:8px}.panel-body{padding:12px 14px 14px}.vitals-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.vital-stub{background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:4px;padding:10px;text-align:center;color:var(--ink-faint)}.vital-stub .label{font-size:.66rem}.vital-stub .value{font-family:var(--font-mono);font-size:.8rem;margin-top:8px}.vital-pod{background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:4px;min-width:0;padding:8px 10px}.vital-pod .label{font-size:.62rem;letter-spacing:.04em;color:var(--ink-muted)}.vital-pod.vital-pod-donut{text-align:center}.vital-pod-caption{font-family:var(--font-mono);font-size:.6rem;color:var(--ink-faint);margin-top:2px}.donut-gauge{position:relative;width:56px;height:56px;margin:4px auto 0}.donut-svg{width:100%;height:100%}.donut-track{fill:none;stroke:var(--line)}.donut-arc{fill:none;stroke:var(--accent);stroke-linecap:round;filter:drop-shadow(0 0 4px var(--accent-glow));transition:stroke-dashoffset .5s ease}.donut-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.72rem;color:var(--accent-soft);text-shadow:0 0 8px var(--accent-glow)}.vital-pod .value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.9rem;color:var(--accent-soft);text-shadow:0 0 10px var(--accent-glow);margin-top:4px}.sparkline{width:100%;height:24px;margin-top:6px;display:block}.sparkline-baseline{stroke:var(--line);stroke-width:1}.sparkline-line{fill:none;stroke:var(--accent);stroke-width:1.5;filter:drop-shadow(0 0 3px var(--accent-glow))}.stub-note{margin-top:10px;font-size:.68rem;color:var(--ink-faint);line-height:1.6}.broadcast-row{display:flex;gap:8px}.broadcast-row input{flex:1;background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:4px;color:var(--ink);padding:9px 10px;font-size:.8rem}.broadcast-row input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #22d3ee24}.broadcast-row button{background:linear-gradient(135deg,#0891b2,var(--accent));color:#01131a;border:none;border-radius:4px;padding:9px 16px;font-family:var(--font-display);font-weight:700;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;white-space:nowrap;box-shadow:0 0 16px -4px var(--accent-glow)}.team-heading{display:flex;align-items:center;gap:8px;font-size:.68rem;padding:6px 4px 4px;border-bottom:var(--hairline) solid var(--line);margin-top:6px}.team-heading:first-child{margin-top:0}.team-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;box-shadow:0 0 8px currentColor}.team-count{font-family:var(--font-mono);color:var(--ink-faint);margin-left:auto}.player-row{display:flex;align-items:center;gap:10px;padding:8px 4px;border-bottom:var(--hairline) solid rgba(255,255,255,.05);flex-wrap:wrap}.player-flag{font-size:1rem;flex-shrink:0}.player-name{font-size:.8rem;min-width:90px;flex-shrink:0}.player-stats{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.66rem;color:var(--ink-faint);flex:1 1 auto;white-space:nowrap}.bot-badge{font-size:.6rem;background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:3px;color:var(--ink-faint);padding:1px 5px;flex-shrink:0}.player-actions{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}.roster-row{display:grid;grid-template-columns:18px minmax(90px,1.4fr) 34px 64px 44px 96px auto;align-items:center;column-gap:8px;padding:3px 4px;border-bottom:var(--hairline) solid rgba(255,255,255,.05);font-size:.72rem}.roster-row .player-flag{font-size:.85rem}.roster-row .player-name{font-size:.74rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-row .bot-badge{justify-self:start}.player-col{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.66rem;color:var(--ink-faint);white-space:nowrap}.player-col-score{color:var(--accent-soft)}.roster-row .player-actions{margin-left:0;justify-self:end}.roster-row .btn-xs{padding:2px 6px}.btn-xs{background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:3px;color:var(--ink-muted);padding:4px 8px;font-size:.66rem;cursor:pointer}.btn-xs:hover{border-color:var(--accent);color:var(--accent-soft)}.btn-xs-danger:hover{border-color:var(--danger);color:var(--ink)}.empty-note{color:var(--ink-faint);font-size:.75rem;padding:10px 4px}.roster-refresh{font-size:.66rem;color:var(--ink-faint);background:none;border:none;cursor:pointer;padding:0}.roster-refresh:hover{color:var(--accent-soft)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in oklab,var(--void) 75%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal-box{width:100%;max-width:380px;padding:16px}.modal-title{font-family:var(--font-display);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin-bottom:12px}.modal-body{font-size:.78rem;line-height:1.6}.modal-label{display:block;font-size:.68rem;color:var(--ink-muted);margin:10px 0 6px}.modal-textarea,.modal-select{width:100%;background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:4px;color:var(--ink);padding:8px;font-family:var(--font-jp);font-size:.8rem}.modal-textarea:focus,.modal-select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #22d3ee24}.modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.btn-outline{background:none;border:var(--hairline) solid var(--line);border-radius:4px;color:var(--ink-muted);padding:8px 14px;font-family:var(--font-display);font-size:.72rem;letter-spacing:.04em;cursor:pointer}.btn-outline:hover{border-color:var(--accent);color:var(--accent-soft)}.btn-primary{background:linear-gradient(135deg,#0891b2,var(--accent));color:#01131a;border:none;border-radius:4px;padding:8px 14px;font-family:var(--font-display);font-weight:700;font-size:.72rem;letter-spacing:.04em;cursor:pointer;box-shadow:0 0 16px -4px var(--accent-glow)}.btn-danger{background:linear-gradient(135deg,#be123c,var(--danger));color:#1a0407;border:none;border-radius:4px;padding:8px 14px;font-family:var(--font-display);font-weight:700;font-size:.72rem;letter-spacing:.04em;cursor:pointer;box-shadow:0 0 16px -4px #fb718580}.power-actions{display:flex;gap:8px}.power-actions button{flex:1}.setting-row{display:grid;grid-template-columns:104px 1fr auto;align-items:center;gap:10px;padding:7px 4px;border-bottom:var(--hairline) solid rgba(255,255,255,.05);font-size:.76rem}.setting-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-muted)}.setting-value{font-family:var(--font-mono);color:var(--accent-soft);text-shadow:0 0 8px var(--accent-glow);font-size:.72rem;min-width:0;overflow-wrap:anywhere}.chat-log-list{overflow-y:auto;border:var(--hairline) solid var(--line);border-radius:4px;padding:6px 8px}.chat-log-compact{max-height:140px}.search-input{width:100%;background:var(--surface-2);border:var(--hairline) solid var(--line);border-radius:4px;color:var(--ink);padding:9px 10px;font-size:.8rem;margin-bottom:10px}.search-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #22d3ee24}.search-results{max-height:260px;overflow-y:auto}.search-result-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:var(--hairline) solid rgba(255,255,255,.05);cursor:pointer}.search-result-row:hover{background:#22d3ee0f}.search-result-name{font-size:.8rem;flex-shrink:0}.search-result-meta{font-family:var(--font-mono);color:var(--ink-faint);font-size:.66rem;margin-left:auto}.status-badge{font-size:.62rem;padding:2px 6px;border:var(--hairline) solid var(--line);border-radius:3px;flex-shrink:0}.status-online{color:var(--good);border-color:var(--good);box-shadow:0 0 8px -2px var(--good)}.status-offline{color:var(--ink-faint)}.history-box{max-width:480px;max-height:85vh;display:flex;flex-direction:column}.history-header{display:flex;align-items:center;gap:10px}.history-name{font-size:.9rem}.history-meta{font-family:var(--font-mono);font-size:.68rem;color:var(--ink-faint);line-height:1.7;margin-top:6px}.history-ban-note{margin-top:8px;background:color-mix(in oklab,var(--danger) 14%,var(--surface));border:var(--hairline) solid color-mix(in oklab,var(--danger) 55%,var(--line));border-radius:4px;padding:6px 8px;font-size:.7rem}.history-chat-title{font-size:.68rem;color:var(--ink-muted);margin:14px 0 6px}.history-chat-list{flex:1;min-height:120px;max-height:320px;overflow-y:auto;border:var(--hairline) solid var(--line);border-radius:4px;padding:6px 8px}.chat-log-row{display:flex;gap:8px;align-items:baseline;padding:4px 0;border-bottom:var(--hairline) solid rgba(255,255,255,.05);font-size:.72rem;flex-wrap:wrap}.chat-log-time{font-family:var(--font-mono);color:var(--ink-faint);font-size:.62rem;flex-shrink:0;white-space:nowrap}.chat-log-message{flex:1;min-width:0;word-break:break-word}.scroll-y{scrollbar-width:thin;scrollbar-color:var(--line) transparent}.live-indicator{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.live-indicator .dot{width:6px;height:6px;border-radius:50%;background:var(--ink-faint)}.live-indicator.is-live .dot{background:var(--good);box-shadow:0 0 8px var(--good);animation:live-pulse 1.8s ease-in-out infinite}.live-indicator.is-live{color:var(--ink-muted)}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.35}}.toast-stack{position:fixed;bottom:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:200;max-width:320px}.toast{background:linear-gradient(165deg,#0f2a42d9,#071220e6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:var(--hairline) solid var(--line);border-left:3px solid var(--accent);border-radius:4px;color:var(--ink);padding:10px 12px;font-size:.75rem;line-height:1.5;box-shadow:0 0 20px -6px var(--accent-glow);animation:toast-in .15s ease-out}.toast-error{border-left-color:var(--danger);box-shadow:0 0 20px -6px #fb718573}.toast-out{opacity:0;transition:opacity .25s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
