:root{--wm-gold:#f2c141;--wm-cream-1:#fff8e6;--wm-plum:#8d6197;--wm-ink:#3d3226;--world-amethyst:#9878b5}
#fx-layer{position:fixed;inset:0;pointer-events:none;z-index:400;overflow:hidden;contain:strict}
#fx-layer *{pointer-events:none!important}
.fx-mote{position:absolute;left:0;top:0;width:8px;height:8px;border-radius:65% 35% 65% 35%;background:var(--wm-gold);box-shadow:0 0 9px #f2c14170}
.fx-halo{position:absolute;border:3px solid var(--wm-gold);border-radius:24px;box-shadow:0 0 22px #f2c14150,inset 0 0 16px #f2c14120}
.fx-halo.retry{border-color:#d8ae75;box-shadow:0 0 14px #d8ae7528}
.fx-copy{position:absolute;overflow:hidden;border-radius:14px;transform-origin:center;object-fit:contain;background-repeat:no-repeat;box-shadow:0 6px 16px #3d322626}
.fx-wisp{position:absolute;width:34px;height:100px;border-radius:50%;background:radial-gradient(ellipse,#9878b523,transparent 68%);box-shadow:none}
.fx-thought{position:absolute;display:flex;gap:4px}
.fx-thought i{width:6px;height:6px;background:var(--wm-plum);border-radius:50%}
.fx-bloom{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 42%,#fff8e660,transparent 68%)}
.fx-spark{width:10px;height:10px;background:var(--world-amethyst);border-radius:50%;box-shadow:0 0 10px #9878b588;position:absolute;left:0;top:0}
.juice-attention{animation:juice-breathe 2600ms ease-in-out infinite}
.juice-last{outline:3px dashed #bbaa93;outline-offset:2px}
#game[data-state="level-complete"] .overlay{background:none;backdrop-filter:none;isolation:isolate}
#game[data-state="level-complete"] .overlay::before{content:"";position:absolute;inset:0;z-index:-1;background:#3d32262e;animation:juice-curtain 600ms ease-out;pointer-events:none}
#game[data-state="level-complete"] .panel{border-color:#dfbf79;box-shadow:0 16px 65px #3d322632,0 0 36px #f2c14124}
.work-area.celebrate{animation:none}
.drag-ghost{left:0!important;top:0!important;transform:translate3d(var(--drag-x),var(--drag-y),0) translate(-50%,-50%) scale(1.1);filter:drop-shadow(0 8px 9px #3d322633)}
.paused .juice-attention{animation-play-state:paused!important}
@keyframes juice-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes juice-curtain{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.juice-attention{animation:none!important}.drag-ghost{transform:translate3d(var(--drag-x),var(--drag-y),0) translate(-50%,-50%)}}
