/* Fixed tile-sized overlays survive board redraws; every VFX pixel is clipped to its destination. */
.spawn-projectile{filter:drop-shadow(0 2px 4px #ffffffa8)!important;pointer-events:none!important}
body>.merge-morph-layer{
 position:fixed!important;right:auto!important;bottom:auto!important;
 z-index:900;overflow:hidden!important;pointer-events:none;isolation:isolate;contain:paint;
}
body>.merge-morph-layer::after{content:none!important}
body>.merge-morph-layer .merge-ghost,
body>.merge-morph-layer .merge-result-ghost{
 position:absolute!important;left:9%!important;top:9%!important;
 width:82%!important;height:82%!important;max-width:none!important;max-height:none!important;
 margin:0!important;translate:none!important;transform-origin:center!important;
 animation:none!important;box-shadow:none!important;pointer-events:none!important;
}
body>.merge-morph-layer .merge-ghost img,
body>.merge-morph-layer .merge-result-ghost img{
 inset:0!important;width:100%!important;height:100%!important;
 object-fit:contain!important;opacity:1!important;filter:none!important;
}
body>.merge-morph-layer .merge-result-ghost{z-index:3;opacity:0}
body>.merge-morph-layer .merge-morph-flash{
 position:absolute;inset:9%;border-radius:50%;opacity:0;z-index:2;
 background:radial-gradient(circle,#fff 0%,#fff 18%,#fffef0dd 34%,#fff8dd85 55%,transparent 75%);
 box-shadow:0 0 10px #fff9;pointer-events:none;
}
#board .cell.merge-morph-pending>.item{opacity:0!important}
#board .cell.merge-hint,#board .cell.merge-hint>.item{filter:none!important;box-shadow:none!important}
#board .cell.merge-hint>.item{animation:boardHintJiggle 700ms ease-in-out 1!important}
@keyframes boardHintJiggle{0%,100%{transform:none}25%{transform:translateX(-1.5px) rotate(-1.5deg)}50%{transform:translateX(1.5px) rotate(1.5deg)}75%{transform:translateX(-1px) rotate(-1deg)}}
.merge-hold-charge{animation:none;opacity:calc(.24 + var(--charge-strength,0)*.66)}
.merge-hold-charge::before{animation-duration:var(--charge-speed,1.4s);box-shadow:0 0 5px #74dcff24,inset 0 0 4px #74dcff18}
.merge-hold-charge i{animation-duration:var(--charge-speed,1.4s)}
#board .cell.merge-charge-target::after{opacity:var(--charge-strength,.35);box-shadow:inset 0 0 6px #bdefff42}
@media(prefers-reduced-motion:reduce){#board .cell.merge-hint>.item,.merge-hold-charge,.merge-hold-charge::before,.merge-hold-charge i{animation:none!important}.merge-hold-charge{display:none}}

/* Merge light belongs to artwork, never the tile background. */
body>.merge-morph-layer .merge-morph-flash{display:none!important}
.merge-hold-charge{opacity:calc(.65 + var(--charge-strength,0)*.35)}
.merge-hold-charge::before{border-width:3px;box-shadow:0 0 14px #74dcffbb,inset 0 0 14px #74dcff77}
.merge-hold-charge i{width:7px;height:7px;box-shadow:0 0 10px #fff,0 0 16px #72dcff}
#board .cell.merge-charge-target>.item{filter:brightness(1.1) drop-shadow(0 0 7px #74dcff)!important}
#board .cell.merge-charge-target::after{background:none!important;box-shadow:none!important}

/* Progression feedback: bounded artwork, no tile-color flash. */
/* Legacy .item.has>img explicitly restores visibility: hide the whole composite too. */
#board .cell.spawn-in-flight>.item{visibility:hidden!important;opacity:0!important}
#board .cell.spawn-in-flight>.item *{visibility:hidden!important}
.cu-purchase-halo{position:fixed;border:3px solid #ffe197;border-radius:28%;box-shadow:0 0 12px #ffc34baa,inset 0 0 10px #ffda7380;pointer-events:none;z-index:850;box-sizing:border-box}
.merge-morph-layer .item,.merge-morph-layer .item.has,.merge-morph-layer .merge-result-ghost{background:none!important;box-shadow:none!important;border:0!important}
.merge-morph-layer .item .symbol{display:none!important}
.cell[data-gen-level="1"] .gauge em{background:#76becd!important}
.cell[data-gen-level="2"] .gauge em{background:#a99ddd!important}
.cell[data-gen-level="3"] .gauge em{background:linear-gradient(90deg,#d8a42b,#ffe79a,#d5a324)!important}
.cell[data-gen-level="1"]{--charge-color:#76becd}
.cell[data-gen-level="2"]{--charge-color:#a99ddd}
.cell[data-gen-level="3"]{--charge-color:#efc65a}
#board .cell[data-gen-level] .gauge,#board .cell[data-gen-level] .gauge em{box-shadow:0 0 3px var(--charge-color),inset 0 1px #fff8!important}
#board .cell[data-gen-level] .gauge em::after{background:var(--charge-color)!important}
.cell-unlock-remnant{position:absolute;inset:0;background:var(--board-locked,#b65d65);border-radius:inherit;display:grid;place-items:center;font-size:24px;pointer-events:none;z-index:12}
.cell.unlock-ready{cursor:pointer;filter:brightness(1.12)}
.cell.unlock-ready .cu-lock-level{font-size:24px;background:transparent}
.cu-golden-text{position:fixed;z-index:1400;pointer-events:none;font:bold 18px/1.4 var(--cm-font,sans-serif);color:#ffe49a;text-shadow:0 1px 1px #875100,0 0 7px #f6b83b;white-space:nowrap}
.cu-golden-text.is-level{font-size:22px;transform-origin:left center}
.specialization-choice{border:2px solid #e0c576;background:linear-gradient(135deg,#fff8eb,#e2d6ff);padding:18px;border-radius:20px}
.specialization-choice small{display:block;line-height:1.6;margin-top:8px}
