*{box-sizing:border-box;margin:0;padding:0}body{background:#0b0f14;color:#d7dde6;font-family:system-ui,sans-serif;height:100vh;display:flex;flex-direction:column}#topbar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:8px 14px;background:#131a23;border-bottom:1px solid #26303e}#turn-label{font-weight:600;font-size:15px;white-space:nowrap}#turn-label .side{margin-left:10px;font-size:13px;font-weight:400}#turn-label .vp{margin-left:12px;font-size:13px;font-weight:400;color:#9fb0c3;font-variant-numeric:tabular-nums}#turn-label .vp b{font-weight:700}#turn-label .p1{color:#60a5fa}#turn-label .p2{color:#f87171}#turn-label .win{color:#4ade80}#phase-area{display:flex;align-items:center;justify-content:center;gap:12px}#phase-label{text-align:center;font-size:15px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#9fb0c3;white-space:nowrap}#topbar-right{display:flex;align-items:center;justify-content:flex-end}#btn-phase{margin-left:0}#menu-wrap{position:relative;margin-left:6px}.burger{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:34px;height:30px;padding:0}.burger span{display:block;width:16px;height:2px;background:#d7dde6;border-radius:1px}#menu{position:absolute;right:0;top:calc(100% + 6px);z-index:20;display:flex;flex-direction:column;min-width:170px;padding:6px;background:#1a2330;border:1px solid #2b3a4d;border-radius:8px;box-shadow:0 10px 24px #00000073}#menu[hidden]{display:none}#menu button{margin:0;padding:7px 10px;text-align:left;background:transparent;border:none;border-radius:6px}#menu button:hover{background:#26303e}button{background:#26303e;color:#d7dde6;border:1px solid #3b4a5e;border-radius:6px;padding:6px 12px;margin-left:6px;cursor:pointer;font-size:13px}button:hover{background:#334155}button.active{background:#4c6b96;border-color:#7ca4d8}button:disabled{opacity:.4;cursor:default}#app-version{margin-left:12px;color:#faf3ddb8;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:13px;font-weight:400;letter-spacing:0;white-space:nowrap}main{flex:1;display:flex;min-height:0}#board-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:10px;min-width:0}#board{width:100%;max-height:100%;border:1px solid #26303e;border-radius:4px;user-select:none;-webkit-user-select:none}#sidebar{width:340px;padding:12px;background:#131a23;border-left:1px solid #26303e;display:flex;flex-direction:column;gap:10px;overflow:hidden}#phase-help{font-size:13px;color:#9fb0c3;background:#1a2330;border-radius:6px;padding:8px 10px}#message{font-size:13px;color:#fbbf24;min-height:18px}#model-info,#squad-info{font-size:13px;background:#1a2330;border-radius:6px;padding:8px 10px}#squad-info .stances{margin-top:6px}#squad-info .stances button{margin:0 6px 0 0;padding:3px 10px;font-size:12px}#squad-info .count{color:#9fb0c3}#squad-info .swatch{display:inline-block;width:11px;height:11px;border-radius:50%;border:1.5px solid #0b0f14;margin-right:6px;vertical-align:-1px}#squad-info .hint{color:#7c8aa0;font-size:11px;margin-top:4px}#squad-info .badge-broken{display:inline-block;margin-left:8px;padding:0 8px;border:1px solid #FFDF64;border-radius:999px;color:#ffdf64;font-size:11px;font-weight:700;line-height:16px;text-transform:uppercase;letter-spacing:.04em;vertical-align:1px}#squad-info .badge-ow{display:inline-block;margin-left:8px;padding:0 8px;border:1px solid #fbbf24;border-radius:999px;color:#fbbf24;font-size:11px;font-weight:700;line-height:16px;text-transform:uppercase;letter-spacing:.04em;vertical-align:1px}#squad-info .badge-hidden{display:inline-block;margin-left:8px;padding:0 8px;border:1px dashed #86efac;border-radius:999px;color:#86efac;font-size:11px;font-weight:700;line-height:16px;text-transform:uppercase;letter-spacing:.04em;vertical-align:1px}#phase-help.ow-ask{color:#fde68a;background:#3a2a0c;border:1px solid #fbbf24}#phase-help .ow-buttons{margin-top:6px;display:flex;gap:8px}#phase-help .ow-buttons button{margin:0;padding:4px 14px;font-size:13px}#model-info .unit-actions button+button{margin-left:8px}#model-info table{border-collapse:collapse;margin-top:4px}#model-info th,#model-info td{padding:1px 7px;text-align:center;font-size:12px}#model-info th{color:#9fb0c3;font-weight:600}#model-info table.weapons{margin-top:8px}#model-info table.weapons th,#model-info table.weapons td{padding:1px 4px;font-size:11px;white-space:nowrap}#model-info table.terrain{margin-top:6px}#model-info table.terrain th{text-align:left;padding:2px 10px 2px 0;vertical-align:top;white-space:nowrap}#model-info table.terrain td{text-align:left;padding:2px 0}#model-info .term{margin:0;padding:0;background:none;border:none;border-bottom:1px dashed #64748b;border-radius:0;color:inherit;font:inherit;cursor:help}#model-info .term:hover{color:#facc15;border-bottom-color:#facc15}#model-info .term.open{color:#facc15;border-bottom-style:solid;border-bottom-color:#facc15}#model-info .rule-card{margin-top:8px;padding:8px 10px;background:#131c27;border:1px solid #2b3a4d;border-left:3px solid #facc15;border-radius:6px}#model-info .rule-head{display:flex;align-items:center;gap:8px}#model-info .rule-head b{font-size:13px}#model-info .rule-page{color:#7c8aa0;font-size:11px}#model-info .rule-close{margin:0 0 0 auto;padding:0 4px;background:none;border:none;color:#7c8aa0;font-size:15px;line-height:1}#model-info .rule-close:hover{color:#d7dde6}#model-info .rule-card p{margin-top:4px;color:#b9c4d2;font-size:12px;line-height:1.45}#model-info .weapons-pick{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}#model-info .weapons-pick button{margin-left:0;font-size:12px;padding:4px 10px}#model-info .wname{text-align:left;padding-left:0}#model-info table.weapons td.wname{white-space:normal}#model-info .wrole{color:#7c8aa0;font-size:10px}#model-info table.weapons tr.wnote td{text-align:left;padding:0 0 4px;font-size:10px;white-space:normal}#model-info .gear{margin-top:8px;color:#9fb0c3}#model-info .unit-actions{margin-top:8px}#model-info .unit-actions button{margin-left:0}#model-info .hintkey{color:#7c8aa0;font-size:11px;margin-left:8px}#model-info .status{margin-top:4px;color:#fbbf24}#model-info .multi{margin-bottom:6px;color:#facc15;font-size:11px;font-weight:600}h3{font-size:13px;color:#9fb0c3}.die{vertical-align:-3px;margin:0 1px}.hdr-icon{vertical-align:-1.5px}.muzzle{animation:muzzle-fade .45s ease-out forwards}@keyframes muzzle-fade{0%{opacity:1}60%{opacity:.9}to{opacity:0}}#log-legend{float:right;font-weight:400;font-size:11px}table.dice{display:inline-table;vertical-align:middle;border-collapse:collapse;margin:1px 3px;background:#16202c;border-radius:4px}table.dice th{font-size:9px;color:#9fb0c3;font-weight:600;padding:1px 4px 0;text-align:center;border-bottom:1px solid #2a3648}table.dice td{padding:1px 4px 2px;text-align:center}table.dice td .die{margin:0;vertical-align:middle}#log{flex:1;overflow-y:auto;font-size:12px;line-height:1.5;background:#0e141c;border-radius:6px;padding:8px 10px;white-space:pre-wrap}#log div{margin-bottom:3px}#setup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#05080cbf;display:flex;align-items:center;justify-content:center;z-index:10}#setup-overlay.hidden{display:none}#setup-panel{background:#131a23;border:1px solid #3b4a5e;border-radius:10px;padding:22px 26px;width:860px;max-height:92vh;overflow-y:auto}#terrain-preview{display:block;width:300px;margin:0 0 4px auto;border:1px solid #3b4a5e;border-radius:4px}#terrain{background:#26303e;color:#d7dde6;border:1px solid #3b4a5e;border-radius:4px;font-size:11px;padding:2px 4px}#builders{display:flex;gap:16px;margin:14px 0 6px}.builder{flex:1;background:#0e141c;border:1px solid #26303e;border-radius:8px;padding:10px 12px;min-width:0}.builder h3{font-size:13px;margin-bottom:8px}.build-total{float:right;color:#d7dde6}.build-total.over{color:#f87171}.build-add button{margin:0 6px 6px 0;padding:3px 8px;font-size:11px}.squad-card{background:#1a2330;border-radius:6px;padding:7px 9px;margin-bottom:8px;font-size:12px}.squad-card .card-head{display:flex;justify-content:space-between;align-items:center}.squad-card .card-head b{font-size:12px}.squad-card .card-pts{color:#9fb0c3}.squad-card .card-remove{margin-left:8px;padding:0 7px;font-size:12px;line-height:18px}.squad-card .card-opt{display:flex;justify-content:space-between;align-items:center;margin-top:4px;gap:8px;color:#9fb0c3}.squad-card select,#pts-cap{background:#26303e;color:#d7dde6;border:1px solid #3b4a5e;border-radius:4px;font-size:11px;padding:2px 4px;max-width:190px}#setup-panel h2{font-size:16px;margin-bottom:18px}.setup-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:13px;gap:10px}.setup-row .p1{color:#60a5fa;font-weight:600}.setup-row .p2{color:#f87171;font-weight:600}.setup-row label{cursor:pointer;margin-left:10px}#btn-start{width:100%;margin:12px 0 0;padding:8px;background:#2563eb;border-color:#3b82f6;font-weight:600}#btn-start:hover{background:#3b82f6}#log .sep{color:#7ca4d8;font-weight:600}#log .win{color:#4ade80;font-weight:700}#setup-panel.online .local-only,#setup-panel:not(.online) .online-only,#setup-panel.online .builder.theirs{display:none}#online-info{font-size:13px;line-height:1.7;margin-bottom:14px}#online-info .p1{color:#60a5fa;font-weight:600}#online-info .p2{color:#f87171;font-weight:600}#online-info .ready{color:#4ade80}.link-row{display:flex;align-items:center;gap:6px;margin:2px 0 6px}.link-row input{flex:1;min-width:0;background:#0e141c;color:#d7dde6;border:1px solid #3b4a5e;border-radius:4px;padding:3px 6px;font:12px ui-monospace,monospace}#btn-send-army{width:100%;margin:12px 0 0;padding:8px;background:#2563eb;border-color:#3b82f6;font-weight:600}#btn-send-army:hover{background:#3b82f6}#online-create{margin-top:18px;padding-top:14px;border-top:1px solid #26303e}#online-side,#battle-length,#missions{background:#26303e;color:#d7dde6;border:1px solid #3b4a5e;border-radius:4px;font-size:12px;padding:2px 4px}#online-games{font-size:12px;color:#9fb0c3}#online-games a{color:#7ca4d8;margin-right:10px}#online-games div{margin-top:4px}#online-note{font-size:13px;color:#fbbf24;margin-top:8px}#online-note:empty{display:none}#online-status{font-size:12px;color:#4ade80}#online-status.offline{color:#fbbf24}#online-status.reload{color:#f87171;font-weight:600}#mission-info{font-size:13px;background:#1a2330;border-radius:6px;padding:8px 10px}#mission-info:empty{display:none}#mission-info .card+.card{margin-top:6px}#mission-info .p1{color:#60a5fa;font-weight:600}#mission-info .p2{color:#f87171;font-weight:600}#mission-info .earned{color:#4ade80}#mission-info .muted{color:#9fb0c3}#mission-info button{margin-left:6px;padding:1px 8px;font-size:11px}
