:root{
  --bg:#06111e;--panel:rgba(7,18,31,.86);--panel2:rgba(14,31,48,.92);--line:rgba(155,201,230,.14);--text:#edf6ff;--muted:#8fa8bc;
  --gold:#f5c661;--gold2:#d3932d;--green:#62d59c;--red:#ff6b68;--blue:#56b7ff;--purple:#a988ff;--cyan:#66e0e7;
  --radius:18px;--shadow:0 16px 50px rgba(0,0,0,.38);--sans:'Cairo',system-ui,sans-serif;--display:'Cinzel',Georgia,serif;
}
*{box-sizing:border-box}html,body{height:100%;margin:0;background:#04101c;color:var(--text);font-family:var(--sans);overflow:hidden}button,input{font:inherit}button{color:inherit}.game-shell{height:100%;display:grid;grid-template-columns:94px minmax(0,1fr) 326px;grid-template-rows:78px minmax(0,1fr) 88px;gap:12px;padding:12px;background:
radial-gradient(circle at 50% 20%,rgba(24,78,111,.28),transparent 35%),linear-gradient(135deg,#07111e,#08192b 50%,#04101b)}
.glass-panel{background:linear-gradient(180deg,rgba(17,39,59,.9),rgba(6,18,31,.88));border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(16px)}
.topbar{grid-column:1/4;grid-row:1;display:flex;align-items:center;gap:18px;border-radius:20px;padding:10px 14px;direction:ltr;position:relative;z-index:30}.brand-block{display:flex;align-items:center;gap:10px;min-width:235px}.avatar-button{position:relative;background:none;border:0;padding:0;cursor:pointer}.avatar-ring{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:linear-gradient(135deg,#f5cf72,#935e1f);padding:2px;box-shadow:0 8px 26px rgba(229,175,65,.24)}.avatar-face{display:grid;place-items:center;width:100%;height:100%;border-radius:14px;background:linear-gradient(145deg,#1c4266,#12253a);font:bold 24px var(--display)}.level-badge{position:absolute;right:-8px;bottom:-5px;background:#0c2237;border:2px solid var(--gold);border-radius:20px;padding:1px 7px;font-size:11px;font-weight:800}.player-identity{display:flex;flex-direction:column;direction:rtl;align-items:flex-start}.player-identity strong{font-size:15px}.player-identity span{font-size:11px;color:var(--muted);display:flex;gap:4px;align-items:center}.player-identity svg{width:13px}.resource-strip{display:flex;gap:9px;flex:1;justify-content:center}.resource-pill{min-width:130px;height:50px;border:1px solid rgba(255,255,255,.07);border-radius:15px;background:rgba(2,11,20,.45);display:flex;align-items:center;gap:8px;padding:7px 9px;cursor:pointer;transition:.2s}.resource-pill:hover{transform:translateY(-2px);border-color:rgba(245,198,97,.3)}.resource-pill>svg{width:24px;color:var(--gold)}.resource-pill span{display:flex;flex-direction:column;align-items:flex-start;line-height:1}.resource-pill b{font-size:13px}.resource-pill small{font-size:9px;color:var(--muted);margin-top:5px}.resource-pill em{margin-left:auto;background:rgba(101,213,156,.12);color:var(--green);font-style:normal;border-radius:9px;width:22px;height:22px;display:grid;place-items:center;font-weight:900}.resource-pill.premium>svg{color:#71ddff}.top-actions{display:flex;gap:7px}.icon-btn{width:42px;height:42px;border:1px solid rgba(255,255,255,.08);border-radius:13px;background:rgba(1,9,17,.38);display:grid;place-items:center;cursor:pointer;transition:.2s}.icon-btn:hover{background:rgba(255,255,255,.08);transform:translateY(-1px)}.icon-btn svg{width:20px}.badge-wrap{position:relative}.notify-badge{position:absolute;right:-3px;top:-5px;background:#d94842;width:18px;height:18px;border-radius:50%;font:700 10px var(--sans);display:grid;place-items:center;border:2px solid #0a1c2d}
.left-rail{grid-column:1;grid-row:2/4;border-radius:20px;padding:10px 7px;display:flex;flex-direction:column;gap:8px;z-index:20}.rail-btn{border:1px solid transparent;background:transparent;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:64px;font-size:10px;color:#9db2c4;cursor:pointer;position:relative;transition:.2s}.rail-btn svg{width:21px}.rail-btn:hover,.rail-btn.active{background:linear-gradient(180deg,rgba(245,198,97,.16),rgba(245,198,97,.05));color:#fff;border-color:rgba(245,198,97,.22)}.rail-btn.active svg{color:var(--gold)}.rail-btn .dot{position:absolute;top:8px;right:15px;width:7px;height:7px;background:var(--red);border-radius:50%;box-shadow:0 0 0 4px rgba(255,107,104,.11)}
.world-stage{grid-column:2;grid-row:2;position:relative;border-radius:24px;overflow:hidden;background:#071b2b;min-width:0;box-shadow:inset 0 0 0 1px rgba(126,195,224,.12)}.ambient{position:absolute;width:520px;height:520px;border-radius:50%;filter:blur(110px);opacity:.2;pointer-events:none}.ambient-a{background:#55d6c1;left:-180px;top:-190px}.ambient-b{background:#e5a343;right:-220px;bottom:-220px}.map-viewport{position:absolute;inset:0;overflow:hidden;cursor:grab}.map-viewport.dragging{cursor:grabbing}.map-canvas{width:100%;height:100%;transform-origin:center;transition:transform .25s ease;position:relative}.world-svg{width:100%;height:100%;display:block;object-fit:cover}.zone{cursor:pointer;transition:.25s;transform-origin:center}.zone:hover{filter:brightness(1.12)}.zone:focus{outline:none}.svg-label{fill:#fff;paint-order:stroke;stroke:#07131e;stroke-width:5px;font-family:var(--sans);font-weight:800}.svg-label.title{font-size:28px}.svg-label.sub{font-size:17px;fill:#ffd36a}.map-toolbar{position:absolute;top:18px;left:18px;z-index:8;border-radius:16px;padding:6px;display:flex;gap:5px}.map-toolbar .icon-btn{width:36px;height:36px}.map-node{position:absolute;transform:translate(-50%,-50%);z-index:6;border:0;background:none;display:flex;flex-direction:column;align-items:center;cursor:pointer;filter:drop-shadow(0 8px 9px rgba(0,0,0,.5));transition:.2s}.map-node:hover{transform:translate(-50%,-50%) scale(1.08)}.map-node>span{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;border:2px solid rgba(255,255,255,.22);background:linear-gradient(145deg,#173a55,#0e2133);box-shadow:inset 0 0 20px rgba(255,255,255,.05)}.map-node>span svg{width:28px}.map-node>b{margin-top:5px;padding:3px 9px;background:rgba(2,10,16,.78);border-radius:8px;font-size:11px;white-space:nowrap;border:1px solid rgba(255,255,255,.07)}.map-node>small{font-size:9px;color:#d4e2ed;background:rgba(2,10,16,.72);padding:2px 6px;border-radius:6px}.node-castle>span{width:72px;height:72px;border-radius:22px;color:#ffd065;background:radial-gradient(circle at 50% 30%,#694f27,#1b2b3a 65%);border-color:#f0ca6f}.node-resource>span{color:#7be0a6}.node-enemy>span{color:#ff7772;border-color:#c65a55;background:linear-gradient(145deg,#51282c,#1f1c28)}.node-camp>span{color:#d9b1ff;border-color:#805eb3;background:linear-gradient(145deg,#352547,#1c1a2c)}.army-march{position:absolute;left:29%;top:44%;z-index:7;opacity:0;pointer-events:none}.army-march span{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#101b26;border:2px solid var(--gold);box-shadow:0 0 25px rgba(245,198,97,.45)}.army-march i{position:absolute;width:150px;border-top:3px dashed rgba(245,198,97,.7);left:33px;top:19px;transform:rotate(-14deg);transform-origin:left}.event-ribbon{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);width:min(760px,78%);min-height:72px;border-radius:18px;z-index:9;display:flex;align-items:center;gap:13px;padding:11px 13px}.event-icon{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#6b331f,#32161a);display:grid;place-items:center;color:#ff9668}.event-icon svg{width:24px}.event-ribbon>div:nth-child(2){flex:1;display:flex;flex-direction:column}.event-ribbon strong{font-size:13px}.event-ribbon span{font-size:10px;color:var(--muted)}.countdown{font:700 16px var(--display);color:#ffd272;direction:ltr}.gold-btn,.primary-action,.secondary-action,.danger-action{border:0;border-radius:12px;padding:10px 15px;font-weight:800;cursor:pointer;transition:.2s;display:inline-flex;align-items:center;justify-content:center;gap:7px}.gold-btn{background:linear-gradient(180deg,#f8d77b,#ca8b2c);color:#201404;box-shadow:0 8px 18px rgba(212,148,42,.25)}.gold-btn:hover,.primary-action:hover,.danger-action:hover{transform:translateY(-2px);filter:brightness(1.05)}.gold-btn.full,.secondary-action.full{width:100%}
.right-panel{grid-column:3;grid-row:2/4;display:flex;flex-direction:column;gap:11px;min-height:0;z-index:20}.panel-card{border-radius:20px;padding:13px}.panel-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.panel-card header>div{display:flex;align-items:center;gap:7px}.panel-card header svg{width:18px;color:var(--gold)}.panel-card header strong{font-size:13px}.panel-card header>span{font-size:10px;color:var(--muted)}.missions-card{flex:0 0 auto}.mission-list{display:flex;flex-direction:column;gap:7px}.mission-item{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.05);border-radius:12px;padding:8px}.mission-item.completed{opacity:.72}.mission-icon{width:32px;height:32px;border-radius:10px;background:rgba(245,198,97,.1);display:grid;place-items:center;color:var(--gold)}.mission-icon svg{width:16px}.mission-copy{display:flex;flex-direction:column;gap:4px}.mission-copy b{font-size:10px}.mission-copy span{height:4px;background:#1a2e40;border-radius:4px;overflow:hidden}.mission-copy i{display:block;height:100%;background:linear-gradient(90deg,#65d99c,#f1c55f);border-radius:4px}.mission-item small{font-size:9px;color:#adc0cf}.kingdom-card{flex:0 0 auto}.online{display:flex;gap:5px;align-items:center}.online i{width:7px;height:7px;border-radius:50%;background:#59d495;box-shadow:0 0 12px #59d495}.kingdom-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:10px}.kingdom-stats div{background:rgba(0,0,0,.18);padding:8px;border-radius:11px;text-align:center}.kingdom-stats span{display:block;font-size:8px;color:var(--muted)}.kingdom-stats b{display:block;font-size:12px;margin-top:3px}.primary-action{background:linear-gradient(180deg,#2c6f99,#1a4b72);border:1px solid rgba(120,197,243,.28);width:100%}.primary-action svg,.secondary-action svg,.danger-action svg{width:17px}.secondary-action{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.09)}.danger-action{background:linear-gradient(180deg,#c8524f,#8c312f);border:1px solid rgba(255,150,146,.25);width:100%}.chat-card{min-height:0;display:flex;flex-direction:column;flex:1}.mini-btn{width:26px;height:26px;border:0;border-radius:8px;background:rgba(255,255,255,.06);cursor:pointer}.chat-log{flex:1;overflow:auto;display:flex;flex-direction:column;gap:7px;min-height:90px;padding-left:3px}.chat-msg{font-size:10px;line-height:1.6;background:rgba(0,0,0,.15);padding:6px 8px;border-radius:9px}.chat-msg b{color:#7dd6ff}.chat-msg.alliance b{color:#6ddd9e}.chat-msg small{color:#71899d;margin-right:5px}.chat-form{display:flex;gap:6px;margin-top:8px}.chat-form input{flex:1;min-width:0;background:#07131f;border:1px solid rgba(255,255,255,.08);border-radius:10px;color:#fff;padding:8px 9px;font-size:10px;outline:none}.chat-form input:focus{border-color:rgba(98,213,156,.45)}.chat-form button{width:36px;border:0;border-radius:10px;background:#1c5f7f;display:grid;place-items:center;cursor:pointer}.chat-form svg{width:15px}
.bottom-dock{grid-column:2;grid-row:3;align-self:end;justify-self:center;width:min(650px,80%);height:76px;border-radius:23px;padding:7px;display:flex;align-items:center;justify-content:center;gap:7px;z-index:23}.bottom-dock button{position:relative;flex:1;height:60px;max-width:110px;border:1px solid transparent;border-radius:17px;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#9eb3c4;cursor:pointer}.bottom-dock button:hover{background:rgba(255,255,255,.05);color:#fff}.bottom-dock svg{width:22px}.bottom-dock span{font-size:9px}.bottom-dock .attack-main{height:74px;margin-top:-23px;max-width:88px;border-radius:50%;background:radial-gradient(circle,#cf5e51,#662729 75%);border:2px solid #e7a55b;box-shadow:0 8px 30px rgba(178,65,54,.4);color:#fff}.bottom-dock .attack-main svg{width:30px;height:30px}.dock-badge{position:absolute;top:6px;right:20px;background:#d54a45;border-radius:20px;padding:1px 5px;font-size:8px}.boot-screen{position:fixed;inset:0;z-index:9999;background:radial-gradient(circle at 50% 40%,#16344f,#050d16 65%);display:grid;place-items:center;transition:.6s}.boot-screen.hidden{opacity:0;visibility:hidden}.boot-card{text-align:center}.boot-emblem{width:110px;height:110px;margin:auto;border-radius:28px;display:grid;place-items:center;font:800 28px var(--display);background:linear-gradient(145deg,#294d69,#0d1f31);border:2px solid #e1b455;box-shadow:0 0 80px rgba(225,180,85,.18)}.boot-card h1{font:800 34px var(--display);color:#f0cb74;margin:18px 0 4px}.boot-card p{color:#8fa8bc;font-size:11px}.boot-bar{width:230px;height:5px;background:#0e2435;border-radius:9px;overflow:hidden;margin:18px auto}.boot-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#e4a33d,#fff1a7);animation:boot 1.15s ease forwards}@keyframes boot{to{width:100%}}
.modal-layer{position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:18px}.modal-layer.open{display:grid}.modal-backdrop{position:absolute;inset:0;background:rgba(2,8,14,.72);backdrop-filter:blur(8px)}.game-modal{position:relative;display:none;width:min(92vw,760px);max-height:86vh;overflow:auto;background:linear-gradient(180deg,#10283c,#081723);border:1px solid rgba(164,211,235,.16);border-radius:24px;box-shadow:0 30px 90px rgba(0,0,0,.6);padding:18px;z-index:2}.game-modal.active{display:block;animation:modalIn .24s ease}@keyframes modalIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.game-modal.xl{width:min(94vw,1050px)}.game-modal.lg{width:min(94vw,890px)}.game-modal.md{width:min(92vw,650px)}.game-modal.sm{width:min(92vw,470px)}.game-modal>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.game-modal>header>div{display:flex;gap:10px;align-items:center}.game-modal>header>div>svg{width:26px;color:var(--gold)}.game-modal h2{margin:0;font-size:18px}.game-modal header p{margin:2px 0 0;color:var(--muted);font-size:10px}.close-btn{width:38px;height:38px;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.04);display:grid;place-items:center;cursor:pointer}.close-btn svg{width:18px}.building-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.building-card{background:linear-gradient(145deg,rgba(22,50,71,.78),rgba(6,18,28,.78));border:1px solid rgba(255,255,255,.07);border-radius:17px;padding:13px;display:flex;flex-direction:column;gap:9px;position:relative;overflow:hidden}.building-card:before{content:'';position:absolute;width:120px;height:120px;background:var(--accent);opacity:.08;filter:blur(20px);border-radius:50%;left:-30px;top:-45px}.building-top{display:flex;gap:9px;align-items:center}.building-icon{width:46px;height:46px;border-radius:14px;background:rgba(0,0,0,.22);display:grid;place-items:center;color:var(--accent)}.building-icon svg{width:22px}.building-top div{display:flex;flex-direction:column}.building-top b{font-size:12px}.building-top small{font-size:9px;color:var(--muted)}.building-card p{font-size:9px;color:#9cb2c3;line-height:1.7;margin:0}.building-output{display:flex;justify-content:space-between;font-size:9px;color:#b5c5d2}.building-card button{border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.06);border-radius:10px;padding:8px;cursor:pointer;font-size:10px;font-weight:700}.building-card button:hover{border-color:var(--accent);background:rgba(255,255,255,.1)}.building-card button:disabled{opacity:.45;cursor:not-allowed}.army-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:12px}.army-summary div{padding:10px;border-radius:13px;background:rgba(0,0,0,.18);text-align:center}.army-summary span{display:block;font-size:9px;color:var(--muted)}.army-summary b{font-size:15px}.unit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.unit-card{border:1px solid rgba(255,255,255,.07);background:rgba(0,0,0,.14);border-radius:15px;padding:12px}.unit-head{display:flex;align-items:center;gap:8px}.unit-head .unit-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:rgba(255,255,255,.06);font-size:21px}.unit-head div{display:flex;flex-direction:column}.unit-head b{font-size:11px}.unit-head small{font-size:8px;color:var(--muted)}.unit-count{font:700 20px var(--display);margin:10px 0}.train-row{display:flex;gap:6px}.train-row input{width:65px;background:#07131f;color:#fff;border:1px solid rgba(255,255,255,.08);border-radius:9px;padding:6px}.train-row button{flex:1;border:0;border-radius:9px;background:#1b5b7b;cursor:pointer;font-size:9px}.training-queue{margin-top:12px}.queue-item{padding:8px 10px;background:rgba(245,198,97,.08);border:1px solid rgba(245,198,97,.13);border-radius:11px;font-size:9px;display:flex;justify-content:space-between}.attack-layout{display:grid;grid-template-columns:1fr 1fr;gap:10px}.target-card{border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.16);border-radius:15px;padding:13px;display:flex;gap:10px;align-items:center;cursor:pointer}.target-card.active{border-color:#f0bc5a;background:rgba(240,188,90,.08)}.target-card svg{width:25px}.target-card div{display:flex;flex-direction:column}.target-card b{font-size:11px}.target-card span{font-size:9px;color:var(--muted)}.attack-config{grid-column:1/3;background:rgba(0,0,0,.13);padding:13px;border-radius:15px}.attack-config label{display:flex;justify-content:space-between;font-size:10px}.attack-config input{width:100%;accent-color:#d65c52;margin:10px 0}.battle-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:10px}.battle-preview div{background:#081520;padding:8px;border-radius:10px;text-align:center}.battle-preview span{display:block;font-size:8px;color:var(--muted)}.battle-preview b{font-size:11px}.ranking-list{display:flex;flex-direction:column;gap:7px}.rank-row{display:grid;grid-template-columns:38px 1fr auto;align-items:center;background:rgba(0,0,0,.14);padding:9px;border-radius:12px}.rank-num{width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.06);display:grid;place-items:center;font:700 11px var(--display)}.rank-row:nth-child(1) .rank-num{background:rgba(245,198,97,.18);color:#ffd973}.rank-copy{display:flex;flex-direction:column}.rank-copy b{font-size:10px}.rank-copy small{font-size:8px;color:var(--muted)}.rank-power{font-size:10px;color:#d8e3ea}.alliance-hero{display:flex;gap:14px;align-items:center;background:rgba(0,0,0,.14);padding:14px;border-radius:15px}.alliance-crest{width:70px;height:70px;display:grid;place-items:center;background:linear-gradient(145deg,#2a5274,#122437);border:1px solid rgba(255,255,255,.08);border-radius:20px;font-size:32px}.alliance-hero>div:last-child{display:flex;flex-direction:column}.alliance-hero b{font:700 18px var(--display);color:#f0ca6f}.alliance-hero span{font-size:9px;color:var(--muted)}.alliance-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.shop-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.shop-grid button{border:1px solid rgba(255,255,255,.07);background:rgba(0,0,0,.15);border-radius:14px;padding:14px;display:flex;align-items:center;gap:10px;cursor:pointer}.shop-grid span{font-size:25px}.shop-grid b{font-size:10px}.shop-grid small{margin-right:auto;color:#f1c967}.settings-list{display:flex;flex-direction:column;gap:9px;margin-bottom:12px}.settings-list label{background:rgba(0,0,0,.14);border-radius:11px;padding:10px;display:flex;justify-content:space-between;font-size:10px}.settings-list input{accent-color:#56c996}.profile-sheet{text-align:center}.big-avatar{width:86px;height:86px;border-radius:25px;margin:auto;display:grid;place-items:center;background:linear-gradient(145deg,#244d70,#102237);border:2px solid #efc469;font:800 34px var(--display)}.profile-sheet h3{margin:10px 0 2px}.profile-sheet p{margin:0;color:var(--muted);font-size:9px}.profile-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:13px}.profile-kpis span{background:rgba(0,0,0,.14);border-radius:11px;padding:9px;font-size:8px;color:var(--muted)}.profile-kpis b{display:block;color:#fff;font-size:12px}.notification-list{display:flex;flex-direction:column;gap:8px}.notification-list>div{display:flex;gap:9px;align-items:center;background:rgba(0,0,0,.14);padding:10px;border-radius:12px}.notification-list svg{width:18px;color:#6fd8aa}.notification-list span{display:flex;flex-direction:column}.notification-list b{font-size:10px}.notification-list small{font-size:8px;color:var(--muted)}.event-detail{text-align:center}.event-art{font-size:62px}.event-detail p{font-size:10px;color:#a9bdca;line-height:1.9}.toast-stack{position:fixed;left:20px;top:96px;z-index:150;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{min-width:250px;background:#102638;border:1px solid rgba(255,255,255,.09);box-shadow:var(--shadow);border-radius:13px;padding:10px 12px;display:flex;gap:8px;align-items:center;animation:toastIn .3s ease}.toast.success{border-color:rgba(98,213,156,.32)}.toast.error{border-color:rgba(255,107,104,.35)}.toast strong{font-size:10px}.toast small{display:block;color:var(--muted);font-size:8px}.toast svg{width:18px}@keyframes toastIn{from{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:none}}.battle-overlay{position:fixed;inset:0;z-index:180;background:rgba(3,7,11,.86);backdrop-filter:blur(10px);display:none;place-items:center}.battle-overlay.open{display:grid}.battle-card{width:min(92vw,470px);text-align:center;background:linear-gradient(180deg,#1c2f3d,#09131d);border:1px solid rgba(239,188,90,.28);border-radius:24px;padding:24px;box-shadow:0 30px 90px rgba(0,0,0,.65)}.battle-cross{font-size:68px;animation:pulse .8s infinite alternate}@keyframes pulse{to{transform:scale(1.12)}}.battle-card h2{font-size:20px}.battle-card p{font-size:10px;color:var(--muted)}.battle-progress{height:6px;background:#07111a;border-radius:7px;overflow:hidden;margin:16px 0}.battle-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,#c84944,#f4ce67)}.battle-result{font-size:12px;font-weight:800}.battle-result.win{color:#72dda7}.battle-result.lose{color:#ff817d}
@media(max-width:1180px){.game-shell{grid-template-columns:80px minmax(0,1fr) 280px}.resource-pill{min-width:105px}.resource-pill small{display:none}.building-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:920px){html,body{overflow:auto}.game-shell{min-height:100vh;height:auto;display:grid;grid-template-columns:1fr;grid-template-rows:68px minmax(580px,70vh) auto 76px;padding:8px;gap:8px}.topbar{grid-column:1;grid-row:1;border-radius:16px;padding:7px}.brand-block{min-width:0}.player-identity{display:none}.resource-strip{gap:4px;overflow:auto;justify-content:flex-start}.resource-pill{min-width:92px;height:44px;padding:5px}.resource-pill>svg{width:19px}.resource-pill b{font-size:10px}.resource-pill em{display:none}.top-actions .icon-btn:nth-child(1){display:none}.left-rail{display:none}.world-stage{grid-column:1;grid-row:2;border-radius:18px;min-height:580px}.right-panel{grid-column:1;grid-row:3}.missions-card,.kingdom-card{width:100%}.chat-card{min-height:260px}.bottom-dock{position:sticky;bottom:5px;grid-column:1;grid-row:4;width:100%;height:70px}.event-ribbon{width:92%;bottom:12px}.event-ribbon>div:nth-child(2) span,.event-ribbon .countdown{display:none}.game-modal{padding:14px}.building-grid,.unit-grid{grid-template-columns:1fr}.attack-layout{grid-template-columns:1fr}.attack-config{grid-column:1}.world-svg{min-width:900px}.map-canvas{width:900px}.map-viewport{overflow:auto}.map-node{transform:translate(-50%,-50%) scale(.85)}.map-node:hover{transform:translate(-50%,-50%) scale(.9)}}
@media(max-width:560px){.avatar-ring{width:45px;height:45px;border-radius:13px}.level-badge{font-size:9px}.resource-pill{min-width:76px}.resource-pill>svg{display:none}.resource-pill b{font-size:9px}.top-actions{gap:3px}.top-actions .icon-btn{width:34px;height:34px}.event-ribbon{padding:8px}.event-icon{display:none}.gold-btn{padding:8px 10px;font-size:9px}.bottom-dock button{height:54px}.bottom-dock .attack-main{height:66px}.alliance-actions,.shop-grid{grid-template-columns:1fr}.battle-preview{grid-template-columns:1fr 1fr}.army-summary{grid-template-columns:1fr 1fr}.army-summary div:last-child{grid-column:1/3}}

/* ===== Phase 2: Multiplayer / Auth / Live world ===== */
.auth-gate{position:fixed;inset:0;z-index:260;display:none;place-items:center;padding:22px;overflow:auto}.auth-gate.open{display:grid}.auth-backdrop{position:absolute;inset:0;background:radial-gradient(circle at 18% 15%,rgba(33,116,153,.28),transparent 30%),radial-gradient(circle at 82% 74%,rgba(201,82,70,.22),transparent 32%),linear-gradient(145deg,rgba(3,11,18,.97),rgba(6,19,30,.97));backdrop-filter:blur(12px)}.auth-backdrop:before,.auth-backdrop:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.04);border-radius:50%;width:540px;height:540px;filter:blur(.2px)}.auth-backdrop:before{left:-210px;top:-220px;box-shadow:0 0 120px rgba(78,193,220,.06) inset}.auth-backdrop:after{right:-170px;bottom:-240px;box-shadow:0 0 120px rgba(245,198,97,.05) inset}.auth-panel{position:relative;width:min(1080px,96vw);min-height:610px;border:1px solid rgba(255,255,255,.08);border-radius:30px;background:linear-gradient(135deg,rgba(12,31,45,.96),rgba(5,15,24,.98));box-shadow:0 45px 120px rgba(0,0,0,.62);display:grid;grid-template-columns:1.15fr .85fr;grid-template-rows:auto 1fr;overflow:hidden}.auth-panel:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,rgba(255,255,255,.045),transparent 25%,transparent 72%,rgba(245,198,97,.035))}.auth-brand{grid-column:1/3;height:92px;padding:22px 28px;display:flex;align-items:center;gap:13px;border-bottom:1px solid rgba(255,255,255,.06);position:relative;z-index:2}.auth-emblem{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#e6ba57,#7b4d17);box-shadow:0 8px 30px rgba(236,186,82,.2);display:grid;place-items:center;font:800 13px var(--display);color:#09131b;border:1px solid #ffe3a0}.auth-brand>div:last-child{display:flex;flex-direction:column;line-height:.95}.auth-brand span{font:700 13px var(--display);letter-spacing:3px}.auth-brand strong{font:800 24px var(--display);color:#efc76c;letter-spacing:4px}.auth-copy{padding:58px 54px 48px;display:flex;flex-direction:column;justify-content:center;position:relative}.auth-copy:after{content:"";position:absolute;width:420px;height:420px;left:5%;top:8%;background:radial-gradient(circle,rgba(27,112,144,.22),transparent 66%);filter:blur(20px);pointer-events:none}.auth-kicker{position:relative;z-index:2;display:flex;align-items:center;gap:8px;color:#73cdd0;font-size:10px;letter-spacing:1.2px}.auth-kicker svg{width:16px}.auth-copy h1{position:relative;z-index:2;font-size:46px;line-height:1.3;margin:18px 0 16px;font-weight:800;letter-spacing:-1.2px}.auth-copy h1 em{font-style:normal;color:#f0c767;text-shadow:0 0 30px rgba(240,199,103,.16)}.auth-copy p{position:relative;z-index:2;color:#a7bdca;font-size:12px;line-height:2;max-width:560px}.auth-features{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:9px;margin-top:20px}.auth-features span{display:flex;align-items:center;gap:6px;padding:8px 11px;border-radius:999px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.07);font-size:9px;color:#c7d5dd}.auth-features svg{width:14px;color:#6cd7af}.auth-box{margin:30px 30px 30px 0;align-self:stretch;background:linear-gradient(180deg,rgba(19,43,59,.78),rgba(7,20,30,.88));border:1px solid rgba(255,255,255,.075);border-radius:24px;padding:24px;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2;box-shadow:0 24px 70px rgba(0,0,0,.28)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;background:#071520;border-radius:13px;padding:4px;margin-bottom:20px}.auth-tabs button{border:0;background:transparent;color:#8098a7;border-radius:10px;padding:10px;cursor:pointer;font-weight:800;font-size:10px}.auth-tabs button.active{background:linear-gradient(145deg,#1b4b62,#123245);color:#fff;box-shadow:0 8px 18px rgba(0,0,0,.22)}.auth-form{display:none;flex-direction:column;gap:13px}.auth-form.active{display:flex}.auth-form label>span{display:flex;justify-content:space-between;font-size:9px;color:#a9bdca;margin:0 3px 6px}.auth-form label small{color:#667f90}.auth-form label>div{height:48px;border:1px solid rgba(255,255,255,.08);background:#07151f;border-radius:13px;display:flex;align-items:center;gap:9px;padding:0 13px;transition:.2s}.auth-form label>div:focus-within{border-color:rgba(94,193,199,.55);box-shadow:0 0 0 3px rgba(94,193,199,.07)}.auth-form label svg{width:17px;color:#7395a7}.auth-form input{width:100%;background:transparent;border:0;outline:0;color:#fff;font-family:inherit;font-size:11px}.auth-form input::placeholder{color:#456171}.auth-submit{height:50px;margin-top:6px;border:1px solid rgba(255,222,143,.42);border-radius:13px;background:linear-gradient(145deg,#d9aa4c,#8e5d1f);color:#0b1319;font-family:inherit;font-size:11px;font-weight:900;display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;box-shadow:0 12px 28px rgba(205,151,54,.17);transition:.2s}.auth-submit:hover{transform:translateY(-1px);filter:brightness(1.07)}.auth-submit:disabled{opacity:.55;cursor:wait}.auth-submit svg{width:17px}.auth-error{min-height:30px;padding:8px 4px 0;color:#ff918c;font-size:9px;line-height:1.6}.demo-entry{border:0;background:transparent;color:#728d9d;font-family:inherit;font-size:9px;cursor:pointer;padding:8px;display:flex;gap:6px;align-items:center;justify-content:center}.demo-entry:hover{color:#c4d3dc}.demo-entry svg{width:14px}.auth-blurred{filter:blur(4px) brightness(.55);pointer-events:none;user-select:none}

.online-players-layer{position:absolute;inset:0;pointer-events:none}.online-player-node{pointer-events:auto;z-index:9}.online-player-node>span{background:linear-gradient(145deg,#8e3d38,#421e25)!important;border-color:#f38b7d!important}.online-player-node.is-online:after{content:"";position:absolute;width:9px;height:9px;right:7px;top:7px;border-radius:50%;background:#65e4a6;border:2px solid #10212c;box-shadow:0 0 12px #65e4a6}.online-player-node b{max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-castle{z-index:12!important}.player-castle:after{content:"YOU";position:absolute;right:-9px;top:-9px;background:#f2c861;color:#10171b;border:2px solid #142431;font:800 7px var(--display);padding:3px 5px;border-radius:7px;letter-spacing:.5px}

.marches-card{min-height:106px}.march-list{display:flex;flex-direction:column;gap:6px}.empty-march{padding:11px;border:1px dashed rgba(255,255,255,.08);border-radius:11px;text-align:center;font-size:8px;color:#718b9a}.march-row{display:grid;grid-template-columns:31px 1fr auto;align-items:center;gap:8px;background:linear-gradient(145deg,rgba(34,80,101,.23),rgba(0,0,0,.13));border:1px solid rgba(255,255,255,.06);border-radius:11px;padding:8px}.march-symbol{width:30px;height:30px;border-radius:9px;background:rgba(222,84,74,.13);display:grid;place-items:center;color:#ff847c}.march-row>div{min-width:0;display:flex;flex-direction:column}.march-row b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.march-row small{font-size:7px;color:#7f99a9}.march-row strong{font:700 9px var(--display);color:#efca6b;direction:ltr}.online.offline{color:#7b91a0}.online.offline i{background:#8496a0;box-shadow:none}

.reports-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.reports-summary>div{padding:11px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.055);border-radius:12px;text-align:center}.reports-summary span{display:block;font-size:8px;color:#8099a8}.reports-summary b{font:800 16px var(--display);color:#f0cb70}.battle-report-list{display:flex;flex-direction:column;gap:8px;max-height:430px;overflow:auto;padding-left:3px}.report-empty{padding:24px;border-radius:13px;border:1px dashed rgba(255,255,255,.08);text-align:center;color:#7e97a6;font-size:9px}.battle-report{display:grid;grid-template-columns:43px 1fr;gap:10px;align-items:flex-start;padding:12px;border:1px solid rgba(255,255,255,.07);background:rgba(0,0,0,.14);border-radius:14px;position:relative;overflow:hidden}.battle-report.unread:after{content:"";position:absolute;right:0;top:0;bottom:0;width:3px;background:#f0c967}.battle-report.report-win{background:linear-gradient(145deg,rgba(49,125,92,.12),rgba(0,0,0,.14))}.battle-report.report-loss{background:linear-gradient(145deg,rgba(142,55,52,.12),rgba(0,0,0,.14))}.report-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.05)}.report-icon svg{width:20px}.report-win .report-icon{color:#69dda7}.report-loss .report-icon{color:#ff817b}.report-copy>div:first-child{display:flex;justify-content:space-between;gap:8px;align-items:center}.report-copy b{font-size:10px}.report-copy time{font-size:7px;color:#708a99;white-space:nowrap}.report-copy p{margin:5px 0 7px;color:#9ab0bd;font-size:8px;line-height:1.7}.report-chips{display:flex;gap:5px;flex-wrap:wrap}.report-chips span{padding:4px 7px;border-radius:999px;background:rgba(255,255,255,.045);font-size:7px;color:#b6c7d1}.rank-row.me{border:1px solid rgba(241,199,103,.28);background:linear-gradient(145deg,rgba(241,199,103,.07),rgba(0,0,0,.14))}.profile-logout{margin-top:12px;align-items:center;justify-content:center;gap:7px}.profile-logout svg{width:15px}

.target-card:has(#selectedTargetName){position:relative}.target-card:has(#selectedTargetName).active{box-shadow:0 0 0 2px rgba(240,188,90,.05) inset}.danger-action:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.5)}

@media(max-width:920px){.auth-panel{grid-template-columns:1fr;grid-template-rows:auto auto auto;width:min(680px,96vw)}.auth-brand{grid-column:1}.auth-copy{padding:28px 28px 14px}.auth-copy h1{font-size:34px}.auth-box{margin:16px 22px 24px}.marches-card{width:100%}.online-player-node{transform:translate(-50%,-50%) scale(.72)!important}.online-player-node:hover{transform:translate(-50%,-50%) scale(.76)!important}}
@media(max-width:560px){.auth-gate{padding:10px}.auth-panel{border-radius:22px}.auth-brand{height:74px;padding:15px 18px}.auth-copy{padding:20px 18px 8px}.auth-copy h1{font-size:28px}.auth-copy p{font-size:10px}.auth-features{gap:5px}.auth-features span{padding:6px 8px;font-size:8px}.auth-box{margin:13px;padding:16px}.battle-report{grid-template-columns:36px 1fr}.report-icon{width:35px;height:35px}.reports-summary{gap:5px}.reports-summary>div{padding:8px}}

/* ========================= Phase 3 ========================= */
.marches-map-layer{position:absolute;inset:0;z-index:8;pointer-events:none;overflow:visible}.marches-map-layer svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.marches-map-layer line{fill:none;stroke-width:.38;stroke-dasharray:1.1 1.1;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px currentColor);opacity:.75}.marches-map-layer line.outgoing{stroke:#f0c867;color:#f0c867}.marches-map-layer line.incoming{stroke:#ff6868;color:#ff6868}.map-march-marker{position:absolute;transform:translate(-50%,-50%);width:31px;height:31px;border-radius:50%;display:grid;place-items:center;border:2px solid rgba(255,255,255,.2);box-shadow:0 7px 20px rgba(0,0,0,.4);transition:left 1s linear,top 1s linear;z-index:2}.map-march-marker span{font-size:14px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.5))}.map-march-marker.outgoing{background:linear-gradient(145deg,#d59c39,#694119);box-shadow:0 0 19px rgba(238,194,96,.26)}.map-march-marker.incoming{background:linear-gradient(145deg,#c54c48,#541d27);animation:incomingPulse 1.15s ease-in-out infinite}.march-row.incoming{border-color:rgba(255,96,91,.2);background:linear-gradient(145deg,rgba(135,43,48,.18),rgba(0,0,0,.14))}.march-row.incoming .march-symbol{background:rgba(235,74,72,.18);color:#ff8e89}.march-row.outgoing{border-color:rgba(239,200,104,.13)}@keyframes incomingPulse{50%{box-shadow:0 0 0 7px rgba(255,92,87,.08),0 0 24px rgba(255,92,87,.28)}}
.online-player-node.is-protected>span{background:linear-gradient(145deg,#526d88,#243648)!important;border-color:#93c5ef!important}.online-player-node.is-protected:before{content:"🛡";position:absolute;left:-8px;top:-9px;font-size:11px;filter:drop-shadow(0 2px 4px #000)}.online-player-node.is-ally>span{background:linear-gradient(145deg,#337c68,#183d38)!important;border-color:#6be0b4!important}.online-player-node.is-ally b{color:#83e2bd}.online-player-node.is-ally:before{content:"ALLY";position:absolute;left:-10px;top:-9px;background:#4cbf93;color:#071911;border:2px solid #142431;font:900 6px var(--display);padding:2px 4px;border-radius:6px}
.chat-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:rgba(0,0,0,.18);padding:4px;border-radius:10px;margin-bottom:7px}.chat-tabs button{border:0;border-radius:7px;padding:6px;background:transparent;color:#7893a4;font-family:inherit;font-size:8px;font-weight:800;cursor:pointer}.chat-tabs button.active{background:linear-gradient(145deg,#1d5165,#123746);color:#d9f6ff}.chat-msg{position:relative;padding-left:34px}.chat-msg time{position:absolute;left:0;top:2px;font-size:6px;color:#557282;direction:ltr}.chat-msg.mine{background:rgba(89,187,158,.055)}.chat-empty{padding:18px 8px;text-align:center;color:#657f8f;font-size:8px}
.formation-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;padding-bottom:9px;border-bottom:1px solid rgba(255,255,255,.06)}.formation-head>div{display:flex;flex-direction:column}.formation-head span{font-size:8px;color:#7895a5}.formation-head b{font-size:11px;color:#efcb70}.formation-head>strong{font:800 12px var(--display);color:#bdd0da;direction:ltr}.formation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.formation-grid label{display:flex;flex-direction:column;gap:7px;padding:10px;border-radius:12px;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.06)}.formation-grid label>span{display:flex;justify-content:space-between;gap:5px;font-size:9px;font-weight:800}.formation-grid small{font-size:6px;color:#6f8c9c;font-weight:600}.formation-grid input{height:36px;background:#06131d;border:1px solid rgba(255,255,255,.09);border-radius:9px;color:#fff;padding:0 9px;font-family:var(--display);font-weight:800;outline:0}.formation-grid input:focus{border-color:rgba(240,198,103,.45);box-shadow:0 0 0 3px rgba(240,198,103,.06)}.scout-strip{margin-top:10px;padding:10px;border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(145deg,rgba(44,102,126,.15),rgba(0,0,0,.14));border:1px solid rgba(93,194,208,.12)}.scout-strip>div{display:flex;gap:8px;align-items:center}.scout-strip svg{width:20px;color:#64cad0}.scout-strip span{display:flex;flex-direction:column}.scout-strip b{font-size:9px}.scout-strip small{font-size:7px;color:#7893a3}.scout-strip button{width:auto;min-width:170px;padding:8px 10px;font-size:8px;display:flex;gap:6px;align-items:center;justify-content:center}.scout-strip button:disabled{opacity:.45;cursor:not-allowed}.scout-report{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:8px}.scout-report:empty{display:none}.scout-kpi{padding:9px;border-radius:10px;background:rgba(10,30,42,.65);border:1px solid rgba(255,255,255,.055);display:flex;flex-direction:column;gap:3px}.scout-kpi span{font-size:7px;color:#6f8e9e}.scout-kpi b{font-size:8px;color:#d8e3e8}
.alliance-content{min-height:290px}.alliance-demo{text-align:center;padding:38px 18px;color:#7894a4}.alliance-demo .alliance-crest{margin:0 auto 12px}.alliance-demo h3{color:#e7edf0;margin:4px}.alliance-demo p{font-size:9px}.alliance-hero.live{display:grid;grid-template-columns:58px 1fr auto;align-items:center;gap:12px;padding:14px;margin-bottom:10px;background:linear-gradient(145deg,rgba(235,194,96,.09),rgba(21,68,83,.12));border:1px solid rgba(239,198,103,.13);border-radius:16px}.alliance-hero.live .alliance-crest{width:58px;height:58px;font:900 14px var(--display);letter-spacing:1px}.alliance-hero.live>div:nth-child(2){display:flex;flex-direction:column}.alliance-hero.live b{font-size:13px}.alliance-hero.live span{font-size:8px;color:#86a0af}.alliance-hero.live p{font-size:8px;color:#718c9c;margin:5px 0 0}.alliance-power{text-align:left}.alliance-power small{display:block;font-size:7px;color:#6f8898}.alliance-power strong{font:800 18px var(--display);color:#efca6c}.alliance-section-title{font-size:10px;color:#9fb4bf;margin:14px 2px 8px}.alliance-members{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;max-height:270px;overflow:auto}.alliance-member{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:8px;padding:9px;border-radius:10px;background:rgba(0,0,0,.13);border:1px solid rgba(255,255,255,.05)}.member-status{width:7px;height:7px;border-radius:50%;background:#526977}.member-status.on{background:#5bdda7;box-shadow:0 0 10px rgba(91,221,167,.55)}.alliance-member>div{display:flex;flex-direction:column}.alliance-member b{font-size:9px}.alliance-member small{font-size:7px;color:#6f8999}.alliance-member strong{font:700 9px var(--display);color:#efcb72}.alliance-create{padding:12px;border-radius:14px;background:rgba(0,0,0,.14);border:1px solid rgba(255,255,255,.055);display:flex;flex-direction:column;gap:8px}.alliance-create>div{display:grid;grid-template-columns:2fr 1fr;gap:8px}.alliance-create label{display:flex;flex-direction:column;gap:5px;font-size:8px;color:#87a0af}.alliance-create input{height:38px;border-radius:9px;border:1px solid rgba(255,255,255,.08);background:#06141e;color:white;padding:0 10px;font-family:inherit;outline:0}.alliance-list{display:flex;flex-direction:column;gap:6px;max-height:250px;overflow:auto}.alliance-card{display:grid;grid-template-columns:43px 1fr auto auto;align-items:center;gap:9px;padding:9px;border-radius:12px;background:rgba(0,0,0,.13);border:1px solid rgba(255,255,255,.05)}.alliance-tag{width:42px;height:42px;border-radius:11px;background:linear-gradient(145deg,#b88637,#5d3819);display:grid;place-items:center;font:900 9px var(--display);color:#ffe7a4}.alliance-card>div:nth-child(2){display:flex;flex-direction:column;min-width:0}.alliance-card b{font-size:9px}.alliance-card small,.alliance-card p{font-size:7px;color:#6f8999;margin:1px 0}.alliance-card>strong{font:700 9px var(--display);color:#e7c36c}.alliance-card button{border:1px solid rgba(95,207,166,.25);background:rgba(59,142,110,.15);color:#80dbb7;border-radius:8px;padding:7px 9px;font-family:inherit;font-size:8px;cursor:pointer}.alliance-card button:disabled{opacity:.4}.alliance-actions{display:flex;gap:8px}.alliance-actions>*{flex:1}
@media(max-width:700px){.formation-grid{grid-template-columns:1fr}.scout-strip{align-items:stretch;flex-direction:column}.scout-strip button{width:100%}.scout-report{grid-template-columns:1fr}.alliance-members{grid-template-columns:1fr}.alliance-hero.live{grid-template-columns:48px 1fr}.alliance-power{grid-column:1/3;text-align:center}.alliance-card{grid-template-columns:40px 1fr auto}.alliance-card>strong{display:none}.alliance-create>div{grid-template-columns:1fr}}

/* =========================
   Phase 4 — Cinematic UI
   Real photographic layers + premium war UI
   ========================= */
:root{--steel:#9fb3c0;--bronze:#c38a43;--deep:#050c13;--panel-v4:rgba(8,17,25,.94);--photo-castle:url('https://images.unsplash.com/photo-1724136540852-5a198f1ad41e?auto=format&fit=crop&w=1800&q=82');--photo-warrior:url('https://images.unsplash.com/photo-1689452282301-b0794e416a44?auto=format&fit=crop&w=1400&q=82');--photo-map:url('https://images.unsplash.com/photo-1706448561051-9b91fc91fe64?auto=format&fit=crop&w=1600&q=80');--photo-knight:url('https://images.unsplash.com/photo-1689452282301-b0794e416a44?auto=format&fit=crop&w=1400&q=82')}
body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(circle at 50% -15%,rgba(210,166,83,.08),transparent 34%),linear-gradient(120deg,rgba(3,11,18,.92),rgba(5,15,25,.88));}
.game-shell{position:relative;z-index:1;background:radial-gradient(circle at 46% 16%,rgba(51,99,121,.16),transparent 30%),linear-gradient(135deg,#050d16,#081520 48%,#030911)}
.glass-panel{background:linear-gradient(180deg,rgba(17,30,41,.96),rgba(6,13,21,.95));border-color:rgba(200,220,232,.13);box-shadow:0 18px 55px rgba(0,0,0,.46),inset 0 1px 0 rgba(255,255,255,.035)}
.auth-backdrop{background:linear-gradient(90deg,rgba(2,7,12,.98) 0%,rgba(5,12,18,.72) 46%,rgba(4,9,14,.92) 100%),var(--photo-castle) center/cover no-repeat!important;filter:saturate(.82) contrast(1.08)}
.auth-panel{box-shadow:0 40px 120px rgba(0,0,0,.7)!important;border-color:rgba(232,195,116,.18)!important;background:linear-gradient(145deg,rgba(8,17,25,.86),rgba(4,10,16,.96))!important;overflow:hidden}
.auth-panel:before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 25%,rgba(255,255,255,.025) 47%,transparent 67%)}
.auth-copy{position:relative}.auth-copy:after{content:'WAR ROOM • LIVE WORLD';position:absolute;left:34px;bottom:18px;font:700 10px var(--display);letter-spacing:2px;color:rgba(244,206,126,.52)}
.avatar-ring{background:linear-gradient(145deg,#f2d184,#86551d);box-shadow:0 0 0 1px rgba(255,255,255,.08),0 12px 28px rgba(0,0,0,.42)}
.avatar-face,.big-avatar{font-size:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.45)),var(--photo-warrior) 50% 34%/cover no-repeat!important}
.big-avatar{box-shadow:0 14px 35px rgba(0,0,0,.45)}
.topbar{background:linear-gradient(180deg,rgba(17,29,39,.98),rgba(5,12,19,.96));border-color:rgba(232,199,131,.12)}
.resource-pill{background:linear-gradient(145deg,rgba(17,29,39,.9),rgba(4,10,16,.86));border-color:rgba(255,255,255,.08);box-shadow:inset 0 1px rgba(255,255,255,.025)}
.resource-pill>svg{filter:drop-shadow(0 4px 6px rgba(0,0,0,.45))}.resource-pill:hover{border-color:rgba(234,196,113,.34);box-shadow:0 10px 24px rgba(0,0,0,.24)}
.left-rail{background:linear-gradient(180deg,rgba(17,30,40,.98),rgba(5,12,18,.98))}.rail-btn{min-height:61px}.rail-btn svg{stroke-width:1.7}.rail-btn.war-rail{border-color:rgba(202,151,72,.16);background:linear-gradient(180deg,rgba(134,83,35,.16),rgba(34,23,17,.03))}.hospital-badge{top:4px;right:8px;display:none}
.world-stage{background:#07121c;box-shadow:inset 0 0 0 1px rgba(204,224,237,.1),0 20px 60px rgba(0,0,0,.32)}
.world-stage:before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(rgba(4,14,20,.34),rgba(4,14,20,.28)),var(--photo-map) center/cover no-repeat;opacity:.14;mix-blend-mode:soft-light;filter:sepia(.28) contrast(1.15)}
.world-stage:after{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;box-shadow:inset 0 0 130px rgba(0,0,0,.58)}
.map-viewport,.map-toolbar,.event-ribbon{z-index:3}.map-toolbar{z-index:15}.event-ribbon{z-index:15}
.world-svg{filter:saturate(.88) contrast(1.04)}.zone path:first-child{transition:.3s;filter:saturate(.9)}.zone:hover path:first-child{filter:brightness(1.14) saturate(1.07)}
.map-node{z-index:10}.map-node>span{background:linear-gradient(145deg,#263a47,#0b1117 66%);border:1px solid rgba(224,235,241,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.09),inset 0 -14px 24px rgba(0,0,0,.35),0 12px 24px rgba(0,0,0,.38)}.map-node>span svg{stroke-width:1.55}.node-castle>span{background:radial-gradient(circle at 50% 16%,#775b2e,#24251f 48%,#0c1116);border-color:#d8b05a;box-shadow:inset 0 1px rgba(255,240,192,.23),0 0 0 4px rgba(206,160,78,.08),0 15px 30px rgba(0,0,0,.48)}
.map-node>b,.map-node>small{backdrop-filter:blur(7px)}
.event-ribbon{overflow:hidden;background:linear-gradient(90deg,rgba(8,16,24,.97),rgba(14,22,28,.89));border-color:rgba(221,184,102,.18)}.event-ribbon:before{content:'';position:absolute;inset:0 58% 0 0;background:linear-gradient(90deg,transparent,rgba(7,15,22,.93)),var(--photo-knight) center 32%/cover;opacity:.28;pointer-events:none}.event-ribbon>*{position:relative;z-index:1}
.panel-card{border:1px solid rgba(255,255,255,.075)}.kingdom-card{background:linear-gradient(150deg,rgba(19,34,45,.95),rgba(7,15,22,.95))}
.season-card{position:relative;overflow:hidden;min-height:144px;background:linear-gradient(115deg,rgba(7,14,21,.96),rgba(10,20,28,.82))}.season-card-photo{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,12,18,.98) 30%,rgba(5,12,18,.42)),var(--photo-castle) 65% 44%/cover no-repeat;opacity:.42;filter:saturate(.72)}.season-card>*:not(.season-card-photo){position:relative;z-index:1}.season-card header{margin-bottom:8px}.season-card .mini-btn{width:auto;padding:4px 8px}.season-card-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.season-card-kpis span{padding:8px 5px;border-radius:10px;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.055);text-align:center}.season-card-kpis small{display:block;font-size:7px;color:#8ea2ad}.season-card-kpis b{font:700 11px var(--display);color:#f1cc78}.season-log-btn{margin-top:7px;width:100%;height:28px;border:1px solid rgba(221,184,103,.14);background:rgba(190,135,58,.08);border-radius:9px;color:#ddc48d;font-size:8px;display:flex;align-items:center;justify-content:center;gap:5px;cursor:pointer}.season-log-btn svg{width:13px}
.game-modal{background:linear-gradient(160deg,rgba(16,28,38,.985),rgba(4,10,16,.99));border:1px solid rgba(216,231,238,.12);box-shadow:0 42px 110px rgba(0,0,0,.72),inset 0 1px 0 rgba(255,255,255,.035)}.game-modal>header{border-bottom-color:rgba(255,255,255,.075)}.game-modal>header>div>i,.game-modal>header>div>svg{filter:drop-shadow(0 3px 6px rgba(0,0,0,.4))}
.unit-head .unit-icon{font-size:0;background:linear-gradient(145deg,#23323d,#0b1117);border:1px solid rgba(218,231,238,.12);box-shadow:inset 0 1px rgba(255,255,255,.06),0 8px 17px rgba(0,0,0,.24)}.unit-head .unit-icon svg{width:22px;height:22px;color:#e2bd6a;stroke-width:1.65}.formation-grid label>span{align-items:center}.formation-grid label>span>svg{width:15px;color:#d4ad5f}.troop-inline{display:flex;gap:10px!important;align-items:center}.troop-inline span{display:flex;gap:4px;align-items:center}.troop-inline svg{width:13px;height:13px;color:#dab96f}
.attack-actions-v4{display:grid;grid-template-columns:1.25fr .9fr;gap:8px}.rally-action,.war-action,.heal-action{border:1px solid rgba(229,188,99,.26);background:linear-gradient(180deg,#5b4323,#2e2318);color:#f4d590;border-radius:12px;padding:10px 14px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;transition:.2s}.rally-action:hover,.war-action:hover,.heal-action:hover{transform:translateY(-2px);filter:brightness(1.12)}.rally-action svg,.war-action svg,.heal-action svg{width:17px}.war-action.full{width:100%}
.premium-shop button{position:relative;overflow:hidden;background:linear-gradient(145deg,rgba(26,39,48,.95),rgba(6,13,18,.95));min-height:86px}.premium-shop button:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,rgba(220,179,93,.09),transparent 45%)}.premium-shop span{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#3b3224,#15140f);border:1px solid rgba(229,194,119,.18)}.premium-shop span svg{width:23px;color:#e8c270}.premium-shop b,.premium-shop small{position:relative}.premium-shop small{font-size:8px}
.battle-cross{font-size:0;width:82px;height:82px;margin:auto;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#7a332a,#281315 68%);border:1px solid rgba(242,173,100,.28);box-shadow:0 0 45px rgba(207,71,57,.2)}.battle-cross svg{width:42px;height:42px;color:#f0bd6c}.event-photo{height:150px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(90deg,rgba(6,13,18,.55),rgba(6,13,18,.82)),var(--photo-castle) center 48%/cover no-repeat}.event-photo svg{width:52px;color:#efc873;filter:drop-shadow(0 7px 14px rgba(0,0,0,.7))}

/* territory live ownership layer */
.territory-ownership-layer{position:absolute;inset:0;z-index:9;pointer-events:none}.territory-owner{pointer-events:auto;position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:6px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(145deg,rgba(7,15,22,.92),rgba(12,25,33,.88));padding:5px 8px;border-radius:9px;box-shadow:0 8px 18px rgba(0,0,0,.35);cursor:pointer;color:#c7d4dc}.territory-owner>svg{width:14px;color:#c4974d}.territory-owner span{display:flex;flex-direction:column;text-align:right}.territory-owner b{font:800 8px var(--display);color:#e5c477}.territory-owner small{font-size:6px;color:#8499a5}.territory-owner.ours{border-color:rgba(93,214,169,.25);background:linear-gradient(145deg,rgba(19,73,57,.88),rgba(8,29,27,.9))}.territory-owner.ours>svg{color:#66d9a9}

/* war room */
.warfare-modal{width:min(1220px,96vw)!important}.warfare-content{min-height:570px}.war-hero{height:210px;border-radius:18px;overflow:hidden;position:relative;margin-bottom:13px;border:1px solid rgba(229,196,123,.14);background:#080f15}.war-hero-photo{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,11,16,.99) 17%,rgba(5,11,16,.72) 52%,rgba(5,11,16,.22)),var(--photo-castle) 70% 47%/cover no-repeat;filter:saturate(.8) contrast(1.04)}.war-hero-copy{position:relative;z-index:1;width:min(650px,70%);height:100%;display:flex;flex-direction:column;justify-content:center;padding:24px 30px}.war-hero-copy>span,.dispatch-visual span,.hospital-hero span{font:700 8px var(--display);letter-spacing:2px;color:#b78d50}.war-hero-copy h2{font:800 30px var(--display);margin:5px 0;color:#f0d48f}.war-hero-copy p{font-size:10px;line-height:1.9;color:#a6b5bd;margin:0;max-width:560px}.war-hero-kpis{display:flex;gap:8px;margin-top:14px}.war-hero-kpis div{min-width:110px;padding:8px 12px;border-radius:10px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.06)}.war-hero-kpis small{display:block;font-size:7px;color:#82949e}.war-hero-kpis b{font:700 12px var(--display);color:#f0cc78}.war-columns{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.8fr);gap:13px}.war-columns>section,.war-columns>aside{min-width:0}.war-section-head{display:flex;align-items:center;justify-content:space-between;margin:12px 0 8px}.war-section-head>div{display:flex;align-items:center;gap:8px}.war-section-head svg{width:18px;color:#d5ad5e}.war-section-head span{display:flex;flex-direction:column}.war-section-head b{font-size:10px}.war-section-head small{font-size:7px;color:#728995}.territory-war-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.territory-war-card{min-height:190px;border-radius:15px;overflow:hidden;position:relative;background:#0a141c;border:1px solid rgba(255,255,255,.07);transition:.2s}.territory-war-card:hover,.territory-war-card.selected{border-color:rgba(224,184,96,.32);transform:translateY(-2px)}.territory-war-card.owned{border-color:rgba(92,216,168,.22)}.territory-photo{height:68px;background:linear-gradient(180deg,rgba(7,15,21,.1),#0a141c),var(--photo-castle) center/cover;filter:saturate(.65)}.territory-photo-frost{background-position:center 28%}.territory-photo-crimson{filter:saturate(.62) sepia(.15)}.territory-photo-shadow{filter:saturate(.45) brightness(.65)}.territory-photo-spire{background-image:linear-gradient(180deg,rgba(7,15,21,.05),#0a141c),var(--photo-map)}.territory-war-body{padding:9px 10px}.territory-status{font-size:7px;color:#c9a75e}.territory-war-body h3{font-size:11px;margin:2px 0 7px}.territory-kpis{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:7px}.territory-kpis span{background:rgba(0,0,0,.18);padding:5px 7px;border-radius:8px}.territory-kpis small{display:block;font-size:6px;color:#6f8793}.territory-kpis b{font-size:9px}.territory-war-body .war-action{width:100%;padding:7px;font-size:8px}.territory-owner-line{display:flex;align-items:center;gap:5px;color:#788f9a;font-size:7px}.territory-owner-line svg{width:13px}.rally-list,.reinforcement-list,.season-mini-ranking{display:flex;flex-direction:column;gap:6px}.rally-card{display:grid;grid-template-columns:38px 1fr auto auto;align-items:center;gap:7px;padding:8px;background:linear-gradient(145deg,rgba(44,31,22,.62),rgba(5,12,17,.74));border:1px solid rgba(219,177,88,.11);border-radius:11px}.rally-ring{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#281c14;border:1px solid rgba(222,178,88,.2);color:#d9ad58}.rally-ring svg{width:17px}.rally-info{display:flex;flex-direction:column;min-width:0}.rally-info b{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rally-info span,.rally-info small{font-size:6px;color:#758a95}.rally-card>strong{font:700 9px var(--display);color:#edc56e;direction:ltr}.rally-card>button{border:1px solid rgba(98,213,156,.2);background:rgba(44,121,88,.13);color:#77d8ad;border-radius:8px;padding:5px 7px;font-size:7px;cursor:pointer}.joined-badge{font-size:7px;color:#69d1a3}.reinforcement-row{display:grid;grid-template-columns:34px 1fr auto auto;align-items:center;gap:7px;padding:7px;border-radius:10px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.05)}.reinf-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:9px;background:rgba(74,153,123,.1);color:#66d3a5}.reinf-icon svg{width:15px}.reinforcement-row>div{display:flex;flex-direction:column}.reinforcement-row b{font-size:8px}.reinforcement-row small{font-size:6px;color:#718895}.reinf-state{font-size:7px;color:#d4ad5e}.reinf-state.garrisoned{color:#6cd4a8}.reinforcement-row>button{width:28px;height:28px;border-radius:8px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.04);color:#aabac2;display:grid;place-items:center;cursor:pointer}.reinforcement-row>button svg{width:13px}.season-rank-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;padding:6px 8px;border-radius:9px;background:rgba(0,0,0,.13);font-size:8px}.season-rank-row>span{color:#d5af61;font:700 8px var(--display)}.season-rank-row div{display:flex;flex-direction:column}.season-rank-row small{font-size:6px;color:#728895}.season-rank-row strong{font-size:7px;color:#d2dfe5}.war-empty{padding:45px 20px;text-align:center;color:#78909b}.war-empty.compact{padding:14px;font-size:7px;border:1px dashed rgba(255,255,255,.07);border-radius:9px}.war-empty>svg{width:42px;color:#caa45a}.war-empty h3{color:#e4ebef;margin:8px 0 3px}.war-empty p{font-size:9px}

/* hospital */
.hospital-hero{height:170px;border-radius:17px;overflow:hidden;position:relative;display:flex;align-items:center;border:1px solid rgba(92,207,184,.13);margin-bottom:12px;background:#07131a}.hospital-photo{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,13,18,.98) 20%,rgba(5,13,18,.62) 62%,rgba(5,13,18,.18)),var(--photo-knight) 74% 24%/cover no-repeat;filter:saturate(.62)}.hospital-hero>div:last-child{position:relative;z-index:1;padding:20px 24px;width:67%}.hospital-hero h3{font-size:20px;margin:4px 0;color:#dff5ef}.hospital-hero p{font-size:9px;line-height:1.9;color:#91aaa6}.hospital-capacity{padding:10px;border-radius:12px;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.055)}.hospital-capacity>div:first-child{display:flex;justify-content:space-between;font-size:9px}.capacity-bar{height:6px!important;background:#09151b;border-radius:8px;overflow:hidden;margin-top:7px}.capacity-bar i{display:block;height:100%;background:linear-gradient(90deg,#4bb89e,#d9b55f)}.wounded-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.wounded-grid article{display:flex;align-items:center;gap:9px;padding:10px;border-radius:11px;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.055)}.wounded-grid svg{width:22px;color:#64ccb3}.wounded-grid span{display:flex;flex-direction:column}.wounded-grid b{font:700 14px var(--display)}.wounded-grid small{font-size:7px;color:#738c94}.heal-cost{display:flex;justify-content:center;gap:12px;margin:8px}.heal-cost span{display:flex;align-items:center;gap:5px;font-size:8px;color:#9db0b7}.heal-cost svg{width:14px;color:#ddb962}.heal-action{width:100%;background:linear-gradient(180deg,#27685e,#163d39);border-color:rgba(92,216,191,.2);color:#d9fff5}.heal-action:disabled{opacity:.4;cursor:not-allowed}.wounded-chip{color:#64cdb4!important}

/* dispatch */
.dispatch-visual{height:105px;border-radius:14px;overflow:hidden;position:relative;display:flex;align-items:flex-end;margin-bottom:10px}.dispatch-photo{position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,12,17,.85),rgba(6,12,17,.18)),var(--photo-warrior) center 37%/cover no-repeat;filter:saturate(.63) contrast(1.08)}.dispatch-visual>div:last-child{position:relative;z-index:1;padding:13px;display:flex;flex-direction:column}.dispatch-visual b{font-size:15px}.dispatch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.dispatch-grid label{padding:8px;border-radius:10px;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.06)}.dispatch-grid label>span{display:flex;align-items:center;gap:5px;font-size:8px;font-weight:700}.dispatch-grid label svg{width:14px;color:#d7b05e}.dispatch-grid small{margin-right:auto;font-size:6px;color:#718995}.dispatch-grid input{margin-top:6px;width:100%;height:35px;border-radius:8px;background:#061017;color:#fff;border:1px solid rgba(255,255,255,.08);padding:0 8px;font-weight:800;outline:none}.dispatch-grid input:focus{border-color:rgba(223,185,100,.35)}.dispatch-summary{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:9px 0}.dispatch-summary span{padding:8px;text-align:center;border-radius:9px;background:rgba(0,0,0,.15)}.dispatch-summary small{display:block;font-size:7px;color:#728995}.dispatch-summary b{font:700 12px var(--display);color:#e3c16f}

/* event log */
.event-log-list{display:flex;flex-direction:column;gap:7px;max-height:520px;overflow:auto}.event-log-row{display:grid;grid-template-columns:42px 1fr;gap:9px;padding:10px;border-radius:12px;background:linear-gradient(145deg,rgba(20,34,43,.74),rgba(5,12,17,.72));border:1px solid rgba(255,255,255,.055)}.event-log-icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;background:rgba(204,157,75,.09);color:#d0a452}.event-log-icon svg{width:18px}.event-log-row>div{display:flex;flex-direction:column}.event-log-row b{font-size:9px}.event-log-row p{font-size:8px;color:#8096a0;margin:2px 0}.event-log-row small{font-size:6px;color:#647a85}
.member-support{width:29px;height:29px;border:1px solid rgba(92,211,168,.13);border-radius:8px;background:rgba(64,140,110,.08);color:#70d4ad;display:grid;place-items:center;cursor:pointer}.member-support svg{width:14px}.alliance-member{grid-template-columns:8px 1fr auto auto!important}.alliance-crest svg{width:30px;color:#d2ae66}
.march-symbol svg,.map-march-marker svg{width:15px;height:15px}.map-march-marker span{font-size:0}.battle-cross svg{stroke-width:1.6}

@media(max-width:1180px){.season-card{display:none}.war-columns{grid-template-columns:1fr}.war-columns>aside{display:grid;grid-template-columns:1fr 1fr;gap:10px}.war-columns>aside .war-section-head{grid-column:1/-1;margin-bottom:0}.war-columns>aside .season-mini-ranking{grid-column:1/-1}}
@media(max-width:920px){.season-card{display:block}.war-hero{height:235px}.war-hero-copy{width:84%}.war-columns>aside{display:block}.territory-ownership-layer{display:none}.attack-actions-v4{grid-template-columns:1fr}.warfare-modal{width:96vw!important}}
@media(max-width:620px){.territory-war-grid,.wounded-grid,.dispatch-grid{grid-template-columns:1fr}.war-hero-copy{width:100%;padding:18px}.war-hero-copy h2{font-size:24px}.war-hero-kpis{display:grid;grid-template-columns:repeat(3,1fr)}.war-hero-kpis div{min-width:0;padding:7px}.hospital-hero>div:last-child{width:92%}.rally-card{grid-template-columns:34px 1fr auto}.rally-card>button,.joined-badge{grid-column:2/4}.reinforcement-row{grid-template-columns:32px 1fr auto}.reinforcement-row>button{grid-column:3}.dispatch-modal{width:95vw!important}}

/* ========================= Phase 5 — Living World Map ========================= */
:root{--map-edge:rgba(244,205,118,.22);--map-glass:rgba(6,14,21,.78);--map-glass-strong:rgba(5,12,18,.92);--danger-glow:rgba(255,81,73,.34);--ally-glow:rgba(77,220,166,.30)}

/* the map becomes the main screen; command panels now float over it */
.game-shell{grid-template-columns:88px minmax(0,1fr);grid-template-rows:74px minmax(0,1fr);gap:10px;padding:10px}
.topbar{grid-column:1/3;grid-row:1;border-radius:18px}
.left-rail{grid-column:1;grid-row:2;z-index:42;padding:8px 6px;background:linear-gradient(180deg,rgba(8,18,26,.94),rgba(5,12,18,.91))}
.world-stage{grid-column:2;grid-row:2;border-radius:24px;min-height:0;box-shadow:inset 0 0 0 1px rgba(227,192,111,.12),0 24px 70px rgba(0,0,0,.45);isolation:isolate}
.right-panel{grid-column:2;grid-row:2;justify-self:end;align-self:stretch;width:292px;padding:70px 12px 98px 0;z-index:32;pointer-events:none;overflow:hidden}
.right-panel>.panel-card{pointer-events:auto;background:linear-gradient(145deg,rgba(7,15,22,.88),rgba(9,22,30,.72));backdrop-filter:blur(16px) saturate(1.15);box-shadow:0 14px 36px rgba(0,0,0,.24);border-color:rgba(221,187,107,.10);padding:10px;border-radius:15px}
.right-panel .missions-card{max-height:178px;overflow:auto}.right-panel .kingdom-card{display:none}.right-panel .season-card{min-height:112px}.right-panel .season-card-photo{opacity:.25}.right-panel .marches-card{max-height:165px;overflow:auto}.right-panel .chat-card{min-height:146px;max-height:210px}
.bottom-dock{grid-column:2;grid-row:2;align-self:end;justify-self:center;z-index:38;margin:0 0 14px 0;width:min(570px,62vw);position:relative;background:linear-gradient(180deg,rgba(13,26,35,.88),rgba(5,12,18,.94));backdrop-filter:blur(18px)}

/* cinematic map */
.world-stage:before{opacity:.18;filter:sepia(.18) contrast(1.24) saturate(.72)}
.world-stage:after{content:'';position:absolute;inset:0;z-index:19;pointer-events:none;border-radius:24px;box-shadow:inset 0 0 100px rgba(1,7,11,.75),inset 0 0 0 1px rgba(250,219,150,.06);background:radial-gradient(circle at 50% 45%,transparent 44%,rgba(2,7,11,.28) 77%,rgba(1,5,8,.58) 100%)}
.map-viewport{z-index:2;background:radial-gradient(circle at 52% 47%,rgba(44,117,126,.18),transparent 36%),#071c29}
.map-canvas{transition:transform .72s cubic-bezier(.19,1,.22,1);will-change:transform}
.world-svg{filter:saturate(.86) contrast(1.06) brightness(.93)}
.zone path:first-child{transition:filter .35s,stroke-width .35s,opacity .35s}.zone:hover path:first-child{filter:brightness(1.16) saturate(1.12);stroke-width:12px}.zone.is-focused path:first-child{filter:brightness(1.19) saturate(1.2);stroke-width:13px}
.terrain-relief,.sea-shimmer{pointer-events:none}.mountain-range{filter:drop-shadow(0 12px 8px rgba(0,0,0,.28))}.forest-cluster{filter:drop-shadow(0 7px 4px rgba(0,0,0,.24))}.sea-shimmer path{stroke-dasharray:24 48;animation:seaDrift 16s linear infinite}.sea-shimmer path:nth-child(2){animation-duration:23s;animation-direction:reverse}.sea-shimmer path:nth-child(3){animation-duration:19s}
@keyframes seaDrift{to{stroke-dashoffset:-280}}
.center-spire{cursor:pointer}.center-spire circle:first-child{animation:spireAura 3s ease-in-out infinite}.center-spire path{transform-box:fill-box;transform-origin:center;animation:spireFloat 3.3s ease-in-out infinite}
@keyframes spireAura{50%{filter:drop-shadow(0 0 28px rgba(255,207,89,.45))}}@keyframes spireFloat{50%{transform:translateY(-8px);filter:brightness(1.22)}}

/* atmosphere above map but below UI */
.map-atmosphere{position:absolute;inset:0;z-index:12;pointer-events:none;overflow:hidden;border-radius:24px;mix-blend-mode:screen}.map-atmosphere i{position:absolute;display:block}.cloud{width:260px;height:74px;border-radius:60%;background:radial-gradient(ellipse at center,rgba(226,238,240,.18),rgba(177,207,212,.06) 55%,transparent 72%);filter:blur(12px);animation:cloudDrift 34s linear infinite}.cloud-a{top:11%;left:-18%;animation-duration:41s}.cloud-b{top:39%;left:-28%;animation-delay:-17s;animation-duration:55s;opacity:.65}.cloud-c{top:68%;left:-20%;animation-delay:-29s;animation-duration:47s;opacity:.42}@keyframes cloudDrift{to{transform:translateX(155vw)}}
.fog{width:44%;height:18%;border-radius:50%;filter:blur(28px);background:radial-gradient(ellipse,rgba(177,216,221,.10),transparent 70%);animation:fogBreathe 8s ease-in-out infinite alternate}.fog-a{left:18%;bottom:8%}.fog-b{right:5%;top:12%;animation-delay:-3s}@keyframes fogBreathe{to{transform:scale(1.12) translateY(-12px);opacity:.55}}
.spark{width:5px;height:5px;border-radius:50%;background:#ffd071;box-shadow:0 0 13px #ffb44d;opacity:.5;animation:sparkRise 5s ease-in infinite}.spark-a{left:74%;top:49%;animation-delay:-1s}.spark-b{left:78%;top:55%;animation-delay:-3s}.spark-c{left:71%;top:59%;animation-delay:-4s}@keyframes sparkRise{0%{transform:translate(0,45px) scale(.4);opacity:0}45%{opacity:.8}100%{transform:translate(18px,-80px) scale(1);opacity:0}}

/* map controls */
.map-toolbar{top:15px;left:15px;z-index:35;border-radius:14px;background:rgba(5,12,18,.76);border-color:rgba(229,196,121,.13);backdrop-filter:blur(16px)}.map-toolbar-sep{width:1px;height:24px;background:rgba(255,255,255,.10);align-self:center;margin:0 2px}.map-toolbar .map-layer-btn.active{color:#f2cd78;border-color:rgba(242,205,120,.24);background:rgba(199,149,63,.12)}
.world-stage.hide-routes .marches-map-layer,.world-stage.hide-routes .sea-routes{opacity:0!important;pointer-events:none}.world-stage.hide-territories .territory-ownership-layer,.world-stage.hide-territories .map-labels{opacity:.08!important;pointer-events:none}.world-stage.hide-players .online-players-layer,.world-stage.hide-players #demoEnemyNode{opacity:0!important;pointer-events:none}

/* command strip directly on the map */
.map-command-strip{position:absolute;z-index:34;top:15px;right:320px;display:flex;gap:6px;direction:rtl;pointer-events:auto}.map-command-chip{height:43px;min-width:104px;border:1px solid rgba(224,191,116,.11);border-radius:12px;background:linear-gradient(145deg,rgba(5,13,20,.86),rgba(13,28,37,.72));backdrop-filter:blur(14px);display:flex;align-items:center;gap:7px;padding:6px 9px;cursor:pointer;box-shadow:0 9px 24px rgba(0,0,0,.2);transition:.25s}.map-command-chip:hover{transform:translateY(-2px);border-color:rgba(234,198,118,.28);background:linear-gradient(145deg,rgba(17,31,39,.92),rgba(12,24,32,.82))}.map-command-chip>span{width:29px;height:29px;border-radius:9px;display:grid;place-items:center;background:rgba(207,157,70,.09);color:#dfb95f}.map-command-chip svg{width:15px}.map-command-chip>div{display:flex;flex-direction:column;text-align:right;line-height:1.15}.map-command-chip small{font-size:6px;color:#728894}.map-command-chip b{font:700 9px var(--display);color:#e8d29b;white-space:nowrap}.map-command-chip.threat.has-threat{border-color:rgba(255,91,82,.35);box-shadow:0 0 0 1px rgba(255,84,76,.08),0 0 28px rgba(255,69,64,.12)}.map-command-chip.threat.has-threat>span{color:#ff7c73;background:rgba(183,55,51,.16);animation:threatPulse 1.2s ease-in-out infinite}.map-command-chip.medical>span{color:#61d9b9;background:rgba(51,158,128,.11)}@keyframes threatPulse{50%{box-shadow:0 0 0 6px rgba(255,91,82,.06)}}

/* live alerts are part of the map picture */
.map-live-stack{position:absolute;z-index:34;left:15px;top:67px;width:238px;display:flex;flex-direction:column;gap:6px;pointer-events:none}.map-live-alert{min-height:52px;border-radius:12px;padding:8px 9px;display:grid;grid-template-columns:33px 1fr auto;align-items:center;gap:8px;background:linear-gradient(145deg,rgba(5,14,21,.90),rgba(10,26,34,.82));border:1px solid rgba(255,255,255,.07);backdrop-filter:blur(13px);box-shadow:0 10px 25px rgba(0,0,0,.22);animation:alertEnter .45s cubic-bezier(.2,.8,.2,1) both}.map-live-alert>span{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:rgba(211,167,80,.09);color:#e1b860}.map-live-alert svg{width:16px}.map-live-alert>div{display:flex;flex-direction:column;min-width:0}.map-live-alert b{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-live-alert small{font-size:6px;color:#78909c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-live-alert strong{font:700 8px var(--display);color:#e3bf69;direction:ltr}.map-live-alert.danger{border-color:rgba(255,92,83,.20);background:linear-gradient(145deg,rgba(48,15,19,.89),rgba(15,18,23,.84))}.map-live-alert.danger>span{color:#ff776f;background:rgba(200,64,58,.12)}.map-live-alert.ally>span{color:#69dcb2;background:rgba(56,158,121,.10)}@keyframes alertEnter{from{opacity:0;transform:translateX(-18px) scale(.96)}to{opacity:1;transform:none}}

/* world nodes now read like real strategy landmarks */
.map-node{z-index:16}.map-node>span{position:relative;overflow:visible}.map-node>span:after{content:'';position:absolute;inset:-8px;border:1px solid rgba(255,255,255,.07);border-radius:24px;opacity:0;transform:scale(.75);transition:.25s}.map-node:hover>span:after,.map-node.map-focus>span:after{opacity:1;transform:scale(1);border-color:rgba(239,200,111,.26)}.map-node.map-focus{z-index:25;filter:drop-shadow(0 0 22px rgba(242,199,99,.40))}.map-node.map-focus>span{animation:nodeSelected 1.25s ease-in-out infinite}@keyframes nodeSelected{50%{transform:translateY(-4px);box-shadow:0 0 0 7px rgba(244,198,95,.06),0 14px 32px rgba(0,0,0,.46)}}
.node-service>span{width:48px;height:48px;border-radius:15px}.node-hospital>span{color:#75e0c0;border-color:rgba(105,225,192,.42);background:linear-gradient(145deg,#214b47,#0e2528)}.node-alliance>span{color:#80c6ff;border-color:rgba(111,186,238,.38);background:linear-gradient(145deg,#24445a,#10242f)}
.map-beacon{position:absolute;z-index:18;left:50.9%;top:47%;transform:translate(-50%,-50%);border:0;background:none;color:#f2d184;cursor:pointer;display:flex;align-items:center;gap:7px}.map-beacon>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:rgba(85,52,22,.86);border:1px solid rgba(244,205,118,.42);box-shadow:0 0 0 6px rgba(239,190,91,.05),0 0 28px rgba(249,194,75,.22);animation:beaconPulse 1.8s ease-in-out infinite}.map-beacon svg{width:18px}.map-beacon b,.map-beacon small{position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;padding:2px 6px;border-radius:6px;background:rgba(4,10,15,.78);font-size:7px}.map-beacon b{top:43px}.map-beacon small{top:60px;color:#dfbd72}@keyframes beaconPulse{50%{box-shadow:0 0 0 13px rgba(239,190,91,.02),0 0 38px rgba(249,194,75,.38);transform:scale(1.08)}}
.map-world-title{position:absolute;left:50%;top:3.5%;transform:translateX(-50%);display:flex;flex-direction:column;text-align:center;pointer-events:none;text-shadow:0 3px 12px #000}.map-world-title span{font:700 6px var(--display);letter-spacing:4px;color:#c89d55}.map-world-title b{font:800 11px var(--display);letter-spacing:1px;color:rgba(241,232,208,.74)}

/* curved animated marches */
.marches-map-layer{z-index:17;transition:opacity .3s}.marches-map-layer svg path{fill:none;stroke-width:.42;stroke-dasharray:1.2 1.05;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px currentColor);opacity:.86;animation:routeFlow 1.5s linear infinite}.marches-map-layer svg path.outgoing{stroke:#f1c96a;color:#f1c96a}.marches-map-layer svg path.incoming{stroke:#ff6b63;color:#ff6b63}.marches-map-layer svg path.reinforcement{stroke:#5fd5a5;color:#5fd5a5}.marches-map-layer svg path.rally{stroke:#9e83ff;color:#9e83ff}@keyframes routeFlow{to{stroke-dashoffset:-4.5}}
.map-march-marker{width:36px;height:36px;z-index:20;transition:left .95s linear,top .95s linear;box-shadow:0 9px 24px rgba(0,0,0,.48)}.map-march-marker:before{content:'';position:absolute;inset:-7px;border:1px solid currentColor;border-radius:50%;opacity:.18;animation:marchRadar 1.4s ease-out infinite}.map-march-marker>b{position:absolute;top:39px;left:50%;transform:translateX(-50%);font:700 6px var(--display);padding:2px 5px;border-radius:5px;background:rgba(3,9,14,.78);white-space:nowrap;color:#d9e2e5}.map-march-marker.incoming{color:#ff7069}.map-march-marker.outgoing{color:#f0c669}@keyframes marchRadar{0%{transform:scale(.6);opacity:.35}100%{transform:scale(1.35);opacity:0}}

/* map inspector: most actions happen without leaving the map */
.map-inspector{position:absolute;z-index:36;left:15px;bottom:105px;width:310px;min-height:148px;border:1px solid rgba(232,197,119,.15);border-radius:17px;background:linear-gradient(145deg,rgba(4,12,18,.95),rgba(12,28,37,.89));backdrop-filter:blur(18px) saturate(1.16);box-shadow:0 18px 50px rgba(0,0,0,.38);padding:12px;display:grid;grid-template-columns:58px 1fr;gap:10px;opacity:0;transform:translateY(16px) scale(.96);pointer-events:none;transition:.35s cubic-bezier(.19,1,.22,1)}.map-inspector.open{opacity:1;transform:none;pointer-events:auto}.map-inspector-close{position:absolute;left:8px;top:8px;width:26px;height:26px;border-radius:8px;border:1px solid rgba(255,255,255,.06);background:rgba(0,0,0,.18);display:grid;place-items:center;cursor:pointer;color:#8297a1}.map-inspector-close svg{width:13px}.map-inspector-visual{width:58px;height:58px;border-radius:16px;display:grid;place-items:center;background:radial-gradient(circle at 50% 24%,rgba(223,181,95,.2),rgba(18,37,47,.78));border:1px solid rgba(228,193,116,.17);color:#e0ba64;box-shadow:inset 0 0 24px rgba(0,0,0,.28)}.map-inspector-visual svg{width:29px}.map-inspector-copy{min-width:0}.map-inspector-copy>small{font:700 6px var(--display);letter-spacing:2px;color:#a67f45}.map-inspector h3{margin:3px 0 2px;font-size:12px}.map-inspector p{font-size:7px;color:#7d949e;line-height:1.55;margin:0}.map-inspector-kpis{display:flex;gap:5px;margin-top:7px}.map-inspector-kpis span{flex:1;min-width:0;padding:5px 6px;border-radius:8px;background:rgba(0,0,0,.17);border:1px solid rgba(255,255,255,.045);display:flex;flex-direction:column}.map-inspector-kpis small{font-size:5.5px;color:#6b828e}.map-inspector-kpis b{font:700 8px var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-inspector-actions{grid-column:1/3;display:flex;gap:6px;margin-top:1px}.map-inspector-actions button{flex:1;min-height:29px;border:1px solid rgba(226,190,110,.14);border-radius:8px;background:rgba(188,136,54,.09);color:#e6c881;font-size:7px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:4px;cursor:pointer}.map-inspector-actions button.primary{background:linear-gradient(180deg,#a96a2b,#71431d);color:#fff1cd}.map-inspector-actions button.danger{border-color:rgba(255,93,84,.18);background:rgba(144,45,43,.16);color:#ffaaa4}.map-inspector-actions svg{width:12px}

.map-coordinate-badge{position:absolute;z-index:34;left:15px;bottom:15px;height:32px;border-radius:10px;padding:0 9px;display:flex;align-items:center;gap:7px;font:700 7px var(--display);direction:ltr;background:rgba(4,11,17,.72)}.map-coordinate-badge svg{width:13px;color:#d9af5d}.map-coordinate-badge span{color:#8aa1aa}.map-coordinate-badge b{color:#e0c075}.map-legend{position:absolute;z-index:34;left:125px;bottom:15px;height:32px;border-radius:10px;padding:0 9px;display:flex;align-items:center;gap:10px;background:rgba(4,11,17,.72)}.map-legend span{display:flex;align-items:center;gap:4px;font-size:6px;color:#859ba5;white-space:nowrap}.map-legend i{width:6px;height:6px;border-radius:50%;box-shadow:0 0 7px currentColor}.legend-own i{background:#f2c762;color:#f2c762}.legend-ally i{background:#59d7a9;color:#59d7a9}.legend-enemy i{background:#ff6b63;color:#ff6b63}.legend-march i{background:#9e83ff;color:#9e83ff}

/* event stays on the map, compact and cinematic */
.event-ribbon{bottom:14px;z-index:33;width:min(610px,52%);min-height:58px;padding:8px 10px}.event-ribbon .event-icon{width:40px;height:40px}.event-ribbon strong{font-size:10px}.event-ribbon span{font-size:7px}.event-ribbon .countdown{font-size:12px}.event-ribbon .gold-btn{padding:8px 11px;font-size:8px}

/* smoother dialogs and page transitions */
.modal-backdrop{backdrop-filter:blur(10px);transition:opacity .32s}.game-modal{transform:translateY(24px) scale(.965);opacity:0;transition:transform .42s cubic-bezier(.16,1,.3,1),opacity .28s}.game-modal.open{transform:none;opacity:1}.toast{animation:phase5Toast .42s cubic-bezier(.18,.9,.24,1)}@keyframes phase5Toast{from{opacity:0;transform:translateX(25px) scale(.96)}to{opacity:1;transform:none}}

/* responsive map composition */
@media(max-width:1280px){.map-command-strip{right:292px}.map-command-chip{min-width:82px;padding:5px 7px}.map-command-chip:nth-child(3){display:none}.right-panel{width:270px}.map-live-stack{width:210px}.map-inspector{width:286px}.event-ribbon{width:min(520px,50%)}}
@media(max-width:1040px){.game-shell{grid-template-columns:70px 1fr}.left-rail{grid-column:1}.world-stage,.right-panel,.bottom-dock{grid-column:2}.right-panel{display:none}.map-command-strip{right:14px}.map-command-chip{min-width:76px}.map-command-chip:nth-child(2),.map-command-chip:nth-child(3){display:none}.event-ribbon{width:min(560px,72%);bottom:62px}.bottom-dock{margin-bottom:9px;width:min(560px,84vw)}.map-inspector{bottom:70px}.map-legend{display:none}}
@media(max-width:720px){.game-shell{display:block;padding:0}.topbar{position:absolute;top:6px;left:6px;right:6px;height:60px;z-index:50;padding:6px;border-radius:15px}.brand-block{min-width:145px}.resource-strip{overflow-x:auto;justify-content:flex-start}.resource-pill{min-width:90px;height:42px}.left-rail{position:absolute;left:6px;top:74px;bottom:72px;width:58px;z-index:45;overflow:auto}.rail-btn{min-height:54px;font-size:7px}.world-stage{position:absolute;inset:0;border-radius:0}.map-toolbar{top:75px;left:72px}.map-toolbar .map-layer-btn,.map-toolbar-sep{display:none}.map-command-strip{top:74px;right:7px}.map-command-chip{min-width:68px;height:38px;padding:4px 6px}.map-command-chip:nth-child(n+3){display:none}.map-live-stack{top:122px;left:72px;width:190px}.map-live-alert:nth-child(n+3){display:none}.map-inspector{left:70px;right:8px;bottom:76px;width:auto;min-height:128px}.map-coordinate-badge,.map-legend,.map-world-title{display:none}.event-ribbon{display:none}.bottom-dock{position:absolute;left:68px;right:8px;bottom:6px;width:auto;margin:0}.right-panel{display:none}.map-node{transform:translate(-50%,-50%) scale(.78)}.map-node:hover{transform:translate(-50%,-50%) scale(.84)}.map-node>b{font-size:8px}.map-node>small{font-size:6px}.node-service{display:none}.map-beacon{transform:translate(-50%,-50%) scale(.78)}}
/* Phase 5 correction overrides */
.game-modal.active{transform:none;opacity:1}.game-modal:not(.active){opacity:0}
.online-player-node.is-protected:before{content:'PROTECTED';left:-17px;top:-10px;background:#5e7892;color:#eaf6ff;border:1px solid rgba(255,255,255,.18);font:800 5px var(--display);padding:2px 4px;border-radius:5px}
@media(max-width:720px){.map-viewport{overflow:hidden}.world-svg{min-width:0}.map-canvas{width:100%;height:100%}}
.map-rally-marker{position:absolute;z-index:21;transform:translate(-50%,-50%);border:0;background:none;color:#bda8ff;display:flex;flex-direction:column;align-items:center;cursor:pointer;filter:drop-shadow(0 8px 16px rgba(0,0,0,.4))}.map-rally-marker>span{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#5d4f9f,#241f4a 70%);border:1px solid rgba(183,160,255,.48);box-shadow:0 0 0 7px rgba(159,129,255,.05),0 0 28px rgba(139,104,255,.24);animation:rallyPulse 1.5s ease-in-out infinite}.map-rally-marker svg{width:18px}.map-rally-marker b,.map-rally-marker small{margin-top:3px;padding:2px 6px;border-radius:6px;background:rgba(4,9,14,.82);font-size:6px;white-space:nowrap}.map-rally-marker small{margin-top:2px;color:#cabaff;font:700 6px var(--display)}@keyframes rallyPulse{50%{transform:scale(1.08);box-shadow:0 0 0 13px rgba(159,129,255,.02),0 0 34px rgba(139,104,255,.38)}}
.map-reinf-badge{position:absolute;right:-18px;top:20px;min-width:42px;height:18px;padding:0 5px;border-radius:9px;background:rgba(24,87,68,.94);border:1px solid rgba(103,226,181,.28);color:#87e5bd;font:700 6px var(--display);display:flex;align-items:center;gap:3px}.map-reinf-badge svg{width:9px;height:9px}

/* =========================================================
   PHASE 6 — LIVING WORLD & COMBAT
   The map is the game: world targets, fog, minimap, weather,
   cinematic combat and direct-action overlays.
   ========================================================= */
.world-stage{isolation:isolate}.world-stage:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:31;background:radial-gradient(circle at 50% 50%,transparent 46%,rgba(1,5,10,.18) 82%,rgba(1,4,8,.48));mix-blend-mode:multiply}
.world-sites-layer{position:absolute;inset:0;z-index:18;pointer-events:none;transition:opacity .32s}.world-site-node{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;color:#dae7ed;filter:drop-shadow(0 10px 14px rgba(0,0,0,.5));transition:transform .28s cubic-bezier(.18,.89,.32,1.25),filter .28s}.world-site-node:hover{transform:translate(-50%,-50%) scale(1.1);filter:drop-shadow(0 13px 19px rgba(0,0,0,.62))}.world-site-node>span{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;position:relative;background:linear-gradient(145deg,#263641,#0c151d 72%);border:1px solid rgba(255,255,255,.15);box-shadow:inset 0 1px rgba(255,255,255,.08),0 0 0 5px rgba(255,255,255,.018)}.world-site-node>span:after{content:'';position:absolute;inset:-7px;border-radius:20px;border:1px solid currentColor;opacity:.12;animation:worldSitePulse 2.2s ease-in-out infinite}.world-site-node svg{width:24px;height:24px;stroke-width:1.65}.world-site-node>b,.world-site-node>small{margin-top:3px;white-space:nowrap;padding:2px 6px;border-radius:6px;background:rgba(2,8,12,.82);border:1px solid rgba(255,255,255,.045);text-shadow:0 2px 4px #000}.world-site-node>b{font-size:7.5px}.world-site-node>small{font-size:6px;color:#8ea3ad}.world-site-node.npc{color:#ff8a76}.world-site-node.npc>span{background:radial-gradient(circle at 45% 25%,#63352f,#251a1c 69%);border-color:rgba(255,119,98,.34)}.world-site-node.resource{color:#66ddb0}.world-site-node.resource>span{background:radial-gradient(circle at 45% 25%,#255848,#10251f 70%);border-color:rgba(98,221,170,.32)}.world-site-node.resource.enemy-owner{color:#eab964}.world-site-node.resource.enemy-owner>span{background:radial-gradient(circle at 45% 25%,#665125,#2c2513 70%);border-color:rgba(234,185,100,.38)}.world-site-node.event{color:#c0a6ff;z-index:24}.world-site-node.event>span{width:58px;height:58px;border-radius:50%;background:radial-gradient(circle at 50% 28%,#6855ac,#251e49 69%);border-color:rgba(187,158,255,.55);box-shadow:0 0 0 8px rgba(162,122,255,.04),0 0 34px rgba(128,92,240,.26)}.world-site-node.event>span:after{inset:-10px;border-radius:50%;opacity:.22}.world-site-node.event svg{width:28px}.world-site-node.hidden-site{color:#70838c;filter:blur(.15px) drop-shadow(0 8px 10px #000)}.world-site-node.hidden-site>span{background:radial-gradient(circle,#1a252c,#080d11);border-style:dashed}.world-site-node.cooldown{opacity:.43;filter:grayscale(.6) drop-shadow(0 7px 9px #000)}.world-site-node .site-level{position:absolute;right:-8px;top:-6px;min-width:18px;height:18px;border-radius:9px;background:#071019;border:1px solid currentColor;font:800 7px var(--display);display:grid;place-items:center;color:inherit}.world-site-node .owner-flag{position:absolute;left:-9px;bottom:-5px;padding:2px 4px;border-radius:5px;background:rgba(6,14,20,.94);border:1px solid rgba(255,255,255,.1);font:800 5px var(--display);color:#e3bd69}.world-site-node.ours .owner-flag{color:#6ce0af;border-color:rgba(108,224,175,.24)}@keyframes worldSitePulse{50%{transform:scale(1.07);opacity:.22}}
.world-site-node.event.meteor>span:before{content:'';position:absolute;width:3px;height:42px;bottom:41px;right:3px;background:linear-gradient(0deg,#ffd08a,rgba(175,118,255,.2),transparent);transform:rotate(36deg);filter:blur(.4px);box-shadow:0 0 10px #9c76ff}.world-site-node.event.boss>span{animation:bossFloat 2.8s ease-in-out infinite}@keyframes bossFloat{50%{transform:translateY(-4px)}}

/* Fog of war is an SVG mask generated from the player's and alliance vision */
.fog-of-war-layer{position:absolute;inset:0;z-index:16;pointer-events:none;transition:opacity .45s}.fog-of-war-layer svg{width:100%;height:100%;display:block}.fog-of-war-layer .fog-base{fill:rgba(2,7,11,.73)}.fog-of-war-layer .fog-noise{fill:url(#fogPattern);opacity:.34}.hide-fog .fog-of-war-layer{opacity:0}.hide-worldsites .world-sites-layer{opacity:0;pointer-events:none}.hide-worldsites .world-sites-layer *{pointer-events:none!important}

/* Mini-map radar */
.world-minimap{position:absolute;z-index:38;right:15px;bottom:88px;width:174px;height:126px;border-radius:15px;padding:7px;background:linear-gradient(180deg,rgba(4,12,18,.93),rgba(5,16,22,.86));border-color:rgba(109,170,193,.17);overflow:hidden}.world-minimap header{height:22px;display:flex;align-items:center;justify-content:space-between;padding:0 2px;color:#8da3ad}.world-minimap header span{font:700 6px var(--display);letter-spacing:1.2px;display:flex;align-items:center;gap:4px}.world-minimap header svg{width:10px;color:#d8b566}.world-minimap header b{min-width:18px;height:16px;border-radius:8px;background:rgba(203,70,63,.16);color:#ff857d;display:grid;place-items:center;font:800 6px var(--display)}.world-minimap svg{width:100%;height:90px;border-radius:9px;background:radial-gradient(circle at 50% 50%,#163642,#07171e 72%);border:1px solid rgba(255,255,255,.055);cursor:crosshair}.mini-zone{fill:none;stroke:rgba(150,199,205,.11);stroke-width:.7}.mini-site{stroke:#061018;stroke-width:1}.mini-site.npc{fill:#e7655d}.mini-site.resource{fill:#55cc9c}.mini-site.event{fill:#a786f0}.mini-player{fill:#d6e2e7;stroke:#071017;stroke-width:.8}.mini-player.self{fill:#f0c762}.mini-player.ally{fill:#55d4a2}.mini-player.enemy{fill:#ef6a63}.mini-march{fill:#a58cf7}.mini-view{fill:none;stroke:#e4c16d;stroke-width:1;stroke-dasharray:2 1;opacity:.75}

/* Environment chip and world lighting */
.world-environment-chip{position:absolute;z-index:38;left:15px;top:72px;height:44px;min-width:146px;border-radius:13px;padding:6px 9px;display:flex;align-items:center;gap:8px;background:linear-gradient(180deg,rgba(5,15,22,.86),rgba(4,11,17,.78))}.environment-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:rgba(220,181,96,.08);color:#dfbd72}.environment-icon svg{width:16px}.world-environment-chip div{display:flex;flex-direction:column}.world-environment-chip small{font-size:5.5px;color:#758c96}.world-environment-chip b{font-size:7.5px}.world-stage.env-night .map-canvas:after,.world-stage.env-dusk .map-canvas:after,.world-stage.env-dawn .map-canvas:after{content:'';position:absolute;inset:0;z-index:26;pointer-events:none;mix-blend-mode:multiply;transition:background 1.2s}.world-stage.env-night .map-canvas:after{background:linear-gradient(180deg,rgba(8,17,48,.48),rgba(3,8,22,.32))}.world-stage.env-dusk .map-canvas:after{background:linear-gradient(120deg,rgba(93,42,27,.12),rgba(26,24,62,.27))}.world-stage.env-dawn .map-canvas:after{background:linear-gradient(120deg,rgba(235,165,88,.12),rgba(26,54,75,.14))}.world-stage.env-day .map-canvas:after{background:transparent}
.world-weather-layer{position:absolute;inset:0;z-index:29;pointer-events:none;overflow:hidden;opacity:0;transition:opacity .7s}.world-stage.weather-rain .world-weather-layer{opacity:.72;background-image:repeating-linear-gradient(105deg,transparent 0 22px,rgba(185,224,244,.26) 23px 24px,transparent 25px 48px);background-size:100px 120px;animation:rainFall .58s linear infinite}.world-stage.weather-sand .world-weather-layer{opacity:.52;background:radial-gradient(circle at 20% 70%,rgba(201,154,78,.19),transparent 32%),linear-gradient(100deg,transparent,rgba(218,177,105,.16),transparent);animation:sandSweep 6s linear infinite}.world-stage.weather-clouds .world-weather-layer{opacity:.3;background:linear-gradient(110deg,transparent 10%,rgba(210,225,229,.12) 38%,transparent 62%);animation:cloudSweep 12s ease-in-out infinite}@keyframes rainFall{to{background-position:-30px 120px}}@keyframes sandSweep{50%{transform:translateX(5%);filter:blur(2px)}}@keyframes cloudSweep{50%{transform:translateX(-4%)}}

/* Cinematic incoming attack warning */
.incoming-attack-alert{position:absolute;z-index:72;top:74px;left:50%;transform:translate(-50%,-24px) scale(.96);min-width:390px;max-width:600px;min-height:66px;padding:9px 13px;border-radius:16px;background:linear-gradient(100deg,rgba(72,19,20,.96),rgba(20,11,15,.94));border:1px solid rgba(255,103,92,.36);box-shadow:0 18px 50px rgba(0,0,0,.5),0 0 42px rgba(220,61,54,.15);display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:10px;opacity:0;pointer-events:none;transition:.42s cubic-bezier(.16,1,.3,1)}.incoming-attack-alert.active{opacity:1;transform:translate(-50%,0) scale(1);animation:attackAlertFlash 1.15s ease-in-out 2}.incoming-attack-alert>span{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:radial-gradient(circle,#9d3c36,#441819);color:#ffc4ba}.incoming-attack-alert svg{width:23px}.incoming-attack-alert div{display:flex;flex-direction:column}.incoming-attack-alert small{font:800 6px var(--display);letter-spacing:2px;color:#ef8077}.incoming-attack-alert b{font-size:10px}.incoming-attack-alert p{margin:1px 0 0;font-size:7px;color:#bc9190}.incoming-attack-alert>strong{font:800 14px var(--display);direction:ltr;color:#ffaaa2}@keyframes attackAlertFlash{50%{box-shadow:0 18px 50px rgba(0,0,0,.5),0 0 58px rgba(239,71,60,.35)}}

/* 5-second battle vignette over the living map */
.world-battle-cinematic{position:absolute;inset:0;z-index:85;display:none;place-items:center;pointer-events:none;overflow:hidden;background:radial-gradient(circle at 50% 54%,rgba(83,45,29,.2),rgba(2,6,9,.78) 72%);backdrop-filter:blur(2px)}.world-battle-cinematic.active{display:grid;animation:cinematicIn .35s ease}.cinematic-vignette{position:absolute;inset:0;background:linear-gradient(90deg,rgba(2,7,10,.8),transparent 28% 72%,rgba(2,7,10,.8)),radial-gradient(circle at 50% 50%,transparent 20%,rgba(0,0,0,.48) 88%)}.cinematic-army{position:absolute;top:45%;display:flex;flex-direction:column;align-items:center;gap:5px;z-index:2;transition:transform .6s}.cinematic-army.left{left:26%;animation:armyChargeLeft 1.6s cubic-bezier(.3,.8,.28,1) .35s both}.cinematic-army.right{right:26%;animation:armyChargeRight 1.6s cubic-bezier(.3,.8,.28,1) .35s both}.cinematic-army>span{width:92px;height:92px;border-radius:28px;display:grid;place-items:center;border:2px solid rgba(255,255,255,.22);background:radial-gradient(circle at 50% 25%,#334c57,#101a20 69%);box-shadow:0 22px 44px rgba(0,0,0,.5)}.cinematic-army.left>span{color:#f0cd77;border-color:rgba(240,205,119,.45)}.cinematic-army.right>span{color:#ff8174;border-color:rgba(255,112,98,.45);background:radial-gradient(circle at 50% 25%,#64362f,#211417 69%)}.cinematic-army svg{width:48px;height:48px}.cinematic-army b{font:800 10px var(--display);text-shadow:0 3px 6px #000}.cinematic-clash{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%) scale(.25);z-index:4;width:120px;height:120px;border-radius:50%;display:grid;place-items:center;color:#ffdf91;opacity:0}.world-battle-cinematic.active .cinematic-clash{animation:clashBurst 1.1s ease 1.4s both}.cinematic-clash svg{width:58px;height:58px;filter:drop-shadow(0 0 22px rgba(255,179,64,.9))}.cinematic-clash span{position:absolute;inset:-90px;background:repeating-conic-gradient(from 0deg,rgba(255,194,85,.22) 0 2deg,transparent 2deg 18deg);border-radius:50%;animation:spinBattle 3s linear infinite}.cinematic-result{position:absolute;left:50%;bottom:13%;transform:translate(-50%,20px);min-width:310px;padding:12px 20px;border-radius:16px;text-align:center;background:rgba(4,12,16,.87);border:1px solid rgba(232,196,114,.16);opacity:0;z-index:5}.world-battle-cinematic.reveal-result .cinematic-result{animation:resultReveal .45s cubic-bezier(.16,1,.3,1) both}.cinematic-result small{display:block;font:800 6px var(--display);letter-spacing:2.5px;color:#9e7f4c}.cinematic-result b{display:block;font:800 20px var(--display);color:#f0cd79;margin:3px 0}.cinematic-result p{margin:0;color:#90a5ae;font-size:8px}.world-battle-cinematic.loss .cinematic-result b{color:#ff8279}@keyframes cinematicIn{from{opacity:0}to{opacity:1}}@keyframes armyChargeLeft{from{transform:translateX(-180px) scale(.7);opacity:0}70%{transform:translateX(85px) scale(1.07);opacity:1}to{transform:translateX(64px)}}@keyframes armyChargeRight{from{transform:translateX(180px) scale(.7);opacity:0}70%{transform:translateX(-85px) scale(1.07);opacity:1}to{transform:translateX(-64px)}}@keyframes clashBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}30%{opacity:1;transform:translate(-50%,-50%) scale(1.4)}100%{opacity:.6;transform:translate(-50%,-50%) scale(.8)}}@keyframes spinBattle{to{transform:rotate(360deg)}}@keyframes resultReveal{to{opacity:1;transform:translate(-50%,0)}}
.world-stage.battle-shake{animation:worldShake .55s linear 2}@keyframes worldShake{0%,100%{transform:translate(0)}20%{transform:translate(-3px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-2px,-1px)}80%{transform:translate(2px,2px)}}

/* Territory borders become meaningful strategic overlays */
.world-stage .zone>path:first-child{transition:stroke-width .3s,filter .3s,opacity .3s}.world-stage .zone.alliance-owned>path:first-child{stroke:#61d8a6!important;stroke-width:11!important;filter:drop-shadow(0 0 10px rgba(79,213,160,.27))}.world-stage .zone.enemy-owned>path:first-child{stroke-width:10!important;filter:drop-shadow(0 0 8px rgba(238,108,91,.19))}.world-stage .zone.is-focused>path:first-child{stroke-width:14!important;filter:brightness(1.16) drop-shadow(0 0 18px rgba(238,198,104,.25))}

/* direct world action styling inside map inspector */
.map-inspector-actions button.world-attack{background:linear-gradient(180deg,rgba(139,48,42,.78),rgba(71,27,27,.86));border-color:rgba(255,107,95,.27);color:#ffc0ba}.map-inspector-actions button.world-collect{background:linear-gradient(180deg,rgba(35,117,84,.64),rgba(17,59,47,.8));border-color:rgba(92,218,163,.24);color:#88e5ba}.site-reward-line{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.site-reward-line span{font-size:6px;padding:2px 5px;border-radius:6px;background:rgba(218,181,94,.08);color:#d8bd7d;border:1px solid rgba(218,181,94,.1)}

/* Keep the whole tactical picture visible on desktop: side intelligence floats over map */
@media(min-width:1041px){.game-shell{grid-template-columns:94px minmax(0,1fr);grid-template-rows:78px minmax(0,1fr) 88px}.topbar{grid-column:1/3}.world-stage{grid-column:2;grid-row:2/4}.right-panel{position:absolute;right:25px;top:102px;bottom:102px;width:286px;z-index:42;pointer-events:none}.right-panel>*{pointer-events:auto;background:linear-gradient(180deg,rgba(7,18,27,.83),rgba(5,14,21,.78));backdrop-filter:blur(14px)}.bottom-dock{grid-column:2;z-index:43;width:min(670px,62%);justify-self:center}.map-command-strip{right:315px}.world-minimap{right:315px}.map-live-stack{right:315px}.event-ribbon{width:min(650px,54%);left:45%}}
@media(max-width:1040px){.world-minimap{right:12px;bottom:76px}.world-environment-chip{left:72px;top:122px}.incoming-attack-alert{top:76px;min-width:min(390px,72vw)}}
@media(max-width:720px){.world-minimap{width:116px;height:94px;right:8px;bottom:74px;padding:5px}.world-minimap header{height:17px}.world-minimap svg{height:65px}.world-environment-chip{left:70px;top:122px;min-width:110px;height:36px;padding:4px 6px}.environment-icon{width:25px;height:25px}.world-site-node{transform:translate(-50%,-50%) scale(.76)}.world-site-node:hover{transform:translate(-50%,-50%) scale(.82)}.world-site-node>b{font-size:6px}.world-site-node>small{display:none}.world-site-node.event{transform:translate(-50%,-50%) scale(.72)}.incoming-attack-alert{left:70px;right:8px;top:74px;transform:translateY(-22px);min-width:0;grid-template-columns:36px 1fr auto}.incoming-attack-alert.active{transform:none}.incoming-attack-alert>span{width:34px;height:34px}.incoming-attack-alert p{display:none}.world-battle-cinematic .cinematic-army.left{left:17%}.world-battle-cinematic .cinematic-army.right{right:17%}.cinematic-army>span{width:66px;height:66px;border-radius:20px}.cinematic-army svg{width:34px}.cinematic-result{bottom:18%;min-width:260px}.map-command-strip{right:7px}}

/* =========================================================
   PHASE 7 — FIXED MAP STAGE + PROGRESSION CENTER
   Keeps the tactical map in a defined frame and prevents HUD overlap.
   ========================================================= */
.progression-dot.hidden{display:none!important}

@media(min-width:1041px){
  .game-shell{grid-template-columns:94px minmax(720px,1fr) 304px;grid-template-rows:78px minmax(0,1fr) 88px}
  .topbar{grid-column:1/4}
  .world-stage{grid-column:2;grid-row:2;min-height:0;isolation:isolate;border:1px solid rgba(120,178,198,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 16px 40px rgba(0,0,0,.24)}
  .right-panel{grid-column:3;grid-row:2/4;position:static!important;inset:auto!important;width:auto!important;display:flex!important;overflow:auto;padding-left:2px;pointer-events:auto!important}
  .right-panel>*{pointer-events:auto!important}
  .bottom-dock{grid-column:2;grid-row:3;position:relative;z-index:43;width:min(690px,76%);justify-self:center}

  .world-stage:before{content:'';position:absolute;z-index:31;inset:63px 13px 83px;border:1px solid rgba(135,190,208,.16);border-radius:19px;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(2,8,13,.5),inset 0 0 42px rgba(1,7,12,.2),0 0 0 7px rgba(4,14,21,.32)}
  .world-stage:after{content:'TACTICAL WORLD • S1';position:absolute;z-index:32;inset:auto!important;top:55px;left:31px;right:auto;bottom:auto;width:max-content;height:auto;padding:2px 9px;border-radius:7px;background:rgba(7,20,29,.92);color:#8da8b4;border:1px solid rgba(130,181,198,.16);font:800 5px var(--display);letter-spacing:1.8px;pointer-events:none;box-shadow:0 5px 14px rgba(0,0,0,.18);mix-blend-mode:normal}
  .map-viewport{inset:64px 14px 84px;border-radius:18px;border:1px solid rgba(255,255,255,.025);box-shadow:inset 0 0 50px rgba(0,0,0,.25)}
  .map-toolbar{top:11px;left:13px}
  .map-command-strip{top:11px;right:13px;left:auto;max-width:calc(100% - 235px);overflow:hidden}
  .map-live-stack{top:78px;right:18px;left:auto;width:226px}
  .world-environment-chip{top:78px;left:18px}
  .map-inspector{top:132px;left:18px;bottom:auto;width:300px;max-height:calc(100% - 235px);overflow:auto}
  .world-minimap{right:18px;bottom:96px}
  .map-coordinate-badge{left:18px;bottom:96px}
  .map-legend{left:128px;bottom:96px}
  .event-ribbon{left:50%;bottom:11px;width:min(650px,70%)}
  .incoming-attack-alert{top:75px}
}

/* The map itself now never leaves its frame. */
.map-viewport{background:radial-gradient(circle at 50% 45%,rgba(29,81,94,.22),rgba(5,18,26,.82));overscroll-behavior:none;touch-action:none}
.map-canvas{will-change:transform;backface-visibility:hidden}

/* Declutter markers: JS injects pixel offsets when points occupy the same map cell. */
.map-node,.world-site-node{--declutter-x:0px;--declutter-y:0px;transform:translate(calc(-50% + var(--declutter-x)),calc(-50% + var(--declutter-y)))}
.map-node:hover{transform:translate(calc(-50% + var(--declutter-x)),calc(-50% + var(--declutter-y))) scale(1.08)}
.world-site-node:hover{transform:translate(calc(-50% + var(--declutter-x)),calc(-50% + var(--declutter-y))) scale(1.1)}
.world-stage.map-zoom-far .world-site-node>small,.world-stage.map-zoom-far .online-player-node>small,.world-stage.map-zoom-far .map-node>small{display:none}
.world-stage.map-zoom-far .world-site-node>b,.world-stage.map-zoom-far .online-player-node>b{max-width:72px;font-size:6px}
.world-stage.map-zoom-far .world-site-node>span{transform:scale(.88)}
.world-stage.map-zoom-close .world-site-node>b,.world-stage.map-zoom-close .online-player-node>b{font-size:8px}

/* Right-column progression summary */
.progression-card{cursor:pointer;position:relative;overflow:hidden;flex:0 0 auto;transition:.25s}
.progression-card:hover{transform:translateY(-2px);border-color:rgba(235,196,105,.24)}
.progression-card:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 15% 0%,rgba(221,179,84,.13),transparent 44%),linear-gradient(120deg,transparent 62%,rgba(86,131,157,.07));pointer-events:none}
.progression-card>*{position:relative;z-index:1}
.progression-card header{margin-bottom:8px}.progression-card header>span{font:800 7px var(--display);color:#78dfad;background:rgba(56,159,112,.11);border:1px solid rgba(102,220,162,.14);padding:3px 7px;border-radius:8px}
.progression-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.progression-mini div{padding:7px 6px;border-radius:10px;background:rgba(0,0,0,.17);text-align:center;border:1px solid rgba(255,255,255,.035)}.progression-mini small{display:block;font-size:6px;color:#758b97}.progression-mini b{display:block;margin-top:2px;font:700 9px var(--display);color:#e4c171}.progression-xp{height:5px;border-radius:6px;background:#0b1a24;overflow:hidden;margin-top:8px}.progression-xp i{display:block;height:100%;width:0;background:linear-gradient(90deg,#bd873d,#f0cf76,#62d5a4);border-radius:6px;transition:width .5s ease}

/* Progression center */
.progression-modal{max-width:1040px}.progression-content{display:flex;flex-direction:column;gap:12px}.progression-hero{min-height:150px;border-radius:19px;padding:18px;display:grid;grid-template-columns:1fr minmax(280px,360px);gap:16px;align-items:center;position:relative;overflow:hidden;background:linear-gradient(105deg,rgba(6,16,24,.96),rgba(20,29,31,.88)),radial-gradient(circle at 15% 20%,rgba(206,157,67,.17),transparent 42%);border:1px solid rgba(231,194,113,.14)}
.progression-hero:after{content:'';position:absolute;inset:0 58% 0 0;background:linear-gradient(90deg,transparent,rgba(6,15,22,.94)),radial-gradient(circle at 40% 30%,rgba(229,187,89,.13),transparent 55%);pointer-events:none}.progression-hero>div,.progression-hero>button{position:relative;z-index:1}.progression-hero small{font:800 7px var(--display);letter-spacing:2px;color:#9b7c43}.progression-hero h3{font:800 25px var(--display);margin:4px 0;color:#f0d28a}.progression-hero p{margin:0 0 10px;color:#8da1aa;font-size:9px}.commander-xp{height:8px;background:#0a1820;border-radius:9px;overflow:hidden;border:1px solid rgba(255,255,255,.045)}.commander-xp i{display:block;height:100%;background:linear-gradient(90deg,#876026,#e4b85f,#6ad5a3);border-radius:8px}.progression-hero>div>span{display:block;margin-top:5px;color:#708691;font-size:7px;direction:ltr;text-align:right}
.daily-reward{min-height:92px;border-radius:17px;border:1px solid rgba(231,194,113,.15);background:linear-gradient(145deg,rgba(24,35,39,.84),rgba(9,20,27,.9));display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:9px;padding:11px;color:#d9e4e8;text-align:right}.daily-reward.ready{border-color:rgba(229,184,84,.38);box-shadow:0 0 28px rgba(209,155,57,.08);cursor:pointer}.daily-reward>svg{width:28px;color:#e1b75b}.daily-reward span{display:flex;flex-direction:column}.daily-reward span small{font-size:7px;letter-spacing:0;color:#80939d}.daily-reward span b{font-size:9px;margin-top:3px}.daily-reward em{font-style:normal;font:800 8px var(--display);color:#d7b361;background:rgba(206,157,63,.1);padding:6px 8px;border-radius:9px}.daily-reward:disabled{opacity:.66}
.progression-bonuses{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.progression-bonuses>span{min-height:70px;border-radius:13px;background:linear-gradient(180deg,rgba(12,28,37,.8),rgba(6,17,24,.86));border:1px solid rgba(255,255,255,.055);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.progression-bonuses svg{width:17px;color:#cda755}.progression-bonuses b{font:800 11px var(--display);color:#e8ca82}.progression-bonuses small{font-size:6px;color:#768c97}
.progression-columns{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(310px,.65fr);gap:12px}.progression-columns>section{border-radius:17px;padding:12px;background:linear-gradient(180deg,rgba(7,19,28,.9),rgba(5,15,22,.86));border:1px solid rgba(255,255,255,.055)}.progression-columns>section>header{margin-bottom:10px}.progression-columns>section>header>div{display:flex;align-items:center;gap:7px}.progression-columns>section>header svg{width:18px;color:#d9af59}.progression-columns>section>header span{display:flex;flex-direction:column}.progression-columns>section>header b{font-size:11px}.progression-columns>section>header small{font-size:6px;color:#718892}
.research-tree{display:grid;grid-template-columns:1fr 1fr;gap:8px}.research-node{min-height:94px;display:grid;grid-template-columns:43px 1fr 34px;gap:8px;align-items:center;padding:9px;border-radius:13px;background:rgba(0,0,0,.17);border:1px solid rgba(255,255,255,.05);transition:.2s}.research-node:hover{border-color:rgba(221,183,96,.17);transform:translateY(-1px)}.research-node.maxed{border-color:rgba(90,210,157,.14)}.research-icon{width:42px;height:42px;border-radius:12px;background:radial-gradient(circle at 45% 25%,rgba(215,173,83,.18),rgba(12,29,37,.83));border:1px solid rgba(220,184,101,.12);display:grid;place-items:center;color:#d8b15d}.research-icon svg{width:21px}.research-copy>div{display:flex;justify-content:space-between;gap:6px}.research-copy b{font-size:8px}.research-copy span{font:700 6px var(--display);color:#d4b064}.research-copy p{margin:2px 0;font-size:6.5px;color:#82959e}.research-copy p strong{color:#6ed5aa}.research-copy small{font-size:5.7px;color:#6f858f}.research-meter{height:4px;border-radius:5px;background:#0b1820;overflow:hidden;margin:5px 0}.research-meter i{display:block;height:100%;background:linear-gradient(90deg,#76511f,#d4a44a,#69d3a5)}.research-node>button{width:32px;height:32px;border-radius:9px;border:1px solid rgba(219,181,94,.15);background:rgba(196,144,56,.1);display:grid;place-items:center;color:#e0bc6a;cursor:pointer}.research-node>button:disabled{opacity:.32;cursor:default}.research-node>button svg{width:15px}
.season-path{display:flex;flex-direction:column;gap:7px}.pass-node{display:grid;grid-template-columns:45px 1fr 31px;align-items:center;gap:8px;min-height:58px;border-radius:12px;padding:7px;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.045);opacity:.58}.pass-node.unlocked{opacity:1;border-color:rgba(220,178,84,.16)}.pass-node.claimed{opacity:.68;border-color:rgba(88,202,151,.13)}.pass-node>span{font:800 10px var(--display);color:#d6b05e;text-align:center}.pass-node div{display:flex;flex-direction:column}.pass-node b{font-size:7px}.pass-node small{font-size:5.7px;color:#758b95}.pass-node button{width:29px;height:29px;border:1px solid rgba(229,190,103,.14);border-radius:9px;background:rgba(208,157,65,.1);display:grid;place-items:center;color:#dfb85f;cursor:pointer}.pass-node button:disabled{opacity:.3;cursor:default}.pass-node.claimed button{color:#67d5a6}.pass-node svg{width:14px}

/* Cleaner map/HUD behavior at medium sizes. */
@media(max-width:1280px) and (min-width:1041px){
  .game-shell{grid-template-columns:82px minmax(620px,1fr) 272px;gap:9px;padding:9px}
  .map-command-chip{min-width:76px}.map-command-chip:nth-child(3){display:none}.map-live-stack{width:202px}.map-inspector{width:275px}.world-minimap{width:154px}.right-panel{gap:8px}.panel-card{padding:10px}.chat-card{min-height:160px}
}

@media(max-width:1040px){
  .world-stage{grid-row:2;overflow:hidden}
  .map-viewport{inset:66px 9px 82px;border-radius:16px;border:1px solid rgba(255,255,255,.035)}
  .map-toolbar{top:11px;left:11px}.map-command-strip{top:11px;right:11px}.map-live-stack{top:78px;right:13px;left:auto}.world-environment-chip{top:78px;left:13px}.world-minimap{right:13px;bottom:94px}.map-inspector{left:13px;top:130px;bottom:auto;width:286px}.map-coordinate-badge{left:13px;bottom:94px}.event-ribbon{bottom:10px}.progression-columns{grid-template-columns:1fr}.progression-bonuses{grid-template-columns:repeat(3,1fr)}
}

@media(max-width:720px){
  .world-stage{inset:0;overflow:hidden}
  .map-viewport{inset:122px 7px 84px 66px!important;border-radius:14px!important}
  .map-toolbar{top:72px;left:68px}.map-command-strip{top:72px;right:7px;left:128px;justify-content:flex-end}.map-live-stack{top:118px;right:9px;left:auto;width:172px}.world-environment-chip{top:118px;left:68px}.world-minimap{right:9px;bottom:90px}.map-inspector{left:68px;right:9px;top:auto;bottom:88px;width:auto;max-height:40vh}.incoming-attack-alert{top:72px}.map-node,.world-site-node{transform:translate(calc(-50% + var(--declutter-x)),calc(-50% + var(--declutter-y))) scale(.76)!important}.map-node:hover,.world-site-node:hover{transform:translate(calc(-50% + var(--declutter-x)),calc(-50% + var(--declutter-y))) scale(.82)!important}.progression-hero{grid-template-columns:1fr;padding:13px}.progression-bonuses{grid-template-columns:repeat(3,1fr)}.research-tree{grid-template-columns:1fr}.progression-columns{display:block}.progression-columns>section+section{margin-top:10px}
}


/* Phase 7.0.1 — MAP VISIBILITY HOTFIX
   Keeps the cinematic atmosphere without masking the tactical map. */
.world-svg{filter:brightness(1.16) saturate(1.02) contrast(1.01)}
.fog-of-war-layer .fog-base{fill:rgba(3,10,15,.46)}
.fog-of-war-layer .fog-noise{opacity:.18}
.world-stage.env-night .map-canvas:after{background:linear-gradient(180deg,rgba(17,30,61,.20),rgba(5,13,26,.14));mix-blend-mode:soft-light}
.world-stage.env-dusk .map-canvas:after{background:linear-gradient(120deg,rgba(124,65,35,.08),rgba(33,35,69,.12));mix-blend-mode:soft-light}
.world-stage.env-dawn .map-canvas:after{background:linear-gradient(120deg,rgba(245,184,104,.09),rgba(41,78,96,.08));mix-blend-mode:soft-light}
.world-stage.env-day .map-canvas:after{background:transparent;mix-blend-mode:normal}
.world-stage.weather-rain .world-weather-layer{opacity:.38}
.world-stage.weather-sand .world-weather-layer{opacity:.30}
.world-stage.weather-clouds .world-weather-layer{opacity:.20}
.map-viewport{background:linear-gradient(180deg,#0e3144,#092334)}
@media(max-width:1040px){.world-svg{filter:brightness(1.2) saturate(1.03) contrast(1.01)}}

/* =========================================================
   PHASE 8 — COMMANDERS, EQUIPMENT & EVOLVING CASTLES
   Keeps Phase 7.0.1 map visibility intact.
   ========================================================= */
.commander-rail{position:relative}.commander-rank-mini{position:absolute;top:5px;right:6px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(180deg,#72511f,#2c2112);border:1px solid rgba(239,196,99,.35);color:#f2cf79;font:800 6px var(--display);box-shadow:0 4px 12px rgba(0,0,0,.35)}
.commanders-modal{max-width:1120px}.commanders-content{display:flex;flex-direction:column;gap:12px}.commander-command-hero{min-height:196px;border-radius:20px;padding:16px;display:grid;grid-template-columns:210px 1fr;gap:18px;align-items:center;position:relative;overflow:hidden;background:linear-gradient(100deg,rgba(5,14,21,.97),rgba(13,29,38,.9));border:1px solid rgba(231,191,99,.18);box-shadow:inset 0 1px rgba(255,255,255,.035)}.commander-command-hero:after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 72% 28%,rgba(213,169,70,.12),transparent 38%),linear-gradient(90deg,transparent,rgba(98,174,173,.035));pointer-events:none}.commander-command-hero>div{position:relative;z-index:1}.commander-command-hero small{font:800 7px var(--display);letter-spacing:2px;color:#b08a49}.commander-command-hero h2{font:800 28px var(--display);color:#f1d48d;margin:4px 0}.commander-command-hero p{font-size:9px;color:#91a6b0;margin:0 0 12px}.commander-bonus-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.commander-bonus-grid>span{min-height:63px;border-radius:12px;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.055);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.commander-bonus-grid svg{width:16px;color:#d9b05e}.commander-bonus-grid b{font:800 10px var(--display);color:#e6c477}.commander-bonus-grid small{font-size:6px;color:#768d98;letter-spacing:0}
.commander-portrait{height:126px;border-radius:16px;position:relative;overflow:hidden;display:grid;place-items:center;border:1px solid rgba(238,202,119,.14);background:linear-gradient(180deg,rgba(8,18,25,.05),rgba(5,12,17,.84)),var(--photo-warrior) center 28%/cover no-repeat;box-shadow:inset 0 -38px 52px rgba(2,7,11,.65),0 14px 30px rgba(0,0,0,.22)}.commander-portrait:after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 28%,transparent 0 30%,rgba(3,8,12,.26) 72%);pointer-events:none}.commander-portrait>span{position:absolute;right:9px;bottom:9px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(7,16,23,.88);border:1px solid rgba(234,192,99,.27);color:#e6bd66;z-index:2}.commander-portrait>span svg{width:17px}.commander-portrait>em{position:absolute;left:8px;top:8px;z-index:2;padding:3px 6px;border-radius:7px;background:rgba(5,11,16,.82);border:1px solid rgba(255,255,255,.08);font:800 6px var(--display);font-style:normal;color:#d7b365}.commander-portrait.portrait-guardian{filter:saturate(.72) hue-rotate(167deg)}.commander-portrait.portrait-architect{background-image:linear-gradient(180deg,rgba(8,18,25,.02),rgba(5,12,17,.84)),var(--photo-castle);background-position:center 42%;filter:saturate(.8) sepia(.08)}.commander-portrait.large{height:166px}.commander-portrait.large>span{width:44px;height:44px}.commander-portrait.large>span svg{width:22px}
.commander-roster,.equipment-vault{border-radius:18px;padding:12px;background:linear-gradient(180deg,rgba(7,19,28,.91),rgba(5,15,22,.88));border:1px solid rgba(255,255,255,.055)}.commander-roster>header,.equipment-vault>header{margin-bottom:10px}.commander-roster>header>div,.equipment-vault>header>div{display:flex;align-items:center;gap:8px}.commander-roster header svg,.equipment-vault header svg{width:18px;color:#dbb45f}.commander-roster header span,.equipment-vault header span{display:flex;flex-direction:column}.commander-roster header b,.equipment-vault header b{font-size:11px}.commander-roster header small,.equipment-vault header small{font-size:6px;color:#758b96}.commander-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.commander-card{min-height:270px;border-radius:15px;padding:9px;background:rgba(0,0,0,.17);border:1px solid rgba(255,255,255,.055);transition:.2s}.commander-card:hover{transform:translateY(-2px);border-color:rgba(224,184,91,.18)}.commander-card.active{border-color:rgba(233,192,97,.38);box-shadow:0 0 26px rgba(206,152,50,.07)}.commander-card.locked{opacity:.58;filter:saturate(.55)}.commander-info{padding:8px 2px}.commander-info>small{font:700 6px var(--display);letter-spacing:1px;color:#947b50}.commander-info h3{font-size:12px;margin:2px 0;color:#e4edf0}.commander-info p{font-size:7px;color:#7c919b;min-height:28px}.commander-info>span{display:block;margin-top:4px;font-size:6px;color:#8399a3}.commander-rank{height:5px;background:#0a171f;border-radius:5px;overflow:hidden}.commander-rank i{display:block;height:100%;background:linear-gradient(90deg,#76531f,#d9aa4f,#6bd3a6)}.commander-actions{display:grid;grid-template-columns:1fr;gap:6px}.commander-actions button{min-height:34px;font-size:7px}.active-commander-badge{min-height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;gap:5px;background:rgba(73,159,120,.1);border:1px solid rgba(97,217,162,.17);color:#76d9ae;font-size:7px}.active-commander-badge svg{width:13px}
.equipment-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.gear-card{display:grid;grid-template-columns:46px 1fr minmax(96px,auto);align-items:center;gap:9px;min-height:83px;padding:9px;border-radius:13px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.05)}.gear-card.maxed{border-color:rgba(89,210,160,.15)}.gear-icon{width:45px;height:45px;border-radius:12px;display:grid;place-items:center;background:radial-gradient(circle at 45% 25%,rgba(221,176,80,.17),rgba(9,23,31,.86));border:1px solid rgba(220,179,86,.13);color:#dcaf54}.gear-icon svg{width:22px}.gear-card>div{display:flex;flex-direction:column}.gear-card small{font-size:6px;color:#798e98}.gear-card b{font-size:9px}.gear-card p{font-size:6px;color:#d0ae64;margin:2px 0 5px}.gear-meter{height:4px;border-radius:5px;background:#0a1820;overflow:hidden}.gear-meter i{display:block;height:100%;background:linear-gradient(90deg,#6f4e20,#d5a54b,#65cfa1)}.gear-card>button{min-height:38px;border-radius:9px;border:1px solid rgba(223,180,88,.15);background:rgba(194,139,50,.08);color:#dcb865;display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 7px;cursor:pointer}.gear-card>button:disabled{opacity:.35}.gear-card>button svg{width:13px}.gear-card>button span{font-size:6px;max-width:110px}

/* castle evolution: readable and compact, not oversized */
.player-castle,.online-player-node{--castle-glow:rgba(226,181,84,.24)}.player-castle .castle-icon,.online-player-node .castle-icon{position:relative;transition:.28s}.player-castle .castle-icon:after,.online-player-node .castle-icon:after{content:'';position:absolute;inset:-7px;border-radius:17px;border:1px solid currentColor;opacity:.14;box-shadow:0 0 18px var(--castle-glow);pointer-events:none}.castle-tier-1 .castle-icon{transform:scale(.90);filter:saturate(.72)}.castle-tier-2 .castle-icon{transform:scale(1)}.castle-tier-3 .castle-icon{transform:scale(1.08);--castle-glow:rgba(233,188,88,.36)}.castle-tier-4 .castle-icon{transform:scale(1.14);--castle-glow:rgba(255,208,100,.48);filter:drop-shadow(0 0 9px rgba(239,194,89,.25))}.castle-tier-3 .castle-icon:before,.castle-tier-4 .castle-icon:before{content:'';position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);width:34px;height:3px;border-radius:50%;background:radial-gradient(ellipse,#d3a548,transparent 70%);opacity:.65}.castle-tier-badge,.remote-castle-tier{position:absolute;left:50%;transform:translateX(-50%);bottom:-17px;padding:2px 6px;border-radius:6px;background:rgba(4,10,15,.86);border:1px solid rgba(224,184,94,.14);color:#c7a85f;font:700 5.5px var(--display);white-space:nowrap}.remote-castle-tier{bottom:-15px;opacity:.84}.commander-map-seal{position:absolute;right:-13px;bottom:7px;width:19px!important;height:19px!important;padding:4px;border-radius:50%;background:#0a1720;color:#dfb75e;border:1px solid rgba(232,191,96,.25);box-shadow:0 5px 12px rgba(0,0,0,.35)}.castle-aura{position:absolute!important;inset:4px!important;width:auto!important;height:auto!important;border-radius:50%!important;background:radial-gradient(circle,rgba(227,185,84,.12),transparent 68%)!important;border:0!important;animation:castleAura 3.2s ease-in-out infinite;pointer-events:none}@keyframes castleAura{50%{transform:scale(1.18);opacity:.55}}

/* Phase 8 keeps tactical visibility high */
.world-stage:after{background:radial-gradient(circle at 50% 50%,transparent 52%,rgba(1,5,9,.10) 86%,rgba(1,4,7,.24) 100%)!important;mix-blend-mode:normal!important}.world-svg{filter:brightness(1.18) saturate(1.04) contrast(1.01)}

@media(max-width:1040px){.commander-grid{grid-template-columns:1fr}.commander-command-hero{grid-template-columns:170px 1fr}.equipment-grid{grid-template-columns:1fr}.commander-card{min-height:0;display:grid;grid-template-columns:150px 1fr 150px;gap:9px}.commander-card .commander-portrait{height:120px}.commander-actions{align-self:center}}
@media(max-width:720px){.commanders-modal{width:96vw!important}.commander-command-hero{grid-template-columns:1fr}.commander-command-hero>.commander-portrait{height:130px}.commander-bonus-grid{grid-template-columns:repeat(2,1fr)}.commander-card{display:block}.commander-card .commander-portrait{height:120px}.equipment-grid{grid-template-columns:1fr}.gear-card{grid-template-columns:42px 1fr}.gear-card>button{grid-column:2}.castle-tier-badge,.remote-castle-tier{display:none}.commander-map-seal{display:none}}

/* =========================================================
   PHASE 9 — LIVING CAPITAL, DAILY EVENTS & BATTLE PASS
   ========================================================= */
.city-tier-mini{position:absolute;top:5px;right:6px;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(180deg,#7d571f,#2a1d0d);border:1px solid rgba(241,198,95,.38);color:#f1cf76;font:800 6px var(--display);box-shadow:0 4px 14px rgba(0,0,0,.34)}
.kingdom-actions{display:grid;grid-template-columns:1fr 78px;gap:7px}.kingdom-actions .secondary-action{min-height:38px;padding:8px;background:rgba(82,151,196,.09);border:1px solid rgba(116,189,234,.15);color:#c3e3f5}

/* living capital */
.city-modal{width:min(1240px,96vw)!important;max-height:94vh}.city-content{min-height:620px}.city-layout{display:grid;grid-template-columns:minmax(0,1.7fr) 330px;gap:12px;min-height:620px}.city-scene{position:relative;min-height:620px;border-radius:20px;overflow:hidden;border:1px solid rgba(229,191,102,.17);background:#0b1d27;isolation:isolate;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 22px 55px rgba(0,0,0,.25)}
.city-photo{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,14,20,.06) 0%,rgba(5,14,20,.18) 52%,rgba(4,11,16,.68) 100%),var(--photo-castle) center 52%/cover no-repeat;filter:brightness(1.08) saturate(.88) contrast(1.03);transform:scale(1.035)}
.city-light-rays{position:absolute;inset:-20%;background:conic-gradient(from 210deg at 48% 12%,transparent 0 6%,rgba(255,220,147,.08) 9%,transparent 15% 100%);mix-blend-mode:screen;opacity:.7;animation:cityLight 11s ease-in-out infinite alternate;pointer-events:none}.city-layout.tier-3 .city-light-rays,.city-layout.tier-4 .city-light-rays{opacity:.9}.city-layout.tier-4 .city-photo{filter:brightness(1.12) saturate(.95) contrast(1.02)}
@keyframes cityLight{to{transform:translateX(4%) rotate(2deg);opacity:.48}}
.city-wall-ring{position:absolute;left:17%;right:17%;bottom:12%;height:42%;border:2px solid rgba(225,190,111,.16);border-radius:50% 50% 22% 22%/58% 58% 26% 26%;box-shadow:0 0 0 7px rgba(4,12,18,.08),0 0 36px rgba(219,179,91,.06);pointer-events:none}.tier-1 .city-wall-ring{opacity:.25;border-style:dashed}.tier-3 .city-wall-ring{border-width:3px}.tier-4 .city-wall-ring{border-color:rgba(241,202,112,.28);box-shadow:0 0 0 8px rgba(211,166,72,.04),0 0 48px rgba(224,176,73,.12)}
.city-road{position:absolute;height:3px;background:linear-gradient(90deg,transparent,rgba(229,201,142,.35),transparent);filter:blur(.2px);transform-origin:left;opacity:.72;pointer-events:none}.road-a{left:26%;top:58%;width:48%;transform:rotate(-13deg)}.road-b{left:22%;top:43%;width:54%;transform:rotate(18deg)}.road-c{left:35%;top:72%;width:38%;transform:rotate(4deg)}
.city-banner{position:absolute;top:18px;right:18px;z-index:12;display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:13px;background:linear-gradient(145deg,rgba(5,15,22,.89),rgba(12,28,37,.77));backdrop-filter:blur(12px);border:1px solid rgba(229,190,99,.18);box-shadow:0 10px 28px rgba(0,0,0,.24)}.city-banner>svg{width:23px;color:#e7bd61}.city-banner span{display:flex;flex-direction:column}.city-banner small{font:700 6px var(--display);letter-spacing:1px;color:#a7844b}.city-banner b{font-size:10px}
.city-building{position:absolute;z-index:9;transform:translate(-50%,-50%);border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:#e9f1f3;filter:drop-shadow(0 8px 10px rgba(0,0,0,.48));transition:.22s}.city-building>span{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(145deg,rgba(18,41,54,.96),rgba(6,17,25,.95));border:1px solid color-mix(in srgb,var(--city-accent) 48%,transparent);color:var(--city-accent);box-shadow:inset 0 0 18px color-mix(in srgb,var(--city-accent) 8%,transparent),0 0 0 4px rgba(3,10,15,.22)}.city-building svg{width:25px}.city-building>b{padding:2px 7px;border-radius:7px;background:rgba(3,11,16,.83);font-size:8px;white-space:nowrap}.city-building>small{padding:1px 5px;border-radius:5px;background:rgba(3,11,16,.75);font:700 6px var(--display);color:#c7d5db}.city-building:hover,.city-building.selected{transform:translate(-50%,-50%) scale(1.08);z-index:14}.city-building.selected>span{border-color:var(--city-accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--city-accent) 10%,transparent),0 0 28px color-mix(in srgb,var(--city-accent) 26%,transparent)}
.city-castle{left:50%;top:34%}.city-castle>span{width:78px;height:78px;border-radius:22px}.city-castle svg{width:38px}.tier-1 .city-castle>span{transform:scale(.86)}.tier-3 .city-castle>span{transform:scale(1.06)}.tier-4 .city-castle>span{transform:scale(1.14);box-shadow:0 0 42px rgba(240,194,90,.22),inset 0 0 22px rgba(245,206,111,.08)}
.city-farm{left:22%;top:70%}.city-lumber{left:20%;top:31%}.city-mine{left:77%;top:27%}.city-barracks{left:78%;top:58%}.city-wall{left:50%;top:80%}.city-hospital{left:31%;top:49%}
.city-scene-hud{position:absolute;left:14px;right:14px;bottom:14px;z-index:12;display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:8px;border-radius:14px;background:linear-gradient(180deg,rgba(7,17,24,.76),rgba(5,12,18,.9));backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.055)}.city-scene-hud>span{display:grid;grid-template-columns:25px 1fr;grid-template-rows:auto auto;column-gap:6px;align-items:center;padding:5px 7px;border-radius:9px;background:rgba(0,0,0,.14)}.city-scene-hud svg{grid-row:1/3;width:18px;color:#dcb45e}.city-scene-hud small{font-size:6px;color:#7e929b}.city-scene-hud b{font-size:9px;color:#e5eef0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.city-traffic{position:absolute;inset:0;pointer-events:none;z-index:7}.city-traffic i{position:absolute;width:7px;height:7px;border-radius:50%;background:#d7b76d;border:1px solid rgba(255,255,255,.32);box-shadow:0 2px 7px rgba(0,0,0,.55);animation:cityCitizen 13s linear infinite}.city-traffic i:after{content:'';position:absolute;left:2px;top:6px;width:2px;height:5px;border-radius:2px;background:#314f58}.city-traffic i:nth-child(1){left:28%;top:60%;animation-delay:-2s}.city-traffic i:nth-child(2){left:41%;top:69%;animation-delay:-8s;animation-duration:16s}.city-traffic i:nth-child(3){left:62%;top:49%;animation-delay:-4s;animation-duration:11s}.city-traffic i:nth-child(4){left:69%;top:66%;animation-delay:-10s;animation-duration:15s}@keyframes cityCitizen{0%{transform:translate(0,0)}25%{transform:translate(52px,-18px)}50%{transform:translate(112px,7px)}75%{transform:translate(49px,31px)}100%{transform:translate(0,0)}}
.city-traffic.patrol i{width:9px;height:9px;background:#5f91ae;border-color:#9fc7dc}.city-traffic.patrol i:nth-child(1){left:45%;top:47%;animation:cityPatrol 9s ease-in-out infinite}.city-traffic.patrol i:nth-child(2){left:53%;top:54%;animation:cityPatrol 10s ease-in-out -4s infinite}.city-traffic.patrol i:nth-child(3){left:50%;top:75%;animation:cityPatrol 8s ease-in-out -2s infinite}@keyframes cityPatrol{50%{transform:translateX(46px)}}
.city-smoke{position:absolute;width:54px;height:70px;border-radius:50%;background:radial-gradient(ellipse at 50% 70%,rgba(218,224,213,.12),transparent 64%);filter:blur(9px);opacity:.55;animation:citySmoke 5s ease-in-out infinite;pointer-events:none}.smoke-a{left:73%;top:18%}.smoke-b{left:18%;top:25%;animation-delay:-2.5s}@keyframes citySmoke{50%{transform:translateY(-18px) scale(1.18);opacity:.22}}
.city-command{border-radius:18px;padding:13px;background:linear-gradient(180deg,rgba(8,20,29,.96),rgba(5,14,21,.94));border:1px solid rgba(231,193,106,.11);display:flex;flex-direction:column;gap:11px;min-width:0}.city-command-head{display:grid;grid-template-columns:58px 1fr;gap:10px;align-items:center;padding:10px;border-radius:13px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.045)}.city-command-icon{width:56px;height:56px;border-radius:15px;display:grid;place-items:center;background:radial-gradient(circle at 50% 25%,color-mix(in srgb,var(--city-accent) 20%,transparent),rgba(7,18,25,.9));color:var(--city-accent);border:1px solid color-mix(in srgb,var(--city-accent) 24%,transparent)}.city-command-icon svg{width:27px}.city-command-head small{font:700 6px var(--display);letter-spacing:1px;color:#9a804f}.city-command-head h3{font-size:15px;margin:2px 0}.city-command-head p{font-size:7px;color:#81949d;line-height:1.7;margin:0}.city-level-row{display:grid;grid-template-columns:1fr 1fr;gap:7px}.city-level-row span{padding:10px;border-radius:11px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.045)}.city-level-row small{display:block;font-size:6px;color:#748a94}.city-level-row b{display:block;margin-top:3px;font:800 11px var(--display);color:#e7c46f}.city-upgrade-preview{padding:10px;border-radius:12px;background:linear-gradient(145deg,rgba(51,38,20,.42),rgba(8,17,23,.55));border:1px solid rgba(220,176,83,.12)}.city-upgrade-preview>div{margin-bottom:8px}.city-upgrade-preview span{display:block;font-size:6px;color:#8a9ba3}.city-upgrade-preview b{font-size:8px;color:#d7bd7e}.city-upgrade-preview button{width:100%}.city-command-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.city-command-actions button{min-height:64px;border-radius:10px;border:1px solid rgba(255,255,255,.055);background:rgba(255,255,255,.025);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#9eb3bc;cursor:pointer}.city-command-actions button:hover{border-color:rgba(224,185,94,.18);color:#e7c46f}.city-command-actions svg{width:18px}.city-command-actions span{font-size:6px}.city-tier-progress{margin-top:auto;padding:10px;border-radius:12px;background:rgba(0,0,0,.14);border:1px solid rgba(255,255,255,.045)}.city-tier-progress>div{display:flex;justify-content:space-between;font-size:8px}.city-tier-progress>div b{color:#e6c46f}.city-tier-progress>i{display:block;height:6px;margin:7px 0;border-radius:6px;background:#07151d;overflow:hidden}.city-tier-progress em{display:block;height:100%;background:linear-gradient(90deg,#7b5421,#e3b458,#66cfa3)}.city-tier-progress>small{font-size:6px;color:#728994}

/* daily events */
.daily-events-panel{padding:12px;border-radius:17px;background:linear-gradient(135deg,rgba(12,27,36,.88),rgba(9,18,25,.8));border:1px solid rgba(102,210,183,.10)}.daily-events-panel>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.daily-events-panel>header>div{display:flex;align-items:center;gap:8px}.daily-events-panel>header svg{width:18px;color:#6fd7b2}.daily-events-panel>header span{display:flex;flex-direction:column}.daily-events-panel>header b{font-size:10px}.daily-events-panel>header small{font-size:6px;color:#718a94}.daily-events-panel>header>em{font-style:normal;padding:4px 7px;border-radius:7px;background:rgba(86,192,158,.08);color:#6fd4ad;font:800 7px var(--display)}.daily-event-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.daily-event-task{display:grid;grid-template-columns:38px 1fr 32px;gap:7px;align-items:center;padding:8px;border-radius:11px;background:rgba(0,0,0,.15);border:1px solid rgba(255,255,255,.045)}.daily-event-task.complete{border-color:rgba(96,210,164,.16)}.daily-event-task.claimed{opacity:.58}.daily-event-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:rgba(87,194,160,.08);color:#69d1a8}.daily-event-icon svg{width:17px}.daily-event-task>div{min-width:0}.daily-event-task b{display:block;font-size:8px}.daily-event-task small{display:block;font-size:6px;color:#718891;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.daily-event-meter{height:4px;margin:5px 0;background:#08161e;border-radius:4px;overflow:hidden}.daily-event-meter i{display:block;height:100%;background:linear-gradient(90deg,#59c89d,#d3aa50)}.daily-event-task em{display:block;font-size:5.5px;font-style:normal;color:#9aadb4}.daily-event-task>button{width:30px;height:30px;border-radius:8px;border:1px solid rgba(97,211,165,.12);background:rgba(69,151,119,.08);color:#6bd1a7;display:grid;place-items:center;cursor:pointer}.daily-event-task>button:disabled{opacity:.28}.daily-event-task>button svg{width:14px}

/* battle pass */
.progression-columns.phase9{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.battle-pass-section{min-width:0}.battle-pass-section>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.royal-pass-unlock,.royal-pass-active{min-height:32px;border-radius:9px;padding:5px 9px;border:1px solid rgba(231,181,78,.2);background:linear-gradient(180deg,rgba(104,68,18,.34),rgba(43,30,13,.38));color:#ecc56b;font:700 6px var(--display);display:flex;align-items:center;gap:5px;cursor:pointer}.royal-pass-active{cursor:default}.royal-pass-unlock svg,.royal-pass-active svg{width:13px}.battle-pass-head{display:grid;grid-template-columns:52px 1fr 1fr;gap:6px;padding:0 4px 5px;color:#768b94;font-size:6px;text-align:center}.battle-pass-track{display:flex;flex-direction:column;gap:6px;max-height:355px;overflow:auto;padding-left:2px}.battle-pass-tier{display:grid;grid-template-columns:52px 1fr 1fr;gap:6px;align-items:stretch}.pass-level{border-radius:10px;background:#091820;border:1px solid rgba(255,255,255,.05);display:flex;flex-direction:column;align-items:center;justify-content:center}.pass-level b{font:800 10px var(--display);color:#d5b261}.pass-level small{font-size:5px;color:#6d828c}.pass-reward{min-height:58px;border-radius:10px;padding:7px 8px;display:grid;grid-template-columns:1fr 31px;grid-template-rows:auto auto;align-items:center;background:rgba(0,0,0,.14);border:1px solid rgba(255,255,255,.045)}.pass-reward>small{grid-column:1;font:700 5px var(--display);letter-spacing:1px;color:#718691}.pass-reward>b{grid-column:1;font-size:6.5px;color:#d5e1e5}.pass-reward>button{grid-column:2;grid-row:1/3;width:29px;height:29px;border-radius:8px;border:1px solid rgba(94,205,158,.12);background:rgba(67,145,112,.08);color:#68d1a5;display:grid;place-items:center;cursor:pointer}.pass-reward>button:disabled{opacity:.28}.pass-reward>button svg{width:13px}.pass-reward.royal{border-color:rgba(220,174,75,.10);background:linear-gradient(145deg,rgba(67,45,14,.2),rgba(0,0,0,.14))}.pass-reward.royal>small{color:#b6924f}.pass-reward.royal>b{color:#e7ca85}.pass-reward.royal>button{border-color:rgba(224,179,81,.15);background:rgba(176,123,38,.09);color:#dfb960}.pass-reward.royal.locked{filter:saturate(.35);opacity:.48}.pass-reward.claimed{opacity:.58}.battle-pass-tier.unlocked .pass-level{border-color:rgba(217,174,76,.14)}

/* Phase 9 deliberately keeps the map bright and readable */
.world-stage:after{background:radial-gradient(circle at 50% 50%,transparent 58%,rgba(1,5,9,.08) 88%,rgba(1,4,7,.18) 100%)!important}.world-svg{filter:brightness(1.19) saturate(1.04) contrast(1.01)}

@media(max-width:1100px){.city-layout{grid-template-columns:1fr;min-height:0}.city-scene{min-height:560px}.city-command{display:grid;grid-template-columns:1fr 1fr;align-items:start}.city-command-head,.city-tier-progress{grid-column:1/-1}.daily-event-grid{grid-template-columns:1fr}.progression-columns.phase9{grid-template-columns:1fr}}
@media(max-width:720px){.city-modal{width:97vw!important}.city-content{min-height:0}.city-scene{min-height:520px}.city-command{display:flex}.city-building>span{width:45px;height:45px}.city-castle>span{width:64px;height:64px}.city-scene-hud{grid-template-columns:repeat(2,1fr)}.city-banner{top:10px;right:10px}.city-lumber{left:17%}.city-mine{left:82%}.city-farm{left:18%}.city-barracks{left:82%}.daily-event-task{grid-template-columns:34px 1fr 30px}.battle-pass-head,.battle-pass-tier{grid-template-columns:46px 1fr 1fr}.battle-pass-section>header{align-items:flex-start;flex-direction:column}.royal-pass-unlock{width:100%;justify-content:center}}


/* =========================================================
   PHASE 10 — WORLD MAP ART OVERHAUL
   Real painted terrain map like the concept art.
   ========================================================= */
.world-stage{
  --world-map-art:url('../img/world-map-epic.png');
}
.map-viewport{
  background:linear-gradient(180deg,#06121b,#081a25);
}
.world-map{
  position:relative;
  width:100%;
  height:100%;
  overflow:hidden;
  background:
    radial-gradient(circle at 52% 43%,rgba(255,255,255,.05),transparent 42%),
    linear-gradient(180deg,rgba(5,12,18,.10),rgba(5,12,18,.16)),
    var(--world-map-art) center center/cover no-repeat,
    #07131d;
}
.world-map::before{
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:0;
  background:
    radial-gradient(circle at 19% 22%,rgba(255,255,255,.08),transparent 18%),
    radial-gradient(circle at 73% 17%,rgba(255,255,255,.07),transparent 16%),
    linear-gradient(180deg,rgba(255,255,255,.02),rgba(0,0,0,.06));
}
.world-map > *{position:relative;z-index:1}
.world-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  opacity:.28;
  mix-blend-mode:screen;
  filter:brightness(1.08) saturate(.75) contrast(1.02);
}
.world-svg > g:not(.zone):not(.center-spire){display:none!important}
.world-svg .zone>path:first-child{
  fill:rgba(255,255,255,.012)!important;
  stroke:rgba(248,234,189,.22)!important;
  stroke-width:7px!important;
  filter:none!important;
}
.world-svg .zone>path:last-child{display:none!important}
.world-svg .center-spire text,
.world-svg .map-labels,
.world-svg .svg-label,
.world-svg .sea-routes{display:none!important}
.world-svg .center-spire circle:first-child{
  fill:rgba(31,51,70,.10)!important;
  stroke:rgba(234,196,95,.38)!important;
  stroke-width:6px!important;
}
.world-svg .center-spire circle:nth-child(2){
  fill:rgba(15,36,48,.10)!important;
  stroke:rgba(109,176,168,.28)!important;
}
.world-svg .center-spire path{filter:drop-shadow(0 0 10px rgba(255,209,102,.35))}
.zone:hover path:first-child{stroke:rgba(247,221,156,.38)!important}
.zone.is-focused path:first-child{stroke:rgba(255,227,145,.6)!important}
.map-atmosphere{opacity:.56}
.cloud{background:radial-gradient(ellipse at center,rgba(240,246,248,.14),rgba(187,214,219,.05) 57%,transparent 75%)}
.fog{background:radial-gradient(ellipse,rgba(177,216,221,.06),transparent 72%)}
.map-command-strip,.map-live-stack,.map-toolbar,.map-coordinate-badge,.map-legend,.event-ribbon,.world-environment-chip,.world-minimap,.map-inspector,.incoming-attack-alert{z-index:34}
.marches-map-layer,.territory-ownership-layer,.fog-of-war-layer,.online-players-layer,.world-sites-layer{z-index:18}
.fog-of-war-layer .fog-base{fill:rgba(4,10,16,.24)}
.fog-of-war-layer .fog-noise{opacity:.12}
.world-stage:after{background:radial-gradient(circle at 50% 52%,transparent 60%,rgba(1,4,7,.06) 88%,rgba(1,4,7,.12) 100%)!important;mix-blend-mode:normal!important}
.world-stage:before{opacity:.06;filter:none!important}
.world-stage.env-night .map-canvas:after{background:linear-gradient(180deg,rgba(17,30,61,.12),rgba(5,13,26,.10));mix-blend-mode:soft-light}
.world-stage.env-dusk .map-canvas:after{background:linear-gradient(120deg,rgba(124,65,35,.07),rgba(33,35,69,.09));mix-blend-mode:soft-light}
.world-stage.env-dawn .map-canvas:after{background:linear-gradient(120deg,rgba(245,184,104,.07),rgba(41,78,96,.06));mix-blend-mode:soft-light}
.world-stage.weather-rain .world-weather-layer{opacity:.18}
.world-stage.weather-sand .world-weather-layer{opacity:.14}
.world-stage.weather-clouds .world-weather-layer{opacity:.12}

/* Align default static landmarks with the new painted map */
#playerCastleNode{left:34% !important;top:78% !important;}
button[data-node="lumber"]{left:55% !important;top:66% !important;}
button[data-node="mine"]{left:61% !important;top:69% !important;}
button[data-node="farm"]{left:43% !important;top:84% !important;}
#demoEnemyNode{left:86% !important;top:23% !important;}
button[data-node="hospital"]{left:53% !important;top:51% !important;}
button[data-node="alliance"]{left:48% !important;top:28% !important;}
#legacyBanditNode{left:82% !important;top:80% !important;}
#spireBeacon{left:56% !important;top:50% !important;}

/* Make nodes feel more like map markers instead of floating UI blocks */
.map-node>span,.world-site-node>span,.online-player-node>span{backdrop-filter:blur(4px) saturate(1.08)}
.map-node>b,.map-node>small,.world-site-node>b,.world-site-node>small,.online-player-node>b,.online-player-node>small{
  background:rgba(4,10,15,.66);
  border:1px solid rgba(255,255,255,.07);
}
.map-node>small,.world-site-node>small,.online-player-node>small{color:#ecf4f7}
.map-world-title{top:4.2%;text-shadow:0 5px 18px rgba(0,0,0,.55)}
.map-world-title span{color:#d7af63}
.map-world-title b{color:rgba(244,237,219,.9)}

@media(max-width:720px){
  .world-map{background-position:44% center;background-size:cover}
  #playerCastleNode{left:36% !important;top:77% !important;}
  #demoEnemyNode{left:82% !important;top:24% !important;}
  button[data-node="farm"]{left:41% !important;top:83% !important;}
  button[data-node="mine"]{left:63% !important;top:68% !important;}
  #legacyBanditNode{left:80% !important;top:79% !important;}
}


/* =========================================================
   PHASE 10.0.1 — MAP ART FIX
   The painted world map is now a real layer inside #mapCanvas.
   ========================================================= */
#mapCanvas{
  position:relative;
  overflow:hidden;
  background:#081822;
}
.world-map-art-layer{
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
  display:block!important;
  pointer-events:none!important;
  user-select:none!important;
  filter:brightness(1.05) saturate(1.07) contrast(1.02)!important;
  transform:none!important;
}
#mapCanvas>.world-svg{
  position:absolute!important;
  inset:0!important;
  z-index:2!important;
  width:100%!important;
  height:100%!important;
  opacity:1!important;
  mix-blend-mode:normal!important;
  filter:none!important;
  pointer-events:auto;
}
/* Hide all old painted SVG terrain. Keep only invisible/clickable territory shapes + subtle borders. */
#mapCanvas>.world-svg>rect,
#mapCanvas>.world-svg>.sea-shimmer,
#mapCanvas>.world-svg>.terrain-relief,
#mapCanvas>.world-svg>g[opacity=".25"],
#mapCanvas>.world-svg>ellipse,
#mapCanvas>.world-svg>.map-labels,
#mapCanvas>.world-svg>.sea-routes{
  opacity:0!important;
  pointer-events:none!important;
}
#mapCanvas>.world-svg .zone>path{
  fill:transparent!important;
  filter:none!important;
}
#mapCanvas>.world-svg .zone>path:first-child{
  stroke:rgba(255,238,190,.11)!important;
  stroke-width:5px!important;
}
#mapCanvas>.world-svg .zone>path:last-child{display:none!important}
#mapCanvas>.world-svg .zone:hover>path:first-child{
  stroke:rgba(255,224,142,.34)!important;
  stroke-width:7px!important;
}
#mapCanvas>.world-svg .zone.is-focused>path:first-child{
  stroke:rgba(255,222,127,.58)!important;
  stroke-width:9px!important;
  filter:drop-shadow(0 0 9px rgba(255,207,99,.24))!important;
}
/* Keep the central event clickable but don't let its old art cover the painted map. */
#mapCanvas>.world-svg .center-spire circle,
#mapCanvas>.world-svg .center-spire path{opacity:.12!important}
#mapCanvas>.world-svg .center-spire text{display:none!important}
/* All interactive HTML layers stay above the painted terrain. */
#mapCanvas>.map-node,
#mapCanvas>.map-beacon,
#mapCanvas>.online-players-layer,
#mapCanvas>.world-sites-layer,
#mapCanvas>.territory-ownership-layer,
#mapCanvas>.marches-map-layer,
#mapCanvas>.fog-of-war-layer,
#mapCanvas>.army-march,
#mapCanvas>.map-world-title{z-index:10!important}
#mapCanvas>.territory-ownership-layer{z-index:5!important}
#mapCanvas>.marches-map-layer{z-index:12!important}
#mapCanvas>.fog-of-war-layer{z-index:14!important}
#mapCanvas>.online-players-layer,#mapCanvas>.world-sites-layer,#mapCanvas>.map-node,#mapCanvas>.map-beacon{z-index:16!important}
/* Keep visibility high. */
.world-stage:before{opacity:.025!important}
.world-stage:after{background:radial-gradient(circle at 50% 50%,transparent 66%,rgba(1,4,7,.035) 90%,rgba(1,4,7,.08) 100%)!important}
.fog-of-war-layer .fog-base{fill:rgba(4,10,16,.16)!important}
.fog-of-war-layer .fog-noise{opacity:.08!important}
.world-stage.env-night .map-canvas:after{background:linear-gradient(180deg,rgba(16,28,54,.09),rgba(4,11,23,.07))!important}
.world-stage.weather-rain .world-weather-layer{opacity:.14!important}
.world-stage.weather-sand .world-weather-layer{opacity:.10!important}
.world-stage.weather-clouds .world-weather-layer{opacity:.08!important}
@media(max-width:720px){
  .world-map-art-layer{object-position:43% center!important}
}

/* =========================================================
   PHASE 11 — TACTICAL LANDMARK INTEGRATION
   The painted world becomes the visual language of every map marker.
   ========================================================= */
#mapCanvas{background:#0b1c24}
.world-map-art-layer{filter:brightness(1.08) saturate(1.10) contrast(1.015)!important}
.painted-map-fx{position:absolute!important;inset:0!important;z-index:1!important;pointer-events:none!important;overflow:hidden!important}
.painted-map-fx i{position:absolute;display:block;pointer-events:none}
.sea-glint{width:23%;height:36%;left:-4%;border-radius:50%;background:radial-gradient(ellipse,rgba(166,235,255,.19),rgba(93,199,236,.04) 44%,transparent 73%);filter:blur(12px);mix-blend-mode:screen;opacity:.46}.sea-glint-a{top:13%}.sea-glint-b{top:55%;left:5%;width:17%;height:24%;opacity:.32}.snow-haze{right:3%;top:-7%;width:45%;height:36%;background:radial-gradient(ellipse,rgba(233,247,255,.13),transparent 68%);filter:blur(20px);mix-blend-mode:screen}.desert-haze{right:-4%;bottom:-4%;width:39%;height:52%;background:radial-gradient(ellipse,rgba(237,178,86,.10),transparent 69%);filter:blur(18px);mix-blend-mode:soft-light}
.painted-region-labels{position:absolute!important;inset:0!important;z-index:3!important;pointer-events:none!important}.region-label{position:absolute;display:flex;flex-direction:column;align-items:center;text-align:center;transform:translate(-50%,-50%);text-shadow:0 2px 6px rgba(0,0,0,.9),0 0 18px rgba(0,0,0,.75);opacity:.76;transition:opacity .3s,transform .3s}.region-label b{font:800 11px var(--sans);color:rgba(255,247,223,.91);letter-spacing:.2px}.region-label small{margin-top:1px;font:800 4.5px var(--display);letter-spacing:2.2px;color:rgba(225,198,132,.74)}.western-isles{left:9%;top:23%}.verdant-heart{left:39%;top:50%}.frost-crown{left:73%;top:10%}.crystal-vale{left:64%;top:48%}.sunreach-desert{left:84%;top:65%}.ashen-edge{left:94%;top:10%}
.world-stage.map-zoom-close .region-label{opacity:.22;transform:translate(-50%,-50%) scale(.9)}.world-stage.map-zoom-mid .region-label{opacity:.52}.world-stage.map-zoom-far .region-label{opacity:.82}

/* Minimap is now a true miniature of the same painted world. */
.world-minimap{height:136px;background:linear-gradient(180deg,rgba(4,12,18,.94),rgba(5,16,22,.89));box-shadow:0 15px 36px rgba(0,0,0,.34)}
.world-minimap svg{height:100px;background-image:linear-gradient(rgba(3,10,15,.12),rgba(3,10,15,.12)),url('../img/world-map-epic.png');background-position:center;background-size:cover;background-repeat:no-repeat;box-shadow:inset 0 0 22px rgba(0,0,0,.25)}
.mini-view{stroke:#ffe08b;stroke-width:1.15;stroke-dasharray:3 1;filter:drop-shadow(0 0 2px rgba(255,218,123,.5))}.mini-player.self{fill:#ffd360;stroke:#1a1307;stroke-width:1.2}.mini-player.ally{fill:#54e0a7}.mini-player.enemy{fill:#ff6259}.mini-site.resource{fill:#64df9f}.mini-site.npc{fill:#ff7c62}.mini-site.event{fill:#b18cff}.mini-march{fill:#f7d56f;filter:drop-shadow(0 0 1px #000)}

/* Real painted landmark thumbnails instead of weak icon circles. */
.map-node>span,.world-site-node>span,.online-player-node>span{background-position:center!important;background-size:cover!important;background-repeat:no-repeat!important;border:2px solid rgba(244,224,174,.42)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.10),inset 0 -18px 28px rgba(2,8,12,.22),0 9px 24px rgba(0,0,0,.42)!important;overflow:hidden!important}
.map-node>span::before,.world-site-node>span::before,.online-player-node>span::before{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 45%,rgba(1,6,10,.24));pointer-events:none;z-index:1}
.map-node>span>svg,.world-site-node>span>svg,.online-player-node>span>svg{opacity:0!important}
.map-node>span>*:not(svg),.world-site-node>span>*:not(svg),.online-player-node>span>*:not(svg){position:relative;z-index:2}
#playerCastleNode>span{background-image:url('../img/landmarks/landmark-castle.webp')!important;border-color:#f1cb72!important}
#demoEnemyNode>span{background-image:url('../img/landmarks/landmark-desert-fort.webp')!important;border-color:#ff8a70!important}
button[data-node="farm"]>span{background-image:url('../img/landmarks/landmark-farm.webp')!important}
button[data-node="mine"]>span{background-image:url('../img/landmarks/landmark-mine.webp')!important}
button[data-node="lumber"]>span{background-image:url('../img/landmarks/landmark-forest.webp')!important}
button[data-node="hospital"]>span{background-image:url('../img/landmarks/landmark-farm.webp')!important;border-color:#71dec0!important}
button[data-node="alliance"]>span{background-image:url('../img/landmarks/landmark-island-fort.webp')!important;border-color:#78c8ff!important}
#legacyBanditNode>span{background-image:url('../img/landmarks/landmark-bandit.webp')!important;border-color:#d6a6ff!important}
.online-player-node>span{background-image:url('../img/landmarks/landmark-snow-fort.webp')!important}.online-player-node:nth-child(3n+2)>span{background-image:url('../img/landmarks/landmark-desert-fort.webp')!important}.online-player-node:nth-child(3n)>span{background-image:url('../img/landmarks/landmark-island-fort.webp')!important}.online-player-node.is-ally>span{background-image:url('../img/landmarks/landmark-castle.webp')!important;border-color:#66e0ad!important}.online-player-node.is-protected>span{filter:saturate(.68) brightness(.95)}
.world-site-node.npc>span{background-image:url('../img/landmarks/landmark-bandit.webp')!important}.world-site-node.npc.fort>span{background-image:url('../img/landmarks/landmark-snow-fort.webp')!important}.world-site-node.npc.raider>span{background-image:url('../img/landmarks/landmark-desert-fort.webp')!important}.world-site-node.resource.gold>span{background-image:url('../img/landmarks/landmark-mine.webp')!important}.world-site-node.resource.wood>span{background-image:url('../img/landmarks/landmark-forest.webp')!important}.world-site-node.resource.food>span{background-image:url('../img/landmarks/landmark-farm.webp')!important}.world-site-node.resource.gems>span,.world-site-node.event>span{background-image:url('../img/landmarks/landmark-crystal.webp')!important}.world-site-node.hidden-site>span{background-image:none!important;background:linear-gradient(145deg,rgba(20,36,44,.9),rgba(6,15,22,.95))!important}.world-site-node.hidden-site>span>svg{opacity:1!important}

/* Landmark cards are intentionally compact and reveal detail as the player zooms. */
.map-node>span,.online-player-node>span{width:58px;height:58px;border-radius:17px}.node-castle>span,#playerCastleNode>span{width:72px;height:72px;border-radius:21px}.world-site-node>span{width:52px;height:52px;border-radius:15px}.world-site-node.event>span{width:62px;height:62px;border-color:#b997ff!important;box-shadow:0 0 0 5px rgba(151,113,255,.07),0 10px 28px rgba(0,0,0,.42)!important}.world-site-node.resource.ours>span{border-color:#5fe0a9!important}.world-site-node.resource.enemy-owner>span{border-color:#ff766b!important}
.map-node>b,.map-node>small,.world-site-node>b,.world-site-node>small,.online-player-node>b,.online-player-node>small{background:rgba(3,9,13,.74)!important;backdrop-filter:blur(6px);border-color:rgba(255,255,255,.08)!important;text-shadow:0 1px 2px #000}.map-node>b,.world-site-node>b,.online-player-node>b{margin-top:5px;padding:3px 7px}.map-node>small,.world-site-node>small,.online-player-node>small{padding:2px 6px}

/* Three visual LOD levels. */
.world-stage.map-zoom-far .map-node:not(.player-castle)>span,.world-stage.map-zoom-far .world-site-node>span,.world-stage.map-zoom-far .online-player-node>span{width:34px;height:34px;border-radius:50%}.world-stage.map-zoom-far .world-site-node.event>span{width:42px;height:42px}.world-stage.map-zoom-far .map-node:not(.player-castle)>b,.world-stage.map-zoom-far .map-node:not(.player-castle)>small,.world-stage.map-zoom-far .world-site-node>b,.world-stage.map-zoom-far .world-site-node>small,.world-stage.map-zoom-far .online-player-node>b,.world-stage.map-zoom-far .online-player-node>small{display:none!important}.world-stage.map-zoom-far .player-castle>b{font-size:7px}.world-stage.map-zoom-far .player-castle>small{display:none}
.world-stage.map-zoom-mid .map-node:not(.player-castle)>span,.world-stage.map-zoom-mid .online-player-node>span{width:46px;height:46px;border-radius:14px}.world-stage.map-zoom-mid .world-site-node>span{width:43px;height:43px;border-radius:13px}.world-stage.map-zoom-mid .map-node>small,.world-stage.map-zoom-mid .world-site-node>small,.world-stage.map-zoom-mid .online-player-node>small{display:none}
.world-stage.map-zoom-close .map-node>span,.world-stage.map-zoom-close .online-player-node>span{transform:scale(1.05)}.world-stage.map-zoom-close .world-site-node>span{transform:scale(1.08)}

/* Stronger selection without hiding the underlying art. */
.map-node.map-focus>span,.world-site-node.map-focus>span,.online-player-node.map-focus>span{outline:2px solid rgba(255,213,116,.82);outline-offset:4px;box-shadow:0 0 0 8px rgba(248,199,87,.07),0 0 30px rgba(248,199,87,.24),0 10px 28px rgba(0,0,0,.46)!important}
.map-node:hover>span,.world-site-node:hover>span,.online-player-node:hover>span{filter:brightness(1.08) saturate(1.08)}

/* Painted map framing and readability. */
.world-stage:before{opacity:.018!important}.world-stage:after{background:radial-gradient(circle at 50% 50%,transparent 72%,rgba(1,4,7,.025) 93%,rgba(1,4,7,.06) 100%)!important}.map-atmosphere{opacity:.38}.fog-of-war-layer .fog-base{fill:rgba(4,10,16,.13)!important}.fog-of-war-layer .fog-noise{opacity:.055!important}

@media(max-width:1040px){.world-minimap{height:120px}.world-minimap svg{height:85px}.region-label b{font-size:8px}.region-label small{font-size:3.8px}}
@media(max-width:720px){.world-minimap{height:96px}.world-minimap svg{height:67px}.painted-region-labels{display:none}.world-stage.map-zoom-far .player-castle>span{width:54px;height:54px}.map-node>span,.online-player-node>span{width:44px;height:44px}.world-site-node>span{width:38px;height:38px}}

/* =========================================================
   PHASE 12 — STRATEGIC RECONNAISSANCE & WORLD INTEL
   ========================================================= */
.strategic-routes-layer,.threat-heat-layer,.outposts-layer{position:absolute!important;inset:0!important;pointer-events:none!important}
#mapCanvas>.strategic-routes-layer{z-index:7!important}#mapCanvas>.threat-heat-layer{z-index:8!important}#mapCanvas>.outposts-layer{z-index:17!important}
.world-stage.hide-intel .strategic-routes-layer,.world-stage.hide-intel .threat-heat-layer,.world-stage.hide-intel .outposts-layer .outpost-vision{opacity:0!important}
.strategic-routes-layer svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.strategic-road{fill:none;stroke:rgba(238,203,124,.34);stroke-width:.42;stroke-dasharray:1.8 1.1;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px rgba(31,17,4,.7));animation:strategicRouteFlow 5s linear infinite}.strategic-road.secondary{stroke:rgba(149,201,194,.24);stroke-width:.32;animation-duration:8s}@keyframes strategicRouteFlow{to{stroke-dashoffset:-18}}
.chokepoint-node{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;color:#f4d58a;display:flex;flex-direction:column;align-items:center;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 5px 8px rgba(0,0,0,.45));transition:.25s}.chokepoint-node>span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(9,19,25,.88);border:1px solid rgba(241,205,126,.42);box-shadow:0 0 0 5px rgba(235,195,107,.04)}.chokepoint-node svg{width:14px}.chokepoint-node>b{margin-top:3px;padding:2px 5px;border-radius:6px;background:rgba(3,9,13,.68);font-size:5.5px;color:#f0dfb8;white-space:nowrap}.chokepoint-node:hover{transform:translate(-50%,-50%) scale(1.1)}
.threat-heat{position:absolute;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,77,65,.18) 0,rgba(255,77,65,.08) 34%,rgba(255,77,65,.025) 58%,transparent 72%);filter:blur(4px);mix-blend-mode:multiply;opacity:.68;animation:threatHeatPulse 3.4s ease-in-out infinite}.threat-heat.npc{background:radial-gradient(circle,rgba(255,147,68,.16),rgba(255,118,56,.06) 42%,transparent 73%);animation-delay:-1.4s}@keyframes threatHeatPulse{50%{opacity:.42;transform:translate(-50%,-50%) scale(1.08)}}
.outpost-node{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;display:flex;flex-direction:column;align-items:center;pointer-events:auto;cursor:pointer;color:#9ce7ff;z-index:17;filter:drop-shadow(0 8px 12px rgba(0,0,0,.45))}.outpost-node>span{position:relative;z-index:2;width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,rgba(25,69,83,.96),rgba(7,25,35,.96));border:1px solid rgba(137,226,255,.62);box-shadow:inset 0 0 20px rgba(115,216,255,.08),0 0 0 5px rgba(99,208,246,.05),0 0 25px rgba(78,192,230,.18)}.outpost-node>span svg{width:21px}.outpost-node>b,.outpost-node>small{position:relative;z-index:2;margin-top:3px;padding:2px 6px;border-radius:6px;background:rgba(3,10,15,.76);border:1px solid rgba(255,255,255,.06);white-space:nowrap}.outpost-node>b{font-size:6.5px;color:#d9f7ff}.outpost-node>small{font:700 5.5px var(--display);color:#8bdff8}.outpost-vision{position:absolute;z-index:0;left:50%;top:50%;width:150px;height:150px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(105,219,255,.23);background:radial-gradient(circle,rgba(86,209,245,.07),rgba(86,209,245,.025) 42%,transparent 70%);box-shadow:inset 0 0 24px rgba(94,211,245,.05);animation:outpostRadar 2.6s ease-out infinite;pointer-events:none}@keyframes outpostRadar{0%{opacity:.78;transform:translate(-50%,-50%) scale(.72)}100%{opacity:.04;transform:translate(-50%,-50%) scale(1.12)}}
.map-command-chip.recon>span{color:#8ee8ff;background:rgba(72,175,207,.12)}.map-command-chip.recon b{color:#bdefff}.outpost-tool.active-placement{color:#96ebff!important;border-color:rgba(98,219,255,.48)!important;background:rgba(55,163,200,.16)!important;box-shadow:0 0 0 4px rgba(81,202,239,.05),0 0 22px rgba(77,202,239,.12)}.outpost-tool.has-outposts:after{content:'';position:absolute;right:5px;top:5px;width:6px;height:6px;border-radius:50%;background:#6fe5ff;box-shadow:0 0 8px #6fe5ff}
.outpost-placement-hint{position:absolute;z-index:58;left:50%;top:82px;transform:translate(-50%,-14px);min-width:320px;max-width:70%;min-height:48px;padding:7px 11px;border-radius:13px;background:linear-gradient(145deg,rgba(5,19,27,.96),rgba(8,30,39,.92));border:1px solid rgba(105,219,255,.28);box-shadow:0 15px 40px rgba(0,0,0,.34),0 0 28px rgba(83,203,239,.07);display:flex;align-items:center;gap:9px;opacity:0;pointer-events:none;transition:.28s}.outpost-placement-hint.active{opacity:1;transform:translate(-50%,0)}.outpost-placement-hint>svg{width:20px;color:#84e6ff}.outpost-placement-hint span{display:flex;flex-direction:column}.outpost-placement-hint b{font-size:8px;color:#d9f8ff}.outpost-placement-hint small{font-size:6px;color:#84aab7;margin-top:2px}.world-stage.placing-outpost .map-viewport{cursor:crosshair}.world-stage.placing-outpost .map-canvas:before{content:'';position:absolute;inset:0;z-index:29;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 79px,rgba(104,215,245,.035) 80px),repeating-linear-gradient(90deg,transparent 0 79px,rgba(104,215,245,.035) 80px);mix-blend-mode:screen}.world-stage.placing-outpost .map-canvas{filter:saturate(1.04)}
.mini-outpost{fill:#6de5ff;stroke:#09232d;stroke-width:.8;filter:drop-shadow(0 0 1.2px #85eaff)}
.world-stage.map-zoom-far .chokepoint-node>b,.world-stage.map-zoom-far .outpost-node>b,.world-stage.map-zoom-far .outpost-node>small{display:none}.world-stage.map-zoom-far .chokepoint-node>span{width:20px;height:20px}.world-stage.map-zoom-far .outpost-node>span{width:32px;height:32px;border-radius:50%}.world-stage.map-zoom-far .outpost-vision{width:105px;height:105px}.world-stage.map-zoom-close .strategic-road{stroke-width:.52}.world-stage.map-zoom-close .outpost-vision{width:180px;height:180px}
@media(max-width:1280px){.map-command-chip.recon{display:none}}
@media(max-width:720px){.outpost-placement-hint{top:126px;min-width:0;width:calc(100% - 150px);max-width:none;left:calc(50% + 30px)}.outpost-placement-hint small{display:none}.chokepoint-node>b{display:none}.outpost-node>span{width:36px;height:36px}.outpost-node>b{font-size:5.5px}.outpost-node>small{display:none}.outpost-vision{width:100px;height:100px}.strategic-road{opacity:.55}}
