:root{--bg: #070b14;--panel: #0f1726;--line: #22314d;--text: #dbe6f7;--muted: #7f93b3;--accent: #4fb3ff;--enemy: #ff5a4f;--good: #9dffb0;--warn: #ffb35a;font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}#app{display:grid;grid-template-columns:1fr 300px;grid-template-rows:48px 1fr;grid-template-areas:"top top" "board side";height:100vh}#topbar{grid-area:top;display:flex;align-items:center;gap:24px;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{font-weight:800;letter-spacing:.2em;color:var(--accent)}.phases{display:flex;align-items:center;gap:6px;font-size:13px}.phase{padding:3px 8px;border-radius:4px;color:var(--muted)}.phase.on{background:var(--accent);color:#041018;font-weight:700}.sep{color:var(--line)}.round{display:flex;align-items:baseline;gap:6px;padding:2px 10px;border:1px solid var(--line);border-radius:6px;background:#0b1220}.round span{font-size:11px;letter-spacing:.12em;color:var(--muted)}.round b{font-size:20px;color:#ffe066}#topleft{position:absolute;top:10px;left:12px;bottom:14px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;pointer-events:none}#topleft>*{pointer-events:auto}#roundchip{position:relative;flex:none;z-index:4;display:flex;gap:8px;align-items:center;padding:4px 10px;border-radius:8px;background:#0a101cd9;border:1px solid var(--line);pointer-events:none}#roundchip .r{font-weight:900;color:#ffe066;letter-spacing:.06em}#roundchip .p{color:var(--accent);font-weight:700;font-size:13px}.tools{margin-left:auto;display:flex;gap:8px}#board{grid-area:board;position:relative;min-width:0;min-height:0}#board canvas{display:block}#sidebar{grid-area:side;background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;display:flex;flex-direction:column}section{padding:12px 16px;border-bottom:1px solid var(--line)}h2{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 8px}p{margin:6px 0;font-size:14px;line-height:1.4}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--warn);font-size:13px}.row{display:flex;gap:8px}button{font:inherit;font-size:13px;color:var(--text);background:#18243a;border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer;margin-top:6px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--accent);color:#041018;border-color:var(--accent);font-weight:600}table.init{border-collapse:collapse;font-size:13px;width:100%;margin:4px 0 8px}table.init th,table.init td{padding:3px 6px;text-align:right}table.init th:first-child,table.init td:first-child{text-align:left}table.init tr.win td{color:var(--good);font-weight:700}.card{border-left:3px solid var(--accent);padding-left:10px}.card.enemy{border-color:var(--enemy)}.card-title{font-weight:700}dl{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;font-size:13px;margin:8px 0 0}dt{color:var(--muted)}dd{margin:0}.log{flex:1;min-height:120px}.log ol{list-style:none;padding:0;margin:0;font-size:12px}.log li{padding:3px 0;border-bottom:1px dashed #1a2640}#app{grid-template-columns:1fr 330px}.legend{display:flex;gap:12px;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}.big{font-size:20px;font-weight:800;color:var(--accent)}.plan{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#0b1220}.plan-title{font-size:14px;margin-bottom:4px}ul.tests{margin:8px 0 0;padding-left:18px;font-size:13px}.warn-candles{color:#ffb35a}.warn-dance{color:#c77dff}.ok{color:var(--good)}.dmg{color:var(--warn);letter-spacing:1px;font-size:11px}.pilot{margin-top:8px;line-height:1.5}.row{align-items:center}table.fp{border-collapse:collapse;font-size:12px;margin-top:2px}table.fp th,table.fp td{padding:1px 7px;text-align:center;border:1px solid var(--line)}table.fp th{color:var(--muted);font-weight:600}.incomplete{margin-top:8px;color:var(--warn);line-height:1.4}.shot{color:#ff8a80;margin-top:6px}.card-head{display:flex;gap:10px;align-items:flex-start}.headshot{width:56px;height:56px;border-radius:6px;object-fit:cover;border:1px solid var(--line);flex:none}.level{color:var(--accent);margin-top:2px}.attack{margin:4px 0 10px;padding:10px;border-radius:8px;background:#0b1220;border:1px solid var(--line);border-left:3px solid var(--accent)}.attack.enemy{border-left-color:var(--enemy)}.dice{display:flex;flex-wrap:wrap;gap:3px;align-items:center;margin:3px 0 6px}.die{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:4px;font-size:11px;font-weight:700;background:#18243a;color:var(--muted);border:1px solid var(--line)}.die.hit{background:#1f3b2a;color:var(--good);border-color:#2f6b45}.die.ten{box-shadow:0 0 0 2px #ffe066 inset}.die.bonus{border-style:dashed}.plus{color:var(--muted);margin:0 2px}.verdict{font-weight:800;margin-top:4px;color:var(--good)}.verdict.bad{color:#ff8a3d}.effects{margin-top:6px;color:#ffb3a1;line-height:1.45}.neg{color:#ff8a80}.targets{display:flex;flex-direction:column;gap:4px;margin-top:4px}.targets button{text-align:left;margin-top:0}.row.wrap{flex-wrap:wrap}button.fire{background:#ff5a4f;border-color:#ff5a4f;color:#fff}ul.recovery{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;font-size:13px}ul.recovery li{padding:6px 8px;border-radius:6px;background:#0b1220;border-left:3px solid var(--accent)}ul.recovery li.enemy{border-left-color:var(--enemy)}.odds{color:#ffe9a3;font-weight:600;margin:4px 0}.announce{border-color:#ff5a4f}.rolling{font-weight:700;color:#ffe066;display:flex;align-items:center;gap:10px}.rolling button{margin-top:0}#board{position:relative}.tray{position:absolute;left:324px;right:12px;bottom:12px;max-height:46%;display:flex;flex-direction:column;background:#0a101cf0;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 30px #00000080;font-size:13px;z-index:5}.tray.hidden,.tray.empty{display:none}.tray-head{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--line)}.tray-title{font-weight:800;letter-spacing:.08em;color:var(--muted)}.tray-head button,.tray-head select{margin-top:0;padding:2px 8px;font-size:12px}.tray-speed{margin-left:auto;color:var(--muted);font-size:12px;display:flex;gap:6px;align-items:center}.tray-speed select{background:#18243a;color:var(--text);border:1px solid var(--line);border-radius:5px}.tray-close{padding:0 8px!important}.tray-body{overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:10px}.tray-row{animation:rowin .25s ease-out}@keyframes rowin{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.tray-label{color:var(--muted);margin-bottom:4px}.tray-label b{color:var(--text)}.exchange{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center}.tray-side.player .tray-label b{color:var(--accent)}.tray-side.enemy .tray-label b{color:var(--enemy)}.tray-vs{text-align:center;min-width:110px}.tray-vs .n{font-size:24px;font-weight:900}.tray-vs .vs{color:var(--muted);margin:0 8px}.tray-dice{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.tdie{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;background:#1a2640;border:1px solid #2d3f63;font-weight:800;color:#9fb3d1;transition:background .2s,color .2s,transform .2s}.tdie.rolling{animation:tumble .18s infinite linear;color:#5f7396}@keyframes tumble{0%{transform:rotate(-12deg) scale(.95)}50%{transform:rotate(12deg) scale(1.05)}to{transform:rotate(-12deg) scale(.95)}}.tdie.hit{background:#1f3b2a;color:#9dffb0;border-color:#3a8a55;box-shadow:0 0 8px #50ff8c59}.tdie.ten{box-shadow:0 0 0 2px #ffe066 inset,0 0 12px #ffe06699}.tdie.bonus{border-style:dashed}.tdie.d6{border-radius:4px;background:#262040}.tplus{color:var(--muted);font-weight:800}.tray-verdict{font-weight:900;letter-spacing:.04em;margin-top:4px}.tray-verdict.good{color:var(--good)}.tray-verdict.bad{color:#ff8a3d}.tray-line{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.tray-line .tray-verdict{margin-top:0}.tray-hitlist{display:flex;flex-wrap:wrap;gap:10px}.tray-hit{display:flex;align-items:center;gap:6px}.tray-hit .hit-name{font-weight:800;color:#ff8a3d}.tray-hit.deadly .hit-name{color:#ff3b30}.tray-init{display:flex;gap:24px}.init-cell{display:flex;gap:6px;align-items:center}.init-cell .total{font-weight:900}.flight h2 .hint{text-transform:none;letter-spacing:0;font-weight:400;color:#56698a;margin-left:6px;font-size:11px}.roster{display:grid;grid-template-columns:1fr 1fr;gap:6px}.rcard{background:#0b1220;border:1px solid var(--line);border-radius:7px;padding:5px 8px;cursor:pointer;font-size:12px}.rcard:hover{border-color:var(--accent)}.rcard.sel{border-color:#ffe066;box-shadow:0 0 0 1px #ffe066 inset}.rcard.done{opacity:.55}.rcard .rtop{display:flex;align-items:center;gap:6px}.rcard .key{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 4px}.rcard .ricons{margin-left:auto}.rcard .rsub{color:var(--muted)}.rcard .rstat{font-weight:700;min-height:15px}.rcard.go .rstat{color:var(--good)}.rcard.warn .rstat{color:var(--warn)}.enemies{margin-top:8px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}.echip{font-size:12px;padding:2px 8px;border-radius:10px;background:#2a1418;border:1px solid #5a2a30;color:#ffb3a8;cursor:pointer}.echip:hover,.echip.sel{border-color:var(--enemy);color:#fff}.rcard .rbot{display:flex;align-items:baseline;gap:6px;min-height:16px}.rcard .rvel{margin-left:auto;color:var(--muted);font-size:11px;white-space:nowrap}.rcard .rvel b{color:var(--text);font-size:13px}#app.behind{visibility:hidden}#screen{position:fixed;inset:0;z-index:50;overflow-y:auto;background:radial-gradient(1200px 700px at 20% 0%,#13213a 0%,var(--bg) 60%)}#screen[hidden]{display:none}.menu{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:40px 16px}.logo{font-size:64px;font-weight:900;letter-spacing:.18em;color:#ff4a3d;text-shadow:0 0 30px rgba(255,74,61,.35)}.tag{letter-spacing:.6em;color:var(--muted);margin-bottom:40px}.menu-buttons{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.big-btn{width:260px;padding:18px 20px;font-size:22px;font-weight:800;text-align:left;display:flex;flex-direction:column;gap:4px}.big-btn span{font-size:13px;font-weight:400;opacity:.85}.setup{max-width:1400px;margin:0 auto;padding:16px}.setup-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}.setup-head h1{margin:0;font-size:22px;letter-spacing:.1em}.setup-head button{margin-top:0}.setup-head .pl{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.setup-head input,.force select,.member select{font:inherit;font-size:13px;color:var(--text);background:#0b1220;border:1px solid var(--line);border-radius:6px;padding:5px 8px}.setup-head input{width:90px}.players{display:flex;gap:6px}.launch{margin-left:auto;font-size:16px;padding:8px 22px}.forces{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}@media (max-width: 1100px){.forces{grid-template-columns:minmax(0,1fr)}}.force{min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;border-top:3px solid var(--accent)}.force.enemy{border-top-color:var(--enemy)}.force-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.force-head h2{margin:0;font-size:16px;text-transform:none;letter-spacing:0;color:var(--text)}.force-head label{color:var(--muted);font-size:13px;display:flex;gap:8px;align-items:center}.ctrl{font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px;background:#18243a;color:var(--muted);margin-left:6px;vertical-align:2px}.budget{margin:12px 0}.budget .bar{height:8px;background:#0b1220;border-radius:5px;overflow:hidden;border:1px solid var(--line)}.budget .bar div{height:100%;background:linear-gradient(90deg,#2d7dd2,var(--accent))}.budget.over .bar div{background:#ff5a4f}.budget .nums{font-size:13px;color:var(--muted);margin-top:4px}.budget .nums b{color:var(--text);font-size:18px}.bad{color:#ff8a3d;font-weight:700}.members{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}.member{display:grid;grid-template-columns:22px 92px minmax(0,1fr) auto auto;gap:10px;align-items:center;background:#0b1220;border:1px solid var(--line);border-radius:8px;padding:8px}.mnum{color:var(--muted);font-weight:800;text-align:center}.mline{display:flex;gap:6px;flex-wrap:wrap}.mfields,.mline{min-width:0}.mline select,.force-head select,.force .row select{max-width:100%;min-width:0;text-overflow:ellipsis}.mline select[data-type]{flex:0 1 auto}.mline select[data-pilot],.mline select[data-gunner]{flex:1 1 220px}.mstats{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--muted);margin-top:5px}.mstats .pstat{color:#9fc6ee}.mcost{font-weight:900;font-size:18px;text-align:right}.mcost small{font-size:10px;color:var(--muted);margin-left:2px}button.ghost{background:transparent}button.x{padding:4px 8px;margin-top:0}.errs{margin:10px 0 0;padding-left:18px;color:#ffb35a;font-size:13px}.force .row button,.force .row select{margin-top:0}.cardview{position:fixed;inset:0;z-index:100;background:#040810d1;display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:16px}.cardview figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:8px;max-height:100%}.cardview img{max-width:min(92vw,720px);max-height:calc(100vh - 80px);object-fit:contain;border-radius:10px;box-shadow:0 10px 40px #0009}.cardview figcaption{color:#dfe8f5;font-size:14px}.cardview .nocard{color:#dfe8f5;text-align:center;padding:40px;border:1px dashed #3a5584;border-radius:10px}.cardbtn{font-size:11px;padding:1px 6px;margin-left:6px;vertical-align:middle;cursor:zoom-in}.setup select option:disabled{color:#6b7a90}.mthumb{width:92px;height:60px;object-fit:contain;cursor:zoom-in;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}.fighter-banner{display:block;width:100%;height:120px;object-fit:contain;margin:-4px 0 6px;cursor:zoom-in;background:radial-gradient(ellipse at center,rgba(79,179,255,.08),transparent 70%);filter:drop-shadow(0 4px 10px rgba(0,0,0,.55))}.card.enemy .fighter-banner{background:radial-gradient(ellipse at center,rgba(255,90,79,.08),transparent 70%)}#phasepanel{position:relative;flex:0 1 auto;min-height:0;width:300px;overflow-y:auto;background:#0f1624f0;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000073;padding:10px 14px 12px;backdrop-filter:blur(3px)}#phasepanel .ph-head{display:flex;align-items:center;justify-content:space-between}#phasepanel .ph-head h2{margin:0;color:var(--accent)}#phasepanel .ph-toggle{margin:0;padding:0 8px;line-height:20px;font-size:14px}#phasepanel .ph-body{margin-top:6px}#phasepanel.collapsed{width:auto;padding:6px 10px}#phasepanel.collapsed .ph-body{display:none}#phasepanel.collapsed .ph-head h2{margin-right:10px}.star{color:#ffe066;font-weight:800;font-size:.9em;margin-left:3px}.kills{margin-top:4px}table.killsum{border-collapse:collapse;width:100%;font-size:12px;margin:6px 0 4px}table.killsum th{text-align:left;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:11px;padding:6px 0 2px}table.killsum td{padding:2px 4px 2px 0}table.killsum td.k{color:#ffe066;font-weight:800;white-space:nowrap}.mbays{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:5px}.mbays .bay{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);min-width:0}.mbays select{font-size:12px;padding:3px 6px;max-width:100%;min-width:0;color:var(--text);background:#0b1220;border:1px solid var(--line);border-radius:6px}.ochoice{display:flex;align-items:center;gap:8px;font-size:13px;margin-top:6px;cursor:pointer}ol.missiles{margin:4px 0 8px;padding-left:20px;font-size:13px}ol.missiles li{margin:2px 0}ul.bays{margin:2px 0 4px;padding-left:16px}.attack.missile{border-left-color:#d08cff}.setup-head input[type=checkbox]{width:auto;margin:0;accent-color:var(--accent)}#phasepanel{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#3a5584 transparent}#phasepanel::-webkit-scrollbar{width:8px}#phasepanel::-webkit-scrollbar-thumb{background:#3a5584;border-radius:4px}#phasepanel::-webkit-scrollbar-track{background:transparent}.results{margin-top:12px;border-top:1px solid var(--line);padding-top:6px}.results-title{text-transform:uppercase;letter-spacing:.08em;font-size:10px;margin-bottom:4px}.attack.result{padding:6px 8px;margin:6px 0}.result-head{display:flex;align-items:flex-start;gap:4px}.result-sum{flex:1;font-size:13px;line-height:1.35;cursor:pointer}.result-head button{margin:0;padding:0 6px;line-height:18px;font-size:12px}.result-body{margin-top:6px}.rules-row{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;margin:-4px 0 14px}.rules-row .pl{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.mnum small{display:block;font-size:10px;font-weight:600;letter-spacing:.04em;opacity:.8}.menu .version{margin-top:6px;color:var(--muted);font-size:12px;letter-spacing:.12em}.brand .ver{font-size:10px;color:var(--muted);letter-spacing:.05em;font-weight:500}button.danger{background:#b3261e;border-color:#e5484d;color:#fff;font-weight:700;margin-top:10px}button.danger:hover:not(:disabled){background:#d93a31}button.danger:disabled{background:#4a1f1d;border-color:#6b2b28;color:#c9a3a0}.rules-row select{font:inherit;font-size:13px;color:var(--text);background:#0b1220;border:1px solid #2a3a58;border-radius:6px;padding:3px 6px}#roundchip{flex-wrap:wrap;max-width:560px}#roundchip .storm{font-weight:800;font-size:12px;letter-spacing:.05em;padding:2px 8px;border-radius:6px;border:1px solid}#roundchip .storm small{font-weight:500;letter-spacing:0;opacity:.9;margin-left:4px}.storm-calm{color:#9fb3d1;border-color:#34465f;background:#283c5a59}.storm-mild{color:#9fe8ff;border-color:#2e7ea0;background:#1e6e964d}.storm-average{color:#ffe066;border-color:#b08a1e;background:#966e144d}.storm-strong{color:#ffb3f0;border-color:#c03aa8;background:#a01e8c59}#roundchip .storm.flash{animation:stormflash 1.2s ease-out 3}@keyframes stormflash{0%{box-shadow:0 0 #ffffffe6}to{box-shadow:0 0 0 14px #fff0}}.tray-verdict[class*=storm-]{font-weight:800}.rules-row input[type=checkbox]{width:auto;margin:0;accent-color:var(--accent)}
