:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f7f9;--surface:#fff;--surface-sunken:#f0f2f5;--border:#dfe3e8;--border-strong:#c5ccd6;--text:#1a1f27;--text-muted:#5c6675;--text-faint:#8a93a1;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-contrast:#fff;--accent-subtle:#eaf0fe;--series-2:#eb6834;--series-3:#0f8f6a;--danger:#b42318;--danger-surface:#fef3f2;--danger-border:#fda29b;--play-start:#6cc287;--play-end:#ef8f8f;--radius:8px;--radius-sm:5px;--shadow:0 1px 2px #1018280f, 0 1px 3px #1018281a;--shadow-lg:0 4px 6px -2px #1018280d, 0 12px 16px -4px #1018281a;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151a;--surface:#1a1f27;--surface-sunken:#21262f;--border:#2c333d;--border-strong:#3d4551;--text:#e6e9ee;--text-muted:#a0a9b8;--text-faint:#78828f;--accent:#5b8def;--accent-hover:#7aa3f5;--accent-contrast:#0d1117;--accent-subtle:#1c2740;--series-2:#d95926;--series-3:#2fb68c;--danger:#fda29b;--danger-surface:#2c1a1a;--danger-border:#6b2f2a;--play-start:#7fd99a;--play-end:#f4a3a3;--shadow:0 1px 2px #0000004d, 0 1px 3px #0003;--shadow-lg:0 4px 6px -2px #0000004d, 0 12px 16px -4px #00000059}}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.55}h1,h2,h3{letter-spacing:-.011em;margin:0 0 4px;line-height:1.25}h1{font-size:22px;font-weight:650}h2{font-size:17px;font-weight:620}h3{color:var(--text-muted);font-size:14px;font-weight:620}p{margin:0 0 12px}a{color:var(--accent);-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);text-underline-offset:2px}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}header{z-index:10;background:color-mix(in srgb, var(--surface) 85%, transparent);-webkit-backdrop-filter:saturate(140%)blur(8px);backdrop-filter:saturate(140%)blur(8px);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px 24px;padding:10px 24px;display:flex;position:sticky;top:0}header:before{content:"JumpBomber Admin";letter-spacing:-.02em;white-space:nowrap;font-weight:640}header nav{flex-wrap:wrap;align-items:center;gap:4px 0;display:flex}.nav-group{flex-wrap:wrap;gap:2px;display:flex}.nav-group+.nav-group{border-left:1px solid var(--border);margin-left:10px;padding-left:10px}header nav a{border-radius:var(--radius-sm);color:var(--text-muted);padding:6px 12px;font-weight:550;text-decoration:none}header nav a:hover{background:var(--surface-sunken);color:var(--text)}header nav a.active{background:var(--accent-subtle);color:var(--accent)}.identity-menu{margin-left:auto;position:relative}.identity-trigger{border-radius:var(--radius-sm);color:var(--text);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:10px;padding:5px 10px;display:flex}.identity-trigger:hover,.identity-trigger[aria-expanded=true]{border-color:var(--border);background:var(--surface-sunken)}.identity-name{font-weight:550}.identity-group{border:1px solid var(--border);background:var(--surface-sunken);color:var(--text-muted);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:550}.identity-caret{color:var(--text-muted);font-size:10px}.identity-trigger[aria-expanded=true] .identity-caret{transform:rotate(180deg)}.identity-panel{z-index:20;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);flex-direction:column;min-width:100%;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000001f}.identity-panel a,.identity-panel button{border-radius:var(--radius-sm);color:var(--text);font:inherit;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:7px 12px;text-decoration:none}.identity-panel a:hover,.identity-panel button:hover{background:var(--surface-sunken)}main{max-width:1100px;margin:0 auto;padding:28px 24px 64px}main>section>h1,main>section>h2{margin-bottom:16px}section+section{margin-top:32px}table{border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);margin:0 0 16px;overflow:hidden}caption{color:var(--text-muted);text-align:left;margin-bottom:8px;font-size:13px;font-weight:550}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:10px 14px}thead th{background:var(--surface-sunken);color:var(--text-muted);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;font-size:12px;font-weight:600}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-sunken)}tbody td:first-child{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px}form{margin:0 0 20px}label{color:var(--text-muted);margin-bottom:4px;font-size:13px;font-weight:550;display:block}input,select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;max-width:360px;color:var(--text);font:inherit;padding:8px 11px}input::placeholder{color:var(--text-faint)}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle);outline:none}input+label,select+label,input+button,p+label{margin-top:12px}form[role=search]{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}form[role=search] label{flex-basis:100%;margin-bottom:0}form[role=search] input{flex:260px;max-width:420px}button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;padding:8px 14px;font-weight:550}button:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--text-faint)}button[type=submit]{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}button[type=submit]:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button:disabled{opacity:.55;cursor:not-allowed}button+button{margin-left:8px}dl{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:minmax(120px,max-content) 1fr;gap:8px 20px;margin:0 0 20px;padding:16px 18px;display:grid}dt{color:var(--text-muted);font-size:13px;font-weight:550}dd{overflow-wrap:anywhere;margin:0}pre{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);margin:0 0 16px;padding:14px 16px;font-size:12.5px;line-height:1.5;overflow-x:auto}.record-browser{grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start;gap:24px;margin-bottom:16px;display:grid}.record-list{max-height:calc(100vh - 92px);position:sticky;top:76px;overflow-y:auto}.record-filters{margin-bottom:12px}.record-list-note{color:var(--text-muted);margin:0 0 12px;font-size:12.5px}.record-list table{margin:0}.record-list td{padding:8px 10px}.record-list button{text-align:left;white-space:normal;background:0 0;border:none;flex-direction:column;gap:2px;width:100%;padding:0;display:flex}.record-list button:hover:not(:disabled){background:0 0}.record-list tr.selected td{background:var(--accent-subtle)}.record-summary{overflow-wrap:anywhere}.record-meta{color:var(--text-muted);flex-wrap:wrap;gap:0 10px;font-size:12.5px;font-weight:400;display:flex}.record-panel{min-width:0}.record-detail-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.record-detail-header>h2{overflow-wrap:anywhere;min-width:0;margin-top:0}.record-detail-header>button{flex-shrink:0;margin-left:auto}.record-placeholder{border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);text-align:center;padding:48px 16px}@media (width<=900px){.record-browser{grid-template-columns:minmax(0,1fr)}.record-list{max-height:45vh;position:static}}[role=alert]{background:var(--danger-surface);border:1px solid var(--danger-border);border-radius:var(--radius-sm);color:var(--danger);border-left-width:3px;padding:10px 14px;font-weight:500}#root>form{background:var(--surface);border:1px solid var(--border);max-width:360px;box-shadow:var(--shadow-lg);border-radius:12px;margin:12vh auto 0;padding:28px}#root>form h1{text-align:center;margin-bottom:20px;font-size:19px}#root>form input{max-width:none}#root>form button{width:100%;margin-top:20px;padding:10px 14px}#root>p{color:var(--text-muted);text-align:center;margin:12vh auto 0}.live-chart,.world-map{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 0 20px;padding:16px 18px}.live-chart svg,.world-map svg{width:100%;display:block}.live-chart svg{height:200px}.map-viewport{border-radius:var(--radius-sm);background:var(--surface-sunken);cursor:grab;touch-action:none;height:400px;overflow:hidden}.map-viewport:active{cursor:grabbing}.map-viewport svg{height:100%}.map-controls{justify-content:flex-end;gap:6px;margin-bottom:10px;display:flex}.chart-series-players{--series-color:var(--accent)}.chart-series-games{--series-color:var(--series-2)}.chart-series-confirm{--series-color:var(--series-3)}.live-chart polyline{stroke:var(--series-color);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-baseline{stroke:var(--border);stroke-width:1px}.chart-axis-label{fill:var(--text-faint);font-size:11px;font-family:var(--font)}.chart-max-label.chart-series-players,.chart-max-label.chart-series-games,.chart-max-label.chart-series-confirm{fill:var(--series-color)}.chart-label{fill:var(--series-color);font-family:var(--font);dominant-baseline:middle;font-size:12px}.chart-label-name{fill:var(--text-muted);font-size:11px}.chart-label-value{font-size:15px;font-weight:650}.world-map path{fill:var(--text-faint)}.world-map circle{fill:var(--accent);fill-opacity:.8;stroke:var(--surface);stroke-width:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (width<=640px){header{padding:10px 16px}main{padding:20px 16px 48px}table{white-space:nowrap;display:block;overflow-x:auto}}.session-timeline{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin:0 0 16px;padding:12px 14px}.session-timeline:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.timeline-readout{color:var(--text-muted);margin-bottom:10px;font-size:12px}.timeline-readout-when{color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;display:block;overflow:hidden}.timeline-readout dl{box-shadow:none;background:0 0;border:none;flex-wrap:wrap;gap:6px 32px;margin:0;padding:0;display:flex}.timeline-readout dl div{flex-direction:column-reverse;display:flex}.timeline-readout dt{color:var(--text-faint);font-size:11px}.timeline-readout-unit{color:var(--series-color)}.timeline-readout dd{white-space:nowrap;color:var(--text);font-variant-numeric:tabular-nums;margin:0;font-weight:600;display:grid}.timeline-readout dd>span,.timeline-readout dd:before,.timeline-readout dd:after{grid-area:1/1}.timeline-readout dd:before,.timeline-readout dd:after{visibility:hidden}.timeline-readout dd:before{content:attr(data-widest)}.timeline-readout dd:after{content:attr(data-empty)}.timeline-charts{min-width:0;container-type:inline-size}.timeline-row-main{grid-template-columns:190px minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}main:has(.record-browser){max-width:1600px}.timeline-row+.timeline-row{margin-top:8px}@container (width<=520px){.timeline-row-main{grid-template-columns:minmax(0,1fr);gap:2px}}.timeline-row-head{flex-direction:column;gap:1px;font-size:11px;line-height:1.25;display:flex}.timeline-row-label{align-items:baseline;gap:8px;font-size:12px;display:flex}.timeline-row-title{color:var(--text);font-weight:600}.timeline-row-highlighted .timeline-row-title{color:var(--accent)}.timeline-legend{color:var(--text-muted);flex-wrap:wrap;gap:0 10px;display:inline-flex}.timeline-legend-item{align-items:center;gap:4px;display:inline-flex}.timeline-line-key{background:var(--series-color);border-radius:1px;width:12px;height:2px;display:inline-block}.timeline-scale{color:var(--text-faint);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px}.timeline-plot{width:100%;display:block;overflow:visible}.timeline-plot line,.timeline-plot polyline{vector-effect:non-scaling-stroke}.timeline-line{fill:none;stroke:var(--series-color);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.timeline-dot{fill:var(--series-color);stroke:var(--surface);stroke-width:2px}.timeline-column{fill:var(--series-color)}.timeline-reference{stroke:var(--text-faint);stroke-width:1px}.timeline-reference-key{background:var(--text-faint);height:1px}.timeline-threshold{stroke:var(--danger);stroke-width:1.5px}.timeline-threshold-key{background:var(--danger);height:2px}.timeline-breach{fill:var(--danger);opacity:.2}.timeline-rect-key{background:var(--series-color);border-radius:2px;width:10px;height:10px;display:inline-block}.timeline-caption{color:var(--text-muted);margin:12px 0 0;font-size:12px;line-height:1.45}.timeline-play-edge{stroke:var(--play-start);stroke-width:1.5px;pointer-events:none}.timeline-play-edge.timeline-play-end{stroke:var(--play-end);stroke-dasharray:4 3}.timeline-play-key{border-left:1.5px solid var(--play-start);height:10px;display:inline-block}.stall-network{--series-color:var(--accent)}.stall-server{--series-color:var(--series-2)}.stall-mark{fill:var(--series-color)}.timeline-play-key-end{border-left:1.5px dashed var(--play-end)}.timeline-crosshair{stroke:var(--text-muted);stroke-width:1px;pointer-events:none}
