:root{
  --bg:#070c0b; --panel:#0e1715; --panel2:#142320; --line:#2c443d; --gold:#ffd36b; --gold2:#c99a2e; --txt:#e6efe9; --mut:#8aa399;
  --good:#6dff9c; --bad:#ff5a4a; --warn:#ffb347; --cyan:#7ee0ff; --violet:#b48cff;
  --font:"Trebuchet MS","Segoe UI","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--txt);font-family:var(--font);user-select:none;-webkit-user-select:none}
canvas#game{position:fixed;inset:0;width:100%;height:100%;display:block;cursor:crosshair;z-index:2}
canvas#ground,canvas#gl{position:fixed;inset:0;width:100%;height:100%;display:none;pointer-events:none}
canvas#ground{z-index:0}canvas#gl{z-index:1}
body.gfx3d canvas#ground,body.gfx3d canvas#gl{display:block}
button{font-family:inherit;cursor:pointer}
.hidden{display:none!important}

/* ---------------------------------------------------------------- HUD ---- */
#hud{position:fixed;inset:0;pointer-events:none;z-index:5}
#hud>*{pointer-events:none}
#topbar,#bottom,#tip{pointer-events:auto}
#topbar{position:absolute;top:0;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:18px;padding:6px 18px;
  background:linear-gradient(#17261fee,#0c1512ee);border:1px solid var(--line);border-top:none;border-radius:0 0 12px 12px;box-shadow:0 6px 24px #000a}
#res{display:flex;align-items:baseline;gap:7px}
#res .gem{color:var(--gold);font-size:18px}
#gold{font-size:24px;font-weight:800;color:var(--gold);min-width:52px;text-shadow:0 0 10px #ffc94d55}
#income{color:var(--mut);font-size:12px}
#tierbox{display:flex;align-items:center;gap:10px}
#tier{font-size:12px;letter-spacing:.12em;color:#0b120f;background:linear-gradient(var(--gold),var(--gold2));padding:3px 8px;border-radius:5px}
#tech{display:flex;gap:4px}
.chip{display:flex;flex-direction:column;align-items:center;min-width:54px;padding:2px 6px;border-radius:6px;border:1px solid var(--line);background:#0b1311;font-size:10px;line-height:1.15;color:var(--mut);transition:.25s}
.chip small{font-size:11px}
.chip.active{color:#d9ffe6;border-color:#3f8a5f;background:#12301f}
.chip.active small{color:var(--good)}
.chip.building{color:#ffe9b0;border-color:#8a7a2c;animation:pulse 1.2s infinite}
.chip.inactive{color:#ffd7a1;border-color:#b76b1f;background:#35200c;animation:pulse .8s infinite}
.chip.lost{color:#ffb3aa;border-color:#a33;background:#35100e;text-decoration:line-through}
.chip.missing{opacity:.55}
@keyframes pulse{50%{filter:brightness(1.6)}}
#clock{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--txt)}
#speed{display:flex;gap:3px}
#speed button,#btn-menu{background:#101c18;border:1px solid var(--line);color:var(--mut);padding:3px 8px;border-radius:5px;font-size:12px;font-weight:700}
#speed button.on{color:#0b120f;background:var(--gold);border-color:var(--gold)}
#speed button:hover,#btn-menu:hover{color:#fff;border-color:var(--gold)}
.spectate #bottom,.spectate #herocard{opacity:.0;pointer-events:none}
.spectate #bottom{display:none}

#score{position:absolute;top:56px;right:12px;width:330px;display:flex;flex-direction:column;gap:3px}
.srow{display:grid;grid-template-columns:10px 1fr 82px 62px 62px;align-items:center;gap:6px;padding:4px 8px;background:#0b1311cc;border:1px solid #20332d;border-radius:6px;font-size:12px}
.srow.me{border-color:#4f7d68}
.srow.dead{opacity:.4;text-decoration:line-through}
.srow i{width:10px;height:10px;border-radius:50%}
.srow .sn{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:700}
.srow .sf{color:var(--mut);font-size:11px}
.srow .sk{color:var(--mut);font-size:11px;text-align:right}
.hb{height:6px;background:#1d2b27;border-radius:3px;overflow:hidden}.hb b{display:block;height:100%;background:linear-gradient(90deg,#3fe08a,#c5f26a)}

#bq{position:absolute;left:12px;top:56px;width:270px;display:none;pointer-events:auto;background:#0b1311dd;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px}
#bq h5{color:var(--gold);letter-spacing:.1em;text-transform:uppercase;font-size:10px;margin-bottom:3px}
#bq .bqi{display:flex;gap:6px;align-items:baseline;padding:3px 4px;border-top:1px solid #1b2c26;cursor:pointer}#bq .bqi:hover{background:#1a2b25}#bq .bqi b{color:var(--gold)}#bq .bqi em{color:var(--mut);font-style:normal;margin-left:auto;font-size:11px}#bq .bqi u{text-decoration:none;color:#c88}
#logbox{position:absolute;left:12px;bottom:214px;width:380px;display:flex;flex-direction:column;gap:2px;font-size:13px}
#logbox .l{padding:3px 8px;border-left:3px solid #567;background:#0a1210b8;border-radius:0 5px 5px 0;animation:slide .3s}
#logbox .good{border-color:var(--good)}#logbox .alert{border-color:var(--bad);color:#ffc9c3}#logbox .warn{border-color:var(--warn)}#logbox .special{border-color:var(--violet);color:#e1d2ff;font-weight:700}
@keyframes slide{from{opacity:0;transform:translateX(-14px)}}
#banner{position:absolute;top:19%;left:50%;transform:translateX(-50%) scale(.9);text-align:center;opacity:0;transition:.35s;pointer-events:none;text-shadow:0 2px 20px #000}
#banner.show{opacity:1;transform:translateX(-50%) scale(1)}
#banner h2{font-size:44px;letter-spacing:.16em;font-weight:900}
#banner p{font-size:17px;color:#dfe9e4;margin-top:4px}
#modehint{position:absolute;bottom:216px;left:50%;transform:translateX(-50%);background:#000b;border:1px solid var(--gold2);color:var(--gold);padding:6px 16px;border-radius:20px;font-size:14px;display:none}

/* ------------------------------------------------------------- Bottom ---- */
#bottom{position:absolute;left:0;right:0;bottom:0;height:204px;display:grid;grid-template-columns:206px 196px 1fr 372px;gap:8px;padding:7px 8px 8px;
  background:linear-gradient(#0e1a16f2,#070d0bf8);border-top:2px solid #2f4a40;box-shadow:0 -10px 30px #000a}
#minimapwrap{border:2px solid #3a5a4d;border-radius:6px;background:#050908;padding:3px;height:190px;width:200px;box-shadow:inset 0 0 14px #000}
#minimap{width:190px;height:190px;display:block;cursor:pointer;image-rendering:auto}
#herocard{display:flex;flex-direction:column;gap:4px;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;cursor:pointer}
#herocard:hover{border-color:var(--gold2)}
#heroport,#selport{width:64px;height:64px;border-radius:8px;background:#06100d;border:1px solid var(--line)}
#heroinfo{font-size:12px}
#heroinfo b{font-size:14px}#heroinfo em{color:var(--gold);font-style:normal;font-size:11px;margin-left:4px}
.bar{position:relative;height:8px;background:#0a1210;border:1px solid #243a32;border-radius:4px;margin-top:4px;overflow:hidden}
.bar i{display:block;height:100%}
.bar.hp i{background:linear-gradient(90deg,#2fbf63,#8ee06a)}.bar.sh i{background:linear-gradient(90deg,#2f8fd0,#8fdcff)}.bar.xp i{background:linear-gradient(90deg,#b8862c,#ffd36b)}
.bar span{position:absolute;inset:0;font-size:9px;line-height:8px;text-align:center;color:#fff;text-shadow:0 0 3px #000}
.bar:has(span){height:13px}.bar span{line-height:12px;font-size:10px}
.rev{color:var(--warn);margin-top:6px}
#selpanel{display:grid;grid-template-columns:70px 1fr;gap:8px;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}
#selinfo{font-size:12px;min-width:0;overflow:hidden}
#selinfo h3{font-size:15px;margin-bottom:3px}
#selinfo .muted,.muted{color:var(--mut)}
#selinfo .warn,.warn{color:var(--warn)}
#selinfo .rq{margin:5px 0;display:flex;flex-direction:column;gap:2px;font-size:12px}#selinfo .rq span{padding:2px 6px;background:#0a1210;border-left:3px solid #4b82ad;border-radius:0 4px 4px 0}#selinfo .rq .run{border-color:var(--cyan);color:#d8f4ff}#selinfo .rq .wait{border-color:var(--warn);color:#ffe2b0}
#selinfo .roster{margin:5px 0;line-height:1.5}#selinfo .roster span{display:inline-block;margin-right:4px}#selinfo .roster .off{color:#7a5a50;text-decoration:line-through}
.multi{display:flex;flex-wrap:wrap;gap:3px;margin:4px 0;max-height:80px;overflow:hidden}
.multi i{width:22px;height:22px;border-radius:4px;border:2px solid var(--c);background:linear-gradient(to top,#2fbf63 var(--h),#1a2420 var(--h));font-style:normal;font-size:10px;font-weight:800;text-align:center;line-height:18px}

#card{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);gap:5px;padding:7px;background:var(--panel);border:1px solid var(--line);border-radius:8px}
.cbtn{position:relative;border-radius:7px;border:1px solid #38564a;background:linear-gradient(#1c3029,#0f1b17);cursor:pointer;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:filter .1s}
.cbtn:hover:not(.empty){filter:brightness(1.35);border-color:var(--gold)}
.cbtn.empty{background:#0a110f;border-color:#18261f;cursor:default}
.cbtn .lbl{font-size:17px;font-weight:800;letter-spacing:.03em;color:#eaf6ef;text-shadow:0 1px 3px #000;z-index:1}
.cbtn .hk{position:absolute;top:2px;left:4px;font-size:11px;font-weight:800;color:var(--gold);z-index:2}
.cbtn .cost{position:absolute;bottom:2px;right:4px;font-size:11px;font-weight:700;color:#ffe49a;z-index:2}
.cbtn .cnt{position:absolute;bottom:2px;left:4px;font-size:10px;color:var(--mut);z-index:2}
.cbtn .cd{position:absolute;left:0;right:0;bottom:0;height:0;background:#000b;z-index:1}
.cbtn .prog{position:absolute;left:0;bottom:0;height:5px;width:0;background:var(--cyan);z-index:3}
.cbtn.off{filter:saturate(.35) brightness(.7)}
.cbtn.locked{border-color:#6a2a24;background:linear-gradient(#2a1412,#150b0a)}
.cbtn.locked .lbl{color:#c78}
.cbtn.t-hero{background:linear-gradient(#26402f,#12231a);border-color:#4f8a63}
.cbtn.t-special{background:linear-gradient(#3b2a52,#1a1226);border-color:#7d5bb8}
.cbtn.t-build{background:linear-gradient(#3a3320,#1b1710);border-color:#8a7a3c}
.cbtn.t-upgrade{background:linear-gradient(#1f3548,#0e1b26);border-color:#4b82ad}
.cbtn.done{border-color:var(--good)}.cbtn.done .cost{color:var(--good)}
.cbtn.act{outline:2px solid var(--gold)}
.cbtn.going{animation:pulse 1s infinite}

#tip{position:fixed;display:none;width:280px;background:#0b1311f5;border:1px solid var(--gold2);border-radius:8px;padding:9px 11px;font-size:12px;z-index:50;pointer-events:none;box-shadow:0 8px 24px #000c}
#tip h4{font-size:14px;color:var(--gold);display:flex;justify-content:space-between;margin-bottom:3px}#tip .tc{color:#ffe49a}
#tip p{color:#d6e3dc;margin-bottom:4px;line-height:1.35}#tip .tl{color:var(--mut);margin-top:2px}#tip .tl.warn{color:var(--warn)}

/* ------------------------------------------------------------ Overlays ---- */
.overlay{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:20;background:rgba(3,7,6,.82);backdrop-filter:blur(4px)}
.overlay.show{display:flex}
.box{background:linear-gradient(#142420,#0b1311);border:1px solid #3a5a4d;border-radius:14px;padding:26px 34px;min-width:340px;max-width:92vw;box-shadow:0 20px 60px #000c;text-align:center}
.box.wide{max-width:960px;text-align:left}
.box h1{letter-spacing:.2em;font-size:32px;margin-bottom:14px;color:var(--gold)}
.box h1.win{color:var(--good);text-shadow:0 0 30px #3f9}.box h1.lose{color:var(--bad)}
.box h4{color:var(--gold);margin:12px 0 6px}.box ul{list-style:none;line-height:1.7;font-size:14px}.box li{margin-bottom:3px}
.box .cols{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.btns{display:flex;gap:10px;justify-content:center;margin-top:16px}.btns.col{flex-direction:column}
.box button,.actions button,.seg button{background:#17261f;color:var(--txt);border:1px solid #3f5f52;padding:10px 20px;border-radius:8px;font-size:15px;font-weight:700;transition:.15s}
.box button:hover,.actions button:hover,.seg button:hover{border-color:var(--gold);color:#fff;transform:translateY(-1px)}
button.primary{background:linear-gradient(var(--gold),var(--gold2))!important;color:#16110a!important;border-color:var(--gold)!important;letter-spacing:.1em}
#endscreen table{width:100%;border-collapse:collapse;margin:8px 0;font-size:14px}
#endscreen th{color:var(--mut);font-weight:600;padding:4px 10px;text-align:left}#endscreen td{padding:5px 10px;border-top:1px solid #20332d;text-align:left}
#endscreen tr.alive td{color:var(--good)}#endscreen td i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px}

#menu{background:radial-gradient(ellipse at 30% 10%,#17382d 0%,#09120f 55%,#040807 100%);backdrop-filter:none;align-items:flex-start;overflow:auto}
#menu::before{content:"";position:absolute;inset:0;pointer-events:none;background:
  radial-gradient(2px 2px at 20% 30%,#fff8,transparent),radial-gradient(1.5px 1.5px at 70% 20%,#fff6,transparent),radial-gradient(2px 2px at 85% 70%,#9fe,transparent),
  radial-gradient(1.5px 1.5px at 40% 80%,#fff6,transparent),radial-gradient(1px 1px at 10% 60%,#fff8,transparent),radial-gradient(1.5px 1.5px at 55% 45%,#ffd36b88,transparent)}
.menu-inner{position:relative;width:min(1240px,96vw);margin:0 auto;padding:22px 0 30px}
header{text-align:center;margin-bottom:18px}
.logo{font-size:clamp(46px,8vw,92px);font-weight:900;letter-spacing:.22em;background:linear-gradient(#fff3c9,#ffd36b 45%,#b87a1a);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 24px #ffb43e66);line-height:1}
.sub{letter-spacing:.18em;color:var(--mut);font-size:13px;text-transform:uppercase;margin-top:6px}
.menu-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:26px;align-items:start}
@media(max-width:980px){.menu-grid{grid-template-columns:1fr}}
.sec{font-size:13px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:16px 0 8px}
#fcards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.fcard{--a:#fff;--g:#fff;text-align:center;padding:12px 8px;border-radius:12px;background:linear-gradient(#13231e,#0b1411);border:1px solid #2c443d;cursor:pointer;transition:.18s;position:relative;overflow:hidden}
.fcard:hover{transform:translateY(-3px);border-color:var(--a)}
.fcard.sel{border-color:var(--a);box-shadow:0 0 0 1px var(--a),0 0 30px -4px var(--g);background:linear-gradient(#1a3029,#0e1a16)}
.fcard canvas{width:84px;height:84px}
.fcard h3{color:var(--a);font-size:17px;margin-top:2px}.fcard em{display:block;font-style:normal;font-size:11px;color:var(--mut);letter-spacing:.06em}.fcard p{font-size:12px;color:#c9d8d0;margin-top:5px;font-style:italic}
.seg{display:flex;gap:8px;flex-wrap:wrap}.seg button{flex:1;min-width:130px;display:flex;flex-direction:column;align-items:center}.seg button small{font-weight:400;font-size:11px;color:var(--mut)}
.seg button.on{background:#264536;border-color:var(--gold);color:#fff;box-shadow:0 0 16px -4px var(--gold)}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.actions .primary{flex:2;font-size:18px;padding:14px 24px}.actions button{flex:1}
#fdetail{background:linear-gradient(#10201bcc,#0a1311cc);border:1px solid #2c443d;border-radius:14px;padding:18px 20px;font-size:13px;line-height:1.45}
#fdetail h2{font-size:24px;letter-spacing:.06em;margin-bottom:6px}
#fdetail .blurb{color:#cfe0d7;margin-bottom:8px}
#fdetail h4{color:var(--gold);letter-spacing:.1em;text-transform:uppercase;font-size:11px;margin:12px 0 4px}
.pc{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pc ul{list-style:none}.pro li::before{content:"+ ";color:var(--good);font-weight:800}.con li::before{content:"− ";color:var(--bad);font-weight:800}
.abl{list-style:none}.abl li{padding:3px 0;border-top:1px solid #1b2c26}.abl b{display:inline-block;min-width:22px;color:var(--gold)}.abl span{display:block;color:var(--mut);font-size:12px;margin-left:24px}.abl i{color:#a9c4ff;font-style:normal;margin-left:4px}
footer{margin-top:22px;text-align:center;color:var(--mut);font-size:12px}
