/* Shared motion plumbing. Design-specific choreography lives in each concept's motion.css. */

/* Split headline words stay inline and wrap naturally */
.w, .w .wi { display: inline-block; }

/* Fireflies (spawned by data-fireflies) */
.ff {
  position: absolute; left: var(--x); top: var(--y);
  width: var(--s, 3px); height: var(--s, 3px); border-radius: 50%;
  background: #ffe9a3; box-shadow: 0 0 6px 2px rgba(255, 210, 110, 0.75), 0 0 16px 4px rgba(255, 190, 80, 0.25);
  pointer-events: none; opacity: 0;
}
.ff-near { filter: blur(1.2px); box-shadow: 0 0 10px 4px rgba(255, 210, 110, 0.6), 0 0 26px 8px rgba(255, 190, 80, 0.2); }
html[data-motion="on"] .ff { animation: hh-ff-drift var(--d) ease-in-out var(--delay) infinite alternate, hh-ff-blink var(--blink) ease-in-out var(--delay) infinite; }
@keyframes hh-ff-drift { 0% { transform: translate(0, 0); } 50% { transform: translate(var(--dx), var(--dy)); } 100% { transform: translate(calc(var(--dx) * -0.6), calc(var(--dy) * 0.8)); } }
@keyframes hh-ff-blink { 0%, 100% { opacity: 0.05; } 45%, 60% { opacity: 0.95; } }

/* Motion off: freeze every animation and transition, and make sure nothing is left hidden */
html[data-motion="off"] *, html[data-motion="off"] *::before, html[data-motion="off"] *::after {
  animation: none !important;
  transition-duration: 0s !important;
  transition-delay: 0s !important;
  scroll-behavior: auto !important;
}
html[data-motion="off"] .reveal, html[data-motion="off"] [data-anim], html[data-motion="off"] .w .wi { opacity: 1 !important; transform: none !important; filter: none !important; clip-path: none !important; }
html[data-motion="off"] { scroll-behavior: auto !important; }
html[data-motion="off"] .ff { display: none; }
html[data-motion="off"] [data-parallax] { transform: none !important; }

/* Campaign weather (shared/hh-weather.js): snow or falling leaves over the hero */
.hero-weather { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; container-type: size; }
.hero.has-weather .fireflies { display: none; }
.hero-weather i { position: absolute; left: var(--x); top: -40px; opacity: var(--o); animation: hh-fall var(--d) linear var(--delay) infinite; }
.hero-weather b { display: block; animation: hh-sway var(--sd) ease-in-out var(--delay) infinite alternate; }
.is-snow b { width: var(--s); height: var(--s); border-radius: 50%; background: #fff; box-shadow: 0 0 6px rgba(255, 255, 255, 0.6); filter: blur(var(--blur)); }
.is-leaves b svg { display: block; width: var(--s); height: var(--s); fill: var(--c); filter: drop-shadow(0 3px 4px rgba(0, 0, 0, 0.25)); animation: hh-tumble var(--spin) ease-in-out var(--delay) infinite; }
@keyframes hh-fall { to { transform: translateY(calc(100cqh + 80px)); } }
@keyframes hh-sway { from { transform: translateX(calc(var(--sway) * -1)); } to { transform: translateX(var(--sway)); } }
@keyframes hh-tumble { 0% { transform: rotate(0deg) rotateX(0deg); } 50% { transform: rotate(180deg) rotateX(60deg); } 100% { transform: rotate(360deg) rotateX(0deg); } }
html[data-motion="off"] .hero-weather { display: none; }
html[data-motion="off"] .hero.has-weather .fireflies { display: block; }
