/* ==========================================================================
   viverefuori — foglio di stile
   CSS puro. Nessun JavaScript. Nessuna risorsa esterna.
   Tutti i contenuti sono statici e visibili senza esecuzione di script
   (requisito della scansione GeoEdge / MediaGo).
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Caratteri tipografici — file locali, nessuna CDN
   -------------------------------------------------------------------------- */

/* Newsreader — latin di base */
@font-face {
  font-family: "Newsreader";
  src: url("news-var.woff2") format("woff2-variations");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

@font-face {
  font-family: "Newsreader";
  src: url("news-italic-var.woff2") format("woff2-variations");
  font-weight: 200 800;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* Newsreader — latin esteso, scaricato solo se serve davvero */
@font-face {
  font-family: "Newsreader";
  src: url("news-ext-var.woff2") format("woff2-variations");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

@font-face {
  font-family: "Newsreader";
  src: url("news-ext-italic-var.woff2") format("woff2-variations");
  font-weight: 200 800;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* Inter — latin di base */
@font-face {
  font-family: "InterVar";
  src: url("inter-var.woff2") format("woff2-variations");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

/* Inter — latin esteso */
@font-face {
  font-family: "InterVar";
  src: url("inter-ext-var.woff2") format("woff2-variations");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* --------------------------------------------------------------------------
   1. Reset e variabili
   -------------------------------------------------------------------------- */

*,
*::before,
*::after { box-sizing: border-box; }

:root {
  /* inchiostro e carta — impianto chiaro */
  --ink:        #171a1e;
  --ink-soft:   #3b4148;
  --ink-mute:   #6e757d;
  --ink-faint:  #9aa1a8;
  --paper:      #ffffff;
  --paper-2:    #f7f7f5;
  --paper-3:    #eeeeeb;
  --rule:       #e2e2de;
  --rule-soft:  #eeeeea;

  /* scuri di servizio e brace */
  --night:      #232b31;
  --night-2:    #2e383f;
  --night-3:    #3a464e;
  --cream:      #f8f6f2;
  --ember:      #b3441c;
  --ember-lit:  #d9682a;
  --ember-pale: #f3ddcd;
  --moss:       #eef1ee;

  --serif: "Newsreader", Georgia, "Times New Roman", Times, serif;
  --sans:  "InterVar", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  --measure: 39rem;
  --wide:    62rem;
  --full:    78rem;
  --gutter:  1.5rem;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 4.5rem;
}

body {
  margin: 0;
  background: var(--paper);
  background-image:
    linear-gradient(rgba(255,255,255,.62), rgba(255,255,255,.62)),
    url("carta.jpg");
  background-size: auto, 460px;
  background-repeat: repeat, repeat;
  background-attachment: fixed, scroll;
  color: var(--ink);
  font-family: var(--serif);
  font-size: 1.16rem;
  line-height: 1.68;
  letter-spacing: 0.001em;
  -webkit-font-smoothing: antialiased;
  padding-bottom: 4.6rem; /* spazio per la fascia con l'avvertenza sui biocidi */
  overflow-x: hidden;
}

/* --------------------------------------------------------------------------
   2. Impaginazione
   -------------------------------------------------------------------------- */

.wrap {
  width: 100%;
  max-width: var(--measure);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.wrap--wide { max-width: var(--wide); }
.wrap--full { max-width: var(--full); }

hr.rule {
  border: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--rule) 12%, var(--rule) 88%, transparent);
  margin-block: 3.8rem;
}

hr.rule--hard {
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--ember) 8%, var(--ink) 50%, var(--ember) 92%, transparent);
  opacity: .85;
}

/* --------------------------------------------------------------------------
   3. Barra di avanzamento della lettura — CSS puro, scroll-driven
   -------------------------------------------------------------------------- */

.progress {
  position: fixed;
  inset: 0 0 auto 0;
  height: 3px;
  z-index: 80;
  background: transparent;
  pointer-events: none;
}

.progress__bar {
  height: 100%;
  width: 100%;
  transform-origin: 0 50%;
  transform: scaleX(0);
  background: linear-gradient(90deg, var(--ember), var(--ember-lit));
}

@supports (animation-timeline: scroll()) {
  @media (prefers-reduced-motion: no-preference) {
    .progress__bar {
      animation: grow linear both;
      animation-timeline: scroll(root block);
    }
  }
}

@keyframes grow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* --------------------------------------------------------------------------
   4. Tipografia
   -------------------------------------------------------------------------- */

h1, h2, h3, h4 {
  font-family: var(--serif);
  font-weight: 600;
  line-height: 1.14;
  letter-spacing: -0.016em;
  margin: 0 0 0.72em;
  text-wrap: balance;
}

h1 {
  font-size: clamp(2.35rem, 7.2vw, 4.15rem);
  font-weight: 500;
  letter-spacing: -0.028em;
  line-height: 1.03;
}

h2 {
  font-size: clamp(1.7rem, 4.6vw, 2.45rem);
  margin-top: 2.2em;
  letter-spacing: -0.022em;
}

h3 {
  font-size: clamp(1.22rem, 3vw, 1.45rem);
  margin-top: 2.1em;
  font-weight: 600;
}

h4 {
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin-top: 1.9em;
  margin-bottom: 0.6em;
}

p { margin: 0 0 1.3em; }

.lead {
  font-size: clamp(1.24rem, 3.3vw, 1.5rem);
  line-height: 1.5;
  color: var(--ink-soft);
  font-weight: 400;
}

.dek {
  font-family: var(--sans);
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--ink-mute);
}

.kicker {
  font-family: var(--sans);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ember);
  margin: 0 0 1.1rem;
}

.small {
  font-family: var(--sans);
  font-size: 0.83rem;
  line-height: 1.62;
  color: var(--ink-mute);
}

.smaller {
  font-family: var(--sans);
  font-size: 0.745rem;
  line-height: 1.6;
  color: var(--ink-faint);
}

strong, b { font-weight: 700; }
em, i     { font-style: italic; }

/* Capolettera */
.dropcap::first-letter {
  float: left;
  font-size: 4.6rem;
  line-height: 0.76;
  font-weight: 500;
  color: var(--ember);
  padding: 0.05em 0.09em 0 0;
  margin-top: 0.06em;
}

a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--ember-lit);
  text-underline-offset: 0.2em;
  text-decoration-thickness: 1.5px;
  transition: background-color .18s ease, color .18s ease, text-decoration-color .18s ease;
}

a:hover,
a:focus-visible {
  background: var(--ember);
  color: var(--cream);
  text-decoration-color: transparent;
}

a:focus-visible { outline: 2px solid var(--ember); outline-offset: 2px; }

ul, ol { margin: 0 0 1.45em; padding-left: 1.25rem; }
li { margin-bottom: 0.58em; }
li::marker { color: var(--ember); }

blockquote {
  margin: 2.6rem 0;
  padding: 0.2rem 0 0.2rem 1.5rem;
  border-left: 3px solid var(--ember);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(1.3rem, 3.4vw, 1.62rem);
  line-height: 1.42;
  color: var(--ink-soft);
  letter-spacing: -0.012em;
}

blockquote p:last-child { margin-bottom: 0; }

/* --------------------------------------------------------------------------
   5. Numerazione dei capitoli
   -------------------------------------------------------------------------- */

.chapter { margin-top: 5.5rem; scroll-margin-top: 5rem; }

.chapter__num {
  font-family: var(--sans);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ember);
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin-bottom: 1.5rem;
}

.chapter__num::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, var(--rule), transparent);
}

/* --------------------------------------------------------------------------
   6. Riquadri informativi
   -------------------------------------------------------------------------- */

.box {
  border: 1px solid var(--rule);
  border-radius: 3px;
  padding: 1.5rem 1.5rem 1.2rem;
  margin: 2.5rem 0;
  background: var(--paper);
}

.box--fill {
  background: var(--paper-2);
  border-color: transparent;
  box-shadow: inset 0 0 0 1px rgba(20,22,26,.05);
}

.box--hard {
  border: 1px solid var(--ink);
  background: var(--paper);
  box-shadow: 5px 5px 0 0 var(--paper-3);
}

.box__label {
  font-family: var(--sans);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ember);
  margin: 0 0 0.85rem;
}

.box p:last-child, .box ul:last-child, .box ol:last-child { margin-bottom: 0; }
.box p, .box li { font-family: var(--sans); font-size: 0.94rem; line-height: 1.66; }

/* Avvertenza obbligatoria sui prodotti biocidi */
.biocide {
  border: 1px solid var(--ink);
  border-left: 5px solid var(--ember);
  border-radius: 3px;
  background: var(--paper);
  padding: 1.05rem 1.25rem;
  margin: 2.4rem 0;
}

.biocide p {
  margin: 0;
  font-family: var(--sans);
  font-size: 0.92rem;
  line-height: 1.55;
  font-weight: 700;
  color: var(--ink);
}

.biocide__tag {
  display: block;
  font-family: var(--sans);
  font-size: 0.64rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 0.5rem;
}

/* Fascia fissa in basso — avvertenza visibile su tutta la pagina */
.biocide-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 70;
  background: var(--night);
  color: var(--cream);
  border-top: 2px solid var(--ember);
}

.biocide-bar p {
  margin: 0 auto;
  max-width: var(--wide);
  padding: 0.72rem var(--gutter);
  font-family: var(--sans);
  font-size: 0.745rem;
  line-height: 1.45;
  font-weight: 600;
  letter-spacing: 0.006em;
}

/* --------------------------------------------------------------------------
   7. Dicitura pubblicitaria
   -------------------------------------------------------------------------- */

.adlabel {
  background: var(--paper);
  color: var(--ink);
  border-bottom: 2px solid var(--ember);
}

.adlabel__inner {
  max-width: var(--wide);
  margin-inline: auto;
  padding: 0.9rem var(--gutter);
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.9rem;
}

.adlabel__mark {
  font-family: var(--sans);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #fff;
  background: var(--ember);
  padding: 0.24rem 0.55rem;
  border-radius: 2px;
  white-space: nowrap;
}

.adlabel__text {
  font-family: var(--sans);
  font-size: 0.775rem;
  line-height: 1.5;
  color: var(--ink-soft);
  margin: 0;
  flex: 1 1 18rem;
}

.adlabel__text strong { color: var(--ink); }

/* --------------------------------------------------------------------------
   8. Testata
   -------------------------------------------------------------------------- */

.masthead {
  background: rgba(255,255,255,.9);
  backdrop-filter: saturate(140%) blur(8px);
  border-bottom: 1px solid var(--rule);
  position: sticky;
  top: 0;
  z-index: 50;
}

.masthead__inner {
  max-width: var(--wide);
  margin-inline: auto;
  padding: 0.85rem var(--gutter);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem 1rem;
}

.masthead__name {
  font-family: var(--serif);
  font-size: 1.12rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
}

.masthead__name:hover { background: none; color: inherit; }

.masthead__glyph {
  width: 1.05rem;
  height: 1.05rem;
  flex: none;
  color: var(--ember);
}

.masthead__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem 1.05rem;
  font-family: var(--sans);
  font-size: 0.79rem;
  font-weight: 500;
}

.masthead__nav a {
  text-decoration: none;
  color: var(--ink-mute);
  padding: 0.12rem 0.3rem;
  border-radius: 2px;
}

.masthead__nav a:hover { background: var(--ember); color: var(--cream); }

/* --------------------------------------------------------------------------
   9. Apertura — scena notturna
   -------------------------------------------------------------------------- */

.hero {
  position: relative;
  isolation: isolate;
  background: var(--paper);
  color: var(--ink);
  overflow: hidden;
  border-bottom: 1px solid var(--rule);
  padding-block: clamp(3.5rem, 9vw, 6.5rem) clamp(3rem, 7vw, 5rem);
}

.hero__bg {
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image: url("crepuscolo.jpg");
  background-size: cover;
  background-position: center 40%;
  opacity: .62;
  filter: saturate(.6) contrast(.95) brightness(1.14);
}

.hero__veil {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    radial-gradient(118% 88% at 78% 26%, rgba(255,255,255,.34), rgba(255,255,255,.84) 64%),
    linear-gradient(180deg, rgba(255,255,255,.74), rgba(255,255,255,.6) 36%, rgba(255,255,255,.97));
}

.hero .kicker { color: var(--ember); }

.hero h1 {
  color: var(--ink);
  max-width: 15ch;
}

.hero h1 em {
  font-style: italic;
  font-weight: 300;
  color: var(--ember);
}

.hero .lead {
  color: var(--ink-soft);
  max-width: 34rem;
}

.hero__meta {
  font-family: var(--sans);
  font-size: 0.755rem;
  line-height: 1.55;
  color: var(--ink-mute);
  margin: 2.2rem 0 0;
  padding-top: 1.1rem;
  border-top: 1px solid var(--rule);
  max-width: 40rem;
}

.hero__row {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 2rem;
  justify-content: space-between;
}

.hero__col { flex: 1 1 22rem; min-width: 0; }

/* Disegno: spirale che arde e fumo che sale — SVG, nessuno script */
.smokefig {
  display: block;
  width: 100%;
  max-width: 220px;
  height: auto;
  flex: 0 1 220px;
  margin-inline: auto;
  color: var(--ink-soft);
}

.smokefig .smoke {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.4;
  stroke-linecap: round;
  opacity: 0.55;
  stroke-dasharray: 4 9;
  animation: drift 9s linear infinite;
}

.smokefig .smoke--b { animation-duration: 12s; animation-delay: -3s; opacity: 0.34; }
.smokefig .smoke--c { animation-duration: 16s; animation-delay: -7s; opacity: 0.2; }

.smokefig .coil { fill: none; stroke: currentColor; stroke-width: 1.6; opacity: .55; }
.smokefig .stand { fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; opacity: .45; }
.smokefig .ember { fill: var(--ember); animation: glow 2.8s ease-in-out infinite; }
.smokefig .halo  { fill: var(--ember); opacity: .12; animation: halo 2.8s ease-in-out infinite; }

@keyframes drift {
  from { stroke-dashoffset: 0; }
  to   { stroke-dashoffset: -130; }
}

@keyframes glow {
  0%, 100% { opacity: 1;    r: 3.4; }
  50%      { opacity: 0.45; r: 2.4; }
}

@keyframes halo {
  0%, 100% { opacity: .18; r: 12; }
  50%      { opacity: .06; r: 8; }
}

/* Dati sintetici sotto l'apertura */
.facts {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin: 2.6rem 0 0;
  border-top: 1px solid var(--rule);
}

.facts div {
  padding: 1rem 0 0.9rem;
  border-bottom: 1px solid var(--rule-soft);
}

.facts b {
  display: block;
  font-family: var(--serif);
  font-size: 1.8rem;
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--ember);
  margin-bottom: 0.35rem;
}

.facts span {
  font-family: var(--sans);
  font-size: 0.77rem;
  line-height: 1.45;
  color: var(--ink-mute);
}

@media (min-width: 42rem) {
  .facts { grid-template-columns: repeat(3, 1fr); gap: 0 2rem; }
}

/* --------------------------------------------------------------------------
   10. Indice
   -------------------------------------------------------------------------- */

.toc { margin: 3.2rem 0; }

.toc ol {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--rule);
  columns: 1;
}

.toc li { margin: 0; border-bottom: 1px solid var(--rule-soft); break-inside: avoid; }

.toc a {
  display: flex;
  gap: 1rem;
  align-items: baseline;
  padding: 0.7rem 0.4rem;
  text-decoration: none;
  font-family: var(--sans);
  font-size: 0.9rem;
  transition: background-color .16s ease, padding-left .16s ease;
}

.toc a:hover { background: var(--ink); color: var(--cream); padding-left: 0.75rem; }

.toc__n {
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  color: var(--ember);
  min-width: 1.7rem;
}

.toc a:hover .toc__n { color: var(--ember-lit); }

@media (min-width: 48rem) {
  .toc ol { columns: 2; column-gap: 2.5rem; }
}

/* --------------------------------------------------------------------------
   11. Tabelle
   -------------------------------------------------------------------------- */

.tablewrap {
  overflow-x: auto;
  margin: 2.4rem 0;
  border-radius: 3px;
  -webkit-overflow-scrolling: touch;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--sans);
  font-size: 0.875rem;
  line-height: 1.52;
  min-width: 30rem;
}

caption {
  caption-side: top;
  text-align: left;
  font-family: var(--sans);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ember);
  padding-bottom: 0.75rem;
}

th, td {
  text-align: left;
  vertical-align: top;
  padding: 0.75rem 0.9rem;
  border-bottom: 1px solid var(--rule-soft);
}

th:first-child, td:first-child { padding-left: 0.2rem; }

thead th {
  border-bottom: 1.5px solid var(--ink);
  font-weight: 700;
  font-size: 0.79rem;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--ink);
  white-space: nowrap;
}

tbody tr:nth-child(even) { background: var(--paper-2); }
tbody tr:last-child td { border-bottom: 1.5px solid var(--ink); }

/* --------------------------------------------------------------------------
   12. Blocco prodotto del partner
   -------------------------------------------------------------------------- */

.offer {
  border: 1px solid var(--ink);
  border-radius: 4px;
  margin: 3rem 0;
  background: var(--paper);
  box-shadow: 8px 8px 0 0 var(--paper-3);
  overflow: hidden;
}

.offer__head {
  background: var(--night);
  color: var(--cream);
  padding: 0.68rem 1.3rem;
  font-family: var(--sans);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.8rem;
  align-items: center;
}

.offer__head span {
  background: var(--ember);
  color: #fff;
  padding: 0.18rem 0.5rem;
  border-radius: 2px;
}

.offer__body { padding: 1.7rem 1.3rem; }
.offer__body h3 { margin-top: 0; font-size: clamp(1.35rem, 3.6vw, 1.7rem); }

.spec {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
  border-top: 1.5px solid var(--ink);
}

.spec li {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem 1rem;
  justify-content: space-between;
  padding: 0.62rem 0;
  border-bottom: 1px solid var(--rule-soft);
  margin: 0;
  font-family: var(--sans);
  font-size: 0.875rem;
}

.spec b { font-weight: 400; color: var(--ink-mute); }
.spec span { font-weight: 700; text-align: right; }

.price {
  font-family: var(--sans);
  font-size: 2rem;
  font-weight: 800;
  letter-spacing: -0.03em;
  color: var(--ink);
  margin: 1.4rem 0 0.35rem;
}

.price small {
  display: block;
  font-size: 0.755rem;
  font-weight: 400;
  color: var(--ink-mute);
  letter-spacing: 0;
  margin-top: 0.45rem;
  line-height: 1.5;
}

.cta {
  display: block;
  width: 100%;
  text-align: center;
  background: var(--ember);
  color: var(--cream);
  font-family: var(--sans);
  font-size: 0.97rem;
  font-weight: 700;
  letter-spacing: 0.015em;
  padding: 1.1rem 1.2rem;
  margin: 1.6rem 0 0.9rem;
  text-decoration: none;
  border: 1.5px solid var(--ember);
  border-radius: 3px;
  transition: background-color .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease;
}

.cta:hover,
.cta:focus-visible {
  background: var(--night);
  border-color: var(--night);
  color: var(--cream);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(20,22,26,.22);
}

.cta__sub {
  font-family: var(--sans);
  font-size: 0.755rem;
  line-height: 1.55;
  color: var(--ink-mute);
  margin: 0;
  text-align: center;
}

/* --------------------------------------------------------------------------
   13. Domande frequenti — elementi nativi, funzionano senza JS
   -------------------------------------------------------------------------- */

.faq { border-top: 1.5px solid var(--ink); margin: 2.2rem 0; }

.faq details { border-bottom: 1px solid var(--rule-soft); }
.faq details[open] { background: var(--paper-2); }

.faq summary {
  cursor: pointer;
  list-style: none;
  padding: 1.05rem 2.4rem 1.05rem 0.3rem;
  font-family: var(--sans);
  font-size: 0.97rem;
  font-weight: 600;
  line-height: 1.45;
  position: relative;
  transition: padding-left .18s ease, color .18s ease;
}

.faq summary::-webkit-details-marker { display: none; }

.faq summary::after {
  content: "";
  position: absolute;
  right: 0.7rem;
  top: 1.45rem;
  width: 0.72rem;
  height: 0.72rem;
  border-right: 2px solid var(--ember);
  border-bottom: 2px solid var(--ember);
  transform: rotate(45deg);
  transition: transform .24s ease;
}

.faq details[open] summary::after { transform: rotate(-135deg); top: 1.6rem; }

.faq summary:hover { padding-left: 0.7rem; color: var(--ember); }
.faq summary:focus-visible { outline: 2px solid var(--ember); outline-offset: -2px; }

.faq details > div {
  padding: 0 2rem 1.3rem 0.3rem;
  animation: unfold .28s ease both;
}

.faq details > div p:last-child { margin-bottom: 0; }
.faq details > div p, .faq details > div li { font-size: 1rem; }

@keyframes unfold {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}

/* --------------------------------------------------------------------------
   14. Lista di controllo
   -------------------------------------------------------------------------- */

.checklist { list-style: none; padding: 0; margin: 1.8rem 0; }

.checklist li {
  position: relative;
  padding: 0.68rem 0 0.68rem 2.2rem;
  border-bottom: 1px solid var(--rule-soft);
  font-family: var(--sans);
  font-size: 0.93rem;
  line-height: 1.6;
  margin: 0;
}

.checklist li::before {
  content: "";
  position: absolute;
  left: 0.1rem;
  top: 1rem;
  width: 0.92rem;
  height: 0.92rem;
  border: 1.5px solid var(--ember);
  border-radius: 2px;
}

/* --------------------------------------------------------------------------
   15. Glossario
   -------------------------------------------------------------------------- */

.glossary { margin: 2rem 0; border-top: 1.5px solid var(--ink); }

.glossary dt {
  font-family: var(--sans);
  font-weight: 700;
  font-size: 0.92rem;
  padding-top: 1.05rem;
  color: var(--ink);
}

.glossary dd {
  margin: 0.3rem 0 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--rule-soft);
  font-family: var(--sans);
  font-size: 0.895rem;
  line-height: 1.62;
  color: var(--ink-soft);
}

/* --------------------------------------------------------------------------
   16. Piè di pagina
   -------------------------------------------------------------------------- */

.footer {
  border-top: 2px solid var(--ember);
  margin-top: 5rem;
  padding-block: 3rem;
  background: var(--night);
  color: rgba(248,246,242,.82);
  background-image: linear-gradient(180deg, rgba(255,255,255,.04), transparent 40%);
}

.footer__grid {
  max-width: var(--wide);
  margin-inline: auto;
  padding-inline: var(--gutter);
  display: grid;
  gap: 2.4rem;
  grid-template-columns: 1fr;
}

.footer h4 {
  font-family: var(--sans);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #e8834a;
  margin: 0 0 0.9rem;
}

.footer p, .footer li {
  font-family: var(--sans);
  font-size: 0.815rem;
  line-height: 1.68;
  color: rgba(248,246,242,.78);
}

.footer strong { color: var(--cream); }
.footer .smaller { color: rgba(248,246,242,.56); }
.footer a { text-decoration-color: rgba(217,104,42,.8); }
.footer a:hover { background: var(--ember); color: var(--cream); }

.footer ul { list-style: none; padding: 0; margin: 0; }
.footer li { margin-bottom: 0.42rem; }

.footer hr.rule {
  background: linear-gradient(90deg, transparent, rgba(248,246,242,.24) 12%, rgba(248,246,242,.24) 88%, transparent);
}

/* --------------------------------------------------------------------------
   17. Riquadro consenso cookie (impianto statico)
   -------------------------------------------------------------------------- */

.consent {
  border: 1px solid var(--ink);
  border-radius: 3px;
  background: var(--paper);
  padding: 1.4rem;
  margin: 2.5rem 0;
}

.consent__row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin-top: 1.1rem;
}

.consent__btn {
  flex: 1 1 12rem;
  text-align: center;
  font-family: var(--sans);
  font-size: 0.85rem;
  font-weight: 700;
  padding: 0.78rem 1rem;
  border: 1.5px solid var(--ink);
  border-radius: 3px;
  text-decoration: none;
  background: var(--paper);
  color: var(--ink);
  transition: background-color .18s ease, color .18s ease;
}

.consent__btn:hover { background: var(--ink); color: var(--cream); }

/* --------------------------------------------------------------------------
   18. Figure — diagrammi SVG propri dell'editore
   Vettoriali, nessun file immagine, nessun diritto di terzi.
   -------------------------------------------------------------------------- */

.fig { margin: 3rem 0; }

.fig svg {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--rule);
  border-radius: 3px;
  background: var(--paper);
}

.fig figcaption {
  font-family: var(--sans);
  font-size: 0.78rem;
  line-height: 1.58;
  color: var(--ink-mute);
  margin-top: 0.8rem;
  padding-left: 0.9rem;
  border-left: 2px solid var(--ember);
}

.dia text    { font-family: var(--sans); fill: var(--ink); }
.dia .lbl    { font-size: 11px; }
.dia .lbl-b  { font-size: 11px; font-weight: 700; }
.dia .lbl-s  { font-size: 9px;  fill: var(--ink-mute); }
.dia .lbl-n  { font-size: 8.5px; font-weight: 800; letter-spacing: .14em; fill: var(--ember); }
.dia .ln     { stroke: var(--ink); fill: none; stroke-width: 1.2; }
.dia .ln-t   { stroke: var(--ink); fill: none; stroke-width: .8; opacity: .4; }
.dia .ln-d   { stroke: var(--ember); fill: none; stroke-width: 1.1; stroke-dasharray: 3 4; opacity: .8; }
.dia .sld    { fill: var(--ink); }
.dia .ember-d{ fill: var(--ember); }
.dia .wash   { fill: var(--ember); opacity: .08; }
.dia .wash-2 { fill: var(--ember); opacity: .17; }
.dia .wash-i { fill: var(--ink); opacity: .07; }

@media (prefers-reduced-motion: no-preference) {
  .dia .breathe { animation: breathe 5.5s ease-in-out infinite; transform-origin: center; }
}
@keyframes breathe {
  0%, 100% { opacity: .08; }
  50%      { opacity: .19; }
}

/* Griglia di fotografie illustrative */
.photogrid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.9rem;
  margin: 2.8rem 0 0.9rem;
}

.photogrid img {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border: 1px solid var(--rule);
  border-radius: 3px;
  filter: grayscale(72%) contrast(1.02) brightness(1.04);
  transition: filter .5s ease, transform .5s ease;
}

.photogrid img:hover { filter: none; transform: scale(1.012); }

@media (min-width: 40rem) {
  .photogrid { grid-template-columns: 1fr 1fr; gap: 1rem; }
}

/* Figura fotografica a piena larghezza della colonna */
.fig--photo img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--rule);
  border-radius: 3px;
  filter: grayscale(20%) contrast(1.02);
  transition: filter .5s ease;
}

.fig--photo img:hover { filter: none; }

/* Fotografia del prodotto */
.prodimg {
  display: block;
  width: 100%;
  max-width: 340px;
  height: auto;
  margin: 0 auto 1.4rem;
  border: 1px solid var(--rule);
  border-radius: 3px;
  background: #fff;
}

/* Banda a tutta larghezza fra i capitoli */
.band {
  position: relative;
  margin: 4.5rem 0;
  padding-block: clamp(3rem, 8vw, 5rem);
  background: var(--paper-2);
  background-image: url("campo-scuro.jpg");
  background-size: cover;
  background-position: center;
  color: var(--ink);
  isolation: isolate;
  border-block: 1px solid var(--rule);
}

.band::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(255,255,255,.93), rgba(255,255,255,.88));
}

.band .wrap { position: relative; }
.band p { font-family: var(--serif); font-size: clamp(1.25rem, 3.4vw, 1.6rem); line-height: 1.42; font-weight: 300; font-style: italic; margin: 0; }
.band .kicker { color: var(--ember); }
.band cite { display: block; margin-top: 1.2rem; font-family: var(--sans); font-size: 0.78rem; font-style: normal; color: var(--ink-mute); }

/* --------------------------------------------------------------------------
   19. Comparse in scorrimento — solo CSS, con ripiego sicuro
   Se il browser non supporta animation-timeline, il contenuto è
   semplicemente visibile da subito. Non nascondiamo mai nulla né ai
   lettori né al crawler dei motori di ricerca.
   -------------------------------------------------------------------------- */

@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .reveal {
      animation: rise linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 44%;
    }
  }
}

@keyframes rise {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: no-preference) {
  .fade-in { animation: fadein .9s cubic-bezier(.2,.7,.3,1) both; }
  .fade-in--1 { animation-delay: .05s; }
  .fade-in--2 { animation-delay: .18s; }
  .fade-in--3 { animation-delay: .32s; }
  .fade-in--4 { animation-delay: .46s; }
  .fade-in--5 { animation-delay: .6s; }
}

@keyframes fadein {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .photogrid img { transition: none; }
}

/* --------------------------------------------------------------------------
   20. Varianti per larghezza di schermo
   -------------------------------------------------------------------------- */

@media (min-width: 46rem) {
  .footer__grid { grid-template-columns: 1.5fr 1fr 1fr; gap: 3rem; }
  .offer__body  { padding: 2.4rem 2.2rem; }
}

@media (max-width: 30rem) {
  body { font-size: 1.08rem; }
  :root { --gutter: 1.15rem; }
  .dropcap::first-letter { font-size: 3.6rem; }
  .masthead__inner { flex-direction: column; align-items: flex-start; }
  .masthead { position: static; }
  table { min-width: 26rem; font-size: 0.83rem; }
  .offer { box-shadow: 6px 6px 0 0 var(--paper-3); }
  .box--hard { box-shadow: 4px 4px 0 0 var(--paper-3); }
}

/* --------------------------------------------------------------------------
   21. Stampa
   -------------------------------------------------------------------------- */

@media print {
  body { padding-bottom: 0; font-size: 11pt; background: #fff; }
  .biocide-bar { position: static; background: #fff; color: #000; border-top: 2px solid #000; }
  .masthead { position: static; }
  .masthead__nav, .cta, .progress, .hero__bg, .hero__veil { display: none; }
  .hero, .footer, .band, .adlabel { background: #fff; color: #000; }
  .hero h1, .footer p, .footer li, .band p, .footer h4 { color: #000; }
  .faq details { open: true; }
  a { text-decoration: none; }
}
