.footer-neon {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  --neon-mint: var(--raw-neon-mint);
  --neon-core: var(--raw-neon-core);
}
.footer-neon__dark {
  position: absolute;
  inset: 0;
  isolation: isolate;
  background: linear-gradient(145deg,
    var(--raw-void-950), var(--raw-phthalo-900));
  --shade-feather: clamp(10rem, 28vh, 22rem);
  mask-image: linear-gradient(to bottom,
    transparent 0,
    rgb(0 0 0 / .08) calc(var(--shade-feather) * .25),
    rgb(0 0 0 / .4) calc(var(--shade-feather) * .5),
    rgb(0 0 0 / .82) calc(var(--shade-feather) * .75),
    #000 var(--shade-feather));
  transform: translateY(100%);
  transition: transform 2400ms cubic-bezier(.4, 0, .2, 1);
}
.footer-neon__dark::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: var(--texture-glass);
  background-repeat: repeat;
  background-size: var(--texture-glass-size);
  opacity: 1;
  mix-blend-mode: overlay;
}
.footer.is-neon .footer-neon__dark { transform: translateY(0); }
.footer.is-neon {
  --foreground-muted: var(--raw-ink-050-a70);
  --foreground-faint: var(--raw-ink-050-a50);
}
.footer-neon__scatter {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: min(100%, 52rem);
  opacity: 0;
  mask-image: linear-gradient(to bottom, transparent, #000 8%, #000 92%, transparent);
}
.footer-neon__float {
  position: absolute;
  left: 0;
  top: 0;
  width: var(--size);
  transform: translate(-50%, -50%) rotate(var(--angle));
  will-change: transform;
  /* Owner-requested defocus follows each fade, on small feather surfaces only.
     The footer text and icy texture never enter this filter. */
  filter: blur(var(--feather-blur));
}
.footer-neon__float svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}
.footer-neon__plume { color: var(--raw-neon-mint); }
.footer-neon__plume path {
  fill: none;
  stroke: currentColor;
  stroke-linecap: butt;
  stroke-linejoin: round;
}
/* Flowing light stays articulated inside the softly blurred wrapper. */
.footer-neon__plume .footer-neon__halo { stroke-width: calc(8px * var(--neon-stroke-scale, 1)); stroke: currentColor; stroke-opacity: .13; }
.footer-neon__plume .footer-neon__body { stroke-width: calc(2.6px * var(--neon-stroke-scale, 1)); stroke-opacity: .6; }
.footer-neon__plume .footer-neon__core { stroke-width: calc(1.25px * var(--neon-stroke-scale, 1)); stroke: var(--raw-neon-core); }
.footer-neon__shaft-base { stroke-width: calc(1px * var(--neon-stroke-scale, 1)); }
.footer-neon__barb-base { stroke-width: calc(.85px * var(--neon-stroke-scale, 1)); }
.footer-neon__plume .footer-neon__barb-light { stroke-width: calc(1.15px * var(--neon-stroke-scale, 1)); stroke: var(--raw-neon-core); }
.footer-neon__eye--0 { color: var(--raw-neon-chart); }
.footer-neon__eye--1 { color: var(--raw-neon-jade); }
.footer-neon__eye--2 { color: var(--raw-neon-blue); }
.footer-neon__eye-base { stroke-width: calc(1.4px * var(--neon-stroke-scale, 1)); }
.footer-neon__plume .footer-neon__pupil { fill: var(--raw-neon-pupil); stroke: none; }
@media (max-width: 640px) {
  .footer-neon__scatter { height: min(100%, 46rem); }
  .footer-neon__float { width: calc(var(--size) * .78); }
  .footer-neon__fine { display: none; }
  .footer-neon__plume .footer-neon__halo { stroke-width: calc(5px * var(--neon-stroke-scale, 1)); }
  .footer-neon__plume .footer-neon__body { stroke-width: calc(1.6px * var(--neon-stroke-scale, 1)); }
  .footer-neon__plume .footer-neon__core { stroke-width: calc(1px * var(--neon-stroke-scale, 1)); }
  .footer-neon__plume .footer-neon__barb-light { stroke-width: calc(1px * var(--neon-stroke-scale, 1)); }
}
@media (prefers-reduced-motion: reduce) {
  .footer-neon__dark { transition: none; }
}
