/* Hallmark · redesign in place · tone: luxury atmosferico, notte continua · anchor hue: melograno
 * pre-emit critique: P4 H4 E4 S5 R4 V4
 * Regole applicate: titoli dritti senza parola in corsivo, nessuna etichetta sopra le sezioni
 * (solo il kicker dell'hero), colori e spazi solo da token, ritmo verticale variabile,
 * allineamento coerente tra titolo e contenuto, al massimo due sezioni affiancate di fila. */

@font-face {
  font-family: 'Bodoni Moda';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/bodoni-moda.woff2) format('woff2');
}
@font-face {
  font-family: 'Bodoni Moda';
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url(../fonts/bodoni-moda-italic.woff2) format('woff2');
}
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(../fonts/instrument-sans.woff2) format('woff2');
}

:root {
  /* palette */
  --bosco: #13241B;
  --bosco-2: #1A3125;
  --bosco-glow: #1F3A2A;
  --terra: #0C1811;
  --salvia: #94AD8E;
  --crema: #F3EAD7;
  --avorio: #FBF6EA;
  --grano: #D6AB5E;
  --melograno: #E5432F;
  --melograno-chiaro: #F0563F;

  /* ruoli */
  --paper: var(--bosco);
  --ink: var(--avorio);
  --ink-body: var(--crema);
  --ink-soft: rgb(243 234 215 / .8);
  --ink-muted: rgb(243 234 215 / .62);
  --label: var(--salvia);
  --accent: var(--melograno);
  --gold: var(--grano);
  --line: rgb(148 173 142 / .24);
  --line-gold: rgb(214 171 94 / .42);
  --line-gold-soft: rgb(214 171 94 / .18);
  --glass: rgb(12 24 17 / .6);
  --shadow-pop: rgb(0 0 0 / .35);
  --dry-paper: #1A2219;
  --dry-ink: #CFC4AC;
  --dry-muted: #8A8468;

  /* tipografia */
  --serif: 'Bodoni Moda', 'Didot', 'Bodoni 72', Georgia, serif;
  --sans: 'Instrument Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --text-xs: .75rem;
  --text-sm: .875rem;
  --text-md: 1rem;
  --text-lg: 1.375rem;
  --text-xl: 1.75rem;
  --text-h2: clamp(2.75rem, 13vw, 5.75rem);

  /* spazi: scala 4pt */
  --space-2xs: .25rem;
  --space-xs: .5rem;
  --space-sm: .75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2.5rem;
  --space-2xl: 4rem;
  --space-3xl: 6rem;
  --space-4xl: 9rem;

  --gutter: 1rem;
  --page-x: max(var(--gutter), (100% - 1240px) / 2);
  --ease-out: cubic-bezier(.16, .8, .12, 1);

  --z-canvas: 1;
  --z-text: 2;
  --z-front: 3;
  --z-ui: 4;
  --z-fixed: 200;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; overflow-x: clip; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink-body);
  font-family: var(--sans);
  font-size: var(--text-md);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
canvas { display: block; }
a { color: inherit; }
p, h3 { margin: 0; }

.h2 {
  margin: 0;
  font-family: var(--serif);
  font-weight: 500;
  font-size: var(--text-h2);
  line-height: .95;
  letter-spacing: -.015em;
  color: var(--ink);
  text-wrap: balance;
}
.sec-lead {
  margin-top: var(--space-md);
  max-width: 30rem;
  color: var(--ink-soft);
  text-wrap: pretty;
}

/* ================= HERO ================= */
.hero {
  position: relative;
  height: 100svh;
  min-height: 560px;
  max-height: 1100px;
  overflow: hidden;
  background:
    radial-gradient(120% 70% at 50% 108%, var(--bosco-glow) 0%, transparent 60%),
    var(--paper);
  isolation: isolate;
}
.hero__back, .hero__front {
  position: absolute;
  left: 0;
  width: 100%;
  pointer-events: none;
}
.hero__back { inset: 0; height: 100%; z-index: var(--z-canvas); }
.hero__front { bottom: 0; height: 36%; z-index: var(--z-front); }

/* l'unica etichetta maiuscola della pagina: dice chi e dove */
.hero__kicker {
  position: absolute;
  z-index: var(--z-ui);
  top: calc(var(--space-2xl) + env(safe-area-inset-top));
  left: 0; right: 0;
  padding: 0 var(--gutter);
  text-align: center;
  font-size: var(--text-xs);
  line-height: 1.9;
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--label);
}
.hero__kicker span { color: var(--accent); margin: 0 .35em; }
@media (max-width: 759px) {
  .hero__kicker span { display: block; height: 0; overflow: hidden; }
}

/* il nome è il marchio: il corsivo di "delle Tentazioni" appartiene al logotipo */
.hero__title {
  position: absolute;
  z-index: var(--z-text);
  left: 0; right: 0;
  bottom: 21%;
  margin: 0;
  padding: 0 var(--gutter);
  text-align: center;
  font-family: var(--serif);
  font-weight: 500;
  font-size: clamp(3.3rem, 15.5vw, 9.5rem);
  line-height: .9;
  letter-spacing: -.015em;
  color: var(--ink);
}
.line { display: block; overflow: hidden; padding: 0 .08em .06em; }
.line > span { display: inline-block; }
.line--small {
  font-style: italic;
  font-weight: 400;
  font-size: .34em;
  letter-spacing: .04em;
  color: var(--gold);
  padding: .25em 0 .1em;
}
.line--accent {
  font-style: italic;
  font-size: 1.14em;
  color: var(--accent);
  padding-bottom: .14em;
}

.hero__foot {
  position: absolute;
  z-index: var(--z-ui);
  left: 0; right: 0;
  bottom: calc(var(--space-md) + env(safe-area-inset-bottom));
  padding: 0 var(--gutter);
}
.hero__sub {
  max-width: 17rem;
  text-wrap: balance;
  font-size: var(--text-sm);
  line-height: 1.4;
  color: var(--ink-body);
}

/* emersione del titolo dal prato: l'unica entrata orchestrata del sito */
.js .line > span {
  transform: translateY(110%);
  transition: transform 1.7s var(--ease-out);
}
.js .line:nth-child(1) > span { transition-delay: .55s; }
.js .line:nth-child(2) > span { transition-delay: .8s; }
.js .line:nth-child(3) > span { transition-delay: .95s; }
.js .hero__kicker, .js .hero__foot {
  opacity: 0;
  transition: opacity 1.2s var(--ease-out) 1.6s;
}
.is-ready .line > span { transform: none; }
.is-ready .hero__kicker, .is-ready .hero__foot { opacity: 1; }

/* ================= SEZIONI ================= */
/* un solo riquadro di contenuto per tutte le sezioni; le composizioni escono a filo schermo su mobile.
   Il ritmo verticale cambia da sezione a sezione, e chi segue un terreno ne riemerge. */
.method, .reception, .bouquet, .shop, .reviews, .team, .contact {
  position: relative;
  padding-inline: var(--page-x);
}
.bleed { margin-inline: calc(var(--page-x) * -1); }
.from-ground { background: linear-gradient(var(--terra) 0, var(--paper) 340px); }

/* ================= IL METODO ================= */
.method { padding-block: var(--space-3xl) var(--space-2xl); }
.steps {
  list-style: none;
  margin: var(--space-xl) 0 0;
  padding: 0;
  max-width: 30rem;
  display: grid;
  gap: var(--space-xl);
}
.step {
  display: grid;
  grid-template-columns: 3rem 1fr;
  align-items: baseline;
}
.step__no {
  font-family: var(--serif);
  font-size: var(--text-xl);
  line-height: 1;
  color: var(--accent);
  font-variant-numeric: lining-nums;
}
.step__name {
  margin: 0 0 var(--space-xs);
  font-family: var(--serif);
  font-weight: 500;
  font-size: var(--text-xl);
  line-height: 1.1;
  color: var(--ink);
}
.step__body p { color: var(--ink-soft); }
.method__stage {
  position: relative;
  margin-top: var(--space-lg);
  height: min(120vw, 560px);
}
.method .steps[start="3"] { margin-top: var(--space-lg); }
.method__note {
  margin-top: var(--space-2xl);
  padding-top: var(--space-md);
  max-width: 30rem;
  font-size: var(--text-sm);
  color: var(--label);
  border-top: 1px solid var(--line);
}
.method__note b { font-weight: 500; color: var(--gold); }

/* ================= CERIMONIA ================= */
.ceremony {
  position: relative;
  height: 100svh;
  min-height: 620px;
  max-height: 1200px;
  background: linear-gradient(var(--paper) 0, var(--bosco-2) 30%, var(--bosco-2) 70%, var(--paper) 100%);
  overflow: hidden;
}
.ceremony__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.ceremony__text {
  position: absolute;
  left: 50%;
  top: 60%;
  transform: translate(-50%, -50%);
  width: min(62vw, 34rem);
  text-align: center;
}
.ceremony__text .h2 { font-size: clamp(2.3rem, 10.5vw, 4.6rem); margin-bottom: var(--space-md); }
.ceremony__text p { font-size: var(--text-sm); color: var(--ink-soft); }

/* ================= RICEVIMENTO ================= */
/* simmetrico come la tavola: titolo e menù centrati sull'asse della prospettiva */
.reception {
  padding-block: var(--space-2xl) var(--space-3xl);
  text-align: center;
}
.reception__stage {
  position: relative;
  margin-top: var(--space-md);
  height: min(140vw, 720px);
}
.method__canvas, .reception__canvas, .bouquet__canvas, .shop__canvas,
.reviews__canvas, .team__canvas, .contact__canvas {
  position: absolute; inset: 0; width: 100%; height: 100%;
}
.menu {
  margin: var(--space-xl) auto 0;
  width: min(100%, 21rem);
  padding: var(--space-xl) var(--space-lg);
  border: 1px solid var(--line-gold);
  outline: 1px solid var(--line-gold-soft);
  outline-offset: 5px;
}
.menu__head {
  font-size: var(--text-xs);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold);
}
.menu__list {
  list-style: none;
  margin: var(--space-lg) 0 0;
  padding: 0;
  display: grid;
  gap: var(--space-sm);
}
.menu__list li {
  font-family: var(--serif);
  font-size: var(--text-lg);
  line-height: 1.25;
  color: var(--ink);
}

/* ================= BOUQUET E DETTAGLI ================= */
.bouquet {
  padding-block: var(--space-3xl) var(--space-2xl);
  background: linear-gradient(var(--paper) 0, var(--bosco-2) 50%, var(--paper) 100%);
}
.bouquet__stage { position: relative; margin-top: var(--space-md); height: min(128vw, 640px); }
.details { margin-top: var(--space-lg); }
.details__head {
  font-family: var(--serif);
  font-weight: 500;
  font-size: var(--text-xl);
  color: var(--ink);
}
/* cartellini, come quelli legati ai mazzi */
.tags {
  list-style: none;
  margin: var(--space-md) 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm) var(--space-xs);
}
.tags li {
  position: relative;
  padding: var(--space-xs) var(--space-md) var(--space-xs) 1.6rem;
  font-family: var(--serif);
  font-size: 1.05rem;
  color: var(--ink);
  white-space: nowrap;
  border: 1px solid var(--line-gold);
  border-radius: 3px 14px 14px 3px;
}
.tags li::before {
  content: '';
  position: absolute;
  left: .6rem; top: 50%;
  width: 7px; height: 7px;
  margin-top: -3.5px;
  border-radius: 50%;
  border: 1px solid var(--gold);
}

/* ================= NEGOZIO ================= */
.shop { padding-block: var(--space-2xl); }
.shop__stage { position: relative; margin-top: var(--space-lg); }
/* tre mazzi di peso diverso: il primo domina, non una griglia di carte uguali */
.occasions {
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, .85fr);
  grid-template-rows: auto auto;
  gap: 0 var(--space-sm);
}
/* subgrid: i mazzi poggiano sulla stessa linea e le etichette partono alla stessa altezza */
.occasions li { display: grid; grid-row: span 2; grid-template-rows: subgrid; }
.occasions .plot { align-self: end; }
.occasions .plot { height: min(62vw, 340px); }
.occasions li:nth-child(2) .plot { height: min(52vw, 290px); }
.occasions li:nth-child(3) .plot { height: min(44vw, 250px); }
.occasions p {
  margin-top: var(--space-xs);
  padding-top: var(--space-xs);
  border-top: 1px solid var(--line);
  font-family: var(--serif);
  font-size: 1.05rem;
  line-height: 1.2;
  color: var(--ink);
}
.facts { margin-top: var(--space-lg); color: var(--ink-soft); }

/* ================= RECENSIONI ================= */
.reviews { padding-block: var(--space-3xl) var(--space-2xl); }
.scores {
  list-style: none;
  margin: var(--space-xl) 0 0;
  padding: 0;
  display: grid;
  gap: var(--space-sm);
  color: var(--ink-soft);
}
.scores li { display: flex; align-items: baseline; gap: var(--space-sm); }
.scores b {
  min-width: 4.4rem;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 2.4rem;
  line-height: 1;
  color: var(--ink);
  font-variant-numeric: lining-nums tabular-nums;
}
.reviews__stage { position: relative; margin-top: var(--space-xl); height: min(78vw, 360px); }
.review-hit {
  position: absolute;
  width: 52px; height: 52px;
  margin: -26px 0 0 -26px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.review-hit::after {
  content: '';
  position: absolute;
  inset: 10px;
  border-radius: 50%;
  border: 1px solid var(--line-gold);
  animation: bud 2.6s ease-in-out infinite;
}
.review-hit[aria-pressed="true"]::after { display: none; }
.review-hit:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
@keyframes bud {
  0%, 100% { transform: scale(.8); opacity: .25; }
  50% { transform: scale(1.15); opacity: 1; }
}
.quote { margin: var(--space-md) 0 0; min-height: 8.5rem; }
.quote__text {
  margin: 0;
  max-width: 28rem;
  font-family: var(--serif);
  font-style: italic;
  font-size: 1.55rem;
  line-height: 1.25;
  color: var(--ink);
  text-wrap: balance;
}
.quote__text--hint {
  font-family: var(--sans);
  font-style: normal;
  font-size: var(--text-md);
  color: var(--label);
}
.quote__who { margin-top: var(--space-sm); font-size: var(--text-sm); color: var(--gold); }
.quote.is-on { animation: quote-in .7s var(--ease-out); }
@keyframes quote-in { from { opacity: 0; transform: translateY(8px); } }

/* ================= TEAM ================= */
/* un elenco di nomi, ognuno con il suo fiore che cresce dalla riga */
.team { padding-block: var(--space-2xl); }
.team__stage { position: relative; margin-top: var(--space-lg); max-width: 46rem; }
.people { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.people li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 6.5rem;
  align-items: end;
  border-bottom: 1px solid var(--line);
}
.people p {
  padding-bottom: var(--space-md);
  font-family: var(--serif);
  font-weight: 500;
  font-size: clamp(2.4rem, 11vw, 4.5rem);
  line-height: 1;
  color: var(--ink);
}
.people .plot { height: 8.5rem; }

/* ================= CONTATTI ================= */
.contact { padding-block: var(--space-3xl) 0; }
.contact__body {
  margin-top: var(--space-xl);
  max-width: 30rem;
  display: grid;
  gap: var(--space-xl);
}
.cta {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 56px;
  border-radius: 99px;
  background: var(--accent);
  color: var(--ink);
  font-weight: 500;
  white-space: nowrap;
  text-decoration: none;
  transition: background-color .25s var(--ease-out), transform .15s var(--ease-out);
}
.cta:hover { background: var(--melograno-chiaro); }
.cta:active { transform: translateY(1px); }
.cta:focus-visible, .channels a:focus-visible, .foot a:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.channels { list-style: none; margin: 0; padding: 0; display: grid; }
.channels li {
  display: grid;
  gap: var(--space-2xs);
  padding: var(--space-md) 0;
  border-bottom: 1px solid var(--line);
}
.channels span { font-size: var(--text-sm); color: var(--label); }
.channels a {
  font-family: var(--serif);
  font-size: var(--text-lg);
  line-height: 1.3;
  color: var(--ink);
  text-decoration: none;
  overflow-wrap: anywhere;
}
.channels a:hover { color: var(--gold); }
.hours__head {
  font-family: var(--serif);
  font-weight: 500;
  font-size: var(--text-xl);
  color: var(--ink);
}
.hours dl { margin: var(--space-sm) 0 0; display: grid; gap: var(--space-xs); }
.hours div { display: flex; justify-content: space-between; gap: var(--space-md); font-variant-numeric: tabular-nums; }
.hours dt { color: var(--ink-soft); }
.hours dd { margin: 0; text-align: right; color: var(--ink); }
.contact__meadow { position: relative; height: 170px; margin-top: var(--space-2xl); }

/* ================= IL FIORE CHE SFIORISCE ================= */
.wilt {
  position: fixed;
  z-index: var(--z-fixed);
  top: calc(var(--space-xs) + env(safe-area-inset-top));
  right: var(--space-xs);
  width: 52px; height: 52px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--glass);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  cursor: pointer;
}
.wilt canvas { width: 52px; height: 52px; }
.wilt:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.wilt__pop {
  position: fixed;
  z-index: var(--z-fixed);
  top: calc(66px + env(safe-area-inset-top));
  right: var(--space-xs);
  width: min(calc(100vw - 1rem), 19rem);
  padding: var(--space-md);
  border-radius: 10px;
  background: var(--avorio);
  color: var(--bosco);
  font-size: var(--text-sm);
  line-height: 1.45;
  box-shadow: 0 12px 32px var(--shadow-pop);
}
.wilt__pop b { font-weight: 600; }
.is-expired .wilt, .is-expired .wilt__pop { display: none; }

/* ================= ANTEPRIMA SCADUTA ================= */
.expired {
  position: relative;
  height: 100svh;
  min-height: 520px;
  background: radial-gradient(120% 70% at 50% 110%, var(--dry-paper) 0%, var(--terra) 60%);
  overflow: hidden;
}
.expired__canvas { position: absolute; left: 0; bottom: 0; width: 100%; height: 55%; }
.expired__text { position: relative; padding: 22vh var(--gutter) 0; text-align: center; }
.expired .eyebrow {
  font-size: var(--text-xs);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--dry-muted);
}
.expired .h2 { margin-top: var(--space-sm); color: var(--dry-ink); }
.expired__by { margin-top: var(--space-lg); font-size: var(--text-sm); line-height: 1.7; color: var(--dry-muted); }
.expired__by a { color: var(--dry-ink); }

/* ================= FOOTER ================= */
.foot {
  padding: var(--space-lg) var(--gutter) calc(var(--space-lg) + env(safe-area-inset-bottom));
  text-align: center;
  font-size: var(--text-xs);
  letter-spacing: .04em;
  color: var(--ink-muted);
  background: var(--terra);
}
.foot a { text-underline-offset: 3px; }

/* ================= STRUMENTI DI REVISIONE (solo con ?lab) ================= */
.lab {
  position: fixed;
  z-index: var(--z-fixed);
  top: calc(10px + env(safe-area-inset-top));
  left: var(--space-xs);
  white-space: nowrap;
  display: none;
  align-items: center;
  gap: var(--space-xs);
  padding: 5px 5px 5px 12px;
  border-radius: 99px;
  background: var(--glass);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  font-size: var(--text-xs);
  color: var(--label);
}
.lab-on .lab { display: flex; }
.is-expired .lab { display: none; }
.lab b { color: var(--crema); font-weight: 500; }
.lab button {
  min-height: 32px;
  padding: 0 12px;
  border: 0;
  border-radius: 99px;
  background: var(--crema);
  color: var(--bosco);
  font: 500 var(--text-xs) var(--sans);
  cursor: pointer;
}

/* ================= TABLET ================= */
@media (min-width: 760px) {
  :root { --gutter: 2.5rem; }
  .hero__title { font-size: clamp(4rem, 10.5vw, 9.5rem); bottom: 22%; }
  .line--small { padding: .4em 0 .1em; }
  .hero__kicker { font-size: .78rem; }
  .hero__sub { font-size: var(--text-md); max-width: none; }
  .method { padding-top: var(--space-4xl); }
  .bleed { margin-inline: 0; }
}

/* ================= DESKTOP ================= */
/* sequenza: metodo affiancato · cerimonia piena · ricevimento e bouquet affiancati ·
   negozio in colonna · recensioni affiancate · team e contatti in colonna.
   Mai più di due sezioni affiancate di fila. */
@media (min-width: 960px) {
  :root { --text-h2: clamp(3rem, 4.6vw, 4.5rem); }
  .ceremony__text .h2 { font-size: var(--text-h2); }
  .method, .reception, .bouquet, .reviews {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
    column-gap: clamp(3rem, 6vw, 7rem);
    align-content: center;
  }
  .reception { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); text-align: left; }
  :is(.method, .reception, .bouquet, .reviews) > .sec-head { grid-area: head; }
  :is(.method__stage, .reception__stage, .bouquet__stage, .reviews__stage) {
    grid-area: stage;
    align-self: center;
    margin: 0;
  }

  .method { grid-template-areas: "head stage" "steps stage" "steps3 stage" "note stage"; grid-template-rows: auto auto auto 1fr; }
  .method > .steps { grid-area: steps; }
  .method > .steps[start="3"] { grid-area: steps3; margin-top: var(--space-xl); }
  .method__stage { height: 600px; }
  .method__note { grid-area: note; align-self: start; }

  .reception { grid-template-areas: "stage head" "stage menu"; grid-template-rows: auto 1fr; padding-block: var(--space-3xl); }
  .reception__stage { height: 720px; }
  .menu { grid-area: menu; margin: var(--space-xl) 0 0; align-self: start; }

  .bouquet { grid-template-areas: "head stage" "details stage"; grid-template-rows: auto 1fr; }
  .bouquet__stage { height: 680px; }
  .details { grid-area: details; margin-top: var(--space-xl); align-self: start; }

  .shop { padding-block: var(--space-3xl); }
  .occasions { max-width: 64rem; gap: var(--space-xl); }
  .occasions .plot { height: 380px; }
  .occasions li:nth-child(2) .plot { height: 320px; }
  .occasions li:nth-child(3) .plot { height: 270px; }

  .reviews { grid-template-areas: "head stage" "scores stage" "quote stage"; grid-template-rows: auto auto 1fr; }
  .reviews__stage { height: 420px; }
  .quote { grid-area: quote; margin-top: var(--space-xl); align-self: start; }
  .scores { grid-area: scores; }

  .people li { grid-template-columns: minmax(0, 1fr) 9rem; }
  .people .plot { height: 11rem; }

  .contact__body {
    max-width: 64rem;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    column-gap: var(--space-3xl);
    margin-top: var(--space-2xl);
  }
  .contact__body .hours { grid-column: 2; grid-row: 1 / span 2; align-self: start; padding-top: var(--space-xs); }
  .contact__meadow { height: 220px; }
}

/* ================= MOVIMENTO RIDOTTO ================= */
@media (prefers-reduced-motion: reduce) {
  .js .line > span, .js .hero__kicker, .js .hero__foot { transition: none; transform: none; opacity: 1; }
  .review-hit::after { animation: none; opacity: .7; }
  .quote.is-on { animation: none; }
  .cta { transition: none; }
}
