@font-face{font-family:Sector;src:local("Segoe UI"),local("Arial")}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#101b21;color:#f0efe4;font-family:Sector,"Segoe UI",sans-serif}button,input{font:inherit}button{cursor:pointer;color:inherit;border:1px solid #8bafa54d;background:#253a3ede;border-radius:4px;padding:10px 14px;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#3a5355;border-color:#b2e0cc}button:focus-visible,input:focus-visible{outline:2px solid #bcebcf;outline-offset:3px}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:#bee2bc;color:#102a29;border-color:#c6e6c5;font-weight:750}button.primary:hover:not(:disabled){background:#e3f2cc}input{width:100%;background:#111f25;border:1px solid #789a9366;color:#fff;padding:13px 14px;border-radius:4px}label{display:block;font-size:12px;letter-spacing:.1em;color:#b7c9c2;margin:15px 0 7px}[hidden]{display:none!important}#game,#world,.vignette{position:fixed;inset:0}#world canvas{display:block;width:100%;height:100%;touch-action:none}.vignette{pointer-events:none;box-shadow:inset 0 0 130px #07101788;background:linear-gradient(#07101755,transparent 18%,transparent 72%,#07101788)}.panel{background:linear-gradient(135deg,#1a3036f5,#111f27f5);border:1px solid #8ba99d59;box-shadow:0 16px 48px #030a1066;border-radius:8px;backdrop-filter:blur(12px)}.eyebrow{font-size:10px;font-weight:750;letter-spacing:.18em;color:#a6c9bb}.topbar{position:absolute;top:18px;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;gap:18px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;gap:10px;align-items:center;text-shadow:0 2px 8px #000}.emblem{height:43px;width:43px;display:grid;place-items:center;border:1px solid #c9d0a9;color:#dce3bf;font:22px Georgia,serif;clip-path:polygon(10% 0,100% 0,90% 100%,0 100%)}.brand b{font-size:14px;letter-spacing:.2em}.brand small{display:block;font-size:9px;letter-spacing:.25em;color:#a2b9b3;margin-top:4px}.resources{display:flex;gap:28px;padding:10px 25px;border-bottom:1px solid #b0d8c277;background:#10232bdd}.resources span{font-size:9px;letter-spacing:.1em;color:#b3c9c0}.resources strong{display:block;font-size:23px;letter-spacing:0;color:#f6ebbf;font-variant-numeric:tabular-nums}.tools{display:flex;gap:7px;align-items:center}.tools button{padding:9px 12px}.connection{font-size:9px;color:#b7d3c5;letter-spacing:.06em;max-width:135px}.connection.offline{color:#ffba9f}.wave-hud{position:absolute;top:102px;right:24px;width:235px;padding:17px 19px}.wave-main{display:flex;align-items:center;justify-content:space-between;margin:3px 0}.wave-main>b{font-size:51px;font-weight:300;letter-spacing:-.08em;color:#eceddb}.wave-main>span{font-size:28px;color:#d5e6b2;font-variant-numeric:tabular-nums;text-align:right}.wave-main small{display:block;font-size:8px;letter-spacing:.13em;color:#95b4aa}.wave-hud p{font-size:11px;line-height:1.55;color:#b6c8c0;margin:8px 0 12px}.timer-track{height:3px;background:#46615b}.timer-track i{display:block;height:100%;background:#c5dfb2;transition:width .1s linear}.sectors{position:absolute;left:24px;bottom:171px;width:240px;padding:14px}.sectors .eyebrow{display:flex;justify-content:space-between;margin-bottom:8px}.sector-row{display:flex;align-items:center;gap:8px;padding:6px 4px;width:100%;border:0;background:transparent;text-align:left;font-size:11px}.sector-row i,.player-row i{width:7px;height:7px;border-radius:50%;flex:0 0 auto}.sector-row .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.sector-row.active{background:#b0d5bd18;border-left:2px solid #bce1b9}.sector-row small{font-size:10px;color:#aac4b7}.sector-row.dead{opacity:.45}.camera-tools{display:flex;gap:3px;border-top:1px solid #86a79833;margin-top:7px;padding-top:9px}.camera-tools button{font-size:10px;padding:7px 8px}.tower-card{position:absolute;right:24px;bottom:171px;width:290px;padding:18px}.tower-card h2{font-size:20px;margin:10px 0}.tower-card p{font-size:12px;line-height:1.6;color:#c1d0c5}.actions{display:flex;gap:9px;margin-top:14px}.actions>*{flex:1}.close{position:absolute;top:10px;right:10px;border:0;background:transparent;font-size:23px;padding:0 7px;color:#adcbc0}.build-hud{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);width:min(950px,calc(100% - 40px))}.build-hint{display:flex;align-items:center;gap:12px;margin:0 0 9px;padding:0 2px;font-size:11px;text-shadow:0 2px 6px #000}.build-hint>b{color:#e7e1be;white-space:nowrap}.build-hint>span{color:#c3d4c8;flex:1}.build-hint>button{font-size:10px;padding:7px 11px;background:#162e35e6}.defenses{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.defense{position:relative;min-height:94px;text-align:left;padding:13px 12px 10px 54px;background:linear-gradient(135deg,#2a4148ef,#172a32f5);border:1px solid #718f8366;box-shadow:0 8px 28px #0005}.defense.selected{border-color:#d9e2b7;box-shadow:inset 0 -3px #d9e2b7,0 8px 28px #0005;background:linear-gradient(135deg,#42534ce8,#243b3cfa)}.defense .icon{position:absolute;left:15px;top:20px;width:28px;height:28px;color:var(--tower-color)}.defense svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.7}.defense kbd{position:absolute;top:5px;left:6px;font-size:8px;color:#809d92}.defense b{display:block;font-size:12px;margin-bottom:7px;line-height:1.2}.defense small{font-size:12px;color:#f0db9f}.defense .energy{font-size:9px;color:#9bbdb3;margin-left:6px}.defense .placement{display:block;font-size:8px;letter-spacing:.06em;color:#99b7ab;margin-top:6px}.scrim{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(100deg,#08131cbb,#08131c33);padding:24px}.menu-card{position:relative;width:min(440px,100%);padding:33px 36px;max-height:calc(100dvh - 40px);overflow:auto;justify-self:start;margin-left:8vw}.menu-card h1{font-size:65px;line-height:.92;letter-spacing:-.05em;margin:24px 0 18px;position:relative;font-weight:350}.menu-card h1 em{font-style:normal;color:#cfdfb7;font-weight:750}.menu-card h1>span{position:absolute;right:0;bottom:0;font:100px Georgia,serif;opacity:.07}.intro{font-size:15px;line-height:1.5;color:#c2d0c8}.menu-actions{display:grid;gap:8px;margin-top:13px}.menu-actions .primary{display:flex;justify-content:space-between;padding:14px}.menu-actions button{font-size:13px}.join{display:flex;gap:7px;margin-top:17px}.join input{text-transform:uppercase;min-width:0;font-size:12px}.fine{font-size:10px;color:#97b0a6;line-height:1.6}.error{font-size:12px;color:#ffc0a9;line-height:1.5}.lobby-card{width:min(490px,100%);padding:30px}.lobby-card h2{font-size:30px;margin:12px 0}.lobby-card h2 span{color:#d4e8b8;font-variant-numeric:tabular-nums;letter-spacing:.1em}.lobby-card>p{font-size:13px;color:#b4c8bf;line-height:1.5}.player-row{display:flex;gap:12px;align-items:center;padding:12px;border-bottom:1px solid #88a99b33;font-size:13px}.player-row span{flex:1}.player-row small{color:#b4d6aa;font-size:11px}.player-row.empty{opacity:.35}.lobby-card>button{margin-top:15px;font-size:12px}dialog{position:fixed;background:linear-gradient(140deg,#243e42,#111e27);border:1px solid #9bb9a677;border-radius:9px;color:#e4ecdf;padding:32px;max-width:560px;max-height:85dvh;overflow:auto;box-shadow:0 20px 90px #000a}dialog::backdrop{background:#04111bc2;backdrop-filter:blur(5px)}dialog h2{font-size:25px}dialog p,dialog li{font-size:13px;line-height:1.7;color:#bacfc4}dialog li{padding-bottom:8px}kbd{color:#e1e5bd}.research-row{padding:15px 0;border-bottom:1px solid #91ac9b33;display:flex;gap:15px;align-items:center}.research-row>div{flex:1}.research-row b{font-size:14px}.research-row p{margin:5px 0 0;font-size:11px}.research-row button{font-size:12px;white-space:nowrap}.results-card{padding:35px;width:min(480px,100%);text-align:center}.results-card h2{font-size:34px;color:#dbe6bd}.results-card p{line-height:1.7;font-size:14px}#toast{position:absolute;left:50%;top:100px;transform:translateX(-50%);max-width:440px;background:#192e37f2;border:1px solid #b7c7a866;padding:13px 21px;border-radius:5px;color:#f0e0b6;font-size:13px;text-align:center;box-shadow:0 6px 28px #0008;pointer-events:none}noscript{position:fixed;inset:20%;background:#112630;padding:40px}.graphics-unavailable #solo,.graphics-unavailable #create,.graphics-unavailable #join{display:none}@media(max-width:1050px){.topbar{left:15px;right:15px;top:12px}.brand small{display:none}.brand b{font-size:11px}.resources{gap:17px;padding:8px 13px}.resources strong{font-size:20px}.connection{display:none}.sectors{width:190px;left:15px;bottom:163px}.wave-hud{right:15px;top:82px;width:195px;padding:13px}.tower-card{right:15px;bottom:165px;width:240px}.defense{padding:15px 8px 8px 40px}.defense .icon{left:9px;width:23px}.defense b{font-size:11px}.build-hud{width:calc(100% - 30px)}.menu-card{margin-left:3vw}.wave-main>b{font-size:42px}}@media(max-width:650px){.topbar{gap:7px;left:9px;right:9px}.brand{gap:5px}.brand b{font-size:9px;letter-spacing:.08em}.emblem{width:29px;height:34px;font-size:17px}.resources{gap:10px;padding:6px 8px}.resources span{font-size:7px}.resources strong{font-size:15px}.tools{gap:3px}.tools button{padding:7px}.wave-hud{top:67px;right:9px;width:165px;padding:11px}.wave-hud p{display:none}.wave-main>b{font-size:32px}.wave-main>span{font-size:21px}.wave-hud #wave-theme{font-size:11px}.sectors{left:9px;bottom:144px;width:145px;padding:8px}.sector-row{font-size:9px;padding:4px 0}.sector-row small{font-size:8px}.camera-tools{flex-wrap:wrap}.camera-tools button{font-size:8px;padding:5px}.tower-card{bottom:144px;right:9px;width:190px;padding:12px}.tower-card h2{font-size:16px}.tower-card p{font-size:10px}.tower-card .actions{flex-direction:column}.tower-card button{font-size:10px;padding:7px}.build-hud{bottom:9px;width:calc(100% - 18px)}.defenses{gap:3px}.defense{padding:32px 4px 7px;min-height:84px;text-align:center}.defense .icon{top:7px;left:calc(50% - 11px);width:22px;height:22px}.defense b{font-size:8px;margin-bottom:4px}.defense small{font-size:11px}.defense .placement{font-size:7px}.defense .energy{display:none}.build-hint{font-size:9px;gap:7px;margin-bottom:6px}.build-hint>span{max-width:49%;font-size:8px}.build-hint>button{font-size:9px;padding:6px}.menu-card{margin:0;padding:25px;justify-self:center}.menu-card h1{font-size:52px}.menu-card .intro{font-size:13px}.menu-card .eyebrow{font-size:8px}#toast{top:68px;width:85%;font-size:11px}dialog{padding:23px}.lobby-card{padding:23px}}
