/* FineLine 2.2: geometria originale, luce e pulse indipendenti dallo sfondo. */
:root {
  --fineline-ambient-opacity: .48;
  --fineline-ambient-mobile-opacity: .40;
  --fineline-ambient-node-opacity: .90;
  --fineline-ambient-width: clamp(330px, 38vw, 620px);
  --fineline-ambient-orange: #e63a19;
  --fineline-ambient-hot: #ff9664;
}
/* Contesto locale: sfondo sezione, SVG, poi immagini/overlay/contenuti. */
.fineline-ambient-host { position: relative; isolation: isolate; }
.fineline-ambient-host > .fineline-ambient-layer {
  position: absolute; inset: 0; z-index: -1 !important; overflow: hidden;
  border-radius: inherit; pointer-events: none; user-select: none;
  contain: paint; opacity: 1;
}
/* Non modifica posizione o z-index dei contenitori del tema. */
.fineline-ambient-layer[hidden] { display: none !important; }
.fineline-ambient-tile {
  position: absolute; width: var(--fineline-ambient-width);
  transform: translate3d(0, var(--fl-shift, 0px), 0);
  color: var(--fineline-ambient-orange);
}
.fineline-ambient-svg { display: block; width: 100%; height: auto; overflow: visible; }
.fineline-ambient-tile--right .fineline-ambient-svg { transform: scaleX(-1); }
/* L’opacità approvata riguarda solo le piste, non i dettagli arancioni. */
.fineline-ambient-tracks { opacity: var(--fineline-ambient-opacity); }
.fineline-ambient-base {
  fill: var(--color-content-text, #143145); opacity: .16;
}
.fineline-ambient-energy {
  opacity: var(--fl-energy, .42);
  /* La luce delle piste usa il gradiente; il glow è limitato ai nodi. */
}
.fineline-ambient-stop { stop-color: var(--fineline-ambient-orange); }
.fineline-ambient-stop--hot { stop-color: var(--fineline-ambient-hot); }
/* Gli anelli arancioni rimangono sempre leggibili anche a scroll fermo. */
.fineline-ambient-node {
  color: var(--fineline-ambient-orange);
  opacity: var(--fineline-ambient-node-opacity);
}
.fineline-ambient-ring {
  fill: none; stroke: currentColor; stroke-width: 6.4;
  opacity: 1;
}
.fineline-ambient-core {
  fill: var(--fineline-ambient-hot);
  opacity: calc(var(--fl-charge, 0) * .55);
  transform: scale(calc(.65 + var(--fl-charge, 0) * .3));
  filter: drop-shadow(0 0 3px currentColor);
}
.fineline-ambient-halo { opacity: calc(var(--fl-charge, 0) * .25); }
.fineline-ambient-node.is-charged .fineline-ambient-ring { filter: drop-shadow(0 0 2px currentColor); }
/* Pulse solo sui nodi raggiunti dalla fascia luminosa dopo uno scroll. */
.fineline-ambient-wave {
  fill: none; stroke: currentColor; stroke-width: 1.5;
  opacity: 0; animation: none;
}
.fineline-ambient-layer.is-visible .fineline-ambient-node.is-charged .fineline-ambient-wave {
  animation: fineline-ambient-pulse 2.2s ease-out infinite;
}
.fineline-ambient-layer.is-visible .fineline-ambient-node.is-charged .fineline-ambient-wave--second {
  animation-delay: .75s;
}
@keyframes fineline-ambient-pulse {
  0% { transform: scale(1); opacity: .24; }
  85%,100% { transform: scale(2.8); opacity: 0; }
}
html.fineline-ambient-paused .fineline-ambient-wave { animation-play-state: paused !important; }
.fineline-ambient-off .fineline-ambient-layer,
.fineline-ambient-off > .fineline-ambient-layer { display: none; }
.fineline-ambient-soft { --fineline-ambient-opacity: .30; --fineline-ambient-mobile-opacity: .26; }
.fineline-ambient-strong { --fineline-ambient-opacity: .65; }
@media(max-width:767px) {
  :root { --fineline-ambient-width: 265px; }
  .fineline-ambient-tracks { opacity: var(--fineline-ambient-mobile-opacity); }
  .fineline-ambient-base { opacity: .13; }
  .fineline-ambient-energy { filter: none; }
}
@media(prefers-reduced-motion:reduce) {
  .fineline-ambient-wave { animation: none !important; }
  .fineline-ambient-tile { transform: none !important; }
}
@media print {
  .fineline-ambient-layer { display: none !important; }
}
