:root{--bg:#0f1216;--panel:#181d23;--panel2:#20262e;--line:#2c343e;--text:#e7e3d8;--muted:#98a0a8;--gold:#f2c94c;--accent:#e9b949;--danger:#e5484d;--ok:#6fd36f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#app{background:var(--bg);height:100%;color:var(--text);margin:0;font:14px/1.4 Segoe UI,system-ui,sans-serif;overflow:hidden}button{font:inherit;color:var(--text);background:var(--panel2);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 10px}button:hover:not(:disabled){background:#28303a;border-color:#4a5560}button:disabled{opacity:.45;cursor:default}button.primary{border-color:var(--accent);background:#6b4f12}button.primary:hover:not(:disabled){background:#82611a}button.big{padding:10px 18px;font-size:16px}kbd{color:var(--muted);border:1px solid #47505a;border-bottom-width:2px;border-radius:4px;margin-left:4px;padding:2px 4px;font:11px/1 Consolas,monospace}h1,h2,h3{margin:0 0 6px}h3{letter-spacing:.02em;font-size:14px}p{margin:6px 0}.sub{color:var(--muted);font-size:12.5px}.note{color:var(--muted);margin:4px 0 0;font-size:12.5px}.dot{vertical-align:-1px;border-radius:50%;width:10px;height:10px;margin-right:5px;display:inline-block}.app{grid-template-rows:auto 1fr;height:100%;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;min-height:52px;padding:6px 12px;display:flex}.brand{letter-spacing:.04em;color:var(--accent);margin-right:8px;font-weight:800}.stat{flex-direction:column;min-width:64px;display:flex}.stat .label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.stat b{font-size:18px}.stat.gold b{color:var(--gold)}.stat.phase.combat b{color:#ff9a6b}.kingbar{background:#2a1a1c;border:1px solid #4a2a2e;border-radius:4px;width:150px;height:20px;position:relative;overflow:hidden}.kingbar>div{background:linear-gradient(#d65a5f,#a33a3f);height:100%;transition:width .25s}.kingbar span{text-align:center;font-size:12px;font-weight:700;line-height:18px;position:absolute;inset:0}.spacer{flex:1}.main{grid-template-columns:minmax(260px,320px) minmax(300px,1fr) minmax(300px,360px);min-height:0;display:grid}.panel{background:var(--panel);flex-direction:column;gap:10px;min-height:0;padding:10px;display:flex;overflow-y:auto}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.lanehost{min-width:0;min-height:0;position:relative;overflow:hidden}.lanehost canvas{display:block}.lanehost.building{cursor:crosshair}.box{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:10px}.wavecard{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.wavecard.clickable{cursor:pointer}.wavecard.clickable:hover{border-color:#4a5560}.wavecard.active{border-color:var(--accent)}.wavelabel{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-size:11px}.wavetitle{align-items:baseline;gap:8px;font-weight:700;display:flex}.wavenum{color:var(--muted);font-size:20px}.wavetitle .count{color:var(--muted);margin-left:auto;font-size:12.5px;font-weight:400}.chips{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.chip{border:1px solid var(--line);cursor:help;background:#11151a;border-radius:999px;align-items:center;gap:4px;padding:2px 8px 2px 6px;font-size:12.5px;display:inline-flex}.chip .dot{margin-right:0}.chip.boss{color:var(--accent);border-color:#6b5520}.wavelist{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;display:grid}.creepname{margin-bottom:4px;font-weight:700}table.hist{border-collapse:collapse;width:100%;font-size:12.5px}table.hist th{color:var(--muted);text-align:right;font-weight:400}table.hist td{text-align:right;padding:1px 0}table.hist th:first-child,table.hist td:first-child{text-align:left}table.hist tr.leaky td:nth-child(3){color:#ff8a8a}.stats .row,.box>.row{border-bottom:1px solid #252c34;justify-content:space-between;gap:8px;padding:2px 0;font-size:13px;display:flex}.stats .row span,.box>.row span,.info.empty{color:var(--muted)}.unithead{align-items:center;gap:10px;margin-bottom:8px;display:flex}.unithead h3{margin:0;font-size:16px}.swatch{border:2px solid #f3ead2;border-radius:4px;flex:none;width:16px;height:16px}.actions{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.actions button{text-align:left}.row-actions{flex-direction:row;margin-top:14px}.cost{color:var(--gold);font-weight:700}button.sell.armed{border-color:var(--danger);background:#3a1d20}.buildbar{margin-top:auto}.buildgrid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.buildbtn{text-align:left;grid-template-columns:auto 1fr auto;grid-template-areas:"s n c""m m k";align-items:center;gap:2px 6px;padding:7px 8px;display:grid}.buildbtn .swatch{grid-area:s}.buildbtn .bname{grid-area:n;font-weight:700}.buildbtn .cost{grid-area:c}.buildbtn .bmeta{color:var(--muted);grid-area:m;font-size:11.5px}.buildbtn kbd{grid-area:k;justify-self:end}.buildbtn.active{border-color:var(--accent);background:#3a3018}.overlay{z-index:10;background:#05070999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay.solid{background:#050709e0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;max-width:min(980px,94vw);max-height:90vh;padding:18px 20px;overflow-y:auto;box-shadow:0 20px 60px #00000080}.modal.start{width:520px}.modal.start h1{color:var(--accent)}.modal.start h3{margin-top:14px}.modalhead{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}table.chart{border-collapse:collapse;margin-top:10px}table.chart th,table.chart td{border:1px solid var(--line);text-align:center;padding:8px 14px}table.chart th{text-align:left;font-weight:600}table.chart td.hi{font-weight:800}table.chart td.lo{color:var(--muted)}ul.help{max-width:640px;padding-left:18px}ul.help li{margin:4px 0}table.keys td{padding:3px 12px 3px 0}table.keys kbd{margin-left:0}.toasts{pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--line);background:#181d23f2;border-radius:8px;padding:8px 14px}.toast.warn{border-color:var(--danger)}.paused{letter-spacing:.1em;color:#fffc;pointer-events:none;z-index:4;font-size:40px;font-weight:800;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}pre.fatal{white-space:pre-wrap;color:#ffb4b4;background:#2a1517;border-radius:8px;margin:20px;padding:16px}@media (max-width:1100px){.main{grid-template-columns:240px 1fr 280px}.buildgrid{grid-template-columns:1fr}}.wavegold{color:var(--muted);margin-top:6px;font-size:12.5px}.stat.lumber b{color:#9fd38a}.stat b small{color:var(--muted);font-size:12px;font-weight:400}.stat.king.enemy .kingbar>div{background:linear-gradient(#7b8fd6,#4b5fa3)}.sidetabs{flex-direction:column;gap:8px;margin-top:auto;display:flex}.tabrow{gap:4px;display:flex}.tabrow button{flex:1;padding:5px 6px;font-size:12.5px}.tabrow button.active{border-color:var(--accent);background:#3a3018}.buildbtn.legendary{border-color:#6b5520;grid-column:1/-1}.lumbercost{color:#9fd38a;font-weight:700}.sendlist{grid-template-columns:1fr;gap:6px;display:grid}.sendbtn{text-align:left;grid-template-columns:1fr auto;grid-template-areas:"n c""m m";gap:2px 6px;padding:7px 8px;display:grid}.sendbtn .bname{grid-area:n;font-weight:700}.sendbtn .lumbercost{grid-area:c}.sendbtn .bmeta{color:var(--muted);grid-area:m;font-size:11.5px}.kingbar-panel{flex-direction:column;gap:8px;display:flex}.kingbar-panel .box button{text-align:left;justify-content:space-between;gap:8px;width:100%;margin-top:4px;display:flex}.branch{margin-top:8px}.branchhead{justify-content:space-between;align-items:center;display:flex}.pips i{background:#2c343e;border-radius:2px;width:9px;height:9px;margin-left:3px;display:inline-block}.pips i.on{background:var(--accent)}.btext{font-size:12.5px}.siegelist{grid-template-columns:1fr 1fr;gap:4px;display:grid}.sends-in ul{margin:4px 0;padding-left:18px}.legend-rules p{color:var(--muted);margin:4px 0 8px;font-size:12.5px}.legend-fund .progress{background:#2a2518;border:1px solid #6b5520;border-radius:4px;height:18px;margin-bottom:6px;position:relative;overflow:hidden}.legend-fund .progress>div{background:linear-gradient(#e9b949,#b38a26);height:100%}.legend-fund .progress span{text-align:center;font-size:12px;font-weight:700;line-height:16px;position:absolute;inset:0}table.players{border-collapse:collapse;width:100%;margin:8px 0;font-size:13px}table.players th,table.players td{border-bottom:1px solid var(--line);text-align:right;padding:4px 8px}table.players th:first-child,table.players td:first-child{text-align:left}table.players tr.teamrow th{text-align:left;color:var(--accent);padding-top:10px}table.players tr.me td{color:var(--gold)}.modal.start.wide{width:min(820px,94vw)}.topbar{flex-wrap:nowrap;gap:8px;overflow-x:auto}.topbar button{white-space:nowrap;padding:5px 8px;font-size:13px}.topbar .stat{min-width:52px}.topbar .kingbar{width:128px}@media (max-width:1500px){.topbar button kbd,.brand{display:none}}.sendbtn .tags{color:var(--accent);margin-left:4px;font-size:11.5px;font-weight:400}.boardcol{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.boardcol .lanehost{flex:1}.lanestrip{background:var(--panel);border-bottom:1px solid var(--line);gap:8px;padding:4px 6px;font-size:12px;display:flex;overflow-x:auto}.stripteam{border-right:1px solid var(--line);gap:4px;padding-right:8px;display:flex}.stripteam:last-child{border-right:0}.stripcell{background:var(--panel2);white-space:nowrap;border:1px solid #0000;border-radius:5px;align-items:center;gap:4px;padding:2px 6px;display:flex;position:relative}.stripteam:not(.mine) .stripcell{background:#241d27}.stripcell.me{border-color:var(--accent)}.stripcell.cleared .sub{color:var(--ok)}.stripcell .leak{color:var(--danger)}button.link{color:var(--text);background:0 0;border:0;padding:0;font-weight:600}button.link:hover:not(:disabled){background:0 0;text-decoration:underline}button.flag{padding:0 4px;font-size:12px;line-height:16px}.menuwrap{gap:6px;display:flex;position:relative}.dropdown{z-index:30;background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:4px;min-width:170px;padding:6px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 6px 20px #00000080}.dropdown.fixed{z-index:60;position:fixed}.stripcell .dropdown{left:0;right:auto}.dropdown button{text-align:left;justify-content:space-between;gap:10px;display:flex}.feed{pointer-events:none;flex-direction:column;gap:2px;max-width:min(460px,70%);font-size:12px;display:flex;position:absolute;bottom:8px;left:8px}.feed div{color:var(--muted);background:#0f1216c7;border-radius:4px;padding:2px 8px}.feed div.mine{color:var(--text)}.banners{z-index:40;flex-direction:column;gap:6px;display:flex;position:fixed;top:104px;left:50%;transform:translate(-50%)}.banner{background:var(--panel);border:1px solid var(--accent);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex;box-shadow:0 6px 20px #00000080}.banner.warn{border-color:var(--danger)}.paused small{color:var(--muted);margin-top:6px;font-size:14px;font-weight:400;display:block}.netstatus{z-index:50;position:fixed;bottom:12px;right:12px}.tag{background:var(--panel2);border:1px solid var(--line);color:var(--muted);border-radius:10px;padding:1px 6px;font-size:11px}.tag.ok{color:var(--ok,#6fcf7f);border-color:currentColor}.tag.warn{color:var(--danger);border-color:var(--danger)}.error{color:var(--danger)}.field{flex-direction:column;gap:4px;margin:12px 0;display:flex}.field span{color:var(--muted);font-size:12.5px}input,select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:7px 10px}.joinrow,.invite{gap:8px;margin-top:10px;display:flex}.joinrow input{text-transform:uppercase;letter-spacing:2px;width:130px}.invite input{flex:1}.lobbyhead{align-items:center;gap:12px;display:flex}.teams{grid-template-columns:1fr 1fr;gap:16px;margin:12px 0;display:grid}.teamcol h3{margin:0 0 8px}.seat{background:var(--panel2);border:1px solid var(--line);border-radius:8px;align-items:center;gap:8px;min-height:42px;margin-bottom:6px;padding:6px 10px;display:flex}.seat.me{border-color:var(--accent)}.seat .spacer{flex:1}@media (max-width:720px){.teams{grid-template-columns:1fr}}
