/* Photo-answer gift overlays — throw → face impact */
.fp-gift-fx{
  position:absolute;inset:0;z-index:6;
  pointer-events:none;overflow:hidden;
  opacity:0;
}
.fp-gift-fx.show{opacity:1}
.fp-gift-p{
  position:absolute;line-height:1;pointer-events:none;
  will-change:transform,opacity,left,top;
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;
  z-index:2;
}
.fp-gift-wash{
  inset:0;left:0;top:0;right:0;bottom:0;width:100%;height:100%;
  z-index:1;
}
.fp-gift-wash-water{
  background:
    radial-gradient(ellipse 80% 40% at 50% -10%,rgba(125,211,252,.55),transparent 70%),
    linear-gradient(180deg,rgba(56,189,248,.28) 0%,rgba(14,116,180,.52) 100%);
  animation:fpGiftWashIn .35s ease-out both;
}
.fp-gift-wash-mud{
  background:
    radial-gradient(ellipse 70% 50% at 50% 28%,rgba(120,53,15,.35),transparent 65%),
    linear-gradient(180deg,rgba(120,53,15,.18) 0%,rgba(69,26,3,.55) 100%);
  animation:fpGiftWashIn .28s ease-out both;
}
.fp-gift-wash-tomato{
  background:
    radial-gradient(ellipse 65% 45% at 50% 30%,rgba(220,38,38,.38),transparent 60%),
    linear-gradient(180deg,rgba(248,113,113,.12) 0%,rgba(127,29,29,.35) 100%);
  animation:fpGiftWashIn .3s ease-out both;
}
.fp-gift-wash-fire{
  background:linear-gradient(180deg,rgba(0,0,0,0) 30%,rgba(234,88,12,.45) 100%);
  animation:fpGiftWashIn .3s ease-out both;
}
.fp-gift-wash-snow{
  background:linear-gradient(180deg,rgba(226,232,240,.22) 0%,rgba(148,163,184,.08) 100%);
  animation:fpGiftWashIn .4s ease-out both;
}
.fp-gift-wash-flash{
  background:#fff;
  animation:fpGiftFlash .55s ease-out both;
}

/* Hero shake + hit flash */
.fun-photo-hero.fp-gift-shaking{
  animation:fpGiftHeroShake .65s cubic-bezier(.36,.07,.19,.97) both;
}
.fun-photo-hero.fp-gift-hit::after{
  content:'';
  position:absolute;inset:0;z-index:7;pointer-events:none;
  background:radial-gradient(circle at 50% 32%,rgba(255,255,255,.35),transparent 55%);
  animation:fpGiftHitVeil .7s ease-out both;
}

.fp-gift-throw{
  z-index:5;
  offset-path:none;
  animation:fpGiftThrow .42s cubic-bezier(.15,.85,.25,1.1) both;
  filter:drop-shadow(0 8px 12px rgba(0,0,0,.45));
}
.fp-gift-impact-flash{
  width:28px;height:28px;margin-left:-14px;margin-top:-14px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.95),rgba(255,255,255,0) 70%);
  animation:fpGiftImpactFlash .5s ease-out both;
  z-index:6;
}
.fp-gift-splat{
  border-radius:42% 58% 47% 53% / 48% 41% 59% 52%;
  animation:fpGiftSplat .55s cubic-bezier(.2,1.4,.3,1) both;
  opacity:.92;
  box-shadow:0 4px 14px rgba(0,0,0,.35);
}
.fp-gift-splat-face{
  z-index:4;
  filter:blur(.2px);
  animation-name:fpGiftSplatFace;
  animation-duration:.6s;
}
.fp-gift-splat-mud{background:radial-gradient(circle at 35% 30%,#a16207 0%,#78350f 45%,#292524 78%)}
.fp-gift-splat-paint{box-shadow:0 0 0 3px rgba(255,255,255,.12) inset}
.fp-gift-splat-tomato{
  background:
    radial-gradient(circle at 40% 32%,#fb7185 0%,#dc2626 42%,#7f1d1d 78%),
    radial-gradient(circle at 70% 60%,rgba(254,202,202,.55),transparent 45%);
}

.fp-gift-drip{
  width:10px;
  border-radius:0 0 8px 8px;
  transform-origin:top center;
  animation:fpGiftDrip 1.1s ease-in both;
  z-index:3;
  opacity:.9;
}
.fp-gift-drip-tomato{background:linear-gradient(180deg,#ef4444,#991b1b)}
.fp-gift-drip-mud{background:linear-gradient(180deg,#a16207,#44403c)}

.fp-gift-debris{
  animation:fpGiftDebris .7s cubic-bezier(.2,.8,.2,1) both;
  z-index:5;
}
.fp-gift-splash-drop{
  animation:fpGiftSplash .75s ease-out both;
  z-index:5;
  filter:drop-shadow(0 2px 4px rgba(3,105,161,.5));
}

.fp-gift-drop{
  top:-12%;
  animation:fpGiftDrop 1.15s ease-in both;
  filter:drop-shadow(0 2px 6px rgba(3,105,161,.55));
}
.fp-gift-drop-blob{
  top:-10%;
  width:14px;height:20px;
  border-radius:50% 50% 50% 50% / 60% 60% 40% 40%;
  background:radial-gradient(circle at 30% 25%,#e0f2fe,#0ea5e9 55%,#0369a1 100%);
  box-shadow:0 0 10px rgba(14,165,233,.55);
  animation:fpGiftDrop 1.05s ease-in both;
}
.fp-gift-ripple{
  width:24px;height:24px;
  margin-left:-12px;margin-top:-12px;
  border-radius:50%;
  border:3px solid rgba(125,211,252,.85);
  background:transparent;
  animation:fpGiftRipple 1.1s ease-out both;
  z-index:3;
}
.fp-gift-ripple-face{
  border-width:4px;
  border-color:rgba(186,230,253,.95);
  animation-duration:1.25s;
}
.fp-gift-fall{
  top:-12%;
  animation:fpGiftFall 1.8s linear both;
}
.fp-gift-rise{
  bottom:-8%;
  animation:fpGiftRise 1.4s ease-out both;
}
.fp-gift-pop{animation:fpGiftPop .55s cubic-bezier(.2,1.5,.3,1) both}
.fp-gift-spark{animation:fpGiftSpark .9s ease-in-out both}
.fp-gift-stamp{animation:fpGiftStamp .4s cubic-bezier(.2,1.5,.3,1) both}
.fp-gift-stamp-face{
  z-index:5;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.4));
  animation-name:fpGiftStampFace;
  animation-duration:.55s;
}
.fp-gift-bolt{
  animation:fpGiftBolt .7s ease-out both;
  filter:drop-shadow(0 0 12px #fde047);
}

@keyframes fpGiftWashIn{from{opacity:0}to{opacity:1}}
@keyframes fpGiftFlash{
  0%{opacity:0}12%{opacity:.9}35%{opacity:.2}100%{opacity:0}
}
@keyframes fpGiftHitVeil{
  0%{opacity:.85}100%{opacity:0}
}
@keyframes fpGiftHeroShake{
  0%,100%{transform:translate3d(0,0,0)}
  12%{transform:translate3d(-7px,4px,0) rotate(-.6deg)}
  24%{transform:translate3d(8px,-5px,0) rotate(.7deg)}
  36%{transform:translate3d(-6px,-3px,0) rotate(-.4deg)}
  48%{transform:translate3d(6px,5px,0) rotate(.5deg)}
  60%{transform:translate3d(-4px,2px,0)}
  72%{transform:translate3d(3px,-2px,0)}
  84%{transform:translate3d(-2px,1px,0)}
}
@keyframes fpGiftThrow{
  0%{
    left:var(--fp-start-left,20%);
    top:var(--fp-start-top,110%);
    transform:scale(.35) rotate(-50deg);
    opacity:0;
  }
  12%{opacity:1}
  70%{
    transform:scale(1.2) rotate(18deg);
    opacity:1;
  }
  100%{
    left:var(--fp-end-left,50%);
    top:var(--fp-end-top,30%);
    transform:scale(.15) rotate(40deg);
    opacity:0;
  }
}
@keyframes fpGiftImpactFlash{
  0%{transform:scale(.2);opacity:0}
  25%{transform:scale(3.2);opacity:1}
  100%{transform:scale(6);opacity:0}
}
@keyframes fpGiftSplat{
  0%{transform:scale(.12);opacity:0}
  55%{transform:scale(1.12);opacity:.98}
  100%{transform:scale(1);opacity:.88}
}
@keyframes fpGiftSplatFace{
  0%{transform:scale(.08) rotate(-8deg);opacity:0}
  40%{transform:scale(1.2) rotate(4deg);opacity:1}
  100%{transform:scale(1) rotate(0);opacity:.9}
}
@keyframes fpGiftDrip{
  0%{transform:scaleY(.15);opacity:0}
  25%{opacity:.95}
  100%{transform:scaleY(1) translateY(28px);opacity:.35}
}
@keyframes fpGiftDebris{
  0%{transform:translate(0,0) scale(1);opacity:1}
  100%{transform:translate(var(--fp-dx,40px),var(--fp-dy,60px)) scale(.4) rotate(120deg);opacity:0}
}
@keyframes fpGiftSplash{
  0%{transform:translate(0,0) scale(.6);opacity:0}
  20%{opacity:1}
  100%{transform:translate(var(--fp-dx,30px),var(--fp-dy,70px)) scale(1);opacity:0}
}
@keyframes fpGiftDrop{
  0%{transform:translateY(-28px) scale(.55);opacity:0}
  12%{opacity:1}
  100%{transform:translateY(360px) scale(1);opacity:.2}
}
@keyframes fpGiftRipple{
  0%{transform:scale(.35);opacity:0}
  25%{opacity:.95}
  100%{transform:scale(7.5);opacity:0}
}
@keyframes fpGiftFall{
  0%{transform:translate3d(0,-24px,0) rotate(0deg);opacity:0}
  12%{opacity:1}
  100%{transform:translate3d(22px,380px,0) rotate(120deg);opacity:.15}
}
@keyframes fpGiftRise{
  0%{transform:translateY(24px) scale(.5);opacity:0}
  20%{opacity:1}
  100%{transform:translateY(-360px) scale(1.1);opacity:0}
}
@keyframes fpGiftPop{
  0%{transform:scale(.2) rotate(-20deg);opacity:0}
  70%{transform:scale(1.15) rotate(8deg);opacity:1}
  100%{transform:scale(1) rotate(0);opacity:1}
}
@keyframes fpGiftSpark{
  0%,100%{opacity:0;transform:scale(.4)}
  40%{opacity:1;transform:scale(1.2)}
  70%{opacity:.7;transform:scale(.9)}
}
@keyframes fpGiftStamp{
  0%{transform:scale(1.6);opacity:0}
  100%{transform:scale(1);opacity:.92}
}
@keyframes fpGiftStampFace{
  0%{transform:scale(2.2) rotate(-12deg);opacity:0}
  55%{transform:scale(.92) rotate(4deg);opacity:1}
  100%{transform:scale(1) rotate(0);opacity:.95}
}
@keyframes fpGiftBolt{
  0%{opacity:0;transform:scale(.4) translateY(-12px)}
  25%{opacity:1;transform:scale(1.1) translateY(0)}
  100%{opacity:.25;transform:scale(1) translateY(8px)}
}

@media (prefers-reduced-motion: reduce){
  .fp-gift-p,.fp-gift-wash,.fun-photo-hero.fp-gift-shaking{animation-duration:.01ms !important;animation-iteration-count:1 !important}
}
