:root{
  --navy:#0b3d91; --navy2:#082a66; --grass:#2fae4e; --grass2:#24903f; --gold:#ffc83d; --red:#e8414d;
  --cell:48px; --gap:4px;
  --baseball:#ffe0e0; --basketball:#ffe2c4; --football:#e9d8c8; --soccer:#d9f5df;
  --baseball-b:#e8414d; --basketball-b:#ff8a1f; --football-b:#8a5a32; --soccer-b:#1f9d55;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--navy2);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Rounded","Segoe UI",Roboto,sans-serif;color:#13203a}
body{position:fixed;inset:0}
button{font:inherit;border:0;cursor:pointer;touch-action:manipulation}
#app{position:absolute;inset:0;display:flex;flex-direction:column;
  background:linear-gradient(180deg,#1d64d8 0%,#2a7be4 38%,var(--grass) 38%,var(--grass2) 100%)}
#hud{display:flex;gap:6px;justify-content:space-between;align-items:center;padding:calc(env(safe-area-inset-top) + 6px) 8px 6px;background:var(--navy);box-shadow:0 2px 0 rgba(0,0,0,.2)}
.pill{display:flex;align-items:center;gap:4px;background:rgba(255,255,255,.14);color:#fff;font-weight:800;border-radius:20px;padding:4px 10px;font-size:16px;min-height:32px;position:relative}
.pill .ic{font-size:16px}
.pill .sub{font-size:10px;font-weight:600;opacity:.8;min-width:28px}
.xpbar{width:44px;height:6px;border-radius:4px;background:rgba(255,255,255,.25);overflow:hidden;margin-left:4px}
#xpfill{height:100%;width:0;background:var(--gold);transition:width .3s}
.mini{background:var(--gold);color:#3a2a00;width:24px;height:24px;border-radius:50%;font-weight:900;font-size:16px;line-height:24px;padding:0;margin-left:2px}
.bump{animation:bump .35s}
@keyframes bump{50%{transform:scale(1.18)}}

.view{display:none;flex:1;min-height:0}
.view.active{display:flex;flex-direction:column}

/* Orders */
#orders{display:flex;gap:6px;padding:8px 8px 4px;overflow-x:auto;flex:0 0 auto}
.order{flex:1 1 0;min-width:0;background:#fff;border-radius:14px;padding:6px;box-shadow:0 3px 0 rgba(0,0,0,.18);display:flex;flex-direction:column;align-items:center;gap:3px;position:relative}
.order .fan{display:block;text-overflow:ellipsis;align-items:center;gap:4px;font-size:11px;font-weight:800;white-space:nowrap;overflow:hidden;max-width:100%}
.order .fan .face{font-size:18px;vertical-align:middle;margin-right:2px}
.order .needs{display:flex;gap:4px;justify-content:center;margin-bottom:3px}
.need{flex:0 0 auto;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;position:relative;border:2px solid transparent}
.need .lv{position:absolute;bottom:-5px;right:-4px;background:var(--navy);color:#fff;font-size:8px;font-weight:800;border-radius:6px;padding:0 3px}
.need.have{border-color:var(--grass)}
.need.have::after{content:"✓";position:absolute;top:-6px;left:-5px;background:var(--grass);color:#fff;font-size:9px;font-weight:900;border-radius:50%;width:14px;height:14px;line-height:14px;text-align:center}
.serve{background:#d5dbe6;color:#76829a;border-radius:10px;font-size:12px;font-weight:900;padding:4px 0;width:100%}
.serve.ready{background:var(--grass);color:#fff;box-shadow:0 2px 0 var(--grass2);animation:pulse 1.2s infinite}
.order .reward{font-size:10px;font-weight:700;color:#5a6478}
.order.leaving{animation:leave .4s forwards}
.order.arriving{animation:arrive .35s}
@keyframes leave{to{transform:translateY(-30px) scale(.8);opacity:0}}
@keyframes arrive{from{transform:translateY(-20px);opacity:0}}
@keyframes pulse{50%{transform:scale(1.05)}}

/* Board */
#boardWrap{flex:1;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:4px}
#board{display:grid;grid-template-columns:repeat(7,var(--cell));grid-auto-rows:var(--cell);gap:var(--gap);padding:6px;border-radius:16px;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 calc(var(--cell) + var(--gap)),transparent 0 calc(2*(var(--cell) + var(--gap)))),#1e7f39;
  box-shadow:inset 0 0 0 3px rgba(255,255,255,.35),0 4px 0 rgba(0,0,0,.2)}
.cell{width:var(--cell);height:var(--cell);border-radius:10px;background:rgba(255,255,255,.12);position:relative;display:flex;align-items:center;justify-content:center}
.cell.target{background:rgba(255,230,120,.55);box-shadow:0 0 0 2px var(--gold)}
.cell-item{width:100%;height:100%;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;box-shadow:0 2px 0 rgba(0,0,0,.25);border-bottom:3px solid rgba(0,0,0,.12)}
.cell-item .em{font-size:calc(var(--cell)*.52);line-height:1}
.cell-item .lv{position:absolute;top:1px;right:3px;font-size:9px;font-weight:900;color:rgba(0,0,0,.55)}
.cell-item .nm{font-size:7.5px;font-weight:800;color:rgba(0,0,0,.6);white-space:nowrap;overflow:hidden;max-width:96%;text-overflow:ellipsis;margin-top:1px}
.sp-baseball{background:var(--baseball)} .sp-basketball{background:var(--basketball)}
.sp-football{background:var(--football)} .sp-soccer{background:var(--soccer)}
.cell-item.gen{background:linear-gradient(160deg,#fff7d1,#ffd65a);border:2px solid #e0a800}
.cell-item.gen .em{font-size:calc(var(--cell)*.48)}
.cell-item.gen .tag{position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);font-size:7px;font-weight:900;background:var(--navy);color:#fff;border-radius:6px;padding:0 4px;white-space:nowrap}
.cell-item.max{box-shadow:0 0 0 2px var(--gold),0 2px 0 rgba(0,0,0,.25)}
.cell-item.wanted::before{content:"★";position:absolute;top:-4px;left:-3px;font-size:12px;color:var(--gold);text-shadow:0 1px 0 #7a5a00}
.cell.selected .cell-item{outline:3px solid #fff;outline-offset:-1px}
.cell.dragging .cell-item{opacity:.3}
.cell-item.pop{animation:pop .3s}
.cell-item.spawn{animation:spawn .3s}
@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.2)}100%{transform:scale(1)}}
@keyframes spawn{from{transform:scale(.2) translateY(10px);opacity:.2}}
.cell-item.hint{animation:hint 1s infinite}
@keyframes hint{50%{transform:scale(1.1);box-shadow:0 0 0 4px #fff}}
#ghost{position:fixed;left:0;top:0;width:var(--cell);height:var(--cell);pointer-events:none;z-index:50;transform:translate(-9999px,-9999px) scale(1.15);opacity:.95}

#infoBar{flex:0 0 auto;margin:0 8px 6px;background:rgba(0,0,0,.28);color:#fff;border-radius:12px;padding:4px 10px;font-size:12px;line-height:1.25;font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:8px;height:42px;overflow:hidden}
#infoText{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#sellBtn{background:var(--gold);color:#3a2a00;font-weight:900;border-radius:10px;padding:6px 10px;font-size:12px;white-space:nowrap}
.hidden{display:none!important}

/* Tabs */
#tabs{display:flex;background:var(--navy);padding:4px 8px calc(env(safe-area-inset-bottom) + 4px)}
.tab{flex:1;background:transparent;color:rgba(255,255,255,.6);font-weight:800;font-size:12px;display:flex;flex-direction:column;align-items:center;padding:4px;border-radius:12px;position:relative}
.tab span{font-size:22px}
.tab.active{color:#fff;background:rgba(255,255,255,.12)}
.badge{position:absolute;top:2px;right:30%;background:var(--red);color:#fff;border-radius:50%;width:16px;height:16px;font-size:11px;line-height:16px}

/* Build */
#buildView{overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:10px 10px 20px;background:linear-gradient(180deg,#eef4ff,#dfe9fb)}
.buildHead h2{margin:4px 0 2px;font-size:19px;color:var(--navy)}
.buildHead p{margin:0 0 10px;font-size:12px;color:#55607a;font-weight:600}
.area{background:#fff;border-radius:16px;padding:10px;margin-bottom:10px;box-shadow:0 3px 0 rgba(0,0,0,.08)}
.area h3{margin:0 0 2px;font-size:15px;display:flex;align-items:center;gap:6px}
.area .desc{font-size:11.5px;color:#5a6478;margin:0 0 8px}
.prog{height:6px;border-radius:4px;background:#e3e8f2;overflow:hidden;margin-bottom:8px}
.prog div{height:100%;background:var(--grass)}
.task{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid #eef1f6}
.task .t-em{font-size:22px;width:30px;text-align:center}
.task .t-main{flex:1;min-width:0}
.task .t-name{font-weight:800;font-size:13px}
.task .t-eff{font-size:11px;color:#2a7a3e;font-weight:700}
.task button{border-radius:10px;padding:7px 10px;font-weight:900;font-size:12px;white-space:nowrap}
.task .buy{background:var(--gold);color:#3a2a00;box-shadow:0 2px 0 #c99a10}
.task .buy:disabled{background:#e3e8f2;color:#9aa3b5;box-shadow:none}
.task.done{opacity:.55}
.task.done .t-name::after{content:" ✅"}
.task.locked{opacity:.45}
.settings{display:flex;gap:8px;justify-content:center;margin-top:8px}
.ghost{background:#fff;color:var(--navy);border-radius:10px;padding:8px 12px;font-weight:800;font-size:13px}
.danger{background:#ffe1e3;color:var(--red);border-radius:10px;padding:8px 12px;font-weight:800;font-size:13px}

/* Toast + overlay */
#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 120px);transform:translateX(-50%);background:#13203a;color:#fff;font-weight:800;font-size:13px;padding:8px 14px;border-radius:14px;z-index:60;box-shadow:0 4px 12px rgba(0,0,0,.3);max-width:90vw;text-align:center}
.overlay{position:fixed;inset:0;background:rgba(5,15,40,.6);display:flex;align-items:center;justify-content:center;z-index:70;padding:20px}
.card{background:#fff;border-radius:20px;padding:20px;max-width:340px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.bigEmoji{font-size:54px}
.card h3{margin:6px 0;color:var(--navy);font-size:20px}
.card p{margin:0 0 12px;font-size:14px;color:#3d4760;line-height:1.4}
.dots{display:flex;gap:6px;justify-content:center;margin-bottom:12px}
.dots i{width:7px;height:7px;border-radius:50%;background:#d0d6e2}
.dots i.on{background:var(--navy)}
.primary{background:var(--grass);color:#fff;font-weight:900;font-size:16px;border-radius:14px;padding:10px 30px;box-shadow:0 3px 0 var(--grass2)}
.floater{position:fixed;z-index:55;pointer-events:none;font-weight:900;color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.4);font-size:15px;animation:floatUp .9s forwards}
@keyframes floatUp{to{transform:translateY(-50px);opacity:0}}

#playView,#hud,#tabs,.overlay{touch-action:none}
#orders.orders4 .need{flex:0 0 auto;width:25px;height:25px;font-size:15px}
#orders.orders4 .order .fan .face{font-size:16px}
