/* FISH vs SHARKS — cartoony Bloons-TD flash style */
@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@600;700;800&family=Bangers&display=swap');
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --ink:#08324a; --outline:#0b2a3d;
  --aqua:#2fd4f2; --deep:#0a6aa8; --sand:#ffe9a3; --sand-dark:#e6c76a;
  --gold:#ffcf2e; --coral:#ff6b81; --lime:#7bf59b;
  --th0:#46cdf7; --th1:#1493cf; --th2:#095a94; --ths:#ffe9a3; --the:#0b2a3d;
}
body{
  font-family:"Baloo 2","Comic Sans MS","Chalkboard SE",system-ui,sans-serif;
  background:#0a3a5c;
  background-image:radial-gradient(circle at 10% 10%, #46cdf7 0 60px, transparent 61px),
    radial-gradient(circle at 90% 20%, #46cdf7 0 80px, transparent 81px),
    radial-gradient(circle at 20% 90%, #1493cf 0 90px, transparent 91px),
    linear-gradient(180deg,#46cdf7 0%, #1493cf 60%, #095a94 100%);
  min-height:100vh; color:var(--ink); overflow-x:hidden;
}
/* floating bg emoji */
.page-fish{position:fixed;font-size:3rem;opacity:.5;z-index:0;pointer-events:none;animation:bob 4s ease-in-out infinite}
.fish1{top:8%;left:3%}.fish2{bottom:10%;left:6%;animation-delay:1s}.fish3{top:12%;right:4%;font-size:4rem;animation-delay:2s}
@keyframes bob{50%{transform:translateY(-16px) rotate(-8deg)}}

.flash-wrap{position:relative;z-index:1;max-width:1600px;margin:14px auto 20px;background:#c9efff;border:4px solid var(--outline);border-radius:26px;box-shadow:0 10px 0 var(--outline), 0 22px 50px rgba(0,0,0,.4);overflow:hidden}

/* TOP HUD */
.top-hud{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:linear-gradient(180deg,#fff8d6,#ffe27a);background:linear-gradient(180deg,color-mix(in srgb, var(--th0,#46cdf7) 32%, #fff),color-mix(in srgb, var(--th1,#1493cf) 32%, #fff));border-bottom:4px solid var(--outline);padding:10px 14px}
.logo-bubble{display:flex;align-items:center;gap:10px;background:#fff;border:3px solid var(--outline);border-radius:18px;padding:6px 14px;box-shadow:3px 3px 0 var(--outline);font-size:1.6rem}
.logo-bubble span{font-weight:800;font-size:1.2rem;letter-spacing:.02em;color:#0a5c96;-webkit-text-stroke:.5px var(--outline)}
.logo-bubble small{display:block;font-size:.65rem;color:#5b7a8d;line-height:1}
.counters{display:flex;gap:8px;flex-wrap:wrap}
.counter{background:#fff;border:3px solid var(--outline);border-radius:999px;padding:5px 14px;font-weight:800;box-shadow:2px 2px 0 var(--outline);font-size:1rem;min-width:86px;text-align:center;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.counter b{display:inline-block;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;min-width:3ch;text-align:center}
.counter.cash{min-width:112px}.counter.cash b{min-width:4ch}
.counter.round{min-width:104px}.counter.round b{min-width:5ch}
.counter.left{min-width:96px}.counter.lives{min-width:96px}
.counter.cash{background:#fff7c2}.counter.lives{background:#ffd6dd}.counter.round{background:#d6f9ff}.counter.left{background:#e6ffd6}
.counter.bump{animation:bump .3s ease}
@keyframes bump{50%{transform:scale(1.2) rotate(-3deg)}}
.top-btns{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* chunky flash buttons */
.go-btn{background:linear-gradient(180deg,#ffe45e,#ffb62e);border:3px solid var(--outline);border-radius:16px;padding:10px 22px;font-family:inherit;font-weight:800;font-size:1.15rem;color:#5a3200;cursor:pointer;box-shadow:0 4px 0 var(--outline);text-shadow:0 1px 0 #fff;transition:transform .08s}
.go-btn:hover{transform:scale(1.05) rotate(-1deg)}
.go-btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--outline)}
.go-btn.big{font-size:1.3rem;padding:12px 28px}
.go-btn.pulse{animation:pulse 1s infinite}
@keyframes pulse{50%{transform:scale(1.08)}}
.chunky-btn{background:linear-gradient(180deg,#fff,#cdefff);border:3px solid var(--outline);border-radius:12px;padding:8px 12px;font-family:inherit;font-weight:800;cursor:pointer;box-shadow:0 3px 0 var(--outline)}
.chunky-btn:hover{background:#fff}
.chunky-btn:active{transform:translateY(2px);box-shadow:none}
.chunky-btn.small{font-size:.8rem;padding:5px 10px}
.chunky-btn.active{background:var(--lime)}

/* MAIN — 2 cols: game | shop (>1200px; single-col at ≤1200px) — upgrade is floating map overlay */
.main-row{display:grid;grid-template-columns:minmax(0,1fr) 288px;gap:0}
.game-col{padding:12px;background:linear-gradient(180deg,#aee7ff,#7ed3f7);background:linear-gradient(180deg,color-mix(in srgb, var(--th0,#46cdf7) 26%, #fff),color-mix(in srgb, var(--th1,#1493cf) 30%, #fff));min-width:0}
.up-panel-head{background:#fff;border:3px solid var(--outline);border-radius:12px;padding:6px 10px;font-weight:800;text-align:center;box-shadow:2px 2px 0 var(--outline)}
/* UPGRADE — floating map overlay (top-left inside #canvasWrap) */
.map-overlay-panel{position:absolute;top:8px;left:8px;width:300px;max-height:calc(100% - 70px);overflow-y:auto;z-index:4;background:linear-gradient(180deg,#fff8,#fff);background:linear-gradient(180deg,color-mix(in srgb, var(--th0,#46cdf7) 22%, #ffffffdd),#fff);border:3px solid var(--outline);border-radius:16px;box-shadow:4px 4px 0 var(--outline);padding:10px}
.map-overlay-panel.hidden{display:none}
.up-float-head{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;border:3px solid var(--outline);border-radius:12px;padding:6px 10px;font-weight:800;box-shadow:2px 2px 0 var(--outline);margin-bottom:8px}
#upClose{flex-shrink:0}
.canvas-frame{position:relative;border:4px solid var(--outline);border-radius:18px;overflow:hidden;background:#0a6aa8;box-shadow:inset 0 0 0 4px #fff, 4px 4px 0 var(--outline)}
canvas#game{width:100%;height:auto;display:block;cursor:crosshair;touch-action:none}
.bottom-bar{display:block;margin-top:10px}
.inspect-bar{background:#fff;border:3px solid var(--outline);border-radius:14px;padding:8px 12px;box-shadow:3px 3px 0 var(--outline);min-height:56px;font-size:.92rem}
#inspectBox{font-size:.95rem;min-height:300px;padding:12px 14px;line-height:1.4}
.bottom-right{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:#fff;border:3px solid var(--outline);border-radius:14px;padding:8px 12px;box-shadow:3px 3px 0 var(--outline);font-weight:700}
.muted{color:#5b7a8d}
/* UPGRADE inner (contract with worker B — renderInspect emits these) */
.up-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.up-stats{font-size:.85rem;color:#5b7a8d;margin:4px 0 6px;line-height:1.4}
.up-div{border:none;border-top:3px dashed var(--outline);margin:8px 0;opacity:.6}
.up-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.up-btn{width:100%;text-align:left;font-size:.85rem;padding:8px 12px;line-height:1.3}
.up-btn[title]{cursor:help}
.up-sellzone{margin-top:8px;padding-top:8px;border-top:3px dashed var(--outline);display:flex;gap:8px;flex-wrap:wrap}
#sellBtn.danger{background:linear-gradient(180deg,#fecaca,#f87171);border:3px solid var(--outline);border-radius:12px;padding:5px 10px;font-size:.8rem;font-weight:800;cursor:pointer;box-shadow:0 3px 0 var(--outline);opacity:.85}
#sellBtn.danger:hover{opacity:1}
#sellBtn.armed{background:linear-gradient(180deg,#ef4444,#b91c1c);color:#fff;text-shadow:1px 1px 0 var(--outline);opacity:1;animation:armPulse .7s infinite}
@keyframes armPulse{50%{transform:scale(1.06);box-shadow:0 3px 0 var(--outline),0 0 14px #ef4444}}
.stance-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}

/* SHOP */
.shop-col{background:linear-gradient(180deg,#ffedb0,#ffcf5e);background:linear-gradient(180deg,color-mix(in srgb, var(--ths,#ffedb0) 55%, #fff),color-mix(in srgb, var(--th1,#ffcf5e) 38%, #fff));border-left:4px solid var(--outline);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:0;max-height:calc(100vh - 190px);overflow:hidden}
.shop-title{background:#fff;border:3px solid var(--outline);border-radius:12px;padding:6px 10px;font-weight:800;text-align:center;box-shadow:2px 2px 0 var(--outline)}
.shop-title small{display:block;font-size:.7rem;color:#5b7a8d}
.shop-list{display:grid;gap:10px;grid-auto-rows:max-content;justify-items:stretch;align-content:start;min-height:0;max-height:52vh;overflow-y:auto;overscroll-behavior:contain;padding-right:6px;scrollbar-gutter:stable;flex:1}
#shopList::-webkit-scrollbar{width:12px}
#shopList::-webkit-scrollbar-track{background:#fff6d8;border:2px solid #0b2a3d;border-radius:999px}
#shopList::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#2fd4f2,#0a6aa8);border:2px solid #0b2a3d;border-radius:999px}
#shopList{scrollbar-width:thin;scrollbar-color:#0a6aa8 #fff6d8}
.shop-card{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:6px;align-items:center;background:linear-gradient(180deg,#fff,#fff6d8);border:3px solid var(--outline);border-radius:16px;padding:7px 8px;cursor:pointer;box-shadow:3px 3px 0 var(--outline);font-family:inherit;text-align:left;transition:transform .1s;position:relative;overflow:hidden;line-height:1.25}
.shop-card > div:nth-child(2){min-width:0;align-self:center}
.shop-card b,.shop-card small{min-width:0;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}
.shop-card:hover{transform:translateY(-2px) scale(1.03)}
.shop-card:active{transform:translateY(1px) scale(.98)}
.shop-card.selected{outline:4px solid var(--aqua);background:#e8fbff;animation:selPulse 1.1s infinite}
@keyframes selPulse{50%{box-shadow:3px 3px 0 var(--outline),0 0 0 5px var(--aqua),0 0 18px var(--aqua)}}
.shop-card.disabled{opacity:.55;filter:grayscale(.8)}
.shop-card[data-key="clown"]{border-color:#9fb3c8}
.shop-card[data-key="tuna"]{border-color:#16a34a}
.shop-card[data-key="urchin"]{border-color:#4b5563}
.shop-card[data-key="puffer"]{border-color:#0284c7}
.shop-card[data-key="turtle"]{border-color:#7c3aed}
.shop-card[data-key="eel"]{border-color:#b45309}
.shop-card[data-key="banker"]{border-color:#a16207}
.shop-card[data-key="bard"]{border-color:#6366f1}
.shop-card[data-key="mantis"]{border-color:#e11d48}
.shop-card[data-key="octopus"]{border-color:#7c3aed}
.shop-card[data-key="ink"]{border-color:#6d28d9}
.shop-face{position:relative;overflow:hidden;isolation:isolate;font-size:1.6rem;border:3px solid var(--outline);border-radius:14px;width:56px;height:56px;flex-shrink:0;display:grid;place-items:center;box-shadow:inset 0 2px 0 rgba(255,255,255,.55),inset 0 -3px 0 rgba(0,0,0,.12),2px 2px 0 var(--outline);text-shadow:0 3px 0 rgba(11,42,61,.35),0 0 12px rgba(255,255,255,.5);font-family:"Baloo 2","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji",serif;filter:saturate(1.25) contrast(1.05) drop-shadow(0 3px 0 rgba(11,42,61,.25));align-self:center;justify-self:center;line-height:1;padding:0;text-align:center;vertical-align:middle}
.shop-face::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.35) 0%,rgba(255,255,255,.08) 38%,transparent 52%);border-radius:12px}
.face-img{width:100%;height:100%;object-fit:contain;display:block}
.face-glyph{font-family:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji",serif;line-height:1;display:inline-block}
.shop-card[data-key="clown"] .shop-face{background:radial-gradient(circle at 30% 25%,#fff3c4 0%,#ffb703 55%,#b45309 100%)}
.shop-card[data-key="tuna"] .shop-face{background:radial-gradient(circle at 30% 25%,#fffbe0 0%,#ffd93d 55%,#b45309 100%)}
.shop-card[data-key="urchin"] .shop-face{background:radial-gradient(circle at 30% 25%,#e5e7eb 0%,#6b7280 55%,#111827 100%)}
.shop-card[data-key="puffer"] .shop-face{background:radial-gradient(circle at 30% 25%,#ffe8c7 0%,#ff9f1c 55%,#9a3412 100%)}
.shop-card[data-key="turtle"] .shop-face{background:radial-gradient(circle at 30% 25%,#e6ffe9 0%,#7bf59b 55%,#15803d 100%)}
.shop-card[data-key="eel"] .shop-face{background:radial-gradient(circle at 30% 25%,#e0fcff 0%,#2fd4f2 55%,#0a6aa8 100%)}
.shop-card[data-key="banker"] .shop-face{background:radial-gradient(circle at 30% 25%,#fffbe0 0%,#eab308 55%,#713f12 100%)}
.shop-card[data-key="bard"] .shop-face{background:radial-gradient(circle at 30% 25%,#fff 0%,#a5b4fc 55%,#3730a3 100%)}
.shop-card[data-key="mantis"] .shop-face{background:radial-gradient(circle at 30% 25%,#fff 0%,#fb7185 55%,#881337 100%)}
.shop-card[data-key="octopus"] .shop-face{background:radial-gradient(circle at 30% 25%,#fff 0%,#a78bfa 55%,#4c1d95 100%)}
.shop-card[data-key="ink"] .shop-face{background:radial-gradient(circle at 30% 25%,#fff 0%,#94a3b8 55%,#4c1d95 100%)}
@keyframes shopWiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-7deg) scale(1.12)}75%{transform:rotate(7deg) scale(1.12)}}
.shop-card:hover .shop-face{animation:shopWiggle .4s ease}
.shop-card b{font-size:.88rem;line-height:1.1;display:block}
.shop-card small{font-size:.70rem;color:#5b7a8d;display:block;line-height:1.35}
.shop-card small.stat{margin-top:3px;color:#0a5c96;font-weight:700}
.shop-cost{position:relative;overflow:hidden;background:linear-gradient(180deg,#fef9a3,#ffcf2e 60%,#f59e0b);border:2px solid var(--outline);border-radius:999px;padding:4px 11px;font-weight:800;font-size:.88rem;color:#5a3200;box-shadow:0 2px 0 var(--outline),inset 0 1px 0 #fff;white-space:nowrap;flex-shrink:0;align-self:center;justify-self:end;display:inline-flex;align-items:center;gap:4px;line-height:1.2;font-family:"Baloo 2","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji",sans-serif}
.shop-card.disabled .shop-cost{background:linear-gradient(180deg,#e2e8f0,#94a3b8);color:#334155}
.shop-card:not(.disabled) .shop-cost::after{content:"";position:absolute;top:0;bottom:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent);animation:coinShine 2.4s ease-in-out infinite}
@keyframes coinShine{0%{left:-50%}100%{left:130%}}
.shop-tip{background:#fff;border:3px dashed var(--outline);border-radius:12px;padding:6px;font-size:.74rem}
details.shop-tip summary{cursor:pointer;font-weight:800;list-style:none}
details.shop-tip summary::-webkit-details-marker{display:none}
details.shop-tip summary::before{content:"▶ ";font-size:.7rem}
details.shop-tip[open] summary::before{content:"▼ ";}
details.shop-tip > div{margin-top:6px;max-height:30vh;overflow-y:auto}

/* starburst banner */
.starburst{position:absolute;top:38%;left:50%;transform:translate(-50%,-50%) rotate(-6deg) scale(1);background:var(--coral);color:#fff;border:4px solid #fff;outline:4px solid var(--outline);padding:14px 34px;font-size:2.4rem;font-weight:800;text-shadow:2px 2px 0 var(--outline);border-radius:12px;box-shadow:0 8px 0 rgba(0,0,0,.3);z-index:5;transition:all .25s;max-width:90%;text-align:center;visibility:visible}
.starburst.hidden{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(10deg);pointer-events:none;visibility:hidden}
.cartoon-toast{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 18px;border-radius:999px;border:3px solid #fff;font-weight:700;opacity:0;transition:all .2s;pointer-events:none;max-width:90%;text-align:center}
.cartoon-toast.show{opacity:1}

/* end overlay */
.end-overlay{position:absolute;inset:0;background:rgba(8,50,74,.75);display:flex;align-items:center;justify-content:center;z-index:6}
.end-overlay.hidden{display:none}
.end-card{background:#fff;border:4px solid var(--outline);border-radius:22px;padding:26px;text-align:center;box-shadow:8px 8px 0 var(--outline);max-width:420px;transform:none;margin:auto}
.end-emoji{font-size:3.5rem}
.end-card h1{font-size:2.2rem;color:#0a5c96;-webkit-text-stroke:1px var(--outline)}
.end-card p{margin:10px 0 16px;font-weight:600}

/* start menu — fullscreen takeover */
.menu-overlay{position:fixed;inset:0;background:rgba(8,50,74,.9);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;overflow-y:auto}
.menu-overlay.hidden{display:none}
.menu-card{background:#fff8d6;background:color-mix(in srgb, var(--ths,#fff8d6) 55%, #fff);border:4px solid var(--outline);border-radius:22px;padding:18px;max-width:760px;width:min(760px,94vw);max-height:min(90vh,840px);overflow-y:auto;text-align:center;box-shadow:8px 8px 0 var(--outline);transform:none;margin:auto;overscroll-behavior:contain}
.menu-title{font-size:1.6rem;color:#0a5c96;-webkit-text-stroke:.7px var(--outline)}
.menu-title span{font-size:1rem;color:var(--ink);-webkit-text-stroke:0}
.menu-sub{font-weight:800;color:#5b7a8d;font-size:.85rem;margin:2px 0 10px}
.map-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:8px 0;max-height:40vh;overflow-y:auto;padding:2px;overscroll-behavior:contain}
.map-card{background:linear-gradient(180deg,#fff,#fff6d8);border:3px solid var(--outline);border-radius:16px;padding:10px 8px;cursor:pointer;box-shadow:3px 3px 0 var(--outline);font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:4px}
.map-card:hover{transform:translateY(-2px) scale(1.03)}
.map-card.selected{outline:4px solid var(--aqua);background:#e8fbff}
.map-emoji{font-size:2.6rem;line-height:1;width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 25%,#fff 0%,#cdefff 55%,#0a6aa8 100%);border:3px solid var(--outline);border-radius:18px;box-shadow:inset 0 3px 0 rgba(255,255,255,.7),2px 2px 0 var(--outline);font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",serif;filter:saturate(1.3) drop-shadow(0 2px 0 rgba(11,42,61,.3))}
.map-card:hover .map-emoji{transform:scale(1.12) rotate(-6deg)}
.map-thumb{width:76px;height:48px;border:3px solid var(--outline);border-radius:12px;box-shadow:2px 2px 0 var(--outline);background:#0a6aa8}
.map-card:hover .map-thumb{transform:scale(1.06) rotate(-1deg)}
.map-card.selected .map-emoji{background:radial-gradient(circle at 30% 25%,#fff 0%,#fff6d8 50%,#ffcf2e 100%)}
.map-card b{font-size:.95rem}
.map-card small{font-size:.72rem;color:#5b7a8d;line-height:1.25}
.diff-badge{border:2px solid var(--outline);border-radius:999px;padding:1px 10px;font-size:.7rem;font-weight:800}
.diff-badge.easy{background:var(--lime)} .diff-badge.normal{background:var(--gold)} .diff-badge.tricky{background:var(--coral);color:#fff;text-shadow:1px 1px 0 var(--outline)} .diff-badge.hard{background:#7f1d1d;color:#fff;text-shadow:1px 1px 0 var(--outline)}
.diff-toggle{gap:10px;justify-content:center;margin:10px 0;flex-wrap:wrap}
.diff-btn.selected{background:var(--lime)}
.diff-btn small{display:block;font-size:.7rem}
.diff-btn[data-diff="hard"].selected{background:#fecaca;border-color:#7f1d1d}
.menu-desc{background:#fff;border:3px dashed var(--outline);border-radius:12px;padding:6px;font-size:.85rem;font-weight:700;margin-bottom:10px}
.counter.hard{background:#fecaca;border-color:#7f1d1d}
@media(max-width:700px){.map-row{grid-template-columns:1fr}}

/* modal */
.modal-overlay{position:fixed;inset:0;background:rgba(8,50,74,.7);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal-overlay.hidden{display:none}
.modal-cartoon{background:#fff8d6;border:4px solid var(--outline);border-radius:22px;padding:22px;max-width:560px;width:min(560px,94vw);max-height:min(88vh,640px);overflow-y:auto;box-shadow:8px 8px 0 var(--outline);text-align:center}
.modal-cartoon h1{color:#0a5c96}
.how-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}
.how-grid div{background:#fff;border:3px solid var(--outline);border-radius:12px;padding:10px;font-size:.85rem}
kbd{background:var(--ink);color:#fff;border-radius:6px;padding:1px 7px;font-size:.8rem}

.flash-footer{text-align:center;padding:10px;background:var(--outline);color:#c9efff;font-weight:700;font-size:.8rem}

@media(max-width:1200px){.main-row{grid-template-columns:1fr}.game-col{order:1}.shop-col{order:2;border-left:none;border-top:4px solid var(--outline);max-height:none;overflow:visible}.shop-list{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.how-grid{grid-template-columns:1fr}.map-overlay-panel{width:min(300px,90%);left:8px;top:8px;max-height:calc(100% - 70px)}}

/* actives bar (keys 1-6 trigger actives, not towers) */
.active-bar{display:flex;gap:6px;flex-wrap:wrap;margin-top:0}
/* Task 2/2: cooldown-only small map icons overlay (L4 gated, hidden unless owned) */
#canvasWrap{position:relative}
#activeBar{position:absolute;left:8px;bottom:8px;display:flex;gap:6px;z-index:5;margin-top:0}
#activeBar:empty{display:none}
.active-mini{position:relative;width:44px;height:44px;font-size:1.4rem;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fff,#e0e7ff);border:3px solid var(--outline);border-radius:12px;cursor:pointer;box-shadow:0 3px 0 var(--outline);opacity:.92;font-family:inherit;line-height:1;padding:0}
.active-mini:hover{background:#fff}
.active-mini:active{transform:translateY(2px);box-shadow:none}
.active-mini.disabled{opacity:.55;filter:grayscale(.8)}
.active-mini .ab-icon{line-height:1;pointer-events:none}
.ab-bind{position:absolute;top:-8px;left:-8px;background:var(--ink);color:#fff;border:2px solid #fff;border-radius:8px;font-size:.65rem;font-weight:800;padding:0 5px;line-height:1.4;pointer-events:none}
.ab-cd{position:absolute;bottom:-6px;right:-6px;background:#0b2a3d;color:#fff;border-radius:8px;font-size:.6rem;font-weight:800;padding:0 4px;pointer-events:none}
.ab-cd:empty{display:none}
/* Task 3/3: upgrade UI clarity — disabled upgrade buttons */
.inspect-bar .go-btn[disabled]{opacity:.55;filter:grayscale(.8);cursor:not-allowed}
.diff-btn[data-diff="advanced"].selected{background:#fed7aa;border-color:#9a3412}
.dstar{color:#e8a100;font-weight:800;margin-right:6px} .dstar.earned{color:#e8a100;text-shadow:0 1px 0 #0b2a3d} .map-stars{color:#e8a100;font-size:.85rem;font-weight:800} #diffHead{margin:8px 0 4px}
.diff-toggle{display:none!important} #diffHead{display:none!important}
#mapModal .modal-cartoon{max-width:620px}
.mdiff-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:10px 0}
.mdiff-card{background:linear-gradient(180deg,#fff,#fff6d8);border:3px solid var(--outline);border-radius:16px;padding:10px 8px;cursor:pointer;box-shadow:3px 3px 0 var(--outline);font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:4px}
.mdiff-card:hover{transform:translateY(-2px) scale(1.03)}
.mdiff-card.selected{outline:4px solid var(--aqua);background:#e8fbff}
.mdiff-card small{font-size:.72rem;color:#5b7a8d}
.mdstar{color:#e8a100;font-weight:800;font-size:1.1rem}
.mdstar.earned{text-shadow:0 1px 0 #0b2a3d}
#mmStars{font-weight:800}
@media(max-width:700px){.mdiff-row{grid-template-columns:1fr}}
/* Task A/3: Landing + wiki overlay (markup+styles only, script.js owned by other worker) */
#startOverlay{z-index:130}
.start-card{display:flex;flex-direction:column;align-items:center;gap:10px}
.start-emoji{font-size:3.5rem;line-height:1}
.start-card h1{font-size:2.6rem;color:#0a5c96;-webkit-text-stroke:1px var(--outline);line-height:1}
#startStars{width:100%;color:#7a5200;background:#fff7c2;border-color:var(--outline)}
.start-card .go-btn.big,.start-card .chunky-btn{width:100%}
.muted.small{font-size:.8rem}
.wiki-card{max-width:720px;width:min(720px,94vw)}
.wiki-tabs{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:10px 0}
.wiki-body{display:grid;grid-template-columns:200px 1fr;gap:10px;margin-top:6px;text-align:left}
.wiki-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow-y:auto;padding-right:2px}
.wiki-item{display:flex;align-items:center;gap:8px;background:linear-gradient(180deg,#fff,#fff6d8);border:3px solid var(--outline);border-radius:12px;padding:6px 8px;font-family:inherit;font-weight:800;cursor:pointer;box-shadow:2px 2px 0 var(--outline);text-align:left}
.wiki-item:hover{background:#fff}
.wiki-item.selected{outline:4px solid var(--aqua);background:#e8fbff}
.wiki-detail{background:#fff;border:3px solid var(--outline);border-radius:12px;padding:10px 12px;font-size:.88rem;line-height:1.4;min-height:200px}
.wiki-face{width:3rem;height:3rem;font-size:1.8rem;display:inline-flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 25%,#fff 0%,#cdefff 55%,#0a6aa8 100%);border:3px solid var(--outline);border-radius:50%;box-shadow:2px 2px 0 var(--outline);vertical-align:middle}
.wiki-chip{display:inline-block;background:#fff7c2;border:2px solid var(--outline);border-radius:999px;padding:1px 10px;font-size:.75rem;font-weight:800;color:var(--ink);margin:2px 4px 2px 0;box-shadow:1px 1px 0 var(--outline)}
.wiki-chip.gold{background:var(--gold);color:#5a3200}
.wiki-chip.aqua{background:#d6f9ff;color:#0a5c96}
.wiki-line{margin:4px 0}
.wiki-dot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;border:2px solid var(--outline);vertical-align:baseline}
@media(max-width:700px){.wiki-body{grid-template-columns:1fr}.wiki-list{max-height:180px}.start-card h1{font-size:2rem}}
/* Task A/2: Tide Relics draft */
.relic-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:10px 0}
.relic-card{background:linear-gradient(180deg,#fff,#fff6d8);border:3px solid var(--outline);border-radius:16px;padding:10px 8px;cursor:pointer;box-shadow:3px 3px 0 var(--outline);font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:4px}
.relic-card:hover{transform:translateY(-2px) scale(1.03);background:#fff}
.relic-card.selected{outline:4px solid var(--aqua);background:#e8fbff}
.relic-card div{font-size:2.2rem;line-height:1}
.relic-card b{font-size:.95rem}
.relic-card small{font-size:.72rem;color:#5b7a8d;line-height:1.25}
.relic-card small:last-child{font-weight:800;color:#0a5c96}
@media(max-width:700px){.relic-row{grid-template-columns:1fr}}
/* Task 3/3: side intel panel (fills freed shop-col space) */
.side-intel{display:flex;flex-direction:column;gap:6px}
.intel-row{background:#fff;border:3px dashed var(--outline);border-radius:12px;padding:6px 8px;font-size:.78rem;font-weight:700;line-height:1.35}
.juice-line{background:#fff;border:3px solid var(--outline);border-radius:12px;padding:6px;font-weight:800;cursor:pointer}
/* Task 2/6: SANDBOX MODE (free-build playground) — toggle + watermark only */
.sandbox-row{display:flex;justify-content:center;margin:8px 0}
#sandboxBtn.active{background:var(--lime)}
.sandbox-mark{position:fixed;top:10px;left:50%;transform:translateX(-50%) rotate(-2deg);background:linear-gradient(180deg,#fff7c2,#ffcf2e);border:3px solid var(--outline);border-radius:999px;padding:4px 14px;font-weight:800;z-index:200;box-shadow:2px 2px 0 var(--outline);font-size:.9rem}
.sandbox-mark.hidden{display:none!important}
/* Task 3/6: ACHIEVEMENTS overlay (own) — cards + granted gold vs locked gray + progress bars */
.achv-card{max-width:640px;width:min(640px,94vw)}
.achv-list{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;margin:10px 0;text-align:left}
.achv-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:8px;align-items:center;border:3px solid var(--outline);border-radius:14px;padding:8px 10px;box-shadow:2px 2px 0 var(--outline)}
.achv-item.locked{background:#e5e7eb;opacity:.92}
.achv-item.granted{background:linear-gradient(180deg,#fff7c2,#ffcf2e);outline:3px solid #b45309}
.achv-icon{font-size:1.8rem;line-height:1;text-align:center}
.achv-main b{display:block;font-size:.92rem}
.achv-main small{display:block;font-size:.74rem;color:#5b7a8d;line-height:1.3}
.achv-item.granted .achv-main small{color:#7a5200}
.achv-bar{height:10px;background:#fff;border:2px solid var(--outline);border-radius:999px;overflow:hidden;margin:4px 0}
.achv-fill{height:100%;width:0%;background:linear-gradient(90deg,#2fd4f2,#0a6aa8);transition:width .2s}
.achv-item.granted .achv-fill{background:linear-gradient(90deg,#ffcf2e,#b45309)}
.achv-state{font-size:1.3rem}
#achvBtn{margin-top:6px}
#menuBoonLine,#achvBoonLine{color:#7a5200}
/* Task 1/6: ENDLESS + SCORE (append-only: continue button + scoreboard line) */
#endlessBtn{background:linear-gradient(180deg,#d6f9ff,#2fd4f2);color:#08324a;display:block;width:100%;margin-top:10px}
.score-line{display:inline-block;background:#fff7c2;border:2px solid var(--outline);border-radius:999px;padding:2px 12px;font-weight:800;color:#7a5200;box-shadow:1px 1px 0 var(--outline);margin-top:4px}
/* Task 1/3: UI BEAUTY (styles.css ONLY — composes with .go-btn/.counter/.cartoon-toast, no logic/markup changes) */
/* 1. Path colors — compose with .go-btn (no transform overrides so :hover/:active still win from .go-btn) */
.up-btn.path-a{border-color:#0284c7;box-shadow:0 3px 0 #0284c7,2px 2px 0 var(--outline);background:linear-gradient(180deg,#f0f9ff,#bae6fd);color:#0c4a6e;text-shadow:0 1px 0 #fff}
.up-btn.path-a small{color:#075985}
.up-btn.path-b{border-color:#c2410c;box-shadow:0 3px 0 #c2410c,2px 2px 0 var(--outline);background:linear-gradient(180deg,#fff7ed,#fed7aa);color:#7c2d12;text-shadow:0 1px 0 #fff}
.up-btn.path-b small{color:#9a3412}
.up-btn.path-commit{background:linear-gradient(180deg,#fef9a3,#ffcf2e 60%,#f59e0b);border-color:#9a5b00;color:#5a3200;text-shadow:0 1px 0 #fff;box-shadow:0 3px 0 #9a5b00,2px 2px 0 var(--outline)}
.up-btn.path-commit small{color:#7a5200}
.up-btn.ability-glow{position:relative;overflow:hidden;border-color:#9a5b00;background:linear-gradient(180deg,#fff7c2,#ffcf2e);color:#5a3200;text-shadow:0 1px 0 #fff;box-shadow:0 3px 0 #9a5b00,0 0 0 3px #ffcf2e,0 0 18px #ffcf2e;animation:abilityGlow 1.6s ease-in-out infinite}
.up-btn.ability-glow::after{content:"";position:absolute;top:0;bottom:0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.9),transparent);animation:abilityShimmer 2.2s ease-in-out infinite;pointer-events:none}
.up-btn.ability-glow small{color:#7a5200}
.up-btn.path-a:active,.up-btn.path-b:active,.up-btn.path-commit:active,.up-btn.ability-glow:active{transform:translateY(3px);box-shadow:0 1px 0 var(--outline)}
@keyframes abilityGlow{50%{box-shadow:0 3px 0 #9a5b00,0 0 0 5px #ffcf2e,0 0 26px #ffb62e}}
@keyframes abilityShimmer{0%{left:-50%}100%{left:130%}}
/* 2. Counters — cash parent .ticking (count-up) + lives parent .hurt flash */
.counter.hurt{animation:hurtShake .4s}
@keyframes hurtShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px) rotate(-2deg)}50%{transform:translateX(5px) rotate(2deg);background:#fecaca;border-color:#7f1d1d}75%{transform:translateX(-3px)}}
.counter.ticking b{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
/* 3. Toasts — stacked .toast-msg children of existing #toast */
#toast.toast-stack{background:none;border:none;box-shadow:none;padding:0;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none;opacity:1;max-width:min(92%,480px);width:max-content}
#toast.toast-stack.show{opacity:1}
.toast-msg{position:static;left:auto;transform:none;background:var(--ink);color:#fff;border:3px solid #fff;border-radius:999px;padding:6px 16px;font-weight:800;font-size:.9rem;font-family:inherit;box-shadow:2px 2px 0 var(--outline);text-align:center;line-height:1.3;max-width:100%;pointer-events:none;animation:toastSlideIn .25s ease-out;white-space:normal}
.toast-msg.toast-out{animation:toastFadeOut .3s ease-in forwards}
#toast.toast-stack .toast-msg:nth-child(n+4){display:none}
@keyframes toastSlideIn{from{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes toastFadeOut{to{opacity:0;transform:translateY(8px) scale(.95)}}
/* empty states */
.empty-art{display:block;text-align:center;font-size:2.2rem;line-height:1.2;opacity:.85;margin:8px auto;filter:saturate(1.2)}
.empty-art small{display:block;font-size:.75rem;color:#5b7a8d;font-weight:700;margin-top:4px}
/* 4. Scrollbars — copy shopList pattern for scrollable panels only (overlay panel, wiki list/detail, map-row) */
.map-overlay-panel::-webkit-scrollbar,.wiki-list::-webkit-scrollbar,.wiki-detail::-webkit-scrollbar,.map-row::-webkit-scrollbar{width:12px;height:12px}
.map-overlay-panel::-webkit-scrollbar-track,.wiki-list::-webkit-scrollbar-track,.wiki-detail::-webkit-scrollbar-track,.map-row::-webkit-scrollbar-track{background:#fff6d8;border:2px solid #0b2a3d;border-radius:999px}
.map-overlay-panel::-webkit-scrollbar-thumb,.wiki-list::-webkit-scrollbar-thumb,.wiki-detail::-webkit-scrollbar-thumb,.map-row::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#2fd4f2,#0a6aa8);border:2px solid #0b2a3d;border-radius:999px}
.map-overlay-panel,.wiki-list,.wiki-detail,.map-row{scrollbar-width:thin;scrollbar-color:#0a6aa8 #fff6d8}
.wiki-detail{max-height:340px;overflow-y:auto;overscroll-behavior:contain}
/* 5. Focus/press — focus ring only; existing :active rules untouched (:go-btn/:chunky-btn/:shop-card/:active-mini verified, map/relic/mdiff have no :active so none added) */
button:focus-visible,.shop-card:focus-visible,.map-card:focus-visible,.relic-card:focus-visible,.mdiff-card:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}
/* 6. Panel headers — one system, cosmetic props only (padding/radius/shadow, no layout restructure) */
.shop-title,.up-float-head,.up-panel-head{padding:8px 12px;border-radius:14px;box-shadow:3px 3px 0 var(--outline)}
.modal-cartoon h1,.menu-title,.end-card h1{padding:8px 14px;border-radius:14px;background:#fff;border:3px solid var(--outline);box-shadow:3px 3px 0 var(--outline)}
/* Task 1/3: OPTIONS overlay shell (gains/sliders owned elsewhere; append-only) */
#optionsOverlay{z-index:140}
.options-card{display:flex;flex-direction:column;gap:10px}
.opt-row{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:center;background:#fff;border:3px solid var(--outline);border-radius:12px;padding:8px 12px;font-weight:800;box-shadow:2px 2px 0 var(--outline)}
.opt-row b{min-width:3ch;text-align:center;font-variant-numeric:tabular-nums}
.opt-btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
#optionsOverlay input[type="range"]{width:100%;accent-color:#0a6aa8;cursor:pointer}
#optionsOverlay input[type="range"]::-webkit-slider-runnable-track{height:12px;background:linear-gradient(180deg,#fff6d8,#ffe27a);border:3px solid var(--outline);border-radius:999px}
#optionsOverlay input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;margin-top:-9px;background:linear-gradient(180deg,#fff,#cdefff);border:3px solid var(--outline);border-radius:50%;box-shadow:0 2px 0 var(--outline);cursor:pointer}
#optionsOverlay input[type="range"]::-moz-range-track{height:12px;background:#ffe27a;border:3px solid var(--outline);border-radius:999px}
#optionsOverlay input[type="range"]::-moz-range-thumb{width:24px;height:24px;background:#fff;border:3px solid var(--outline);border-radius:50%;box-shadow:0 2px 0 var(--outline);cursor:pointer}

/* TYPE PASS — comic-ink titles, arcade counters, print grain (body stays rounded Baloo) */
.menu-title,.end-card h1,.modal-cartoon h1,#waveBannerText{font-family:"Bangers","Baloo 2","Comic Sans MS",cursive;letter-spacing:.05em}
.menu-title,.end-card h1,.modal-cartoon h1{text-shadow:2px 2px 0 var(--outline),-1px -1px 0 rgba(255,255,255,.55)}
#waveBannerText{text-shadow:2px 2px 0 var(--outline)}
@supports ((-webkit-text-stroke:1px #000) and (background-clip:text)){
.menu-title,.end-card h1,.modal-cartoon h1{background-image:linear-gradient(180deg,#ffffff 5%,#ffe27a 35%,#ffb62e 70%,#b45309 100%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.16'/%3E%3C/svg%3E");-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:1.2px var(--outline)}
}
#goldVal{color:#7a4a00;font-weight:800}
@supports (((background-clip:text) or (-webkit-background-clip:text))){
#goldVal{background:linear-gradient(180deg,#7a4a00,#b45309);-webkit-background-clip:text;background-clip:text;color:transparent}
}
#livesVal{font-weight:800}
/* UI BUG SWEEP 2026-09-12 — append-only, no redesign */
/* logo subtitle was 3rd flex row item (cramped right); wrap to full line below */
.logo-bubble{flex-wrap:wrap}
.logo-bubble small{flex-basis:100%;margin-top:2px}
/* sandbox watermark must not block HUD clicks */
.sandbox-mark{pointer-events:none}
/* flex-center overflow trap: modal top clipped on short viewports without margin:auto */
.modal-cartoon{margin:auto}
/* end card clipped on short canvas (absolute inset:0 flex, no scroll) */
.end-overlay{overflow-y:auto;padding:12px}
.end-card{max-height:100%;overflow-y:auto}
/* lock page scroll behind any fullscreen fixed overlay (menu/modal open) */
body:has(.menu-overlay:not(.hidden)){overflow:hidden}
body:has(.modal-overlay:not(.hidden)){overflow:hidden}
/* shop-col clipped RUN INTEL on short desktop heights; allow column scroll */
.shop-col{overflow-y:auto}
/* achv list missed cartoony scrollbar system (shop/wiki/map-row have it) */
.achv-list::-webkit-scrollbar{width:12px;height:12px}
.achv-list::-webkit-scrollbar-track{background:#fff6d8;border:2px solid #0b2a3d;border-radius:999px}
.achv-list::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#2fd4f2,#0a6aa8);border:2px solid #0b2a3d;border-radius:999px}
.achv-list{scrollbar-width:thin;scrollbar-color:#0a6aa8 #fff6d8}
/* focus visibility missed JS-emitted interactives + juice <p role=button> */
.wiki-item:focus-visible,.active-mini:focus-visible,.up-btn:focus-visible,.juice-line:focus-visible,details.shop-tip summary:focus-visible,.opt-row input:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}
.juice-line:hover{background:#fff}
@media(max-width:1200px){.shop-list{max-height:none}}
/* itch polish: touch targets + reduced motion */
.chunky-btn,.go-btn{min-height:44px}
@media (prefers-reduced-motion:reduce){.page-fish,.go-btn.pulse,.shop-card.selected,.shop-card:not(.disabled) .shop-cost::after,.up-btn.ability-glow,.up-btn.ability-glow::after{animation:none!important}}