/* Fioreva Tech · hero module
   Code field canvas, terminal entrance, visitor line highlight and counter flash.
   Layout and terminal chrome live in base.css; these rules only cover what hero.js adds. */

[data-module="hero"] {
  pointer-events: none;
  contain: strict;
}
[data-module="hero"] .hero-fx-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* terminal entrance during the boot; both classes come off once it has settled */
.hero-fx-term {
  opacity: 0;
  transform: translateY(12px);
}
.hero-fx-term.is-in {
  opacity: 1;
  transform: none;
  transition: opacity .55s var(--ease), transform .8s var(--ease);
}

/* a line the visitor caused elsewhere on the page: faint red row that fades over two seconds */
.hero-fx-hit,
.hero-fx-still {
  position: relative;
  isolation: isolate;
}
.hero-fx-hit::before,
.hero-fx-still::before {
  content: "";
  position: absolute;
  inset: 0 -14px;
  z-index: -1;
  background: rgba(255, 0, 37, .15);
  box-shadow: inset 2px 0 0 var(--red);
  pointer-events: none;
}
.hero-fx-hit::before { animation: hero-fx-hit 2s linear both; }
@keyframes hero-fx-hit {
  0%, 25% { opacity: 1; }
  100% { opacity: 0; }
}

/* counters take a short colour when they move: red for a new order, mint for money in */
.hero-fx-stat { transition: color .9s var(--ease); }
.hero-fx-stat.is-live { color: var(--red); transition: none; }
.hero-fx-stat.is-paid { color: var(--mint); transition: none; }

@media (prefers-reduced-motion: reduce) {
  .hero-fx-term { opacity: 1 !important; transform: none !important; }
  .hero-fx-hit::before { animation: none !important; }
  .hero-fx-stat { transition: none !important; }
}
/* paused from the nav: the same end states (hero.js also stops the canvas, the stream and the counters) */
:root[data-motion="paused"] .hero-fx-term { opacity: 1 !important; transform: none !important; }
:root[data-motion="paused"] .hero-fx-hit::before { animation: none !important; }
:root[data-motion="paused"] .hero-fx-stat { transition: none !important; }
