/* Shared particle material; all layers ignore input and sit outside text masks. */
.dust-mote{position:absolute;display:block;width:var(--dust-size);height:var(--dust-size);border-radius:50%;background:radial-gradient(circle,rgba(255,243,204,.95),rgba(242,217,159,.58) 36%,rgba(230,216,174,0) 74%);box-shadow:0 0 4px rgba(244,222,171,.16);filter:blur(var(--dust-blur));opacity:var(--dust-alpha);animation:dust-float var(--dust-duration) ease-in-out var(--dust-delay) infinite alternate;animation-play-state:paused;pointer-events:none}
@keyframes dust-float{0%{transform:translate(0,0);opacity:calc(var(--dust-alpha)*.55)}35%{transform:translate(var(--dust-x1),var(--dust-y1));opacity:var(--dust-alpha)}70%{transform:translate(var(--dust-x2),var(--dust-y2));opacity:calc(var(--dust-alpha)*.75)}100%{transform:translate(var(--dust-x3),var(--dust-y3));opacity:calc(var(--dust-alpha)*.35)}}
/* Mixed-depth motes overlap or surround the control, then fade drifting outward. */
.soft-particles{position:fixed;left:0;top:0;margin:0;padding:0;border:0;overflow:visible;pointer-events:none;isolation:isolate}
.soft-particles[hidden],.soft-particles .dust-mote[hidden]{display:none}
.soft-particles .dust-mote{filter:blur(var(--dust-blur));background:radial-gradient(circle,rgba(255,246,206,1) 0%,rgba(246,222,148,.82) 28%,rgba(230,203,117,0) 72%);box-shadow:0 0 7px 2px rgba(255,220,137,.3),0 0 15px rgba(238,202,101,.16);opacity:0;animation:firefly-breathe var(--flight-duration) linear var(--flight-delay) infinite;animation-play-state:paused}
.soft-particles.is-lit .dust-mote{animation-play-state:running}
.button-fireflies{z-index:10000;opacity:0;transition:opacity .42s ease}
.button-fireflies.is-lit{opacity:1}
.button-fireflies.light-surface .dust-mote{background:radial-gradient(circle,rgba(255,243,193,1),rgba(181,131,40,.82) 30%,rgba(186,135,42,0) 74%);box-shadow:0 0 7px 2px rgba(175,116,30,.3),0 0 15px rgba(222,173,57,.22)}
.title-fireflies{z-index:3;animation:title-motes-in 1.4s ease-out both}
@keyframes title-motes-in{from{opacity:0}to{opacity:1}}
@keyframes firefly-breathe{
  0%{opacity:0;transform:translate(0,0) scale(.7)}
  16%{opacity:var(--glow-peak);transform:translate(calc(var(--flight-x)*.12),calc(var(--flight-y)*.12)) scale(1)}
  40%{opacity:calc(var(--glow-peak)*.7);transform:translate(calc(var(--flight-x)*.38 + var(--flight-sway-x)),calc(var(--flight-y)*.38 + var(--flight-sway-y))) scale(.96)}
  72%{opacity:calc(var(--glow-peak)*.18);transform:translate(calc(var(--flight-x)*.8),calc(var(--flight-y)*.8)) scale(.87)}
  90%,100%{opacity:0;transform:translate(var(--flight-x),var(--flight-y)) scale(.78)}
}
@media(prefers-reduced-motion:reduce){.soft-particles{display:none!important}}
