// ZION EmberLayer — fixed-position page-level background layer.
// Subtle film grain + slow-rising ember particles for the whole site.

function EmberLayer({ count = 24 }) {
  const embers = React.useMemo(() => {
    return Array.from({ length: count }).map((_, i) => {
      const seed = i * 7919;
      const rand = (n) => ((Math.sin(seed + n) + 1) / 2);
      const left = rand(1) * 100;             // 0–100 %
      const size = 2 + rand(2) * 5;           // 2–7 px
      const dur = 14 + rand(3) * 16;          // 14–30 s
      const delay = -rand(4) * dur;           // pre-shifted so they start mid-flight
      const drift = (rand(5) - 0.5) * 80;     // -40 to 40 px horizontal sway
      const hue = rand(6) > 0.5 ? '#FF6B35' : '#F7591F';
      const opacity = 0.35 + rand(7) * 0.45;
      return { i, left, size, dur, delay, drift, hue, opacity };
    });
  }, [count]);

  return (
    <>
      <style>{`
        @keyframes zion-ember-rise {
          0%   { transform: translate3d(0, 0, 0) scale(0.6); opacity: 0; }
          8%   { opacity: var(--ember-op, 0.5); }
          50%  { transform: translate3d(calc(var(--drift, 0px) * 0.5), -50vh, 0) scale(1); }
          92%  { opacity: var(--ember-op, 0.5); }
          100% { transform: translate3d(var(--drift, 0px), -105vh, 0) scale(0.5); opacity: 0; }
        }
        @keyframes zion-grain-shift {
          0%   { background-position: 0 0; }
          100% { background-position: 200px 200px; }
        }
        .zion-ember-layer {
          position: fixed; inset: 0; pointer-events: none; z-index: 1;
          overflow: hidden;
        }
        .zion-ember {
          position: absolute; bottom: -20px;
          border-radius: 50%;
          filter: blur(0.5px);
          animation-name: zion-ember-rise;
          animation-timing-function: linear;
          animation-iteration-count: infinite;
          will-change: transform, opacity;
        }
        .zion-grain {
          position: fixed; inset: 0; pointer-events: none; z-index: 2;
          /* Fine grain — densely-packed monochromatic noise */
          background-image:
            url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='2' seed='11' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.22 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
          opacity: 1;
          mix-blend-mode: overlay;
          animation: zion-grain-shift 6s steps(8) infinite;
        }
        /* Coarse grain — bigger flecks for a tactile, paper-fiber feel */
        .zion-grain-coarse {
          position: fixed; inset: 0; pointer-events: none; z-index: 2;
          background-image:
            url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='320' height='320'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='1' seed='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.16 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
          opacity: 0.85;
          mix-blend-mode: soft-light;
          animation: zion-grain-shift 14s steps(4) infinite;
        }
        /* Subtle vignette — corners darkened slightly for the cinematic premium feel */
        .zion-vignette {
          position: fixed; inset: 0; pointer-events: none; z-index: 1;
          background:
            radial-gradient(ellipse at center, transparent 35%, rgba(0,0,0,0.45) 100%);
        }
      `}</style>

      <div className="zion-ember-layer" aria-hidden="true">
        {embers.map(e => (
          <span key={e.i} className="zion-ember" style={{
            left: `${e.left}%`,
            width: `${e.size}px`, height: `${e.size}px`,
            background: `radial-gradient(circle, ${e.hue} 0%, ${e.hue}00 70%)`,
            boxShadow: `0 0 ${e.size * 2}px ${e.hue}`,
            animationDuration: `${e.dur}s`,
            animationDelay: `${e.delay}s`,
            '--drift': `${e.drift}px`,
            '--ember-op': e.opacity,
          }} />
        ))}
      </div>
      <div className="zion-grain-coarse" aria-hidden="true" />
      <div className="zion-grain" aria-hidden="true" />
    </>
  );
}

window.EmberLayer = EmberLayer;
