/* V311 — production-safe festival motion layer. Logo artwork is never edited or replaced. */
.brand-logo-stage{position:relative;display:inline-flex;align-items:center;justify-content:center;isolation:isolate;line-height:0;padding:6px 10px;overflow:hidden;border-radius:12px}
.brand-logo-stage .brand-logo-managed{position:relative;z-index:10;display:block}
.brand-festival-effects{position:absolute;inset:-34px -48px;z-index:20;pointer-events:none;overflow:hidden;border-radius:12px}
.brand-festival-effects .festival-particle{position:absolute;display:block;left:50%;top:50%;opacity:0;pointer-events:none;will-change:transform,opacity}
body.brand-festival-active .brand-festival-effects{animation:brandLogoGlow 3s ease-in-out infinite}
body.brand-festival-active.brand-festival-subtle .brand-festival-effects{opacity:.58}
body.brand-festival-active.brand-festival-festive .brand-festival-effects{transform:scale(1.02)}

/* Diwali: actual floating diyas with flickering flames */
.festival-diya{width:20px;height:9px;border-radius:0 0 14px 14px;background:linear-gradient(180deg,#ffd86a,#d77a13);box-shadow:0 3px 14px rgba(255,160,25,.9);left:var(--x)!important;top:var(--y)!important;animation:diyaFloat calc(2.1s + (var(--i) * .12s)) ease-in-out infinite;animation-delay:calc(var(--i) * -.22s);opacity:1!important}
.festival-diya:before{content:"";position:absolute;width:7px;height:14px;left:7px;top:-10px;border-radius:65% 35% 65% 35%;background:#fff1a8;box-shadow:0 0 12px 5px rgba(255,163,35,.65);animation:flame .55s ease-in-out infinite alternate}

/* Holi: powder bursts travelling across the logo */
.festival-powder{width:12px;height:12px;border-radius:50%;background:radial-gradient(circle,#fff 0 8%,var(--c) 22% 68%,transparent 70%);--c:hsl(calc(var(--i)*47),90%,58%);left:var(--x)!important;top:var(--y)!important;animation:powder 2.2s cubic-bezier(.2,.8,.25,1) infinite;animation-delay:calc(var(--i)*-.12s);opacity:.95!important}
.festival-powder:after{content:"";position:absolute;width:4px;height:4px;border-radius:50%;background:var(--c);left:14px;top:-8px;box-shadow:8px 11px 0 var(--c),18px -4px 0 var(--c),22px 9px 0 var(--c)}

/* General festival particles */
.festival-spark,.festival-petal,.festival-star{width:8px;height:8px;border-radius:50%;background:#ffd66b;box-shadow:0 0 12px #ffd66b;left:var(--x)!important;top:var(--y)!important;animation:spark 1.6s ease-in-out infinite;animation-delay:calc(var(--i)*-.18s);opacity:1!important}
.festival-petal{width:11px;height:7px;border-radius:70% 20% 70% 20%;background:#ffb14a;transform:rotate(calc(var(--i)*31deg));animation:petal 2.4s ease-in-out infinite;box-shadow:0 2px 8px rgba(255,167,62,.5)}
.festival-star{width:5px;height:5px;background:#fff3ae;box-shadow:0 0 10px #fff3ae;animation:twinkle 1.2s ease-in-out infinite}
.festival-arrow{width:28px;height:3px;background:#f7c96b;border-radius:4px;left:var(--x)!important;top:var(--y)!important;transform:rotate(calc(-25deg + (var(--i)*13deg)));animation:arrowFly 2.1s ease-in-out infinite;opacity:1!important}
.festival-thread{width:34px;height:3px;background:linear-gradient(90deg,#ff5470,#ffd34d,#7c5cff);border-radius:4px;left:var(--x)!important;top:var(--y)!important;transform:rotate(calc(-20deg + (var(--i)*17deg)));animation:thread 2.7s ease-in-out infinite;opacity:1!important}
.festival-feather{width:8px;height:30px;border-radius:100% 0 100% 0;background:linear-gradient(160deg,#28a95a,#55c8e8,#7d55cf);left:var(--x)!important;top:var(--y)!important;transform:rotate(calc(-25deg + (var(--i)*21deg)));animation:feather 2.6s ease-in-out infinite;opacity:.9!important}
.festival-rain{width:2px;height:24px;background:linear-gradient(transparent,#6fd3ff);left:var(--x)!important;top:-10px!important;transform:rotate(14deg);animation:rain 1.3s linear infinite;animation-delay:calc(var(--i)*-.08s);opacity:.8!important}
.festival-snow{width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff;left:var(--x)!important;top:-8px!important;animation:snow 3s linear infinite;animation-delay:calc(var(--i)*-.25s);opacity:.9!important}
.festival-heart{font-size:17px;color:#ff4d7d;text-shadow:0 0 10px rgba(255,77,125,.65);left:var(--x)!important;top:var(--y)!important;animation:heart 2.5s ease-in-out infinite;animation-delay:calc(var(--i)*-.2s);opacity:1!important}
.festival-firework{width:4px;height:4px;border-radius:50%;background:#ffd54f;box-shadow:0 0 0 0 rgba(255,213,79,.7),0 0 10px #ffd54f;left:var(--x)!important;top:var(--y)!important;animation:firework 2s ease-out infinite;animation-delay:calc(var(--i)*-.14s);opacity:1!important}
.festival-tricolor{width:9px;height:4px;border-radius:4px;background:linear-gradient(90deg,#ff9933 0 33%,#fff 33% 66%,#138808 66%);left:var(--x)!important;top:var(--y)!important;transform:rotate(calc(var(--i)*21deg));animation:tricolor 2.1s ease-in-out infinite;opacity:1!important}
.festival-kite{width:16px;height:16px;background:linear-gradient(135deg,#ff7b00 50%,#1d8fff 50%);transform:rotate(45deg);left:var(--x)!important;top:var(--y)!important;animation:kite 3s ease-in-out infinite;opacity:1!important}
.festival-kite:after{content:"";position:absolute;width:1px;height:22px;background:#ddd;left:8px;top:11px;transform:rotate(-45deg);transform-origin:top}

/* Festival-specific atmosphere */
.brand-logo-stage.festival-diwali .brand-festival-effects:after{content:"";position:absolute;inset:5% 5%;border-radius:50%;box-shadow:0 0 24px rgba(255,166,42,.24);animation:halo 2.5s ease-in-out infinite}
.brand-logo-stage.festival-holi .brand-festival-effects:after{content:"";position:absolute;inset:10%;background:radial-gradient(circle at 20% 30%,rgba(255,40,100,.18),transparent 20%),radial-gradient(circle at 75% 65%,rgba(0,220,150,.18),transparent 22%),radial-gradient(circle at 50% 20%,rgba(255,220,0,.16),transparent 18%);animation:holiWash 2.8s ease-in-out infinite}
.brand-logo-stage.festival-eid .brand-festival-effects:after{content:"☾";position:absolute;right:2%;top:-2%;font-size:32px;color:#e8cb7a;text-shadow:0 0 14px rgba(232,203,122,.6);animation:orbit 5s linear infinite}
.brand-logo-stage.festival-christmas .brand-festival-effects:after{content:"✦";position:absolute;right:4%;top:0;color:#eaf6ff;font-size:24px;text-shadow:0 0 12px #fff;animation:twinkle 1.4s infinite}
.brand-logo-stage.festival-newyear .brand-festival-effects:after{content:"✦";position:absolute;left:45%;top:35%;color:#ffd54f;font-size:26px;text-shadow:0 0 16px #ffd54f;animation:firework 1.8s infinite}

@keyframes brandLogoGlow{0%,100%{filter:drop-shadow(0 0 0 rgba(255,190,70,0))}50%{filter:drop-shadow(0 0 10px rgba(255,190,70,.35))}}
@keyframes flame{to{transform:translateY(-3px) scale(.8) rotate(-8deg);opacity:.65}}
@keyframes diyaFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-9px) rotate(3deg)}}
@keyframes powder{0%{transform:translate(-25px,10px) scale(.35);opacity:0}25%{opacity:1}70%{transform:translate(55px,-22px) scale(1.15);opacity:.95}100%{transform:translate(105px,20px) scale(.2);opacity:0}}
@keyframes spark{50%{transform:scale(1.8);opacity:.2}}
@keyframes petal{50%{transform:translate(12px,-10px) rotate(80deg)}}
@keyframes twinkle{50%{transform:scale(1.9);opacity:.25}}
@keyframes arrowFly{50%{transform:translate(18px,-7px) rotate(8deg);opacity:.35}}
@keyframes thread{50%{transform:translate(18px,8px) rotate(15deg)}}
@keyframes feather{50%{transform:translateY(-10px) rotate(15deg)}}
@keyframes rain{to{transform:translate(-6px,80px) rotate(14deg);opacity:0}}
@keyframes snow{to{transform:translate(18px,90px) rotate(180deg);opacity:.05}}
@keyframes heart{50%{transform:translateY(-12px) scale(1.25);opacity:.5}}
@keyframes firework{0%{transform:scale(.2);opacity:0;box-shadow:0 0 0 0 rgba(255,213,79,.8)}35%{opacity:1}100%{transform:scale(4);opacity:0;box-shadow:0 0 0 18px rgba(255,213,79,0)}}
@keyframes tricolor{50%{transform:translateY(-9px) rotate(35deg)}}
@keyframes kite{50%{transform:translate(10px,-13px) rotate(70deg)}}
@keyframes halo{50%{opacity:.55;transform:scale(1.06)}}
@keyframes holiWash{50%{transform:scale(1.1);opacity:.75}}
@keyframes orbit{to{transform:rotate(360deg)}}

body.brand-festival-mobile-off .brand-festival-effects{display:none!important}
@media(min-width:768px){body.brand-festival-desktop-off .brand-festival-effects{display:none!important}}
@media(max-width:767px){.brand-logo-stage{padding:3px 4px;border-radius:10px}.brand-festival-effects{inset:0}.brand-logo-stage .brand-logo-managed{max-width:100%;height:auto}.festival-diya{width:14px;height:7px}.festival-diya:before{width:5px;height:10px;left:5px;top:-8px}}
@media(prefers-reduced-motion:reduce){.brand-festival-effects *,.brand-festival-effects:after{animation:none!important}.brand-festival-effects{opacity:.75}}
