/* LoschaZ "sparkle" section effects v1 – desktop + mobile. Everything is inert until sparkle.js adds html.lzs
   (only when prefers-reduced-motion is not "reduce" and Save-Data is off). No layout changes: every element it
   adds is absolutely/fixed positioned and pointer-events:none. Coordinated with fx.css (own keyframes, own
   child spans instead of the ::before/::after slots that fx.css and polish.css use). */
@keyframes lzs-pulse{0%,100%{opacity:0}50%{opacity:1}}
@keyframes lzs-breathe{0%{opacity:0}50%{opacity:.75}100%{opacity:0}}
@media (prefers-reduced-motion:no-preference){
/* background canvas (games stars / guide fireflies): behind all content, like #lzfx */
#lzs-bg{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;opacity:0;transition:opacity 1.6s ease}
#lzs-bg.is-on{opacity:1}
/* guide pages paint <main> in exactly the body colour; make it transparent so the layer shows (visually identical) */
html.lzs-bg main.gz-shell{background-color:transparent}

/* TOOLS – slow, gentle edge glow that breathes (5.5 s), staggered per card, only while the card is on screen */
html.lzs .lzs-edge{position:absolute;inset:0;z-index:1;border-radius:inherit;pointer-events:none;opacity:0;
  --lzs-c:var(--card-accent,#c5f275);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--lzs-c) 55%,transparent),inset 0 0 18px -8px color-mix(in srgb,var(--lzs-c) 45%,transparent),0 0 22px -10px color-mix(in srgb,var(--lzs-c) 55%,transparent)}
html.lzs .lzs-vis > .lzs-edge{animation:lzs-pulse 5.5s ease-in-out var(--lzs-d,0s) infinite}

/* DOWNLOADS – soft border breathe, twice, when the button comes into view (no running light) */
html.lzs .lzs-dl{position:relative}
html.lzs .lzs-run{position:absolute;inset:-3px;z-index:2;border-radius:15px;pointer-events:none;opacity:0;
  box-shadow:0 0 0 1.5px #c5f2758c,0 0 18px -2px #70e5db59}
html.lzs .lz-btn--primary.lzs-dl > .lzs-run{box-shadow:0 0 0 1.5px #ffffff73,0 0 18px -2px #70e5db66}
html.lzs .lzs-dl.lzs-vis > .lzs-run{animation:lzs-breathe 3.6s ease-in-out .3s 2 both}

/* GAMES + DOWNLOADS – small, soft tap burst (fixed layer, removed after 0.8 s) */
.lzs-burst{position:fixed;left:0;top:0;width:0;height:0;z-index:2147480000;pointer-events:none}
.lzs-burst i{position:absolute;left:-2px;top:-2px;width:4px;height:4px;border-radius:50%;background:var(--c);box-shadow:0 0 5px 1px var(--c)}
.lzs-burst i.s{width:7px;height:7px;left:-3.5px;top:-3.5px;border-radius:0;box-shadow:none;
  background:radial-gradient(closest-side,var(--c),#0000),conic-gradient(from 45deg,#0000 0 10%,var(--c) 12% 13%,#0000 15% 35%,var(--c) 37% 38%,#0000 40% 60%,var(--c) 62% 63%,#0000 65% 85%,var(--c) 87% 88%,#0000 90%);filter:drop-shadow(0 0 3px var(--c))}
}
