:root{color-scheme:dark;--bg:#101b23;--panel:#17252e;--line:#2b3a43;--ink:#f0f0e9;--muted:#98a8b0;--accent:#bde89b;--green:#65dcb3;font-family:Inter,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 35%,#1c3036 0,transparent 53%),var(--bg);color:var(--ink);min-height:100vh}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;transition:background .18s,transform .18s}button:disabled{opacity:.4;cursor:not-allowed}button:not(:disabled):active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button{color:var(--ink)}.hidden{display:none!important}.topbar{height:94px;padding:0 5.2%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;font-size:25px;font-weight:800;letter-spacing:5px}.brand-icon{background:var(--accent);color:var(--bg);font-size:22px;display:grid;place-items:center;width:36px;height:40px;clip-path:polygon(0 0,100% 0,100% 75%,50% 100%,0 75%);letter-spacing:0}.prototype{border:1px solid #4a5a60;border-radius:3px;font-size:9px;font-weight:500;letter-spacing:1.5px;padding:5px 8px;margin-left:12px;color:var(--muted)}.connection{font-size:11px;letter-spacing:.5px;color:var(--green)}main{max-width:1536px;margin:auto;padding:0 5.2%}.home{min-height:calc(100vh - 164px);display:grid;grid-template-columns:1fr 440px;gap:8%;align-items:center;padding:64px 0}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;color:var(--accent)}.eyebrow>span,.tiny-dot{width:6px;height:6px;border-radius:100%;background:var(--accent);display:inline-block;margin-right:7px}.intro h1{font-size:clamp(52px,5.6vw,86px);line-height:1.07;letter-spacing:-4px;font-weight:600;margin:28px 0}.intro h1 em{font-style:normal;color:var(--accent)}p{color:var(--muted);line-height:1.8;font-size:14px}.intro>p{font-size:16px;line-height:1.8}.features{display:flex;gap:24px;font-size:9px;letter-spacing:1.6px;color:#bfcccf;margin-top:32px}.features span+span{border-left:1px solid #43514f;padding-left:24px}.mini-map{max-width:380px;margin-top:38px;opacity:.65}.mini-map>span{font-size:8px;letter-spacing:2px;color:var(--muted)}.mini-map svg{width:100%;height:130px}.mini-map path{fill:#2e4446;stroke:#8aa28d;stroke-width:1}.mini-map path+path{fill:none;stroke:#607d73}.mini-map circle{fill:var(--accent)}.entry-card{padding:40px;background:linear-gradient(135deg,#22323a,#17252f);border:1px solid #3c4b50;box-shadow:0 24px 70px #0002;border-radius:16px}.entry-card h2{font-size:30px;letter-spacing:-1px;margin:17px 0 8px;font-weight:550}.entry-card>p{font-size:12px;margin-bottom:32px}.muted{color:var(--muted)}label{font-size:9px;letter-spacing:1.8px;color:#bcc8cc;display:block;margin-bottom:10px}input{width:100%;min-width:0;padding:15px;background:#111e26;border:1px solid #3b4b55;border-radius:6px;color:var(--ink);font-size:14px;height:50px}input::placeholder{color:#789099}.primary{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;background:var(--accent);color:#17231b;border-radius:6px;padding:17px 20px;font-weight:650;font-size:13px;min-height:50px}.primary:not(:disabled):hover{background:#d1f5b4}#create-form .primary{margin-top:18px}.secondary{background:#2b3c46;border:1px solid #455660;border-radius:6px;padding:14px 18px;font-size:12px;white-space:nowrap;min-height:46px}.secondary:not(:disabled):hover{background:#3c505a}.divider{display:flex;align-items:center;gap:15px;color:#94a4ab;letter-spacing:1.5px;font-size:8px;margin:28px 0 20px}.divider:before,.divider:after{content:"";height:1px;background:#3c4a51;flex:1}.join-form{display:flex;gap:10px}.join-form input{text-transform:uppercase;letter-spacing:2px}.demo-button{margin-top:24px;width:100%;text-align:left;background:none;color:#c3d0d2;font-size:12px;padding:12px 0;display:flex;justify-content:space-between}.demo-button:hover{color:var(--accent)}.card-foot{font-size:10px;color:var(--muted);padding-top:25px;border-top:1px solid var(--line);margin-top:16px}.card-foot .tiny-dot{width:4px;height:4px}footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:23px 5.2%;font-size:9px;letter-spacing:1.5px;color:#8fa2a7}footer>span:first-child{color:#c0cdce}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}.lobby{padding:65px 0;max-width:760px;margin:auto;text-align:center;min-height:calc(100vh - 160px)}.lobby h1{font-size:38px;letter-spacing:-1.7px}.room-ticket{padding:24px;background:var(--panel);border:1px solid var(--line);border-radius:12px;margin:30px 0;display:flex;align-items:center;justify-content:space-between;gap:16px}.room-ticket>span{font-size:10px;letter-spacing:2px;color:var(--muted)}.room-ticket strong{font-size:34px;letter-spacing:8px;color:var(--accent)}.lobby-players{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:30px}.lobby-player{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px;text-align:left;display:flex;align-items:center;gap:12px}.lobby-player small{margin-left:auto;color:var(--muted);font-size:10px}.avatar{width:34px;height:36px;border-radius:5px;display:grid;place-items:center;font-weight:700;background:var(--player-color);color:#14212b}.text-button{background:none;padding:8px;color:var(--muted);font-size:11px}.text-button:hover{color:var(--accent)}.game{padding:30px 0 42px;min-height:calc(100vh - 160px)}.game-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:24px}.game-title h2{font-size:28px;font-weight:550;letter-spacing:-1px;margin:9px 0 0}.game-title .eyebrow{font-size:8px}.room-info{display:flex;align-items:center;gap:12px;font-size:10px;color:var(--muted);letter-spacing:1px}.icon-button{border:1px solid var(--line);background:var(--panel);width:32px;height:32px;border-radius:50%;font-size:15px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 304px;gap:22px;align-items:start}.players{display:flex;gap:9px;margin-bottom:16px;flex-wrap:wrap}.player-card{background:#1a2932;border:1px solid #33434c;border-radius:7px;padding:12px;flex:1;min-width:115px;display:flex;align-items:center;gap:10px}.player-card.active{border-color:var(--player-color);background:#25383a}.player-card.eliminated{opacity:.4}.player-card .avatar{width:30px;height:32px;font-size:12px}.player-name{font-size:11px;font-weight:650;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-details{font-size:9px;color:var(--muted);margin-top:5px}.online-dot{display:inline-block;width:5px;height:5px;background:var(--green);border-radius:50%;margin-left:5px}.board-shell{position:relative;background:radial-gradient(ellipse at center,#243a40 0%,#192c36 70%);border:1px solid #3a4e55;border-radius:12px;overflow:hidden}.board-shell:before{position:absolute;content:"";inset:0;background-image:radial-gradient(#81999030 .8px,transparent .8px);background-size:19px 19px;pointer-events:none}.board-top{position:relative;display:flex;justify-content:space-between;padding:19px 22px;font-size:8px;letter-spacing:1.4px;color:var(--muted)}.board-top .tiny-dot{width:4px;height:4px}#map{display:block;position:relative;width:100%;min-height:280px;max-height:590px;touch-action:manipulation}.territory{cursor:pointer;outline:none}.territory polygon{stroke:#182a32;stroke-width:5;transition:fill .2s,stroke .2s,filter .2s}.territory:hover polygon{filter:brightness(1.22);stroke:#a5bdb4}.territory.selected polygon{stroke:#e2f5cb;stroke-width:5;filter:brightness(1.2)}.territory.target polygon{stroke:#f1bf8c;stroke-width:5;filter:brightness(1.2)}.territory.possible polygon{stroke:#d3c4a1;stroke-width:3;stroke-dasharray:7 4}.territory:focus-visible polygon{stroke:white;stroke-width:6}.territory text{pointer-events:none;user-select:none}.region-label{font-size:10px;letter-spacing:4px;fill:#a4b8b8;opacity:.85}.sea-label{fill:#79949e;opacity:.4;font-size:10px;letter-spacing:6px}.compass{fill:none;stroke:#8da6aa;stroke-width:1;opacity:.5}.board-bottom{display:flex;gap:17px;align-items:center;flex-wrap:wrap;padding:15px 18px;border-top:1px solid #38505a;color:#a3b6ba;font-size:8px;position:relative}.board-bottom .text-button{margin-left:auto;font-size:9px;padding:0}.legend-dot{width:5px;height:5px;display:inline-block;margin-right:5px;border-radius:50%}.region-0{background:#94b6ac}.region-1{background:#b5b49a}.region-2{background:#c4a587}.map-caption{display:flex;justify-content:space-between;margin-top:14px;gap:10px;color:#90a4ac;font-size:8px;letter-spacing:.6px}.command-panel{background:var(--panel);border:1px solid #3a4a53;border-radius:12px;overflow:hidden}.turn-heading{padding:21px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:8px}.turn-heading .eyebrow{font-size:8px;letter-spacing:1.5px}.turn-heading h3{font-size:20px;letter-spacing:-.5px;margin:8px 0 0;overflow-wrap:anywhere}.timer{font-size:27px;letter-spacing:-1px;display:flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums}.timer span{font-size:8px;color:var(--muted);letter-spacing:0}.timer.urgent{color:#f5a779}.phases{display:flex;padding:16px 16px 0;justify-content:space-between;gap:5px;font-size:9px;color:#83969e}.phases span{padding-bottom:12px;border-bottom:2px solid transparent}.phases span.active{border-color:var(--accent);color:var(--accent)}.command-body{padding:20px}.command-body h3{font-size:18px;margin:12px 0 8px;font-weight:550}.command-body p{font-size:12px;line-height:1.7;margin:0 0 18px}.reserve{font-size:10px;color:var(--accent);letter-spacing:1px}.selection{min-height:50px;border:1px solid #3a4d56;border-radius:6px;background:#12212a;margin:14px 0;padding:13px;font-size:11px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:#c3d4d7}.selection .arrow{color:var(--accent)}.amount-control{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;gap:15px}.amount-control label{margin:0;font-size:8px}.amount-control input{width:74px;height:38px;padding:8px}.command-body .primary{justify-content:center}.wide{width:100%;margin-top:10px;font-size:11px}.activity{border-top:1px solid var(--line);padding:20px}.activity .eyebrow{font-size:8px}.activity ol{padding:0;list-style:none;margin:14px 0 0;max-height:155px;overflow:auto}.activity li{font-size:10px;line-height:1.7;color:#93a7b0;padding:9px 0;border-top:1px solid #2c3b43}.activity li:first-child{border:0;color:#cedbdc;padding-top:0}.battle{font-size:10px;border-top:1px solid var(--line);margin-top:20px;padding-top:15px;color:var(--muted)}.dice-row{display:flex;align-items:center;gap:5px;margin-top:10px}.die{display:inline-grid;width:25px;height:25px;place-items:center;border-radius:4px;background:#324a50;color:#e1f8e8;font-weight:bold}.die.defend{background:#57463c;color:#ffe7cc}.battle-result{margin-top:10px;font-size:10px;color:#c5d3ce}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:50;padding:15px 24px;background:#e9e9d8;color:#16252c;border-radius:8px;box-shadow:0 8px 45px #0006;max-width:90%;font-size:13px;text-align:center}.demo-notice{background:#bde89b0d;color:#bad795;border:1px solid #536845;border-radius:6px;font-size:10px;padding:12px 15px;letter-spacing:.5px;margin-bottom:18px}dialog{color:var(--ink);background:#1a2b35;border:1px solid #526266;border-radius:14px;padding:38px;max-width:550px;width:calc(100% - 32px);max-height:85vh}dialog::backdrop{background:#071016c9;backdrop-filter:blur(5px)}dialog h2{font-size:28px;letter-spacing:-1px}dialog p{font-size:13px}.close-dialog{position:absolute;right:14px;top:14px}.board-shell.expanded{position:fixed;inset:12px;z-index:30;display:flex;flex-direction:column;background:#192e37;box-shadow:0 0 0 30px #101b23ef}.board-shell.expanded #map{flex:1;max-height:none;min-height:0}.board-shell.expanded .board-bottom{margin-top:auto}
@media(min-width:1600px){.home{gap:15%}.intro h1{font-size:88px}}@media(max-width:1100px){.home{grid-template-columns:1fr 390px;gap:5%}.entry-card{padding:30px}.game-layout{grid-template-columns:minmax(0,1fr) 275px;gap:15px}.command-body,.turn-heading,.activity{padding:17px}.board-bottom{gap:10px}.board-bottom .text-button{margin-left:0}.player-card{min-width:100px}.board-top{padding:16px}.intro h1{font-size:64px}}@media(max-width:800px){.topbar{height:76px}.brand{font-size:21px;gap:8px;letter-spacing:4px}.prototype{font-size:7px;margin-left:4px;letter-spacing:1px;padding:4px}.connection{font-size:9px;max-width:100px;text-align:right}.home{grid-template-columns:1fr;padding:42px 0;gap:30px;max-width:520px;margin:auto}.intro h1{font-size:58px;letter-spacing:-2.5px;margin:22px 0}.intro>p{font-size:14px}.mini-map{display:none}.features{gap:16px;font-size:8px;margin-top:23px}.features span+span{padding-left:16px}.entry-card{padding:28px}.game{padding-top:24px}.game-layout{grid-template-columns:1fr}.game-title h2{font-size:22px}.game-title .eyebrow{font-size:7px;letter-spacing:1.4px}.room-info{font-size:9px;gap:5px}.game-title{align-items:flex-start}.room-info>.leave{display:none}.command-panel{margin-top:5px}.command-body{padding:20px}.turn-heading{padding:18px 20px}.phases{justify-content:flex-start;gap:25px;padding-left:20px;font-size:10px}.command-body h3{font-size:21px}.command-body p{font-size:13px}.activity ol{max-height:120px}.players{gap:7px}.player-card{padding:10px}.player-name{max-width:130px}.board-bottom{gap:10px;padding:13px 12px;font-size:7px}.map-caption{font-size:7px}#map{min-height:240px}.board-top{font-size:7px}.game-title .eyebrow{max-width:200px}.lobby{padding:40px 0}.lobby h1{font-size:31px}.room-ticket{flex-wrap:wrap;justify-content:center}.room-ticket strong{font-size:30px}.room-ticket>span{width:100%}.lobby-players{grid-template-columns:1fr}footer{font-size:7px;letter-spacing:1px}.board-shell.expanded{inset:4px;border-radius:6px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.map-viewport{position:relative;overflow:auto;overscroll-behavior:contain}.map-viewport.zoomed #map{width:max(100%,850px);max-height:none;min-height:0}.board-shell.expanded .map-viewport{flex:1;min-height:0;display:flex;align-items:center}.board-shell.expanded .map-viewport #map{height:100%}.board-shell.expanded .map-viewport.zoomed{display:block}.board-shell.expanded .map-viewport.zoomed #map{height:auto}.board-bottom #zoom-map{margin-left:auto}.board-bottom #expand-map{margin-left:0}


.invite-button{width:100%;margin:-10px 0 25px}.amount-control{gap:8px}.amount-control input{width:64px}.amount-control .text-button{font-size:10px;color:var(--accent);min-height:44px;white-space:nowrap}#invite-link{font-size:12px}#share-invite{min-height:50px}

.campaign{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:15px}.campaign-card{background:#192c34;border:1px solid #344a50;border-radius:7px;padding:12px}.campaign-name{font-size:10px;font-weight:650;color:#d3e2db}.campaign-progress{font-size:9px;color:#a2b6b9;margin:7px 0 10px;line-height:1.5;overflow-wrap:anywhere}.campaign-bar{display:flex;gap:2px;height:4px;overflow:hidden;border-radius:3px}.campaign-bar span{display:block;min-width:0}.turn-notice{border:1px solid #3a5058;background:#1c3039;color:#b1c7ca;font-size:12px;padding:13px 17px;line-height:1.6;border-radius:8px;margin-bottom:17px}.turn-notice.your-turn{color:#d2edb3;border-color:#6c8555;background:#2a3b2b}.turn-notice.victory{color:#f4dc9e;border-color:#877441;background:#3a3525}.tactical-preview{border:1px solid #3b5256;background:#172c31;border-radius:7px;padding:14px;margin:0 0 17px}.tactical-preview strong{font-size:13px;font-weight:600;display:block;color:#d9e5df}.tactical-preview .force-comparison{font-size:18px;margin:9px 0}.tactical-preview p{font-size:11px!important;margin:8px 0!important}.tactics-label{font-size:8px;letter-spacing:1.7px;color:#b3c99e}.strength{font-size:11px;padding:9px 0;border-top:1px solid #3c5050}.favorable{color:#bde89b}.risky{color:#f5ab88}.tactical-preview small{display:block;color:#8fa7ad;font-size:9px;line-height:1.6}.battle-route{color:#cadfd8;font-size:11px;margin:11px 0}.dice-row{gap:9px}.dice-versus{font-size:14px;color:#9fb4ba}.dice-outcome{font-size:10px;margin-left:3px}.unused-dice{display:block;font-size:9px;margin-top:12px;line-height:1.6;color:#8fa5af}.battle-result{line-height:1.7}.captured-result{color:#d2efac;font-size:12px;font-weight:600;border:1px solid #5c7549;border-radius:5px;padding:10px;background:#273929}.battle-flash{animation:battle-flash .5s ease-out}.just-captured polygon{animation:capture-flash 1.3s ease-out}.march-path{filter:drop-shadow(0 2px 3px #0007)}@keyframes battle-flash{from{background:#536148}to{background:transparent}}@keyframes capture-flash{0%,50%{stroke:#f2e6a2;stroke-width:9;filter:brightness(1.9)}100%{stroke:#182a32;stroke-width:5}}@media(max-width:800px){.campaign{gap:6px}.campaign-card{padding:10px 8px}.campaign-name{font-size:9px}.campaign-progress{font-size:8px}.turn-notice{font-size:11px;padding:12px}.tactical-preview{padding:15px}.tactical-preview strong{font-size:14px}.tactical-preview p{font-size:12px!important}.tactical-preview small{font-size:10px}.dice-outcome{font-size:11px}.activity ol{max-height:150px}}@media(prefers-reduced-motion:reduce){.battle-flash,.just-captured polygon{animation:none!important}}
