*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{--bg:#1a1410;--panel:#2a2019;--panel2:#33271e;--line:#ffffff1a;--text:#f6ecd9;--muted:#cdbb9f;--gold:#f2c460;--green:#5fbf7f;--red:#e0675a;--blue:#6aa8e6;--r:16px}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:"Noto Kufi Arabic","Geeza Pro","Segoe UI",system-ui,sans-serif;overflow-x:hidden;overscroll-behavior:none}
button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.app{height:100vh;height:100dvh;display:grid;grid-template-rows:auto auto 1fr auto;max-width:620px;margin:0 auto;background:radial-gradient(ellipse at 50% -10%,#4a3322 0,transparent 60%),var(--bg);overflow:hidden}
.top{display:flex;align-items:center;gap:8px;padding:max(8px,env(safe-area-inset-top)) 12px 6px}
.top h1{flex:1;margin:0;font-size:20px;letter-spacing:.5px;color:var(--gold);text-align:center}
.back{color:#e8d3a8;text-decoration:none;font-size:14px;min-height:44px;display:flex;align-items:center;padding:0 4px}
.power{font-size:13px;font-weight:800;color:#ffe3a3;background:#ffffff12;border:1px solid #f2c46055;border-radius:999px;padding:6px 10px;white-space:nowrap}
.icon-btn{min-width:44px;min-height:44px;border-radius:12px;border:1px solid var(--line);background:#ffffff0d;font-size:18px}
.resbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:0 10px 8px}
.res{background:linear-gradient(180deg,#3a2c21,#2a2019);border:1px solid var(--line);border-radius:12px;padding:5px 6px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:4px;align-items:center;min-width:0}
.res i{grid-row:span 2;font-style:normal;font-size:18px}
.res b{font-size:14px;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.res small{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.res.full b{color:#ffb26b}
.view{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:0 12px 16px;outline:none;min-height:0}
.view.map-mode{padding:0;overflow:hidden;position:relative}
.tabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));background:#140f0b;border-top:1px solid var(--line);padding:4px 4px max(4px,env(safe-area-inset-bottom))}
.tabs button{position:relative;background:none;border:0;min-height:52px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--muted);padding:2px 0}
.tabs button i{font-style:normal;font-size:19px;line-height:1.1}
.tabs button span{font-size:10.5px;white-space:nowrap}
.tabs button[aria-current=page]{color:var(--gold);background:#ffffff0c}
.dot{position:absolute;top:6px;right:calc(50% - 16px);width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2px #140f0b}
h2{font-size:17px;margin:14px 2px 8px;color:#ffe3a3}
h3{font-size:15px;margin:0 0 4px}
p{line-height:1.7}
.muted{color:var(--muted);font-size:12.5px}
.card{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--r);padding:12px;margin:0 0 10px}
.row{display:flex;align-items:center;gap:10px}
.row>.grow{flex:1;min-width:0}
.btn{min-height:44px;border-radius:12px;border:1px solid #f2c46066;background:linear-gradient(180deg,#8a5a24,#6b4419);color:#fff7e4;font-weight:800;padding:8px 14px;font-size:14px}
.btn.alt{background:#ffffff10;border-color:var(--line);color:var(--text);font-weight:700}
.btn.green{background:linear-gradient(180deg,#3d8a58,#2c6a43);border-color:#7fe0a066}
.btn.red{background:linear-gradient(180deg,#a64437,#7f2f25);border-color:#ff9a8a55}
.btn.small{min-height:40px;padding:6px 10px;font-size:13px}
.btn:disabled{opacity:.45;filter:grayscale(.4)}
.btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.btns .btn{flex:1 1 auto}
.cost{display:flex;flex-wrap:wrap;gap:6px;font-size:12.5px;margin:6px 0}
.cost span{background:#00000033;border-radius:8px;padding:3px 7px;white-space:nowrap}
.cost span.no{color:#ff9b8b;text-decoration:line-through 1px #ff9b8b88}
.bar{height:8px;border-radius:8px;background:#00000055;overflow:hidden;margin-top:6px}
.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#d79b3b,#f6d27b);border-radius:8px;transition:width .4s linear}
.bar.blue i{background:linear-gradient(90deg,#3c7cc0,#8ec4f5)}
.bar.green i{background:linear-gradient(90deg,#3d9a63,#8de0a7)}
.pill{display:inline-block;font-size:11px;padding:3px 8px;border-radius:999px;background:#ffffff14;color:var(--muted)}
.pill.win{background:#3d8a5840;color:#9fe8b6}.pill.loss{background:#a6443740;color:#ffb0a4}
/* city */
.scene{position:relative;margin:4px -12px 0;aspect-ratio:360/380;max-height:56vh;min-height:280px}
.scene svg{width:100%;height:100%;display:block}
.plot{cursor:pointer}
.plot:focus{outline:none}.plot:focus-visible .hit{stroke:var(--gold);stroke-width:3}
.plot .hit{fill:transparent}
.flag{animation:wave 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:0 50%}
@keyframes wave{50%{transform:skewY(8deg) scaleX(.9)}}
.smoke{animation:smoke 3s ease-in-out infinite}
@keyframes smoke{0%{opacity:0;transform:translateY(4px)}40%{opacity:.6}100%{opacity:0;transform:translateY(-14px)}}
.build-ring{animation:spin 6s linear infinite;transform-box:fill-box;transform-origin:center}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.flag,.smoke,.build-ring{animation:none}}
.queue{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.queue .card{margin:0;padding:10px;min-width:0}
.queue .card h3{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.next-quest{display:flex;align-items:center;gap:10px;width:100%;text-align:start;border:1px solid #f2c46044;background:linear-gradient(90deg,#4a3420,#2c2119);border-radius:14px;padding:10px 12px;min-height:52px;margin-top:10px}
.next-quest b{display:block;font-size:13.5px}.next-quest small{color:var(--muted);font-size:11.5px}
.daily-banner{background:linear-gradient(90deg,#5b3d17,#3a2a1b);border-color:#f2c46066}
/* map */
.map-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;display:block;background:#7a5b38}
.map-ui{position:absolute;inset:auto 10px 10px 10px;display:flex;gap:8px;justify-content:space-between;pointer-events:none}
.map-ui>*{pointer-events:auto}
.map-legend{position:absolute;top:8px;right:8px;left:8px;display:flex;gap:6px;flex-wrap:wrap;pointer-events:none}
.map-legend span{font-size:11px;background:#140f0bcc;border-radius:999px;padding:4px 8px;color:#f0e1c4}
.map-marches{position:absolute;top:40px;right:8px;display:flex;flex-direction:column;gap:6px;max-width:60%}
.map-marches button{font-size:12px;background:#140f0bdd;border:1px solid #f2c46044;border-radius:10px;padding:6px 8px;text-align:start;min-height:40px;color:var(--text)}
/* army */
.unit{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:center}
.unit-ico{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:26px;background:#00000033;border:1px solid var(--line)}
.stats-mini{display:flex;gap:8px;font-size:11.5px;color:var(--muted);flex-wrap:wrap}
.counter-note{font-size:11.5px;color:#ffd99a}
input[type=range]{width:100%;height:36px;accent-color:#d79b3b;touch-action:pan-y}
.slider-row{display:grid;grid-template-columns:auto 1fr 52px;align-items:center;gap:8px;margin:4px 0}
.slider-row output{font-variant-numeric:tabular-nums;font-weight:800;text-align:center}
.report{width:100%;text-align:start;border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:10px 12px;margin-bottom:8px;display:flex;gap:10px;align-items:center;min-height:56px}
.report .grow{flex:1;min-width:0}.report b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
table.rep{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0}
table.rep th,table.rep td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:center}
table.rep th:first-child,table.rep td:first-child{text-align:start}
.banner{border-radius:14px;padding:14px;text-align:center;font-size:20px;font-weight:900;margin:4px 0 10px}
.banner.win{background:linear-gradient(135deg,#3d8a58,#1f4d33)}.banner.loss{background:linear-gradient(135deg,#a64437,#55201a)}
.rounds{display:flex;gap:3px;align-items:flex-end;height:56px;margin:6px 0}
.rounds div{flex:1;display:flex;gap:2px;align-items:flex-end;height:100%}
.rounds i{flex:1;border-radius:3px 3px 0 0;background:var(--blue);animation:grow .5s ease-out both}
.rounds i.e{background:var(--red)}
@keyframes grow{from{transform:scaleY(0)}}
.rounds i{transform-origin:bottom}
/* heroes */
.hero{display:grid;grid-template-columns:72px 1fr;gap:12px}
.hero svg{width:72px;height:96px;display:block}
.hero.locked{opacity:.72}
.hero.locked svg{filter:grayscale(.85) brightness(.7)}
.skill{font-size:12.5px;background:#00000030;border-radius:10px;padding:6px 8px;margin-top:6px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.chip{min-height:40px;border-radius:999px;border:1px solid var(--line);background:#ffffff0d;padding:6px 12px;font-size:13px}
.chip[aria-pressed=true]{border-color:var(--gold);background:#f2c46030;color:#ffe9b5}
.chip:disabled{opacity:.4}
/* quests / daily */
.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:8px 0}
.days div{border-radius:10px;background:#00000030;border:1px solid var(--line);padding:6px 2px;text-align:center;font-size:10.5px;min-width:0}
.days div b{display:block;font-size:12px}
.days div.got{background:#3d8a5840;border-color:#7fe0a066}
.days div.today{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.quest{display:flex;align-items:center;gap:10px}
.quest .grow small{display:block;color:var(--muted);font-size:11.5px;margin-top:3px}
.quest.claimed{opacity:.5}
/* kingdoms */
.kd-flag{width:44px;height:52px;flex:none}
.rel{height:8px;border-radius:8px;background:linear-gradient(90deg,#e0675a,#6b5a49 50%,#5fbf7f);position:relative;margin:8px 0 2px}
.rel i{position:absolute;top:-4px;width:4px;height:16px;border-radius:3px;background:#fff;box-shadow:0 0 0 2px #0008;transform:translateX(50%)}
/* sheet & toast */
.sheet-wrap{position:fixed;inset:0;z-index:20;display:flex;align-items:flex-end;justify-content:center}
.sheet-wrap[hidden]{display:none}
.sheet-bg{position:absolute;inset:0;background:#0009;animation:fade .2s}
.sheet{position:relative;width:100%;max-width:620px;max-height:86dvh;max-height:86vh;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#3a2b1f,#231a13);border-radius:22px 22px 0 0;border:1px solid #f2c46033;padding:16px 16px max(18px,env(safe-area-inset-bottom));animation:up .25s ease-out;overscroll-behavior:contain}
.sheet h2{margin-top:2px;padding-left:48px}
.sheet-x{position:absolute;top:10px;left:10px}
@keyframes up{from{transform:translateY(40px);opacity:.4}}@keyframes fade{from{opacity:0}}
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#140f0bee;border:1px solid #f2c46066;color:#fff3d6;border-radius:14px;padding:10px 14px;font-size:13.5px;max-width:calc(100vw - 32px);opacity:0;pointer-events:none;transition:.25s;z-index:30;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{border-color:#ff9b8b88}
.estimate{border-radius:12px;padding:8px 10px;margin:8px 0;font-size:13px;font-weight:700}
.estimate.good{background:#3d8a5833;color:#a6efbf}.estimate.even{background:#a8822f33;color:#ffe3a3}.estimate.bad{background:#a6443733;color:#ffb0a4}
.empty{text-align:center;color:var(--muted);font-size:13px;padding:14px}
@media (min-width:621px){.app{border-inline:1px solid var(--line)}}
@media (max-height:640px){.scene{max-height:48vh}}
