:root{--bg: #0b0f1a;--panel: #151b2b;--text: #e6e9f2;--muted: #9aa3b8;--accent: #4fb3ff;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,sans-serif}.shell{max-width:960px;margin:0 auto;padding:24px 16px;min-width:0}h1{margin:0 0 8px;font-size:clamp(1.6rem,6vw,2.6rem)}.tagline{color:var(--accent);margin-top:0}footer{display:flex;gap:6px 16px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:32px;padding-top:14px;border-top:1px solid #1e2538;color:var(--muted);font-size:.85rem}a{color:var(--accent)}select{background:var(--panel);color:var(--text);border:1px solid var(--muted);border-radius:6px;padding:4px 8px}img.sprite,image.sprite{image-rendering:pixelated}.view{min-width:0}.top h1{font-size:clamp(1.4rem,5vw,2rem)}.muted{color:var(--muted)}button{font:inherit;color:var(--text);background:var(--panel);border:1px solid #2c3550;border-radius:8px;padding:8px 12px;cursor:pointer;min-height:40px}button:disabled{opacity:.45;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.primary{background:var(--accent);color:#06121f;border-color:var(--accent);font-weight:600}button[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.setup h2{margin:8px 0 4px}.cp{font-weight:600}.palette{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:12px 0}.pick{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;min-width:0}.pick span{font-size:.75rem;line-height:1.1;text-align:center;overflow-wrap:anywhere}.pick small{color:var(--muted);font-size:.7rem}.pick img{width:32px;height:32px;object-fit:contain}.pick.dim{opacity:.5}.formation{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;gap:6px;max-width:420px}.col-label{grid-row:1;text-align:center;color:var(--muted);font-size:.8rem}.col-label[data-col="1"]{grid-column:1}.col-label[data-col="2"]{grid-column:2}.col-label[data-col="3"]{grid-column:3}.slot{min-height:52px;border-style:dashed;display:flex;align-items:center;justify-content:center;padding:4px}.slot.filled{border-style:solid}.slot img,.unit img{max-width:100%;max-height:44px;object-fit:contain}.slot.cls-capital img,.unit.cls-capital img{max-height:80px}.row-controls,.options,.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-top:14px}.field{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted);min-width:0;max-width:100%}.field select{max-width:100%;min-height:40px}.abilities{border:1px solid #2c3550;border-radius:8px;margin:14px 0 0;padding:8px 10px;display:grid;gap:8px}.ability{display:flex;gap:8px;align-items:flex-start}.ability input{margin-top:4px;width:20px;height:20px}.ability span{display:flex;flex-direction:column}.ability small{color:var(--muted)}.battle-head{display:flex;justify-content:space-between;color:var(--muted);font-size:.85rem}.time{font-variant-numeric:tabular-nums;color:var(--text)}.battlefield{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) 12px repeat(3,minmax(0,1fr));grid-template-rows:repeat(4,minmax(56px,auto));gap:4px;margin:8px 0;padding:6px;border-radius:10px;background:radial-gradient(circle at 20% 30%,#1b2240 0,transparent 40%),radial-gradient(circle at 80% 70%,#2a1530 0,transparent 40%),#070a14}.lasers{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.laser{stroke-width:2;stroke-linecap:round}.laser.from-0{stroke:#6fd3ff}.laser.from-1{stroke:#ff6b5e}.laser.miss{stroke-dasharray:3 5;stroke-width:1}.unit{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:2px;min-height:0;min-width:0;background:transparent;border:none;transition:opacity .4s}.unit.side-1 img{transform:scaleX(-1)}.bars{display:flex;flex-direction:column;gap:1px;width:90%}.bar{display:block;height:3px;border-radius:2px;background:linear-gradient(to right,var(--bar-color) calc(var(--fill, 100) * 1%),#232a3d calc(var(--fill, 100) * 1%))}.bar.hp{--bar-color: #5fe08a}.bar.sh{--bar-color: #5aa8ff}.unit.cls-fighter .bar.sh,.unit.cls-bomber .bar.sh{opacity:.35}.unit.destroyed{opacity:.12;filter:grayscale(1)}.unit.gone{opacity:0}.unit.stunned img{filter:saturate(.2) brightness(1.4)}.battlefield.targeting .unit.side-1:not(.destroyed):not(.gone){cursor:crosshair;outline:1px dashed var(--accent);border-radius:6px}.status{min-height:1.4em;margin:4px 0;color:var(--accent)}.picker{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}.battle-controls{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}.ability-bar,.speed{display:flex;flex-wrap:wrap;gap:6px}.ability-btn[data-state=ready]{border-color:#ffd166}.result h2{font-size:1.8rem;margin:12px 0 4px}.result.won h2{color:#5fe08a}.result.lost h2{color:#ff6b5e}.sides{display:grid;grid-template-columns:1fr 1fr;gap:12px}.side{background:var(--panel);border-radius:8px;padding:8px 12px}.side h3{margin:0 0 4px}.side p{margin:2px 0}@media(prefers-reduced-motion:reduce){.unit{transition:none}}.galaxy-screen{position:relative;min-width:0}.hud{display:flex;flex-wrap:wrap;gap:6px 14px;padding:8px 10px;background:var(--panel);border-radius:8px;font-size:.85rem}.hud small{color:var(--muted)}.res-metal b{color:#d9b38c}.res-energy b{color:#7fd4ff}.res-credits b{color:#ffd166}.tabs{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;align-items:center}.tabs .sim-link{margin-left:auto;font-size:.85rem}.banners{display:grid;gap:6px}.banner{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;padding:6px 10px;border-radius:8px;background:#182036;font-size:.9rem}.banner.ready{border:1px solid #ffd166}.toast{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translate(-50%);z-index:40;width:max-content;max-width:min(92vw,420px);margin:0;padding:10px 14px;border:1px solid #ff9a8a;border-radius:10px;background:#24131b;color:#ffc2b8;box-shadow:0 8px 24px #00000080;pointer-events:none}.toast:empty{display:none}.map-tools{display:flex;gap:6px;margin-bottom:6px}.map-wrap{border-radius:10px;overflow:hidden;background:#060912}.galaxy-map{background:radial-gradient(circle at 30% 20%,rgb(27 34 64 / .7) 0,transparent 45%),radial-gradient(circle at 70% 80%,rgb(42 21 48 / .7) 0,transparent 45%),url(/sprites/backgrounds/stars.png) var(--stars-x, 0) var(--stars-y, 0) / 128px 128px repeat #0d1222;image-rendering:pixelated;display:block;width:100%;height:min(62vh,520px);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.sector .hex{fill:#121a2e;stroke:#26304b;stroke-width:1}.sector.type-asteroid .hex{fill:#1d1a17}.sector.type-gas .hex{fill:#14223a}.sector.type-shipyard .hex,.sector.type-academy .hex{fill:#18243a}.sector.type-relay .hex{fill:#13262a}.sector.type-nebula .hex{fill:url(#nebula-fill)}.sector.type-anomaly .hex{fill:#2a1030}.sector.type-jumpgate .hex{fill:#10302a}.sector.owned .hex{stroke:var(--accent);stroke-width:2.5}.sector.owned.cut-off .hex{stroke:#ff9a5e;stroke-dasharray:4 3}.sector.targeted .hex{stroke:#ffd166;stroke-width:2.5}.sector.selected .hex{stroke:#fff;stroke-width:3}.sector image{pointer-events:none}.flagship{pointer-events:none;filter:drop-shadow(0 0 3px #4fb3ff)}.panel{background:var(--panel);border-radius:8px;padding:10px 12px;margin-top:10px}.panel h3{margin:4px 0 6px}.panel p{margin:4px 0}.fleet-list,.queue-list{list-style:none;padding:0;margin:0 0 8px;display:grid;gap:6px}.fleet-list li,.queue-list li{display:grid;grid-template-columns:auto 1fr auto;gap:2px 8px;align-items:center}.queue-list li{grid-template-columns:1fr auto}.fleet-list li .bar,.queue-list li .bar{grid-column:1 / -1}.fleet-list li.away{opacity:.55}.fleet-list img,.ship-row img{width:28px;height:22px;object-fit:contain}.bar.progress{--bar-color: #ffd166}.build-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin-bottom:8px}.build-grid button,.modules button{font-size:.8rem;text-align:left}.modules .module{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:space-between;margin:6px 0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:16;background:#04060cd9;overflow-y:auto;padding:16px}.dialog,.battle-stage{max-width:560px;margin:0 auto;background:var(--panel);border-radius:10px;padding:12px 14px}.battle-stage{max-width:960px;background:var(--bg)}.ship-list{display:grid;gap:4px;max-height:40vh;overflow-y:auto;margin-bottom:8px}.ship-row{display:grid;grid-template-columns:auto auto 1fr auto;gap:8px;align-items:center}.ship-row input{width:20px;height:20px}.back-link{display:inline-block;margin-bottom:8px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.modal-layer{z-index:20}.dialog h2{margin:4px 0 10px;font-size:1.3rem}.dialog h2:focus{outline:none}.dialog section h3{margin:12px 0 4px}.dialog section p{margin:4px 0;line-height:1.4}.keys{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:4px 0}.keys dd{margin:0}kbd{font:inherit;font-size:.85rem;padding:1px 6px;border:1px solid var(--muted);border-radius:4px}.toggle{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;margin:10px 0}.toggle input{width:20px;height:20px;margin-top:2px}.toggle span{display:grid}.toggle small{color:var(--muted)}.dialog .field{margin:10px 0}input[type=range]{width:100%;max-width:280px;accent-color:var(--accent)}.tutorial{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin:8px 0;padding:8px 12px;border-radius:8px;border:1px solid var(--accent);background:#10233a}.tutorial p{margin:0;flex:1 1 220px}.galaxy-map:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.unit:focus-visible{outline:2px solid #ffd166;outline-offset:1px}.sector .mark{fill:none;stroke:none;pointer-events:none}[data-colorblind] .sector.owned .mark{stroke:var(--accent);stroke-width:2}[data-colorblind] .sector.owned.cut-off .mark{stroke:#fff;stroke-dasharray:2 3}[data-colorblind] .sector.targeted .hex{stroke:#fff;stroke-dasharray:1 4;stroke-linecap:round;stroke-width:3}[data-colorblind] .unit{position:relative}[data-colorblind] .unit:after{content:"●";position:absolute;top:0;left:2px;font-size:.7rem;line-height:1;color:var(--accent)}[data-colorblind] .unit.side-1:after{content:"▲";left:auto;right:2px;color:#fff}[data-calm] *,[data-calm] *:before,[data-calm] *:after{animation:none!important;transition:none!important}[data-calm] .lasers{display:none}header.top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}header.top>div{min-width:0}button.account{flex:0 1 auto;max-width:45%;min-height:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-actions{display:flex;gap:8px;align-items:center;flex:0 1 auto;min-width:0;max-width:60%}.header-actions button.account{max-width:100%}button.icon-button{min-width:40px;min-height:40px;padding:6px;font-size:1.1rem;line-height:1}.sim-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.field input{min-height:40px;padding:6px 10px;font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--muted);border-radius:6px;max-width:100%}.account-form{display:grid;gap:10px}.account-form .actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}button.link{background:none;border:0;padding:4px 0;color:var(--accent);text-decoration:underline;min-height:40px}button.danger{background:#3a1520;border-color:#e0596b;color:#ffd5db;margin-top:8px}.danger-zone{margin-top:16px;border-top:1px solid #2c3550;padding-top:10px}.danger-zone summary{cursor:pointer;color:var(--muted)}.form-status{min-height:1.4em;margin:0}.card{background:var(--panel);border-radius:8px;padding:16px}.hud{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hud .res{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:6px;align-items:center;min-width:0}.hud .res .icon{grid-row:1 / 3;width:28px;height:28px;object-fit:contain}.hud .res b{font-size:1.05rem}.hud .res small{white-space:nowrap}.hud .res .bar{grid-column:1 / -1;margin-top:4px}.bar.store{--bar-color: #8aa4d6}.tabs button.view{position:relative;min-width:96px;font-weight:600}.badge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:#ffd166;color:#1a1404;font-size:.75rem;line-height:20px;text-align:center}.tabs .more{margin-left:auto;position:relative}.tabs .more summary{cursor:pointer;color:var(--muted);padding:8px 4px;min-height:40px;list-style:none}.tabs .more[open]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex-basis:100%;justify-content:flex-end}.advice{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:10px 0;padding:10px 12px;border-radius:10px;background:linear-gradient(90deg,#17233d,#151b2b);border:1px solid #2c4470}.advice p{margin:0;flex:1 1 200px}.advice-label{flex-basis:100%;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.advice[data-kind=wait]{border-color:#2c3550}.odds{font-weight:600}.odds-easy{color:#5fe08a}.odds-even{color:#ffd166}.odds-risky{color:#ff9f5a}.odds-hopeless{color:#ff6b7d}.odds-unknown{color:#b9a7ff}button.big{min-height:48px;padding:10px 22px;font-size:1.05rem}.sector-details summary{cursor:pointer;color:var(--muted);margin-top:8px}.bridge-head{display:grid;gap:10px;margin-bottom:12px}.bridge-window{position:relative;aspect-ratio:16 / 9;max-height:320px;width:100%;border-radius:12px;border:1px solid #2c3550;overflow:hidden;background:#0b0f1a}.bridge-scene{display:block;width:100%;height:100%;object-fit:cover;object-position:center 40%}.bridge-title h2{margin:0;font-size:1.3rem}.bridge-title p{margin:2px 0 0}.consoles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}button.console{display:grid;grid-template-columns:36px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:8px;align-items:center;text-align:left;padding:10px;min-height:84px;border-radius:12px;background:linear-gradient(#1a2236,#121827);border:1px solid #2c3550}button.console .sprite{grid-row:1 / 3;width:36px;height:36px;object-fit:contain}button.console small{color:var(--muted);font-size:.8rem}button.console .bar{grid-column:1 / -1;margin-top:8px}button.console.free{border-color:#ffd166;box-shadow:0 0 0 1px #ffd16655,0 0 14px #ffd16633}button.console.free small{color:#ffd166}.station-detail{display:grid;gap:10px}.station-detail>button:first-child{justify-self:start}.station-detail h3,.station-detail p{margin:0}button.build{display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:8px;text-align:left;align-items:center}button.build .sprite{grid-row:1 / 4;width:40px}button.build small{font-size:.75rem}.sector-title{display:flex;align-items:center;gap:10px}.sector-title h3{margin:0}.portrait{width:56px;height:56px;border-radius:8px;border:1px solid #5a2a22;flex:0 0 auto}.cost{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 10px;font-size:.85rem;font-variant-numeric:tabular-nums}.cost-item{display:inline-flex;align-items:center;gap:4px}.cost-item .icon{width:18px;height:18px;object-fit:contain}.cost-item.short{color:#ff6b7d}.cost-time{color:var(--muted)}button.with-cost{display:grid;gap:4px;justify-items:start;text-align:left}button.primary.with-cost .cost-time,button.primary.with-cost .cost-item.short{color:inherit}button.build .cost{font-size:.75rem;gap:2px 6px}button.build .cost-item .icon{width:14px;height:14px}.goals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 10px}.goal{display:grid;gap:4px;align-content:start;padding:8px 10px;border-radius:10px;background:var(--panel);border:1px solid #2c3550;min-width:0}.goal b{font-size:.85rem}.goal small{color:var(--muted);font-variant-numeric:tabular-nums}.goal .cost{font-size:.75rem;gap:2px 6px}.goal .cost-item .icon{width:14px;height:14px}.goal.done{border-color:#ffd166;box-shadow:0 0 12px #ffd16633}.goal button{display:grid;gap:2px;justify-items:start;padding:6px 8px;margin-top:2px}.goal button .cost-item{color:inherit}.map-frame{position:relative}.map-frame .map-tools{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;gap:6px;margin:0}.map-frame .map-tools button{min-width:40px;padding:6px;background:#151b2bd9}.goal-head{display:flex;justify-content:space-between;align-items:baseline;gap:6px;min-width:0}.goal-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:480px){header.top .tagline{display:none}header.top h1{font-size:1.4rem;margin:4px 0 0}.advice{padding:8px 10px;margin:8px 0}.advice-label{font-size:.7rem}.goal{padding:6px 8px}.goal-head{flex-direction:column;align-items:flex-start;gap:0}.goal-head b{font-size:.78rem;white-space:normal;line-height:1.2}}.sector.far .hex{fill:#0a0e19;stroke:#141a2a}.sector.far image{display:none}.sector.owned .hex{fill:#12305a}.sector.odds-easy .hex{stroke:#5fe08a;stroke-width:2.5}.sector.odds-even .hex{stroke:#ffd166;stroke-width:2.5}.sector.odds-risky .hex{stroke:#ff6b7d;stroke-width:2.5}.sector.odds-unknown .hex{stroke:#b9a7ff;stroke-width:2.5;stroke-dasharray:4 3}.sector.quiet .hex{fill:#0d1220;stroke:#182033;stroke-width:1}.sector.quiet image{opacity:.3;filter:grayscale(.7)}.sector.quiet.foreign .hex{fill-opacity:.45;stroke-opacity:.5}.sector.targeted .hex{stroke:#ffd166;stroke-width:3;stroke-dasharray:5 3}.sector.selected .hex{stroke:#fff;stroke-width:3;stroke-dasharray:none}[data-colorblind] .sector.odds-even .hex{stroke-dasharray:6 2}[data-colorblind] .sector.odds-risky .hex{stroke-dasharray:2 2}.map-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 14px;margin:6px 0 0;font-size:.8rem;color:var(--muted)}.map-legend span:before{content:"";display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:50%;border:2px solid currentColor;vertical-align:-1px}.legend-easy:before{color:#5fe08a}.legend-even:before{color:#ffd166}.legend-risky:before{color:#ff6b7d}.legend-unknown:before{color:#b9a7ff;border-style:dashed}.legend-owned:before{color:#4fb3ff;background:#12305a}ul.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;padding:0;margin:0;list-style:none}ul.tiles li{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;gap:2px;padding:8px 6px;border-radius:10px;background:#121827;border:1px solid #222b42;text-align:center;min-width:0}ul.tiles li.muted{grid-column:1 / -1;background:none;border:0;color:var(--muted)}ul.tiles li img{width:40px;height:32px;object-fit:contain}ul.tiles li span{font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}ul.tiles li small{color:var(--muted);font-size:.75rem;font-variant-numeric:tabular-nums}ul.tiles li .bar{width:100%;margin-top:4px}ul.tiles li.waiting,ul.tiles li.away{opacity:.5}.pips{display:inline-flex;gap:4px;flex-wrap:wrap}.pips span{width:10px;height:10px;border-radius:50%;border:1px solid #5a6a90}.pips span.on{background:var(--accent);border-color:var(--accent)}.pilot-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.module-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.module-card{display:grid;gap:6px;justify-items:start;padding:12px;border-radius:12px;background:linear-gradient(#1a2236,#121827);border:1px solid #2c3550}.module-card img{width:32px;height:32px;object-fit:contain}.module-card button{width:100%}.sector.foreign .hex{stroke-width:2}.sector.owner-0 .hex{fill:#4a1b2a;stroke:#e0596b}.sector.owner-1 .hex{fill:#3d2a12;stroke:#f0a040}.sector.owner-2 .hex{fill:#2b1b46;stroke:#a77bff}.sector.owner-3 .hex{fill:#12363a;stroke:#3fd0c9}.sector.owner-4 .hex{fill:#3e1838;stroke:#ff7ad9}.sector.owner-5 .hex{fill:#33331a;stroke:#e3d75a}.sector.shielded .hex{stroke-dasharray:2 3}.sector.foreign-home .mark{stroke:currentColor;stroke-width:1.5;fill:none}.sector.foreign.odds-easy .hex{stroke:#5fe08a}.sector.foreign.odds-even .hex{stroke:#ffd166}.sector.foreign.odds-risky .hex{stroke:#ff6b7d}.banner.danger{border-color:#e0596b;background:#2a1219}.sector.incoming .hex{stroke:#ff6b7d;stroke-width:3;stroke-dasharray:3 2}@media(prefers-reduced-motion:no-preference){:root:not([data-calm]) .sector.incoming .hex{animation:alarm 1.2s ease-in-out infinite alternate}}@keyframes alarm{to{stroke-opacity:.35}}button.build small.role{grid-column:1 / -1;color:var(--muted);font-size:.72rem;line-height:1.3;white-space:normal}.ship-guide{display:grid;grid-template-columns:minmax(0,7.5rem) minmax(0,1fr);gap:6px 12px}.ship-guide dt{font-weight:600}.ship-guide dd{margin:0;color:var(--muted)}button.build b small.cp{margin-left:6px;font-weight:400;color:var(--muted)}.counters{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:2px}.counter{display:inline-flex;align-items:center;gap:3px;font-size:.75rem}.counter img{width:20px;height:16px;object-fit:contain}.counter.strong{color:#5fe08a}.counter.weak{color:#ff6b7d}.drawer-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;background:#04060c8c}.drawer{position:absolute;top:0;right:0;bottom:0;width:min(100%,460px);overflow-y:auto;overscroll-behavior:contain;background:var(--bg);border-left:1px solid #2c3550;box-shadow:-12px 0 30px #00000080;padding:12px 16px 28px;animation:drawer-in .22s ease-out}[data-calm] .drawer{animation:none}@keyframes drawer-in{0%{transform:translate(100%)}}.drawer-close{position:sticky;top:0;float:right;z-index:1;margin-left:8px}html.drawer-open,html.drawer-open body{overflow:hidden}@media(max-width:700px){.shell:has(.galaxy-screen){padding-bottom:calc(80px + env(safe-area-inset-bottom))}.galaxy-screen>.tabs{position:fixed;left:0;right:0;bottom:0;z-index:14;margin:0;padding:8px 16px calc(8px + env(safe-area-inset-bottom));flex-wrap:nowrap;background:var(--panel);border-top:1px solid #2c3550;box-shadow:0 -8px 24px #0006}.galaxy-screen>.tabs button.view{flex:1;min-height:48px}.drawer{top:auto;left:0;width:100%;height:92dvh;border-left:0;border-top:1px solid #2c3550;border-radius:16px 16px 0 0;box-shadow:0 -12px 30px #00000080;padding-bottom:calc(28px + env(safe-area-inset-bottom));animation-name:sheet-in}.drawer:before{content:"";display:block;width:44px;height:5px;margin:0 auto 8px;border-radius:3px;background:#3a4560}.update-banner{bottom:calc(80px + env(safe-area-inset-bottom))}}@keyframes sheet-in{0%{transform:translateY(100%)}}.update-banner{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translate(-50%);z-index:30;display:flex;gap:12px;align-items:center;width:min(calc(100% - 32px),480px);padding:10px 12px 10px 16px;border:1px solid var(--accent);border-radius:12px;background:var(--panel);box-shadow:0 8px 24px #00000080}.update-banner span{flex:1}.banner.offline{border-color:#8a93a8;background:#1b2030;color:var(--text)}ul.tiles li button.scrap{margin-top:4px;padding:2px 8px;min-height:28px;font-size:.72rem}ul.tiles li button.scrap .cost{margin-left:4px}ul.tiles li button.scrap.danger{white-space:normal;line-height:1.15}ul.tiles li:has(>button.cancel){position:relative}ul.tiles li button.cancel{position:absolute;top:2px;right:2px;min-width:28px;min-height:28px;padding:0;font-size:.75rem;background:transparent;border:1px solid #3a4560;color:#c9d2ea}.sector.gate .gate-halo{fill:none;stroke:#c3a6ff;stroke-width:2;stroke-opacity:.8}.sector.gate .hex{stroke:#c3a6ff;stroke-width:2}.sector.core .core-halo{fill:none;stroke:#ffd166;stroke-width:2;stroke-opacity:.85}.sector.core .hex{stroke:#ffd166;stroke-width:3}:root:not([data-calm]) .sector.core .core-halo{animation:core-glow 2.4s ease-in-out infinite alternate}@keyframes core-glow{to{stroke-opacity:.25}}.season{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:4px 6px 4px 12px;border:1px solid #5a4a1e;border-radius:12px;background:linear-gradient(90deg,#2a2312,#151b2b)}.season .season-line{flex:1;min-width:0;margin:0;font-size:.85rem}.season .actions{display:flex;flex-shrink:0;gap:4px}.season .actions button{min-height:34px;padding:4px 10px;font-size:.82rem}ol.ranking{margin:8px 0;padding-left:1.6em}ol.ranking li{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid #222b42}ol.ranking li.you{color:var(--accent);font-weight:600}.core-note{color:#ffd166}.sector.ally .hex{fill:#163a52;stroke:#7fd3ff;stroke-dasharray:5 2}ol.ranking .alliance-tag{margin-left:6px;color:#7fd3ff;font-size:.75rem}ol.ranking li>small{flex-shrink:0;white-space:nowrap}.alliance-form{display:flex;gap:8px}.alliance-form input{flex:1;min-width:0}.alliance-members li.you{color:var(--accent);font-weight:600}.alliance-members small{margin-left:6px}.marker-layer{pointer-events:none}.marker circle{stroke:#0b1020;stroke-width:1.5}.marker text{fill:#0b1020;font-size:9px;font-weight:700;text-anchor:middle}.marker-attack circle{fill:#ff6b7d}.marker-defend circle{fill:#7fd3ff}.marker-help circle{fill:#ffd166}.marker-gather circle{fill:#c3a6ff}.marker-note{font-weight:600}.marker-note.marker-attack{color:#ff6b7d}.marker-note.marker-defend{color:#7fd3ff}.marker-note.marker-help{color:#ffd166}.marker-note.marker-gather{color:#c3a6ff}.marker-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0}.marker-actions small{flex-basis:100%}.marker-actions button.small{min-height:32px;padding:2px 10px;font-size:.8rem}.sector.jumping .hex{stroke:#c3a6ff;stroke-width:3}@media(prefers-reduced-motion:no-preference){:root:not([data-calm]) .sector.jumping .hex{animation:alarm 1.6s ease-in-out infinite alternate}}.jump-panel{margin:8px 0}.jump-panel h4{margin:0 0 4px}.campaign-targets{display:grid;gap:6px;margin:8px 0}.campaign-target{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px}.campaign-target button.small{min-height:32px;padding:2px 10px;font-size:.8rem}.season-theme{color:#ffd166;font-weight:600}ol.ranking .title{margin-left:6px;padding:0 6px;border-radius:8px;background:#2a2312;color:#ffd166;font-size:.75rem;font-style:normal}ol.ranking .title-champion{background:#5a4a1e}.hall-season h3{margin:12px 0 2px;font-size:.95rem}.pilot-face{border-radius:8px;border:1px solid #2c3550;background:#0b0f1a;object-fit:cover;flex:0 0 auto}.pilot-face.small{width:32px;height:32px}.pilot-face.large{width:56px;height:56px}.pilot-face.wounded{filter:grayscale(1);opacity:.6}.pilot-face.empty{display:inline-block;border-style:dashed}ul.roster{list-style:none;margin:8px 0;padding:0;display:grid;gap:8px}ul.roster li{display:flex;gap:10px;align-items:center;padding:8px;border-radius:10px;background:#121827;border:1px solid #222b42}ul.roster li.wounded{opacity:.7}ul.roster .pilot-info{display:grid;gap:3px;min-width:0;flex:1;text-align:left}ul.roster.pick button{display:flex;gap:10px;align-items:center;width:100%;text-align:left}ul.roster.pick button.current{border-color:var(--accent)}.profile-head{display:flex;gap:12px;align-items:center}.profile-head p{margin:0}ul.profile-traits{margin:4px 0 8px;padding-left:18px;display:grid;gap:4px}.traits{display:flex;flex-wrap:wrap;gap:4px}.trait{padding:1px 8px;border-radius:10px;background:#1d2640;border:1px solid #2f3b5c;font-size:.75rem}.trait.earned{border-color:#ffd166;color:#ffd166}.bar.xp{--bar-color: #a77bff}ul.tiles li button.pilot-pick,ul.roster li button.pilot-pick{padding:2px;min-height:0;border-radius:10px;line-height:0}.deputy-modes{display:grid;gap:8px}.deputy-modes button.deputy-mode{display:grid;gap:2px;text-align:left;padding:10px 12px}.deputy-modes button.deputy-mode small{color:var(--muted);font-weight:400}.deputy-modes button.deputy-mode.current{border-color:var(--accent);background:#13284a}.faction-pick{margin:0 0 8px;padding:10px 12px;border:1px solid var(--accent);border-radius:12px;background:var(--panel)}.faction-pick h3{margin:0 0 2px}.faction-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:8px}.faction-options button.faction-option{display:grid;justify-items:center;gap:4px;padding:8px 4px;min-width:0;text-align:center;white-space:normal}.faction-options button.faction-option img{width:72px;height:36px;object-fit:contain}.faction-options button.faction-option b{font-size:.82rem;line-height:1.2}.faction-options button.faction-option small{color:var(--muted);font-weight:400;font-size:.72rem;line-height:1.2}.flagship-route{fill:none;stroke:#4fb3ff;stroke-width:3;stroke-dasharray:6 6;stroke-linecap:round;pointer-events:none}.flagship-route-end{fill:none;stroke:#4fb3ff;stroke-width:2.5;pointer-events:none}:root:not([data-calm]) .flagship-route{animation:route-dash 1.2s linear infinite}@keyframes route-dash{to{stroke-dashoffset:-12}}.flagship-route.off,.flagship-route-end.off{display:none}.garrison-layer{pointer-events:none}.garrison-badge circle{fill:#1f9d55;stroke:#0b1020;stroke-width:1.5}.garrison-badge text{fill:#fff;font-size:9px;font-weight:700;text-anchor:middle}.bridge-sim{display:block;margin:12px auto 0}.missions{list-style:none;padding:0;margin:4px 0 8px;display:grid;gap:8px}.missions li{display:grid;grid-template-columns:1fr auto;gap:2px 8px}.missions li .bar{grid-column:1 / -1}.missions li.done span:first-child:before{content:"✓ ";color:#7ee0a1}.alliance-history{margin:4px 0 8px;padding-left:18px}.hall-alliance{color:#8fd0ff}.link-button{background:none;border:0;padding:0;min-height:0;color:inherit;font:inherit;text-decoration:underline dotted;cursor:pointer}img.avatar{border-radius:6px;vertical-align:middle;margin-right:6px;object-fit:cover}.profile-head{display:flex;gap:14px;align-items:center}.profile-head h3{margin:0}.profile-stats{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:12px 0}.profile-row{display:contents}.profile-row dt{color:var(--muted)}.profile-row dd{margin:0}.profile-favorite img{height:24px;vertical-align:middle}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px}.avatar-choice{padding:2px;min-height:0;border:2px solid transparent;border-radius:8px;background:none}.avatar-choice.current{border-color:#ffd166}.avatar-choice img.avatar{margin:0}.friends-list{list-style:none;padding:0;display:grid;gap:8px}.friends-list li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px}.friends-list li small,.friends-list li.muted{display:block}.formation-grid{display:grid;gap:4px;margin:6px 0}.formation-row{display:grid;grid-template-columns:52px repeat(4,1fr);gap:4px;align-items:center;min-height:40px}.formation-row>small{grid-column:1}.formation-ship{display:flex;justify-content:center;padding:2px;border-radius:6px;background:#121827;border:1px solid #222b42}.formation-ship.shielded{border-color:#4fb3ff;box-shadow:0 0 0 1px #4fb3ff inset}.formation-ship img{height:30px;width:auto}.formation-choices{display:grid;gap:6px}.formation-choice{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.formation-choice>span{min-width:90px}.formation-choice button.small{min-height:30px;padding:2px 8px;font-size:.8rem}
