@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-latin-400-normal-_wFEWmAB.woff2) format("woff2"),url(/assets/press-start-2p-latin-400-normal-KLytu4cr.woff) format("woff")}:root{--ink: #1d1a2b;--paper: #fbf6e6;--paper-2: #efe6cc;--navy: #18213a;--red: #e5483e;--red-d: #9b1f1b;--blue: #3d7fe6;--blue-d: #1c3f96;--gold: #ffd04a;--pix: "Press Start 2P", ui-monospace, monospace;--ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--navy);color:var(--ink);font-family:var(--ui);-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;overscroll-behavior:none;touch-action:none}[hidden]{display:none!important}#game{position:fixed;top:0;right:0;bottom:0;left:0}#game canvas{display:block;image-rendering:pixelated}.panel{background:var(--paper);border:3px solid var(--ink);border-radius:8px;box-shadow:inset 0 0 0 2px #fff,inset 0 -4px 0 2px var(--paper-2),0 4px #00000059}.btn{font:700 14px var(--ui);border:3px solid var(--ink);border-radius:8px;background:#fff;color:var(--ink);padding:8px 12px;cursor:pointer;box-shadow:inset 0 -3px 0 var(--paper-2),0 2px 0 var(--ink);transition:transform .06s}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 -1px 0 var(--paper-2)}.btn:disabled{opacity:.45;cursor:default}.btn:focus-visible,.menu-item:focus-visible,.tbtn:focus-visible{outline:3px solid var(--gold);outline-offset:1px}.btn.primary{background:var(--gold);box-shadow:inset 0 -3px #d79b12,0 2px 0 var(--ink)}.btn.ghost{background:transparent;border-style:dashed;box-shadow:none}.btn.big{font-size:16px;padding:12px 16px;min-height:52px}.btn.icon{width:40px;padding:6px 0;font-size:18px}#hud{position:fixed;left:0;right:0;top:0;z-index:10;display:flex;align-items:center;gap:8px;padding:calc(6px + var(--safe-t)) calc(8px + var(--safe-r)) 6px calc(8px + var(--safe-l));background:linear-gradient(#2b3a6e,#1d2850);border-bottom:3px solid var(--ink);box-shadow:0 3px #00000040;color:#fff;font-size:13px;flex-wrap:nowrap;min-height:54px}#hud .spacer{flex:1}.cap,.chip,.turn,.funds{display:flex;align-items:center;gap:6px;white-space:nowrap;border:3px solid var(--ink);border-radius:999px;box-shadow:inset 0 0 0 2px #ffffffd9,0 2px #00000059}.chip{font:9px var(--pix);color:var(--ink);background:linear-gradient(#fff,#dfe6f5);padding:7px 10px;cursor:pointer}.chip b{font:10px var(--pix);letter-spacing:1px;color:#1f45a8}.chip .lbl{opacity:.6}.turn{padding:3px 12px 3px 4px;background:linear-gradient(#fff,#e4e4ec);color:var(--ink)}.turn .day{font:10px var(--pix);color:#fff;padding:6px 9px;border-radius:999px;border:2px solid var(--ink);background:#777;text-shadow:1px 1px 0 var(--ink)}.turn.red .day{background:linear-gradient(#ff7a62,#d23a2a)}.turn.blue .day{background:linear-gradient(#69a2ff,#2c62d0)}#turn-text{font:9px/1.2 var(--pix)}.funds{font:10px var(--pix);color:var(--ink);background:linear-gradient(#fff,#e4e4ec);padding:4px 12px 4px 4px}.funds .g{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:2px solid var(--ink);background:radial-gradient(circle at 35% 35%,#fff4b0,#f0b820);font-size:9px}.opp{font:8px/1.4 var(--pix);opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opp.on:before,.opp.off:before,.opp.waiting:before{content:"●";margin-right:5px;font-family:var(--ui);font-size:11px}.opp.on:before{color:#6dff8a}.opp.off:before{color:#ff7b6e}.opp.waiting:before{color:var(--gold)}#hud .btn{padding:7px 12px;font:9px var(--pix);border-radius:999px}#hud .btn.icon{font:700 18px var(--ui);width:42px;padding:4px 0}#info{position:fixed;z-index:9;left:calc(10px + var(--safe-l));bottom:calc(10px + var(--safe-b));display:flex;gap:6px;align-items:flex-end;pointer-events:none;background:none;border:0;box-shadow:none;padding:0}#info.right{left:auto;right:calc(10px + var(--safe-r));flex-direction:row-reverse}.card{display:flex;align-items:flex-end;gap:8px;padding:6px 10px 7px 6px;background:linear-gradient(#fff,#eef0f6);color:var(--ink);border:3px solid var(--ink);border-radius:10px;box-shadow:inset 0 0 0 2px #fff,0 3px #00000059;font:9px/1.5 var(--pix)}.card .ico{width:40px;height:40px;image-rendering:pixelated}.card .ico.tall{width:34px;height:60px}.card .nm{font-size:9px;margin-bottom:3px;white-space:nowrap}.card .stat{white-space:nowrap}.card .stat b{font-size:11px}.card .stat.sub{opacity:.6;font-size:7px}.card .stars{color:#e09a00;letter-spacing:-2px;font-family:var(--ui);font-size:14px}.card.unit.red{background:linear-gradient(#ffe2da,#ffc4b6)}.card.unit.blue{background:linear-gradient(#e0ecff,#bcd4ff)}.card.terrain.red .nm{color:var(--red-d)}.card.terrain.blue .nm{color:var(--blue-d)}.card.forecast{background:linear-gradient(#fff6c8,#ffe58a)}#menu{position:fixed;z-index:20;padding:8px;min-width:170px;background:linear-gradient(#fff,#eef0f6);border:3px solid var(--ink);border-radius:12px;box-shadow:inset 0 0 0 2px #fff,0 4px #00000059}#menu.wide{min-width:270px}.menu-title{font:8px var(--pix);letter-spacing:.05em;opacity:.55;padding:2px 6px 8px}.menu-items{display:flex;flex-direction:column;gap:4px}.menu-item{position:relative;display:flex;align-items:center;gap:10px;width:100%;text-align:left;font:11px/1.4 var(--pix);color:var(--ink);background:transparent;border:2px solid transparent;border-radius:8px;padding:8px 10px 8px 22px;cursor:pointer}.menu-item:before{content:"";position:absolute;left:7px;top:50%;margin-top:-5px;border:5px solid transparent;border-left:7px solid var(--ink);opacity:0}.menu-item:hover:not(:disabled),.menu-item:focus{background:#fff1a8;border-color:var(--ink);outline:none}.menu-item:hover:not(:disabled):before,.menu-item:focus:before{opacity:1}.menu-item:focus-visible{box-shadow:0 0 0 3px var(--gold)}.menu-item:disabled{opacity:.35;cursor:default}.menu-item.danger{color:var(--red-d)}.menu-item.cancel{opacity:.7}.menu-item .ico{width:32px;height:32px;image-rendering:pixelated;flex:none}.menu-item .lbl{display:flex;flex-direction:column;flex:1;gap:3px}.menu-item small{font:600 11px var(--ui);opacity:.65}.menu-item .det{font:10px var(--pix);color:#8a5a00}.touch-only{display:none!important}body.touch .touch-only:not([hidden]){display:flex!important}body.touch .desk-only{display:none!important}#touchbar{position:fixed;z-index:10;left:0;right:0;bottom:0;gap:8px;padding:8px calc(10px + var(--safe-r)) calc(8px + var(--safe-b)) calc(10px + var(--safe-l));background:linear-gradient(#232f52,#1b2542);border-top:3px solid var(--ink)}.tbtn{flex:1;min-height:60px;min-width:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:800 24px/1 var(--ui);color:var(--ink);background:#fff;border:3px solid var(--ink);border-radius:12px;box-shadow:inset 0 -4px 0 var(--paper-2)}.tbtn small{font-size:11px;font-weight:700;margin-top:3px;opacity:.7}.tbtn.primary{flex:1.6;background:var(--gold);box-shadow:inset 0 -4px #d79b12;font-size:20px}.tbtn:disabled{opacity:.45}.tbtn:active:not(:disabled){transform:translateY(2px)}body.touch #info{left:8px;right:8px;bottom:calc(84px + var(--safe-b));flex-direction:row;justify-content:flex-start}body.touch #info.right{flex-direction:row}body.touch .card{flex:0 1 auto;min-width:0}body.touch #menu{left:8px!important;right:8px;top:auto!important;bottom:calc(84px + var(--safe-b));padding:8px;max-height:60vh;overflow:auto}body.touch .menu-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}body.touch .menu-item{min-height:56px;font-size:12px;border-color:var(--ink);background:#fff}body.touch #menu.wide .menu-item{min-height:60px}body.touch #hud{gap:6px;font-size:12px}body.touch .chip .lbl{display:none}@media(max-width:460px){#hud .opp,#turn-text{display:none}.turn{padding-right:4px}}@media(orientation:landscape)and (max-height:500px){body.touch #touchbar{top:52px;bottom:0;left:auto;right:0;width:calc(84px + var(--safe-r));flex-direction:column;border-top:none;border-left:3px solid var(--ink);padding:8px calc(8px + var(--safe-r)) calc(8px + var(--safe-b)) 8px}body.touch .tbtn{min-height:48px}body.touch #info{bottom:calc(8px + var(--safe-b));right:calc(92px + var(--safe-r));left:8px}body.touch #menu{bottom:calc(8px + var(--safe-b));right:calc(92px + var(--safe-r));max-height:70vh}}#banner{position:fixed;z-index:15;left:50%;top:40%;transform:translate(-50%,-50%) scaleY(0);min-width:min(380px,86vw);text-align:center;padding:16px 20px;color:#fff;border:3px solid var(--ink);border-radius:10px;pointer-events:none;transition:transform .18s ease-out;background:#444}#banner.red{background:linear-gradient(var(--red),var(--red-d))}#banner.blue{background:linear-gradient(var(--blue),var(--blue-d))}#banner.show{transform:translate(-50%,-50%) scaleY(1)}#banner .b-main{font:14px/1.5 var(--pix);text-shadow:2px 2px 0 var(--ink)}#banner .b-sub{font:700 14px var(--ui);color:var(--gold);margin-top:6px}#toast{position:fixed;z-index:30;left:50%;top:calc(64px + var(--safe-t));transform:translate(-50%,-12px);background:var(--ink);color:#fff;padding:10px 14px;border-radius:8px;font-weight:700;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%)}.conn{position:fixed;z-index:30;right:10px;top:calc(60px + var(--safe-t));background:#ff7b6e;color:var(--ink);border:2px solid var(--ink);border-radius:6px;padding:4px 8px;font-weight:800;font-size:12px}#lobby,#overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:16px;overflow:auto;touch-action:pan-y;grid-template-columns:minmax(0,440px);justify-content:center;background:repeating-linear-gradient(45deg,rgba(255,255,255,.03) 0 12px,transparent 12px 24px),radial-gradient(ellipse at top,#2c3d6e,var(--navy) 70%)}#overlay{background:#0c1020b8}.lobby-card{width:100%;min-width:0;padding:22px 20px 18px;display:flex;flex-direction:column;gap:12px;-webkit-user-select:text;user-select:text}.logo{margin:0;text-align:center;font:clamp(20px,7.4vw,30px)/1.3 var(--pix);letter-spacing:1px}.logo .r{color:var(--red);text-shadow:3px 3px 0 var(--ink)}.logo .b{color:var(--blue);text-shadow:3px 3px 0 var(--ink)}.tag{margin:-4px 0 0;text-align:center;font-weight:600;opacity:.7;font-size:14px}.stripe{display:flex;flex-direction:column;gap:2px;align-items:center;padding:6px 0;background:#86d45f;border:3px solid var(--ink);border-radius:6px}.stripe .units{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}.stripe img{width:clamp(32px,10vw,40px);height:clamp(32px,10vw,40px);image-rendering:pixelated}.stripe .units.blue img{transform:scaleX(-1)}.join{display:flex;gap:8px}.join input{flex:1;width:0;min-width:0;font:20px var(--pix);text-transform:uppercase;letter-spacing:6px;text-align:center;border:3px solid var(--ink);border-radius:8px;padding:10px;background:#fff;color:var(--ink);user-select:text;-webkit-user-select:text}.join input:focus{outline:3px solid var(--gold)}#lobby h2{font:700 12px var(--ui);text-transform:uppercase;letter-spacing:.1em;opacity:.6;margin:6px 0 4px}#sessions{display:flex;flex-direction:column;gap:6px}.session{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;cursor:pointer;border:2px solid var(--ink);border-radius:8px;background:#fff;font:600 14px var(--ui);color:var(--ink)}.session .code{font:13px var(--pix)}.session.red .code{color:var(--red-d)}.session.blue .code{color:var(--blue-d)}.session .go{margin-left:auto;font-weight:800}.howto{font-size:14px;line-height:1.45}.howto summary{cursor:pointer;font-weight:700}.howto ul{padding-left:18px;margin:8px 0 0}.go-card{padding:22px;text-align:center;width:min(360px,92vw)}.go-card h2{margin:0 0 8px;font:22px var(--pix)}#overlay[data-result=win] h2{color:#d08a00;text-shadow:2px 2px 0 var(--ink)}#overlay[data-result=lose] h2{color:#666}.go-btns{display:flex;gap:10px;justify-content:center;margin-top:14px}@media(prefers-reduced-motion:reduce){#banner,#toast,.btn{transition:none}}.co-face{width:34px;height:34px;image-rendering:pixelated;border-radius:50%;border:2px solid var(--ink);background:#fff;margin-left:-2px}.turn.red .co-face{background:#ffe0d8}.turn.blue .co-face{background:#dde9ff}.versus{display:flex;align-items:center;justify-content:center;gap:10px}.versus .co{display:flex;flex-direction:column;align-items:center;gap:4px;font:9px var(--pix)}.versus .co img{width:84px;height:84px;image-rendering:pixelated;border:3px solid var(--ink);border-radius:12px;box-shadow:inset 0 0 0 2px #fff}.versus .co.red img{background:linear-gradient(#ffd8cc,#ff9c86)}.versus .co.blue img{background:linear-gradient(#d8e6ff,#8eb6ff);transform:scaleX(-1)}.versus .co.red span{color:var(--red-d)}.versus .co.blue span{color:var(--blue-d)}.versus .vs{font:20px var(--pix);color:var(--gold);text-shadow:2px 2px 0 var(--ink),-1px -1px 0 var(--ink)}#banner{display:flex;align-items:center;gap:14px;text-align:left;padding:12px 18px 12px 12px}#banner .b-face{width:72px;height:72px;image-rendering:pixelated;background:#fff;border:3px solid var(--ink);border-radius:10px;flex:none}#banner .b-co{font:8px var(--pix);opacity:.85;margin-top:6px}.go-face{width:112px;height:112px;image-rendering:pixelated;border:3px solid var(--ink);border-radius:14px;background:#fff}#overlay[data-result=win] .go-face{background:linear-gradient(#fff4b0,#ffd04a)}.go-quote{font:600 14px/1.4 var(--ui);font-style:italic;opacity:.8;margin:4px 0 0}@media(max-width:460px){.co-face{width:28px;height:28px}.versus .co img{width:68px;height:68px}}
