/* TGv5 cinematic overlay: independent of original game and online scores. */
:root{--fx-gold:#ffe19a;--fx-hot:#ff6aa4;--fx-teal:#7df3d5}
#fxLayer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:100000;contain:layout style}
.fx-piece{position:fixed;left:0;top:0;pointer-events:none;will-change:transform,opacity;animation:fx-flight var(--flight,850ms) cubic-bezier(.16,.7,.3,1) forwards;filter:drop-shadow(0 1px 2px #0006);font-size:var(--piece-size,17px)}
@keyframes fx-flight{0%{opacity:1;transform:translate3d(var(--x),var(--y),0) scale(.4) rotate(0)}20%{opacity:1}100%{opacity:0;transform:translate3d(calc(var(--x) + var(--dx)),calc(var(--y) + var(--dy)),0) scale(.95) rotate(var(--rot))}}
.fx-pop{position:fixed;left:50%;top:23%;transform:translate(-50%,-50%);padding:12px 22px;max-width:min(90vw,580px);border:2px solid #ffdc92;border-radius:20px;box-shadow:0 18px 66px #000b,0 0 50px #ffb9627d;background:linear-gradient(135deg,#38263e,#282d51);color:#fff;font-weight:950;font-size:clamp(18px,3vw,32px);text-align:center;text-shadow:0 2px 12px #000a;animation:fx-banner 1.55s ease-out forwards;letter-spacing:.035em}
@keyframes fx-banner{0%{opacity:0;transform:translate(-50%,-75%) scale(.65) rotate(-5deg)}16%{opacity:1;transform:translate(-50%,-50%) scale(1.08) rotate(1deg)}33%{transform:translate(-50%,-50%) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-68%) scale(.95)}}
.fx-impact{animation:fx-hit 310ms ease-out!important}@keyframes fx-hit{0%,100%{transform:translate(0)}20%{transform:translate(-5px,3px)}40%{transform:translate(6px,-4px)}65%{transform:translate(-3px,2px)}85%{transform:translate(2px,-1px)}}
.fx-glitch{animation:fx-glitch 420ms steps(2,end)!important}@keyframes fx-glitch{0%,100%{filter:none}15%{filter:drop-shadow(4px 0 #ff438d) drop-shadow(-4px 0 #56fff1);transform:translateX(3px)}50%{filter:hue-rotate(35deg) contrast(1.3);transform:translateX(-4px)}75%{filter:drop-shadow(-3px 0 #ff438d)}}
.fx-nudge{animation:fx-nudge 240ms ease!important}@keyframes fx-nudge{45%{transform:scale(1.055)}100%{transform:scale(1)}}
.fx-spotlight{box-shadow:0 0 0 2px #ffe1a9,0 0 44px #ffe1a97a!important}
.fx-shimmer{position:relative;isolation:isolate}.fx-shimmer:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(110deg,transparent 20%,#fff2 43%,transparent 65%);background-size:250% 100%;animation:fx-shimmer 5s ease-in-out infinite;border-radius:inherit}@keyframes fx-shimmer{0%,65%,100%{background-position:140% 0}85%{background-position:-120% 0}}
.fx-visible [data-uv-play],.fx-visible .uv-card-button,.fx-visible .uv-app,.fx-visible .uv-shopitem,.fx-visible .big-pink-button{transition:transform .15s ease,filter .15s ease,box-shadow .15s ease}
.fx-visible [data-uv-play]:hover,.fx-visible .uv-card-button:hover,.fx-visible .uv-app:hover,.fx-visible .big-pink-button:hover{filter:brightness(1.14);box-shadow:0 9px 26px #ffcc7540;transform:translateY(-3px)}
.fx-visible .uv-hero{background-size:150% 150%;animation:fx-gradient 12s ease-in-out infinite alternate}@keyframes fx-gradient{to{background-position:100% 75%}}
.fx-visible .uv-tile.water{background-size:45px 45px;animation:fx-water 3s linear infinite}@keyframes fx-water{to{background-position:45px 0}}
.fx-visible .uv-tile.flower{animation:fx-bloom 4s ease-in-out infinite alternate}@keyframes fx-bloom{to{filter:brightness(1.16) saturate(1.3)}}
.fx-visible .uv-tile.npc span:first-child{display:inline-block;animation:fx-bob 2.2s ease-in-out infinite alternate}@keyframes fx-bob{to{transform:translateY(-3px) rotate(3deg)}}
.fx-visible .uv-logo span{display:inline-block;animation:fx-twinkle 3s infinite alternate}@keyframes fx-twinkle{to{text-shadow:0 0 22px #ffe9a7;filter:brightness(1.3)}}
#fxSettings{position:fixed;right:14px;bottom:14px;z-index:99999;display:flex;flex-direction:column;align-items:flex-end;gap:8px;font-family:system-ui,sans-serif}#fxSettings button{color:#fff;background:#252b42;border:1px solid #eabf72a0;border-radius:12px;padding:10px 12px;cursor:pointer;font-size:12px;font-weight:800;box-shadow:0 5px 22px #0006}#fxSettings button:focus-visible{outline:2px solid #ffe2a0;outline-offset:2px}
#fxOptions{background:linear-gradient(145deg,#20263c,#32344c);border:1px solid #f2c7799c;border-radius:17px;padding:14px;color:white;box-shadow:0 15px 50px #000b;min-width:240px}#fxOptions[hidden]{display:none}#fxOptions label{display:flex;align-items:center;gap:10px;font-size:13px;padding:7px 0;cursor:pointer}#fxOptions select{width:100%;margin:9px 0;padding:9px;border-radius:9px;background:#171d2f;color:#fff;border:1px solid #b39e77}#fxOptions strong{color:#ffe7ad}
.fx-visible .toast,.fx-visible .uv-toast:not(.hidden){filter:drop-shadow(0 6px 12px #b7767955)}
@media(prefers-reduced-motion:reduce){.fx-visible .uv-hero,.fx-visible .uv-tile,.fx-visible .uv-logo span,.fx-visible .uv-card-button,.fx-visible .fx-shimmer:after{animation:none!important}#fxLayer .fx-piece,#fxLayer .fx-pop{display:none!important}}
