/* Load after campaigns.css and hero-campaign.css. All decoration stays in
   dedicated art bands. No JS means a complete, quiet still composition. */
.hero-diwali-art::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 78%,#c5984a24,transparent 65%);pointer-events:none}
.hero-garland{opacity:.58}
.hero-light{stroke:#f2cf8e;stroke-width:2;opacity:.85}
.hero-diya-line{fill:#c3903920;stroke:#e7c282;opacity:.95}
.hero-diya-flame{fill:#f4ce8338;stroke:#f4d79d}
.hero-burst{opacity:.32;transform-box:fill-box;transform-origin:center}
.hero-campaign-invitation[data-festive][data-ready] .hero-burst{animation:v3-festive-burst 13s .5s ease-out infinite;animation-play-state:var(--festive-state,paused)}
.hero-campaign-invitation[data-festive][data-ready] .hero-burst-late{animation-delay:6.5s;animation-duration:17s}
.hero-campaign-invitation[data-festive][data-ready] .hero-light{animation:v3-light-warmth 7s ease-in-out infinite;animation-play-state:var(--festive-state,paused)}
.hero-campaign-invitation[data-festive][data-ready] .hero-light-late{animation-delay:2.5s}
.hero-campaign-invitation[data-festive][data-ready] .hero-diya-flame{animation:v3-diya-warmth 5s ease-in-out infinite;animation-play-state:var(--festive-state,paused)}
/* Short distant bursts; the rest of each cycle is a calm outline. */
@keyframes v3-festive-burst{0%{opacity:.32;transform:scale(.72)}9%{opacity:.92;transform:scale(1)}24%,100%{opacity:.32;transform:scale(1.06)}}
@keyframes v3-light-warmth{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes v3-diya-warmth{0%,100%{opacity:.6}50%{opacity:1}}

/* Offer headings retain their own reserved art area. */
.campaign-heading.diwali-intro:has(>.offer-atmosphere)::before,
.combo-collection-heading:has(>.offer-atmosphere)::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 82% 30%,#b88d3f26,transparent 46%),linear-gradient(110deg,transparent 48%,#b88d3f09);pointer-events:none}
.offer-atmosphere{color:#e1c18a;stroke-width:1.2}
.offer-atmosphere .offer-sparks,.arrival-festive .arrival-sparks{opacity:.32;transform:none;transform-box:fill-box;transform-origin:center}
.offer-atmosphere[data-ready] .offer-sparks,.arrival-festive[data-ready] .arrival-sparks{animation:v3-festive-burst 16s .65s ease-out infinite;animation-play-state:var(--festive-state,paused)}
.offer-atmosphere[data-ready] .offer-sparks-late,.arrival-festive[data-ready] .arrival-sparks-late{animation-delay:8s;animation-duration:19s}
.arrival-festive .arrival-diya{opacity:.8}
.arrival-festive[data-ready] .arrival-flame{animation:v3-diya-warmth 7s ease-in-out infinite;animation-play-state:var(--festive-state,paused)}
@media(max-width:700px){.campaign-heading.diwali-intro:has(>.offer-atmosphere)::before,.combo-collection-heading:has(>.offer-atmosphere)::before{width:90px;height:50px}}
body.campaign-open [data-festive] *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){[data-festive] *{animation:none!important;transform:none!important}}
html[data-motion="reduced"] [data-festive] *{animation:none!important;transform:none!important}
/* A varied sky of slow, finite bursts ends in a calm still composition. */
.hero-campaign-invitation[data-festive][data-ready] .hero-burst-third{animation-delay:3.5s;animation-duration:15s}
.hero-campaign-invitation[data-festive][data-ready] .hero-burst-fourth{animation-delay:9s;animation-duration:18s}
.hero-campaign-invitation[data-festive][data-ready] .hero-burst-fifth{animation-delay:5s;animation-duration:16s}
.hero-campaign-invitation[data-festive][data-ready] .hero-burst-sixth{animation-delay:11s;animation-duration:19s}
.hero-campaign-invitation[data-festive][data-ready] .hero-burst path[pathLength]{stroke-dasharray:100;animation:v3-sky-rays 13s ease-out 10 both;animation-delay:inherit;animation-duration:inherit;animation-play-state:var(--festive-state,paused)}
@keyframes v3-sky-rays{0%{stroke-dashoffset:100}15%,100%{stroke-dashoffset:0}}
.hero-sky-dots{fill:#efd198;stroke:none;opacity:.65}
[data-festive] *,[data-diwali] *,.landing-treatment-grid[data-ready] .landing-treatment{animation-iteration-count:10!important}
