/* glow.css — pre-rendered radial-gradient glow primitive (Phase 1).
   Zero per-frame blur cost: no feGaussianBlur, no shadowBlur.
   Ember (warm) and spectral (cool) variants mirror the starfield particle families.

   CSS usage  : add .glow-ember or .glow-spectral to any positioned HTML element.
   SVG usage  : fill="url(#glow-ember-rg)" or "url(#glow-spectral-rg)"
                on an aura <ellipse>/<rect> inside a symbol (defined in shared_defs_svg).
   Canvas     : follow the glow() pattern in js/starfield.js (offscreen radialGradient + 'lighter').

   All palette rgba values are the locked set from variables.yaml, with alpha. */

/* The Phase-2.5.2 shimmer bridge (`:root { --shimmer-X: url(#shimmer-X) }` +
   `stroke:var(--shimmer-X, url(#shimmer-X))` baked into sprite shapes) is GONE
   as of Phase 3.5.5. Gate G2 failed in-browser (cross-document url() out of an
   external sprite is an interop dead zone); all decor now uses F2a — per-layer
   symbols stroked by presentation attributes on the host <use>, resolving
   against shared_defs_svg's rotating copies. No sprite shape carries a shimmer
   url any more, so the custom properties are unused and removed. */

/* ── F2a shimmer "glow" layer (critters + separators) ────────────────────────
   The animated colour stroke that reads alongside the white skeleton. The
   sprite path carries vector-effect:non-scaling-stroke and NO width of its own,
   so this width is honoured in *screen* pixels regardless of how small/large
   the decor renders — the same boldness on a tiny critter and a full-width
   separator. Tune --glow-w to taste (logos keep their own inline width and are
   unaffected; their fill+outline proportions were dialled in at 3.5.4). */
:root { --glow-w: 3px; }
.sh-glow { stroke-width: var(--glow-w); }

.glow-ember,
.glow-spectral {
  position: relative;
}

/* Glow halo sits behind element content (z-index:-1), spread outside via negative inset. */
.glow-ember::before,
.glow-spectral::before {
  content: '';
  position: absolute;
  inset: -0.6em;
  border-radius: inherit;
  pointer-events: none;
  z-index: -1;
}

/* ember — sun #f2c62a → fire #eb7513 → rust #a52c16 → transparent */
.glow-ember::before {
  background: radial-gradient(ellipse at center,
    rgba(242, 198,  42, .42)   0%,
    rgba(235, 117,  19, .26)  38%,
    rgba(165,  44,  22, .10)  68%,
    transparent              100%
  );
}

/* spectral — light #e8e2da → meadow #5e9a0e → forest #0e4d0e → transparent */
.glow-spectral::before {
  background: radial-gradient(ellipse at center,
    rgba(232, 226, 218, .38)   0%,
    rgba( 94, 154,  14, .22)  38%,
    rgba( 14,  77,  14, .09)  68%,
    transparent              100%
  );
}

/* Reduced motion: keep glow visible but flatten it.
   No animation to suppress here — this is a static pre-rendered primitive. */
@media (prefers-reduced-motion: reduce) {
  .glow-ember::before,
  .glow-spectral::before {
    opacity: 0.45;
  }
}
