:root{--ink:#2d3047;--cream:#fff8ee;--zone:#5cc98a;--infra:#9aa3b5;--svc:#5aa9f0;--special:#f2b632;--event:#b07de8;--red:#ff5d5d}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
html,body{margin:0;height:100%;overflow:hidden;font-family:'Fredoka',sans-serif;color:var(--ink);background:#bfe6f0}
#scene-container{position:fixed;inset:0}
button{font-family:inherit;cursor:pointer;border:none;color:var(--ink)}
.hidden{display:none!important}
.glass{background:rgba(255,255,255,.62);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:16px;box-shadow:0 6px 20px rgba(40,60,90,.18);border:1px solid rgba(255,255,255,.7)}
#hud{position:fixed;top:10px;left:50%;transform:translateX(-50%);display:flex;gap:10px;padding:6px 12px;z-index:5;max-width:calc(100% - 70px);flex-wrap:wrap;justify-content:center}
.stat{display:flex;align-items:center;gap:4px;font-size:15px}
.stat b{font-weight:700;min-width:22px}
.stat.bump{animation:bump .4s}
@keyframes bump{50%{transform:scale(1.25)}}
.meter{width:40px;height:8px;background:#0002;border-radius:4px;overflow:hidden}
.meter i{display:block;height:100%;background:linear-gradient(90deg,#ff7a7a,#ffd25a,#5cc98a);width:50%;transition:width .4s}
.round{position:fixed;top:10px;right:10px;width:40px;height:40px;border-radius:50%;font-size:18px;z-index:6}
#energy{position:fixed;left:12px;bottom:178px;display:flex;gap:4px;z-index:5}
#energy i{width:26px;height:26px;border-radius:50%;background:#ffd84a;box-shadow:0 2px 0 #c99a10,0 0 10px #ffd84a;display:grid;place-items:center;font-style:normal;font-size:13px}
#energy i.off{background:#ccc;box-shadow:0 2px 0 #999}
#hint{position:fixed;top:58px;left:50%;transform:translateX(-50%);padding:6px 14px;font-size:14px;z-index:5;white-space:nowrap}
#tooltip{position:fixed;top:96px;left:50%;transform:translateX(-50%);padding:8px 14px;font-size:13px;z-index:5;text-align:center;max-width:260px}
#toast{position:fixed;top:-120px;left:50%;transform:translateX(-50%);padding:10px 16px;z-index:20;font-size:14px;max-width:92%;transition:top .45s cubic-bezier(.3,1.5,.6,1);text-align:center}
#toast.show{top:60px}
#floaters{position:fixed;inset:0;pointer-events:none;z-index:7}
.floater{position:absolute;font-weight:700;font-size:16px;animation:floatUp 1.2s forwards;text-shadow:0 1px 0 #fff}
@keyframes floatUp{to{transform:translateY(-36px);opacity:0}}
#hand{position:fixed;bottom:0;left:0;right:0;height:170px;display:flex;justify-content:center;align-items:flex-end;padding-bottom:14px;z-index:5;pointer-events:none}
.card{pointer-events:auto;width:92px;height:134px;margin:0 -8px;border-radius:12px;background:var(--cream);border:4px solid var(--c);box-shadow:0 6px 14px rgba(0,0,0,.22);position:relative;transition:transform .2s,box-shadow .2s;transform-origin:bottom center;padding:4px;display:flex;flex-direction:column;align-items:center;animation:dealIn .4s backwards}
@keyframes dealIn{from{transform:translateY(120px) rotate(10deg);opacity:0}}
.card .cost{position:absolute;top:-8px;left:-8px;background:var(--ink);color:#fff;border-radius:10px;padding:1px 5px;font-size:11px;font-weight:700;line-height:1.3}
.card .art{width:100%;height:46px;border-radius:7px;background:linear-gradient(135deg,var(--c),#fff);display:grid;place-items:center;font-size:28px}
.card .nm{font-weight:700;font-size:12px;margin-top:3px;text-align:center;line-height:1}
.card .ds{font-size:9.5px;text-align:center;line-height:1.1;margin-top:2px}
.card .fl{font-size:8.5px;opacity:.6;font-style:italic;text-align:center;margin-top:auto;line-height:1}
.card.sel{transform:translateY(-34px) scale(1.08)!important;box-shadow:0 0 0 3px #fff,0 0 22px var(--c);z-index:3}
.card.dis{filter:grayscale(.9) brightness(.85)}
.card.shake{animation:shake .35s}
@keyframes shake{25%{margin-left:-14px}75%{margin-left:-2px}}
.zone{--c:var(--zone)}.infra{--c:var(--infra)}.svc{--c:var(--svc)}.special{--c:var(--special)}.event{--c:var(--event)}
#endTurn{position:fixed;right:12px;bottom:180px;width:74px;height:74px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ff9d6c,#f0613f);color:#fff;font-weight:700;font-size:14px;line-height:1.05;box-shadow:0 5px 0 #b8432a,0 8px 18px rgba(0,0,0,.25);z-index:6}
#endTurn:active{transform:translateY(3px);box-shadow:0 2px 0 #b8432a}
#endTurn.pulse{animation:pulse 1s infinite}
@keyframes pulse{50%{transform:scale(1.1);box-shadow:0 5px 0 #b8432a,0 0 30px #ff9d6c}}
.pile{position:fixed;bottom:180px;width:46px;height:46px;font-size:18px;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.pile span{font-size:12px;font-weight:700}
#deckBtn{left:12px;bottom:216px}#discardBtn{left:64px;bottom:216px}
#disaster{position:fixed;inset:0;display:grid;place-items:center;background:rgba(80,0,0,.25);z-index:30;perspective:800px}
.dcard{width:200px;height:280px;border-radius:18px;background:linear-gradient(160deg,#ff6b6b,#a01818);color:#fff;border:6px solid #fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;text-align:center;animation:flip .7s;box-shadow:0 20px 50px rgba(0,0,0,.4)}
@keyframes flip{from{transform:rotateY(180deg) scale(.4)}}
.dicon{font-size:64px}.dtitle{font-size:24px;font-weight:700;margin:8px 0}.dtext{font-size:14px}
#modal{position:fixed;inset:0;background:rgba(30,40,60,.35);display:grid;place-items:center;z-index:25}
.mbox{width:min(420px,92vw);max-height:86vh;overflow:auto;padding:18px;text-align:center;background:rgba(255,250,240,.92)}
.mbox h2{margin:4px 0 10px;font-size:26px}
.draft{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:10px 0}
.draft .card{margin:0;animation:holo 2s infinite,dealIn .5s backwards;cursor:pointer}
@keyframes holo{0%,100%{box-shadow:0 0 12px #ff9ad5,0 6px 14px #0003}33%{box-shadow:0 0 16px #9ae6ff,0 6px 14px #0003}66%{box-shadow:0 0 16px #fff59a,0 6px 14px #0003}}
.big{display:block;width:230px;margin:8px auto;padding:13px;font-size:20px;font-weight:700;border-radius:16px;background:#ffd84a;box-shadow:0 5px 0 #c99a10;transition:transform .1s}
.big:active{transform:translateY(3px);box-shadow:0 2px 0 #c99a10}
.big.alt{background:#7fd6a8;box-shadow:0 5px 0 #3e9b6a}
.big.ghost{background:#fff;box-shadow:0 5px 0 #c9c3b5}
#title{position:fixed;inset:0;z-index:15;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:40px 16px 18px;background:linear-gradient(180deg,rgba(255,248,238,.5),transparent 40%,transparent 60%,rgba(255,248,238,.6))}
.logo{text-align:center;animation:dropIn .8s cubic-bezier(.3,1.6,.6,1)}
@keyframes dropIn{from{transform:translateY(-200px)}}
.logo span{display:inline-block;font-size:64px;font-weight:700;line-height:.9;padding:6px 14px;border-radius:16px;margin:4px;color:#fff;text-shadow:0 4px 0 rgba(0,0,0,.15)}
.l1{background:#f0613f;transform:rotate(-5deg);box-shadow:0 6px 0 #b8432a}
.l2{background:#5aa9f0;transform:rotate(4deg);box-shadow:0 6px 0 #2f78bd}
.logo small{display:block;margin-top:14px;font-size:14px;background:#fff9;padding:4px 10px;border-radius:10px}
.tbtns{animation:dropIn 1s .1s backwards cubic-bezier(.3,1.6,.6,1)}
.best{font-size:14px;background:#fff9;padding:3px 10px;border-radius:10px}
.remix{color:var(--ink);font-size:12px;opacity:.75}
.lb{text-align:left;font-size:14px;margin:10px 0}
.lb div{display:flex;justify-content:space-between;padding:4px 8px;border-bottom:1px dashed #0002}
.stars{font-size:44px;letter-spacing:4px}
.stars span{display:inline-block;animation:dropIn .5s backwards}
.snap{width:100%;border-radius:12px;margin:8px 0}
.list{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.chip{padding:4px 8px;border-radius:8px;background:var(--c);color:#fff;font-size:13px}
.mbtn{padding:10px 18px;border-radius:12px;background:#ffd84a;font-weight:700;font-size:16px;margin:4px;box-shadow:0 3px 0 #c99a10}
@media (max-width:420px){.card{width:80px;height:122px;margin:0 -10px}.card .art{height:38px;font-size:24px}.card .ds{font-size:8.5px}#hud{gap:6px;font-size:13px}.stat{font-size:13px}.meter{width:28px}.logo span{font-size:52px}}