/* =========================================================================
   V5 HERO — ASCII field (ambient layer)
   Replaces the orbital SVG arcs. Canvas sits behind the hero content and
   never takes pointer events.
   ========================================================================= */
.v5-hero-ascii{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  overflow:hidden;
  /* Flat opacity, deliberately: a keyframed entry fade sticks at 0 if the
     animation is ever paused before it starts (tab loaded in the background),
     which would silently hide the whole field. The characters already arrive
     softly because the field itself fades from its edges. */
  opacity:.78;
}
.v5-hero-ascii-canvas{
  display:block;
  width:100%;
  height:100%;
}
@media (prefers-reduced-motion: reduce){
  .v5-hero-ascii{opacity:.5}
}

/* Disabled below 1024px in JS (nothing renders); belt-and-braces here. */
@media (max-width:1023px){
  .v5-hero-ascii{display:none}
}

/* =========================================================================
   OTHER MOUNTS: same device, different payload (src/zn-ascii-engine.js)
   /about header, /about lens wheel, /about flywheel, /contact header, /work
   intro, 404. The wrap carries the .v5-hero-ascii rules above and fills its
   host section; the host's content is lifted above it. Opacity is set inline
   by the engine (.45 on the two wheels, lower than the hero elsewhere).
   ========================================================================= */
.zn-ascii-host{position:relative}
.zn-ascii-host > .v4-container,
.zn-ascii-host > .content-wrapper,
.zn-ascii-host > .zn-404-inner{position:relative;z-index:1}
.zn-ascii-canvas{display:block;width:100%;height:100%}
