/* ═══════════════════════════════════════════════════════════════
   SimiTOLK — Festival Micro-Interactions & Cartoon Animations
   Indian & Maharashtrian Festivals — Full Project
   ═══════════════════════════════════════════════════════════════ */

/* ── CARTOON: Add to Cart Fly Animation ── */
.fly-to-cart{
  position:fixed;z-index:10000;pointer-events:none;
  width:50px;height:50px;border-radius:12px;overflow:hidden;
  box-shadow:0 8px 24px rgba(0,0,0,0.3);
  animation:flyCartBounce .15s ease-out,flyCartArc .7s ease-in forwards;
}
.fly-to-cart img{width:100%;height:100%;object-fit:cover}
@keyframes flyCartBounce{0%{transform:scale(1.2)}100%{transform:scale(1)}}
@keyframes flyCartArc{
  0%{opacity:1;transform:translate(0,0) scale(1) rotate(0deg)}
  40%{opacity:1;transform:translate(var(--fly-x,200px),var(--fly-y,-150px)) scale(0.7) rotate(-15deg)}
  100%{opacity:0;transform:translate(var(--fly-x2,400px),var(--fly-y2,-50px)) scale(0.2) rotate(-30deg)}
}

/* ── CARTOON: Wishlist Heart Explosion ── */
.wish-burst{position:fixed;z-index:10000;pointer-events:none}
.wish-particle{
  position:absolute;width:8px;height:8px;border-radius:50%;
  animation:wishPop .8s ease-out forwards;
}
@keyframes wishPop{
  0%{opacity:1;transform:translate(0,0) scale(1)}
  100%{opacity:0;transform:translate(var(--wx,30px),var(--wy,-40px)) scale(0)}
}
.wish-heart-float{
  position:fixed;z-index:10000;pointer-events:none;font-size:24px;
  animation:heartFloat 1.2s ease-out forwards;
}
@keyframes heartFloat{
  0%{opacity:1;transform:translateY(0) scale(1)}
  50%{opacity:1;transform:translateY(-40px) scale(1.3)}
  100%{opacity:0;transform:translateY(-80px) scale(0.5)}
}

/* ── CARTOON: Buy / Book Celebration ── */
.celebration-burst{position:fixed;z-index:10000;pointer-events:none;inset:0}
.celeb-particle{
  position:absolute;
  animation:celebFly 1s ease-out forwards;
}
@keyframes celebFly{
  0%{opacity:1;transform:translate(0,0) rotate(0deg) scale(1)}
  100%{opacity:0;transform:translate(var(--cx,100px),var(--cy,-200px)) rotate(var(--cr,360deg)) scale(0.3)}
}

/* ── Button Festival Ripple ── */
.fest-ripple{
  position:absolute;border-radius:50%;
  animation:festRipple .6s ease-out forwards;
  pointer-events:none;
}
@keyframes festRipple{
  0%{transform:scale(0);opacity:0.5}
  100%{transform:scale(4);opacity:0}
}

/* ── Cart Icon Bounce ── */
.cart-bounce{animation:cartBounce .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes cartBounce{
  0%{transform:scale(1)}
  30%{transform:scale(1.3) rotate(-8deg)}
  50%{transform:scale(0.9) rotate(4deg)}
  70%{transform:scale(1.1) rotate(-2deg)}
  100%{transform:scale(1) rotate(0deg)}
}

/* ── Price Tag Swing ── */
.price-swing{animation:priceSwing .8s ease-in-out}
@keyframes priceSwing{
  0%{transform:rotate(0deg)}
  20%{transform:rotate(-6deg)}
  40%{transform:rotate(4deg)}
  60%{transform:rotate(-2deg)}
  80%{transform:rotate(1deg)}
  100%{transform:rotate(0deg)}
}

/* ── Add Button Pulse ── */
.add-pulse{animation:addPulse .4s ease}
@keyframes addPulse{
  0%{transform:scale(1)}
  50%{transform:scale(1.15)}
  100%{transform:scale(1)}
}

/* ── Discount Badge Wiggle ── */
.discount-wiggle{animation:discountWiggle 2s ease-in-out infinite}
@keyframes discountWiggle{
  0%,100%{transform:rotate(0deg) scale(1)}
  25%{transform:rotate(-3deg) scale(1.02)}
  75%{transform:rotate(3deg) scale(1.02)}
}

/* ── Gift Box Shake ── */
.gift-shake{animation:giftShake 1.5s ease-in-out infinite}
@keyframes giftShake{
  0%,100%{transform:rotate(0deg)}
  10%{transform:rotate(-10deg)}
  20%{transform:rotate(10deg)}
  30%{transform:rotate(-8deg)}
  40%{transform:rotate(8deg)}
  50%{transform:rotate(0deg)}
}

/* ── Festival Banner Shimmer ── */
.fest-shimmer{position:relative;overflow:hidden}
.fest-shimmer::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,0.15) 50%,transparent 60%);
  animation:shimmer 3s infinite;
}
@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}

/* ── Confetti (for cart add) ── */
.confetti-pop{
  position:absolute;pointer-events:none;
}
.confetti-bit{
  position:absolute;width:6px;height:6px;
  animation:confettiPop .8s ease-out forwards;
}
@keyframes confettiPop{
  0%{opacity:1;transform:translate(0,0) rotate(0deg) scale(1)}
  100%{opacity:0;transform:translate(var(--cx,40px),var(--cy,-60px)) rotate(var(--cr,540deg)) scale(0)}
}

/* ── Star Sparkle (for wishlist) ── */
.star-sparkle{
  position:absolute;pointer-events:none;font-size:12px;
  animation:starPop .6s ease-out forwards;
}
@keyframes starPop{
  0%{opacity:0;transform:scale(0) rotate(0deg)}
  50%{opacity:1;transform:scale(1.2) rotate(180deg)}
  100%{opacity:0;transform:scale(0.5) rotate(360deg)}
}

/* ── Festival Button Glow ── */
.fest-btn-glow{
  position:relative;overflow:hidden;
  transition:all .3s ease;
}
.fest-btn-glow::before{
  content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;
  background:conic-gradient(from 0deg,transparent,rgba(255,255,255,0.1),transparent 30%);
  animation:glowRotate 4s linear infinite;
  opacity:0;transition:opacity .3s;
}
.fest-btn-glow:hover::before{opacity:1}
@keyframes glowRotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}

/* ── Diwali Diya Glow on Buttons ── */
.diya-glow-btn{
  background:linear-gradient(135deg,#b8860b,#f39c12) !important;
  color:#fff !important;
  box-shadow:0 0 20px rgba(243,156,18,0.3);
  animation:diyaPulse 2s ease-in-out infinite;
}
@keyframes diyaPulse{
  0%,100%{box-shadow:0 0 20px rgba(243,156,18,0.3)}
  50%{box-shadow:0 0 30px rgba(243,156,18,0.5),0 0 60px rgba(243,156,18,0.2)}
}

/* ── Holi Color Splash ── */
.holi-splash{
  position:fixed;z-index:10000;pointer-events:none;
  width:80px;height:80px;border-radius:50%;
  filter:blur(8px);opacity:0.6;
  animation:holiSplash .8s ease-out forwards;
}
@keyframes holiSplash{
  0%{transform:scale(0);opacity:0.7}
  50%{transform:scale(1.5);opacity:0.5}
  100%{transform:scale(2);opacity:0}
}

/* ── Ganesh Modak Rain ── */
.modak-rain{
  position:fixed;z-index:9999;pointer-events:none;font-size:20px;
  animation:modakFall 2s ease-in forwards;
}
@keyframes modakFall{
  0%{opacity:1;transform:translateY(-20px) rotate(0deg)}
  100%{opacity:0;transform:translateY(100vh) rotate(360deg)}
}

/* ── Navratri Garba Dandiya Spin ── */
.garba-spin{animation:garbaSpin 1s ease-in-out}
@keyframes garbaSpin{
  0%{transform:rotate(0deg) scale(1)}
  25%{transform:rotate(90deg) scale(1.1)}
  50%{transform:rotate(180deg) scale(1)}
  75%{transform:rotate(270deg) scale(1.1)}
  100%{transform:rotate(360deg) scale(1)}
}

/* ── Eid Crescent Moon ── */
.eid-glow{
  animation:eidPulse 3s ease-in-out infinite;
}
@keyframes eidPulse{
  0%,100%{text-shadow:0 0 10px rgba(34,139,34,0.3)}
  50%{text-shadow:0 0 20px rgba(34,139,34,0.6),0 0 40px rgba(34,139,34,0.2)}
}

/* ── Sankranti Kite Fly ── */
.kite-fly{
  position:fixed;z-index:9999;pointer-events:none;font-size:28px;
  animation:kiteAscend 2.5s ease-in forwards;
}
@keyframes kiteAscend{
  0%{opacity:1;transform:translateY(0) translateX(0) rotate(0deg)}
  50%{opacity:1;transform:translateY(-200px) translateX(30px) rotate(-10deg)}
  100%{opacity:0;transform:translateY(-400px) translateX(-20px) rotate(15deg)}
}

/* ── Christmas Snow ── */
.snowflake{
  position:fixed;z-index:9999;pointer-events:none;color:#fff;font-size:14px;
  animation:snowFall 3s linear forwards;
  text-shadow:0 0 4px rgba(255,255,255,0.5);
}
@keyframes snowFall{
  0%{opacity:1;transform:translateY(-10px) rotate(0deg) translateX(0)}
  50%{opacity:0.8;transform:translateY(50vh) rotate(180deg) translateX(20px)}
  100%{opacity:0;transform:translateY(100vh) rotate(360deg) translateX(-10px)}
}

/* ── Onam Pookalam Flower Ring ── */
.pookalam-ring{
  position:fixed;z-index:9999;pointer-events:none;font-size:18px;
  animation:pookalamSpin 1.5s ease-out forwards;
}
@keyframes pookalamSpin{
  0%{opacity:0;transform:scale(0) rotate(0deg)}
  50%{opacity:0.8;transform:scale(1.2) rotate(180deg)}
  100%{opacity:0;transform:scale(0.5) rotate(360deg)}
}

/* ── Floating Festival Emojis ── */
.float-emoji{
  position:fixed;z-index:9999;pointer-events:none;font-size:24px;
  animation:floatUp 2s ease-out forwards;
}
@keyframes floatUp{
  0%{opacity:1;transform:translateY(0) scale(1)}
  100%{opacity:0;transform:translateY(-120px) scale(0.6)}
}

/* ── Festival Toast Enhanced ── */
.toast-festive{
  position:relative;overflow:hidden;
  border:2px solid var(--fa,#f1c40f);
  background:linear-gradient(135deg,var(--fp,#8b1a1a),var(--fs,#c0392b));
  color:#fff;
}
.toast-festive::before{
  content:'';position:absolute;inset:0;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,0.1),transparent);
  animation:shimmer 2s infinite;
}

/* ── Scroll Reveal with Festival Stagger ── */
.fest-reveal{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}
.fest-reveal.visible{opacity:1;transform:translateY(0)}
.fest-reveal:nth-child(2){transition-delay:.1s}
.fest-reveal:nth-child(3){transition-delay:.2s}
.fest-reveal:nth-child(4){transition-delay:.3s}
.fest-reveal:nth-child(5){transition-delay:.4s}
.fest-reveal:nth-child(6){transition-delay:.5s}

/* ── Festival Header Badge Glow ── */
.fest-badge-glow{
  animation:badgeGlow 2s ease-in-out infinite;
}
@keyframes badgeGlow{
  0%,100%{box-shadow:0 0 8px rgba(241,196,15,0.3)}
  50%{box-shadow:0 0 16px rgba(241,196,15,0.6),0 0 32px rgba(241,196,15,0.2)}
}

/* ── Offer Card Shine ── */
.offer-shine{position:relative;overflow:hidden}
.offer-shine::after{
  content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;
  background:linear-gradient(45deg,transparent 30%,rgba(255,255,255,0.08) 50%,transparent 70%);
  animation:offerShine 5s ease-in-out infinite;
}
@keyframes offerShine{0%,100%{transform:translateX(-100%) translateY(-100%)}50%{transform:translateX(100%) translateY(100%)}}

/* ── Product Card Hover Lift ── */
.prod-hover-lift{transition:transform .3s ease,box-shadow .3s ease}
.prod-hover-lift:hover{transform:translateY(-6px);box-shadow:0 12px 32px rgba(0,0,0,0.15)}

/* ── Add to Cart Button Festival Animation ── */
.cart-add-anim{
  transition:all .3s cubic-bezier(.34,1.56,.64,1);
}
.cart-add-anim:hover{transform:scale(1.04)}
.cart-add-anim:active{transform:scale(0.96)}
.cart-add-anim.added{
  background:var(--green,#16a34a) !important;
  animation:addPulse .4s ease;
}

/* ── Wishlist Heart Button Animation ── */
.wish-anim{
  transition:all .3s cubic-bezier(.34,1.56,.64,1);
}
.wish-anim:hover{transform:scale(1.15)}
.wish-anim.liked{
  animation:heartBeat .4s ease;
  color:#ef4444 !important;
}
@keyframes heartBeat{
  0%{transform:scale(1)}
  25%{transform:scale(1.3)}
  50%{transform:scale(0.9)}
  75%{transform:scale(1.15)}
  100%{transform:scale(1)}
}

/* ── Checkout Button Festival Style ── */
.checkout-fest-btn{
  position:relative;overflow:hidden;
  background:linear-gradient(135deg,var(--fp,#8b1a1a),var(--fs,#c0392b));
  color:#fff;border:none;padding:14px 32px;border-radius:14px;
  font-weight:800;font-size:15px;cursor:pointer;
  transition:all .3s ease;
  box-shadow:0 4px 16px rgba(139,26,26,0.3);
}
.checkout-fest-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 8px 24px rgba(139,26,26,0.4);
}
.checkout-fest-btn:active{transform:translateY(0) scale(0.98)}
.checkout-fest-btn::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,0.15) 50%,transparent 60%);
  animation:shimmer 3s infinite;
}

/* ── Sun Rise (Chhath) ── */
@keyframes sunRise{
  0%{bottom:-60px;opacity:0;transform:translateX(-50%) scale(0.5)}
  50%{opacity:1;transform:translateX(-50%) scale(1.1)}
  100%{bottom:30%;opacity:1;transform:translateX(-50%) scale(1)}
}

/* ── Sparkle Pulse (stars) ── */
@keyframes sparklePulse{
  0%{opacity:0;transform:scale(0) rotate(0deg)}
  50%{opacity:1;transform:scale(1.3) rotate(180deg)}
  100%{opacity:0;transform:scale(0.5) rotate(360deg)}
}

/* ── Cartoon Character Slide In ── */
@keyframes cartoonSlideIn{
  0%{bottom:-100px;opacity:0;transform:translateX(20px)}
  100%{bottom:20px;opacity:1;transform:translateX(0)}
}
@keyframes cartoonSlideOut{
  0%{bottom:20px;opacity:1;transform:translateX(0)}
  100%{bottom:-100px;opacity:0;transform:translateX(40px)}
}

/* ── Festival Page Theme Overrides ── */
body.fest-active{--pri:var(--fp,#8b1a1a);--pri-l:var(--fs,#c0392b);--pri-d:var(--fp,#8b1a1a)}
body.fest-active .g-header{border-bottom-color:var(--fp,#8b1a1a)}
body.fest-active .checkout-btn{background:linear-gradient(135deg,var(--fp,#8b1a1a),var(--fs,#c0392b))}
body.fest-active .checkout-btn:hover{box-shadow:0 10px 28px rgba(139,26,26,.35)}
body.fest-active .btn-green{background:var(--fp,#8b1a1a)}
body.fest-active .fd-cuisine-btn.active{background:var(--fp,#8b1a1a);border-color:var(--fp,#8b1a1a)}
body.fest-active .fd-menu-item-add:hover{background:var(--fp,#8b1a1a)}
body.fest-active .prod-card:hover{border-color:var(--fp,#8b1a1a)}
body.fest-active a:hover{color:var(--fp,#8b1a1a)}
