/* ============================================================================
   Gianfranco & Piera — 5 dicembre 2026

   Palette avorio / verde salvia / rosa antico, font Playfair Display +
   Manrope, cornici morbide. Ogni sezione occupa una schermata intera, con
   scorrimento LIBERO: niente scroll-snap, niente parallasse.

   Indice:
   1.  Variabili e reset
   2.  Utilità di accessibilità
   3.  Testata (rotta) e monogramma
   4.  Pannelli a schermata
   5.  Schermata 1 — L'invito
   6.  Titoli, fregi e testi
   7.  Figure con bordi dissolti + segnaposto
   8.  Dettagli evento e riquadri
   9.  Azioni (bottoni)
   10. Modulo RSVP
   11. Lista di nozze
   12. Colophon e piede
   13. Navigazione mobile
   14. Ingresso a rivelazione
   15. Responsive
   16. Movimento ridotto
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. VARIABILI E RESET
   -------------------------------------------------------------------------- */
:root {
  /* Palette del sito online, ripresa tale e quale. */
  --sfondo: #faf9f6;
  --sfondo-tenue: #f5f3f1;
  --inchiostro: #1b1c1b;
  --inchiostro-tenue: #424844;
  --secondario: #5e5e5f;
  --salvia: #4c6455;
  /* colore primario */
  --salvia-chiara: #8fa998;
  --salvia-tenue: #cee9d6;
  --rosa: #785656;
  /* colore terziario */
  --rosa-tenue: #c29999;
  --contorno: #c2c8c2;
  --bianco: #ffffff;

  --font-display: 'Playfair Display', Georgia, serif;
  --font-testo: 'Manrope', system-ui, sans-serif;

  --altezza-rotta: 64px;
  --misura: 760px;
  --liquida: cubic-bezier(0.16, 1, 0.3, 1);
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  /* Compensa la testata fissa quando si salta a un'ancora. */
  scroll-padding-top: var(--altezza-rotta);
}

body {
  margin: 0;
  background: var(--sfondo);
  color: var(--inchiostro);
  font-family: var(--font-testo);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
  text-decoration: none;
}

button,
input,
textarea {
  font: inherit;
}

::selection {
  background: var(--salvia-tenue);
  color: var(--salvia);
}

:focus-visible {
  outline: 2px solid var(--salvia);
  outline-offset: 3px;
  border-radius: 4px;
}

/* --------------------------------------------------------------------------
   2. UTILITÀ DI ACCESSIBILITÀ
   -------------------------------------------------------------------------- */
.solo-lettori {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.salta-al-contenuto {
  position: fixed;
  top: 8px;
  left: 8px;
  z-index: 100;
  padding: 10px 18px;
  border-radius: 999px;
  background: var(--salvia);
  color: var(--bianco);
  font-size: 14px;
  font-weight: 600;
  transform: translateY(-200%);
  transition: transform 0.2s ease;
}

.salta-al-contenuto:focus {
  transform: translateY(0);
}

/* --------------------------------------------------------------------------
   3. TESTATA (ROTTA) E MONOGRAMMA
   -------------------------------------------------------------------------- */
.rotta {
  position: fixed;
  inset: 0 0 auto;
  z-index: 50;
  border-bottom: 1px solid rgba(194, 200, 194, 0.3);
  background: rgba(250, 249, 246, 0.82);
  backdrop-filter: blur(12px);
}

.rotta-interno {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  max-width: 1200px;
  height: var(--altezza-rotta);
  margin: 0 auto;
  padding: 0 24px;
}

.marchio {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--salvia);
}

.marchio-testo {
  font-family: var(--font-display);
  font-size: 22px;
  letter-spacing: 0.14em;
}

.marchio-testo em {
  font-style: italic;
  color: var(--rosa);
}

/* Marchio animato senza librerie: due anelli SVG che si disegnano.
   La lunghezza reale del tratto è misurata da script.js. */
.monogramma {
  width: 46px;
  height: 28px;
  overflow: visible;
}

.anello {
  fill: none;
  stroke: var(--salvia-chiara);
  stroke-width: 1.4;
}

.js .anello {
  animation: disegna 2.2s var(--liquida) forwards;
}

.js .anello-2 {
  animation-delay: 0.35s;
  stroke: var(--rosa-tenue);
}

@keyframes disegna {
  to {
    stroke-dashoffset: 0;
  }
}

.nav-desktop {
  display: flex;
  align-items: center;
  gap: 28px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.nav-desktop a {
  color: var(--secondario);
  padding: 6px 0;
  border-bottom: 1px solid transparent;
  transition: color 0.2s ease, border-color 0.2s ease;
}

.nav-desktop a:hover,
.nav-desktop a.e-corrente {
  color: var(--salvia);
  border-bottom-color: var(--salvia-chiara);
}

/* Prima voce del menu: il marchio G & P al posto della parola «L'invito».
   Stessa gabbia tipografica del marchio in testata (display + e commerciale
   corsiva rosa antico), fuori dal maiuscoletto delle altre voci. */
.nav-desktop .nav-marchio,
.nav-mobile .nav-marchio {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 400;
  letter-spacing: 0.12em;
  text-transform: none;
  color: var(--salvia);
}

.nav-marchio em {
  font-style: italic;
  color: var(--rosa);
}

/* --------------------------------------------------------------------------
   4. PANNELLI A SCHERMATA
   Ogni sezione occupa almeno una schermata intera, ma lo scorrimento è
   libero: nessun aggancio, nessun blocco della rotella.
   -------------------------------------------------------------------------- */
.pannello {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100svh;
  padding: calc(var(--altezza-rotta) + 40px) 24px 56px;
  background: var(--sfondo);
  /* Serve alla velatura delle figure: è il colore del pannello. */
  --fondo: var(--sfondo);
}

/* Superficie alternata, appena percettibile, per scandire il ritmo. */
.pannello-tenue {
  background: var(--sfondo-tenue);
  --fondo: var(--sfondo-tenue);
  border-top: 1px solid rgba(194, 200, 194, 0.25);
  border-bottom: 1px solid rgba(194, 200, 194, 0.25);
}

/* Sezioni che possono superare la schermata (lista di nozze). */
.pannello-alto {
  align-items: flex-start;
}

.pannello-interno {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  width: 100%;
  max-width: var(--misura);
  text-align: center;
}

/* --------------------------------------------------------------------------
   5. SCHERMATA 1 — L'INVITO
   Solo nomi, illustrazione e data: nient'altro, come da indicazioni.
   -------------------------------------------------------------------------- */
.pannello-invito {
  overflow: hidden;
}

.aloni {
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: 0.22;
  pointer-events: none;
}

.alone {
  position: absolute;
  border-radius: 999px;
}

.alone-verde {
  top: 18%;
  left: -80px;
  width: 260px;
  height: 260px;
  background: var(--salvia-chiara);
  filter: blur(100px);
}

.alone-rosa {
  right: -80px;
  bottom: 18%;
  width: 320px;
  height: 320px;
  background: var(--rosa-tenue);
  filter: blur(120px);
}

.pannello-invito .pannello-interno {
  position: relative;
  z-index: 1;
  gap: 8px;
}

.hero-titolo {
  margin: 0;
  color: var(--salvia);
  font-family: var(--font-display);
  font-size: clamp(28px, 6vw, 44px);
  font-weight: 400;
  letter-spacing: 0.16em;
  line-height: 1.3;
  text-transform: uppercase;
}

/* L'illustrazione è vincolata in altezza: così la schermata d'apertura resta
   intera anche su monitor bassi. Il ritaglio nuovo contiene la ghirlanda per
   intero ed è quasi quadrato, quindi serve più altezza del precedente (che era
   panoramico perché tagliato in basso) per farla apparire della stessa misura. */
.figura-invito {
  width: min(760px, 90vw);
  /* Lo spazio non occupato dal resto dell'hero è di circa 310px (padding del
     pannello + titolo + data): sottraendolo l'illustrazione non può mai far
     traboccare la schermata, che è `overflow: hidden` e la taglierebbe. */
  height: min(530px, calc(100svh - 310px));
  /* Un po' d'aria sotto l'illustrazione: senza, l'acquerello arriva a filo
     del filetto e sembra tagliato in basso. */
  margin: 4px auto clamp(18px, 3.2vh, 36px);
}

.figura-invito img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Sul desktop l'acquerello lascia qualche pixel di respiro sul bordo
   inferiore; li recuperiamo dal vuoto dopo la data, senza cambiare l'hero. */
@media (min-width: 901px) {
  .pannello-invito {
    padding-bottom: 48px;
  }

  .figura-invito {
    padding-bottom: 6px;
  }
}

.hero-piede {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.filetto {
  display: block;
  width: 48px;
  height: 1px;
  background: rgba(194, 200, 194, 0.7);
}

.hero-data {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(20px, 4vw, 26px);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.invito-scorri {
  position: absolute;
  bottom: 28px;
  left: 50%;
  margin: 0;
  color: var(--secondario);
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transform: translateX(-50%);
}

.freccia-inline {
  display: inline-block;
  animation: rimbalzo 2.4s ease-in-out infinite;
}

@keyframes rimbalzo {

  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(4px);
  }
}

/* --------------------------------------------------------------------------
   6. TITOLI, FREGI E TESTI
   -------------------------------------------------------------------------- */
.titolo-sezione {
  margin: 0;
  color: var(--salvia);
  font-family: var(--font-display);
  font-size: clamp(24px, 4.4vw, 34px);
  font-weight: 400;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.fregio {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  width: 100%;
  max-width: 260px;
  color: var(--rosa);
}

.fregio-linea {
  flex: 1;
  height: 1px;
  background: rgba(194, 200, 194, 0.7);
}

.fregio-segno {
  font-size: 14px;
  line-height: 1;
}

.testo {
  max-width: 62ch;
  color: var(--inchiostro-tenue);
}

.testo p {
  margin: 0 0 14px;
}

.testo p:last-child {
  margin-bottom: 0;
}

.nota-corsiva {
  max-width: 60ch;
  margin: 0;
  color: var(--secondario);
  font-style: italic;
}

.firma {
  margin: 0;
  color: var(--rosa);
  font-style: italic;
}

/* --------------------------------------------------------------------------
   7. ILLUSTRAZIONI TRASPARENTI
   I quattro acquerelli sono WebP con canale alpha: non servono più blend mode
   o velature per nascondere il rettangolo dello sfondo originale.
   -------------------------------------------------------------------------- */
.figura-dissolta {
  position: relative;
  margin: 0;
}

.figura-dissolta img {
  display: block;
  width: 100%;
  height: auto;
}

/* Nell'hero desktop l'immagine deve rispettare anche l'altezza del figure:
   senza questa specificità il rapporto naturale supera il box e copre la data. */
.figura-dissolta.figura-invito img {
  height: 100%;
  object-fit: contain;
}

.figura-dissolta::after {
  content: none;
}

/* Chiesa e ricevimento condividono la stessa area, ma restano direttamente
   sul fondo del pannello come l'illustrazione finale del viaggio. */
.figura-luogo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(650px, 100%);
  height: clamp(230px, 34vw, 390px);
  padding: 0;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.figura-luogo img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.figura-nozze {
  width: min(560px, 100%);
  margin: 8px auto 0;
}

/* --------------------------------------------------------------------------
   8. DETTAGLI EVENTO E RIQUADRI
   -------------------------------------------------------------------------- */
.dettagli {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.dettaglio-forte {
  margin: 0;
  font-weight: 700;
}

.dettaglio-luogo {
  margin: 0;
  font-family: var(--font-display);
  font-size: 20px;
}

.dettaglio-minuto {
  margin: 0;
  color: var(--secondario);
  font-size: 14px;
}

.riquadro-garage {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 18px 24px;
  border: 1px solid var(--contorno);
  border-radius: 20px;
  background: var(--bianco);
}

.riquadro-etichetta {
  margin: 0;
  color: var(--rosa);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.riquadro-valore {
  margin: 0;
  font-family: var(--font-display);
  font-size: 20px;
}

.riquadro-nota {
  margin: 0;
  color: var(--secondario);
  font-size: 12px;
  font-style: italic;
}

/* --------------------------------------------------------------------------
   9. AZIONI (BOTTONI)
   La gerarchia è leggibile anche senza colore: l'azione primaria è piena,
   quella secondaria è solo contornata.
   -------------------------------------------------------------------------- */
.azione,
.azione-contorno {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 12px 28px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, opacity 0.2s ease;
}

.azione {
  border: 1px solid var(--rosa);
  background: var(--rosa);
  color: var(--bianco);
}

.azione:hover {
  opacity: 0.88;
}

.azione-contorno {
  border: 1px solid var(--salvia);
  background: transparent;
  color: var(--salvia);
}

.azione-contorno:hover {
  background: var(--salvia);
  color: var(--bianco);
}

/* Due mappe affiancate (garage + villa): vanno a capo sotto i telefoni. */
.azioni-affiancate {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
}

/* --------------------------------------------------------------------------
   10. MODULO RSVP
   -------------------------------------------------------------------------- */
.modulo {
  display: flex;
  flex-direction: column;
  gap: 24px;
  width: 100%;
  max-width: 560px;
  padding: 28px;
  border: 1px solid rgba(194, 200, 194, 0.6);
  border-radius: 24px;
  background: var(--bianco);
  text-align: left;
}

.gruppo {
  margin: 0;
  padding: 0;
  border: 0;
}

.gruppo legend {
  padding: 0 0 12px;
  color: var(--salvia);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.scelte {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
}

.scelta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  cursor: pointer;
}

.scelta input {
  width: 18px;
  height: 18px;
  accent-color: var(--salvia);
}

.campi {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.campo {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
}

.campo-esteso {
  grid-column: 1 / -1;
}

/* PRIVACY: informativa + consenso. Sovrascrive gli stili generici di .campo
   (l'etichetta non deve diventare maiuscola minuscola, la checkbox non deve
   diventare un campo a tutta larghezza). */
.campo-privacy {
  grid-column: 1 / -1;
}

.scelta-consenso {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  min-height: 0;
}

.campo-privacy label {
  text-transform: none;
  letter-spacing: normal;
  font-size: 14px;
  font-weight: 400;
  color: var(--inchiostro);
}

.scelta-consenso input[type="checkbox"] {
  width: 18px;
  height: 18px;
  min-height: 0;
  padding: 0;
  margin-top: 3px;
  flex: 0 0 auto;
  accent-color: var(--salvia);
}

.informativa-privacy {
  margin-top: 10px;
  font-size: 13px;
}

.informativa-privacy summary {
  cursor: pointer;
  color: var(--salvia);
  font-weight: 600;
}

.informativa-testo p {
  margin: 8px 0;
  color: var(--inchiostro);
  opacity: 0.85;
  font-size: 13px;
  line-height: 1.5;
}

.informativa-testo a {
  color: var(--salvia);
}

.campo label {
  color: var(--secondario);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.campo input,
.campo textarea {
  width: 100%;
  min-height: 44px;
  padding: 10px 14px;
  border: 1px solid var(--contorno);
  border-radius: 12px;
  background: var(--sfondo);
  color: var(--inchiostro);
  resize: vertical;
}

.campo input::placeholder,
.campo textarea::placeholder {
  color: #767c77;
}

.campo input:focus,
.campo textarea:focus {
  border-color: var(--salvia);
  outline: none;
  box-shadow: 0 0 0 3px rgba(143, 169, 152, 0.28);
}

.esito {
  width: 100%;
  max-width: 560px;
}

.esito-riquadro {
  padding: 18px 22px;
  border: 1px solid var(--salvia-chiara);
  border-radius: 20px;
  background: rgba(206, 233, 214, 0.35);
}

.esito-titolo {
  margin: 0 0 6px;
  font-family: var(--font-display);
  font-size: 20px;
  color: var(--salvia);
}

.esito-nota {
  margin: 0;
  color: var(--secondario);
  font-size: 14px;
}

/* --------------------------------------------------------------------------
   11. LISTA DI NOZZE
   -------------------------------------------------------------------------- */
.coordinate {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: 100%;
  max-width: 560px;
  padding: 24px;
  border: 1px solid rgba(194, 200, 194, 0.6);
  border-radius: 24px;
  background: var(--bianco);
}

.coordinata {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.coordinata-etichetta {
  margin: 0;
  color: var(--rosa);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.coordinata-valore {
  margin: 0;
  font-weight: 600;
}

.iban {
  font-family: var(--font-display);
  font-size: clamp(17px, 3.2vw, 22px);
  letter-spacing: 0.06em;
  word-break: break-all;
}

.coordinate-riga {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 32px;
  padding-top: 16px;
  border-top: 1px solid rgba(194, 200, 194, 0.5);
}

.coordinate-riga .coordinata {
  flex: 1 1 180px;
}

/* --------------------------------------------------------------------------
   12. COLOPHON E PIEDE
   -------------------------------------------------------------------------- */
.pannello-colophon {
  background: var(--salvia);
  --fondo: var(--salvia);
  color: var(--sfondo);
}

.pannello-colophon .azione {
  border-color: var(--sfondo);
  background: var(--sfondo);
  color: var(--salvia);
}

.pannello-colophon .azione-contorno {
  border-color: rgba(250, 249, 246, 0.7);
  color: var(--sfondo);
}

.pannello-colophon .azione-contorno:hover {
  background: rgba(250, 249, 246, 0.14);
  color: var(--sfondo);
}

.pannello-colophon :focus-visible {
  outline-color: var(--sfondo);
}

.rilancio-titolo {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(26px, 5.4vw, 40px);
  line-height: 1.3;
}

.rilancio-titolo em {
  font-style: italic;
  color: var(--salvia-tenue);
}

.rilancio-azioni {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
}

.piede {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid rgba(250, 249, 246, 0.25);
}

.piede-nomi {
  margin: 0;
  font-family: var(--font-display);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.piede-nota {
  margin: 0;
  color: rgba(250, 249, 246, 0.78);
  font-size: 12px;
}

/* --------------------------------------------------------------------------
   13. NAVIGAZIONE MOBILE
   -------------------------------------------------------------------------- */
.nav-mobile {
  display: none;
  position: fixed;
  inset: auto 0 0;
  z-index: 50;
  justify-content: space-around;
  padding: 6px 8px calc(6px + env(safe-area-inset-bottom));
  border-top: 1px solid rgba(194, 200, 194, 0.4);
  background: rgba(250, 249, 246, 0.94);
  backdrop-filter: blur(12px);
}

.nav-mobile a {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  padding: 0 8px;
  color: var(--secondario);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.nav-mobile a.e-corrente {
  color: var(--salvia);
}

/* Il marchio vale anche in basso: sostituisce la voce «Invito». */
.nav-mobile .nav-marchio {
  font-size: 15px;
  letter-spacing: 0.1em;
}

/* --------------------------------------------------------------------------
   14. INGRESSO A RIVELAZIONE
   Lo stato nascosto vive SOLO dietro la classe .js: senza JavaScript, o in
   caso di errore, tutti i contenuti restano visibili.
   -------------------------------------------------------------------------- */
.js .sale {
  opacity: 0;
  transform: translateY(22px);
}

.js .sale.su {
  opacity: 1;
  transform: none;
  transition:
    opacity 900ms var(--liquida) var(--ritardo, 0ms),
    transform 900ms var(--liquida) var(--ritardo, 0ms);
}

/* --------------------------------------------------------------------------
   15. RESPONSIVE
   -------------------------------------------------------------------------- */
@media (max-width: 900px) {
  .nav-desktop {
    display: none;
  }

  .nav-mobile {
    display: flex;
  }

  /* Sotto i 900px l'altezza fissa diventa una gabbia: le sezioni crescono
     con il contenuto. L'invito resta a schermata piena. */
  .pannello {
    min-height: auto;
    align-items: flex-start;
    padding: calc(var(--altezza-rotta) + 32px) 20px 96px;
  }

  .pannello-invito {
    min-height: 100svh;
    align-items: center;
  }

  /* Su mobile resta preferibile l'altezza naturale dell'acquerello. */
  .figura-invito,
  .figura-dissolta.figura-invito img {
    height: auto;
  }

  .campi {
    grid-template-columns: 1fr;
  }

  .modulo {
    padding: 22px;
  }

  .invito-scorri {
    bottom: 96px;
  }
}

@media (max-width: 380px) {
  .nav-mobile a {
    font-size: 10px;
    padding: 0 4px;
  }
}

/* --------------------------------------------------------------------------
   16. MOVIMENTO RIDOTTO
   Un unico blocco spegne rivelazioni, monogramma e freccia animata.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {

  html {
    scroll-behavior: auto;
  }

  .js .sale,
  .js .sale.su {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .js .anello {
    animation: none;
    stroke-dashoffset: 0 !important;
  }

  .freccia-inline {
    animation: none;
  }
}
