@import "https://fonts.googleapis.com/css2?family=Exo+2:wght@500;700&family=Inter:wght@400;500;600&display=swap";.galaxy{border-radius:var(--radius);border:1px solid var(--line);background:radial-gradient(1px 1px at 12% 22%,#fff8,#0000),radial-gradient(1px 1px at 68% 14%,#fff6,#0000),radial-gradient(1px 1px at 41% 77%,#fff7,#0000),radial-gradient(1px 1px at 83% 61%,#fff5,#0000),radial-gradient(1px 1px at 27% 48%,#fff4,#0000),radial-gradient(#0b1230 0%,#04060e 75%);width:100%;height:100%;min-height:0;position:relative;overflow:hidden}.galaxy svg{width:100%;height:100%;display:block}.galaxy.picking{cursor:crosshair}.hexgrid{fill:none;stroke:#6e8cdc17;stroke-width:.6px}.debris{fill:url(#dust);opacity:.55}.debris.active{opacity:1}.xeno{fill:#b45aff2e;stroke:#c878ff8c;stroke-dasharray:2 2;stroke-width:.8px;animation:4s ease-in-out infinite xeno}@keyframes xeno{50%{fill:#b45aff4d}}.star{cursor:pointer}.star .hit{fill:#0000}.star .core{stroke:#ffffff80;stroke-width:.5px}.spec-M .core{fill:var(--spec-M)}.spec-K .core{fill:var(--spec-K)}.spec-G .core{fill:var(--spec-G)}.spec-F .core{fill:var(--spec-F)}.spec-B .core{fill:var(--spec-B)}.star .glow{opacity:.35}.star.unknown .core{opacity:.45}.star.unknown .glow{opacity:.1}.star.unstable .core{animation:.9s ease-in-out infinite unstable}@keyframes unstable{50%{fill:#fff;r:7}}.star .remnant{fill:none;stroke:#ff8a6a;stroke-dasharray:1.5 1.5;stroke-width:1px}.star .label{fill:#a8b6dd;font-size:6.5px;font-family:var(--font-body);text-anchor:middle;pointer-events:none}.star.unknown .label{fill:#5b6890}.star:hover .label{fill:#fff}.star .selected{fill:#ffffff0f;stroke:#fff;stroke-width:.9px;stroke-dasharray:2.5 1.5}.star .owner{fill:none;stroke:var(--pc);stroke-width:1.4px;opacity:.9}.fleet,.flight{fill:var(--pc);stroke:#000a;stroke-width:.5px}.route line{stroke:var(--pc,#fff);stroke-width:1px;stroke-dasharray:3 2.5;opacity:.75}.route.ordered line{opacity:.45}.route.preview line{stroke:#fff;opacity:.8}.map-tip{background:var(--panel);border:1px solid var(--line);pointer-events:none;border-radius:8px;padding:5px 10px;font-size:13px;position:absolute;bottom:10px;left:10px}.star.unreachable{opacity:.3;cursor:not-allowed}.game{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);background:#080c1ad9;flex-wrap:wrap;align-items:center;gap:16px;padding:8px 14px;display:flex}.brand{background:linear-gradient(90deg,#9fc0ff,#f0b5ff);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:18px}.phase{color:var(--text-dim);border:1px solid var(--line-strong);border-radius:999px;margin-left:10px;padding:1px 8px;font-size:12px}.spacer{flex:1}.small{font-size:12px}.pick-banner{border-bottom:1px solid var(--accent);background:#3c64ff2e;align-items:center;gap:12px;padding:6px 14px;display:flex}.layout{flex:1;grid-template-columns:minmax(0,1fr) 480px;gap:12px;min-height:0;padding:12px;display:grid}.map-area{min-height:0}.side{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-height:0;display:flex}.tabs{border-bottom:1px solid var(--line);gap:2px;padding:6px 6px 0;display:flex}.tabs button{color:var(--text-dim);background:0 0;border:none;border-radius:8px 8px 0 0}.tabs button.on{background:var(--panel-2);color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.side-body{flex:1;padding:12px;overflow:auto}.side-body h2{font-size:18px}.side-body h3{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;margin-top:14px;font-size:14px}@media (width<=980px){.layout{grid-template-rows:55vh auto;grid-template-columns:1fr}.game{height:auto;min-height:100%}}button.link{color:var(--accent);background:0 0;border:none;padding:0;font-weight:600;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.send-form{gap:6px;display:grid}.send-form label{grid-template-columns:90px 70px auto;align-items:center;gap:8px;display:grid}.land-row,.fleet-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.land-row span:first-child{flex:1}.check-row{cursor:pointer;align-items:center;gap:8px;margin:4px 0;display:flex}.retreat{margin-bottom:4px;display:block}.production .prod-summary{z-index:2;gap:6px;margin-bottom:10px;display:grid;position:sticky;top:-12px}.prod-actions{justify-content:flex-end;gap:8px;display:flex}.prod-card{margin-bottom:10px}.prod-card h3{text-transform:none;letter-spacing:0;color:var(--text);margin:0 0 4px;font-size:15px}.prod-stats{color:var(--text-dim);flex-wrap:wrap;gap:12px;margin-bottom:4px;font-size:12px;display:flex}.prod-table td{padding:2px 4px}.prod-table tr.active td:first-child{color:var(--text);font-weight:600}.prod-table input{width:58px}.report-item{border-bottom:1px solid var(--line);margin-bottom:10px;padding-bottom:8px}table.battle{margin-top:6px}.handoff{place-items:center;height:100%;display:grid}.handoff-card{text-align:center;padding:40px 56px}.handoff-card h1{font-size:34px}.handoff-card .pdot{width:16px;height:16px}.prod-table{table-layout:auto}.prod-table td:first-child{white-space:normal}.prod-table .unit{font-size:11px}.tab-count{background:var(--accent);color:#08102a;border-radius:999px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:700}.side-body table.grid{display:block;overflow-x:auto}.scores table.grid th,.scores table.grid td{padding:3px 5px}.alerts{flex-wrap:wrap;align-items:center;gap:6px;display:flex}button.alert{color:var(--warn);background:#ffc65c14;border-color:#ffc65c99;padding:2px 10px;font-size:12px}.help p,.help li{color:var(--text)}.help ul{padding-left:18px}.prod-actions .help-link{margin-right:auto;font-weight:500}dl.prod-help{margin:0}.prod-help-item{border-top:1px solid var(--line);padding:8px 0 2px}.prod-help-item dt{color:var(--accent);font-weight:600}.prod-help-item dd{margin:2px 0 0}.prod-help-item dd p{margin:0 0 4px}.online-page{place-items:center;min-height:100%;padding:24px 16px;display:grid}.online-card{gap:12px;width:min(420px,100%);display:grid}.online-card.wide{width:min(820px,100%)}.online-card label{gap:4px;display:grid}.online-card h3{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;margin:8px 0 0;font-size:14px}.row-end{justify-content:flex-end;gap:10px;display:flex}.row-between{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.row-gap{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row-gap label{align-items:center;gap:4px;display:inline-flex}.code{letter-spacing:.15em;color:var(--accent);font-family:ui-monospace,monospace}.seat-row{align-items:center;gap:10px;display:flex}.seat-name{flex:1}.option-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px 14px;display:grid}.option-grid label{align-items:center;gap:6px;display:flex}.conn-banner{border-bottom:1px solid var(--warn);color:var(--warn);background:#ffc65c26;padding:4px 14px}.setup{max-width:1040px;margin:0 auto;padding:32px 16px 48px}.setup-head h1{background:linear-gradient(90deg,#9fc0ff,#f0b5ff);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:40px}.setup-cols{grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;display:grid}@media (width<=760px){.setup-cols{grid-template-columns:1fr}}.setup-player{align-items:center;gap:8px;margin-bottom:8px;display:flex}.setup-player input{flex:1;min-width:0}.setup-length{gap:16px;display:flex}.setup-length label,.setup-option{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.setup-option{margin-bottom:8px}.setup-option input{margin-top:3px}.small-note{margin:4px 0 16px;font-size:12px}.setup-actions{justify-content:flex-end;gap:12px;margin-top:20px;display:flex}.setup-actions .primary{padding:10px 28px;font-size:16px}:root{--bg:#05070f;--bg-2:#0a0f1f;--panel:#0e152aeb;--panel-2:#16203ee6;--line:#7896dc2e;--line-strong:#8caaf066;--text:#e3e9ff;--text-dim:#8d9bc4;--text-faint:#5b6890;--accent:#7aa2ff;--good:#5ee0a0;--warn:#ffc65c;--bad:#ff6b7a;--p1:#4cc9f0;--p2:#f45ba6;--p3:#a7e36b;--p4:#ffb23f;--spec-M:#ff6b5a;--spec-K:#ffa54f;--spec-G:#ffe27a;--spec-F:#e8fff0;--spec-B:#8fb8ff;--font-head:"Exo 2", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--radius:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);background-image:radial-gradient(at 20% 10%,#503ca02e,#0000 55%),radial-gradient(at 85% 80%,#1e6ea029,#0000 55%);font-size:14px;line-height:1.4}h1,h2,h3{font-family:var(--font-head);letter-spacing:.02em;margin:0 0 .5em}button{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line-strong);cursor:pointer;border-radius:8px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:linear-gradient(#3d6cff,#2a4fd6);border-color:#6b8cff;font-weight:600}button.danger{border-color:#ff6b7a99}button.small{padding:2px 8px;font-size:12px}input,select{font:inherit;color:var(--text);border:1px solid var(--line-strong);background:#0b1228;border-radius:6px;padding:4px 6px}input[type=number]{width:64px}input[type=checkbox]{accent-color:var(--accent)}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.good{color:var(--good)}.warn{color:var(--warn)}.bad{color:var(--bad)}.num{font-variant-numeric:tabular-nums}.p1{--pc:var(--p1)}.p2{--pc:var(--p2)}.p3{--pc:var(--p3)}.p4{--pc:var(--p4)}.pname{color:var(--pc);font-weight:600}.pdot{background:var(--pc);width:9px;height:9px;box-shadow:0 0 6px var(--pc);border-radius:50%;margin-right:6px;display:inline-block}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px}table.grid{border-collapse:collapse;width:100%}table.grid th,table.grid td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;padding:3px 6px}table.grid th{color:var(--text-dim);font-size:12px;font-weight:500}table.grid td.r,table.grid th.r{text-align:right}.badge{border:1px solid;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:11px;display:inline-block}.toast{border:1px solid var(--bad);color:#ffd5da;z-index:50;background:#2a1020;border-radius:8px;max-width:min(560px,90vw);padding:10px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}
