﻿/* ============================================================
   Argento Genova — Restyling v3
   - Theme tokens via CSS custom properties
   - Dark by default; add data-theme="light" on <html> for light
   - Fully responsive: desktop / tablet ≤900 / mobile ≤560
   ============================================================ */

/* --- Design tokens: DARK (default) ----------------------- */
:root {
  --bg:            #080706;
  --panel:         #0d0b09;
  --panel-2:       #100d0a;
  --panel-3:       #0b0908;
  --panel-4:       #0e0c0a;

  --fg:            #f2ebe0;
  --fg-strong:     #f8f0e4;
  --fg-title:      #f6ecdd;
  --fg-muted:      #bfb3a2;
  --fg-muted-2:    #a89c8b;
  --fg-muted-3:    #9d9080;
  --fg-muted-4:    #8d8171;
  --fg-muted-5:    #7d7264;
  --fg-nav:        #cbbca6;

  --gold:          #c9a063;
  --gold-hi:       #f7e3c0;
  --gold-hi-2:     #f2d9b0;
  --gold-hi-3:     #f0d6ac;
  --gold-hover:    #f6e3c4;
  --gold-text:     #e3c69a;
  --gold-text-2:   #f0dcbb;
  --btn-on-gold:   #1a1208;

  --border:        rgba(201, 160, 99, .16);
  --border-hi:     rgba(201, 160, 99, .30);
  --border-strong: rgba(201, 160, 99, .42);
  --border-nav:    rgba(201, 160, 99, .14);
  --border-inp:    rgba(226, 203, 166, .30);

  --header-bg:     rgba(8, 7, 6, .82);
  --scrim-top:     rgba(8, 7, 6, .96);
  --scrim-mid:     rgba(8, 7, 6, .25);
  --scrim-low:     rgba(8, 7, 6, .10);
  --scrim-full:    rgba(8, 7, 6, .95);
  --scrim-body:    rgba(8, 7, 6, .78);

  --glow-color:    rgba(201, 160, 99, .16);
  --gold-tint-8:   rgba(201, 160, 99, .08);
  --gold-tint-16:  rgba(201, 160, 99, .16);
  --gold-tint-32:  rgba(201, 160, 99, .32);

  --success:       #7fd39b;
  --success-halo:  rgba(127, 211, 155, .18);

  --shadow-lg:     0 30px 60px -30px rgba(0, 0, 0, .6);

  --grad-gold:     linear-gradient(100deg, #f0d6ac, #c9a063);
  --grad-gold-lg:  linear-gradient(100deg, #f2d9b0, #c9a063);
  --grad-panel:    linear-gradient(160deg, #100d0a, #0a0807);
  --grad-contact:  linear-gradient(180deg, #0b0908, #080706);
  --grad-scrim:    linear-gradient(0deg, rgba(8, 7, 6, .95) 8%, rgba(8, 7, 6, .25) 55%, rgba(8, 7, 6, .1));
  --grad-scrim-tall: linear-gradient(0deg, rgba(8, 7, 6, .95) 10%, rgba(8, 7, 6, .2) 60%);

  --placeholder:   repeating-linear-gradient(135deg, #1b1611 0 8px, #141110 8px 16px);

  --chart-line:    #e8c89a;
  --chart-fill-a:  rgba(201, 160, 99, .38);
  --chart-fill-b:  rgba(201, 160, 99, 0);

  /* Alias usati dallo Studio (mappati sui token esistenti) */
  --fg-body:       var(--fg);
  --card-bg:       var(--panel);
}

/* --- Design tokens: LIGHT -------------------------------- */
:root[data-theme="light"] {
  --bg:            #f8f2e6;
  --panel:         #ffffff;
  --panel-2:       #fbf5e8;
  --panel-3:       #f2eadc;
  --panel-4:       #fdf9ee;

  --fg:            #2c2317;
  --fg-strong:     #1a1208;
  --fg-title:      #1a1208;
  --fg-muted:      #5a4e3c;
  --fg-muted-2:    #6e6250;
  --fg-muted-3:    #85796a;
  --fg-muted-4:    #948877;
  --fg-muted-5:    #a3987f;
  --fg-nav:        #4a3e2c;

  --gold:          #a67d38;
  --gold-hi:       #c9a063;
  --gold-hi-2:     #b8912f;
  --gold-hi-3:     #b8925a;
  --gold-hover:    #6f4e10;
  --gold-text:     #7a5a1e;
  --gold-text-2:   #6f4e10;
  --btn-on-gold:   #1a1208;

  --border:        rgba(166, 125, 56, .20);
  --border-hi:     rgba(166, 125, 56, .38);
  --border-strong: rgba(166, 125, 56, .55);
  --border-nav:    rgba(166, 125, 56, .18);
  --border-inp:    rgba(166, 125, 56, .34);

  --header-bg:     rgba(248, 242, 230, .82);
  --scrim-top:     rgba(28, 22, 10, .92);
  --scrim-mid:     rgba(28, 22, 10, .30);
  --scrim-low:     rgba(28, 22, 10, .12);
  --scrim-full:    rgba(28, 22, 10, .92);
  --scrim-body:    rgba(28, 22, 10, .78);

  --glow-color:    rgba(201, 160, 99, .28);
  --gold-tint-8:   rgba(166, 125, 56, .10);
  --gold-tint-16:  rgba(166, 125, 56, .18);
  --gold-tint-32:  rgba(166, 125, 56, .32);

  --success:       #1e8a4f;
  --success-halo:  rgba(30, 138, 79, .18);

  --shadow-lg:     0 30px 60px -30px rgba(120, 90, 40, .28);

  --grad-gold:     linear-gradient(100deg, #d9b062, #a67d38);
  --grad-gold-lg:  linear-gradient(100deg, #e0b76c, #a67d38);
  --grad-panel:    linear-gradient(160deg, #ffffff, #f6ecd6);
  --grad-contact:  linear-gradient(180deg, #f2eadc, #f8f2e6);
  --grad-scrim:    linear-gradient(0deg, rgba(28, 22, 10, .92) 8%, rgba(28, 22, 10, .28) 55%, rgba(28, 22, 10, .1));
  --grad-scrim-tall: linear-gradient(0deg, rgba(28, 22, 10, .92) 10%, rgba(28, 22, 10, .22) 60%);

  --placeholder:   repeating-linear-gradient(135deg, #efe6cf 0 8px, #e8ddc0 8px 16px);

  --chart-line:    #8a6624;
  --chart-fill-a:  rgba(166, 125, 56, .30);
  --chart-fill-b:  rgba(166, 125, 56, 0);

  /* Alias usati dallo Studio (mappati sui token light) */
  --fg-body:       var(--fg);
  --card-bg:       var(--panel);
}

/* --- Reset & base ---------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
button { font: inherit; }
::selection { background: var(--gold); color: var(--btn-on-gold); }

html {
  color-scheme: dark;
  transition: background-color .35s ease;
  scroll-behavior: smooth;
  /* Rete di sicurezza: impedisce che un singolo elemento troppo largo
     mandi in scroll orizzontale l'intera pagina su mobile. `clip` (non
     `hidden`) perché preserva il funzionamento di position: sticky. */
  overflow-x: clip;
}
html[data-theme="light"] { color-scheme: light; }

/* Compensazione dell'header sticky quando si scrolla a un'anchor */
section[id] { scroll-margin-top: 80px; }
@media (max-width: 1080px) { section[id] { scroll-margin-top: 70px; } }
@media (max-width: 560px)  { section[id] { scroll-margin-top: 60px; } }

/* Rispetta chi preferisce meno movimento */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  background: var(--bg);
  color: var(--fg);
  font-family: "Figtree", "Helvetica Neue", Helvetica, sans-serif;
  font-weight: 400;
  /* overflow: clip permette a position: sticky di funzionare (a differenza
     di overflow: hidden che rompe lo sticky). */
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color .35s ease, color .35s ease;
}

a { color: var(--gold-text); text-decoration: none; transition: color .18s ease; }
a:hover { color: var(--gold-hover); }

/* --- Shared utilities ------------------------------------ */
.eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; }
.eyebrow__rule { width: 38px; height: 1px; background: var(--gold); }
.eyebrow__label {
  font-size: 11px;
  letter-spacing: .3em;
  color: var(--gold);
  font-weight: 600;
  text-transform: uppercase;
}
.eyebrow__label--block { display: block; margin-bottom: 18px; }

.section-title {
  margin: 0;
  font-weight: 700;
  letter-spacing: -.028em;
  font-size: 46px;
  line-height: 1.05;
  color: var(--fg-strong);
  text-wrap: balance;
}
.section-title--md { font-size: 42px; }
.section-title--sm { font-size: 40px; line-height: 1.1; }

.gold-text {
  background: linear-gradient(100deg, var(--gold-hi), var(--gold));
  -webkit-background-clip: text;
          background-clip: text;
  color: transparent;
  font-style: normal;
}

.stars { color: var(--gold); letter-spacing: .12em; font-size: 13px; }
.chip {
  display: inline-block;
  padding: 6px 12px;
  border-radius: 100px;
  background: var(--gold-tint-16);
  border: 1px solid var(--border-hi);
  font-size: 10px;
  letter-spacing: .18em;
  color: var(--gold-text-2);
  font-weight: 600;
}

/* --- Buttons --------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 11px 20px;
  border-radius: 100px;
  font-size: 13.5px; font-weight: 600; line-height: 1;
  transition: all .18s ease;
  border: 1px solid transparent;
  cursor: pointer;
  white-space: nowrap;
}
.btn--md { padding: 15px 26px; font-size: 14.5px; }
.btn--lg { padding: 17px 30px; font-size: 15.5px; font-weight: 700; letter-spacing: .01em; }

.btn--ghost {
  border-color: var(--border-inp);
  color: var(--fg);
  background: transparent;
}
.btn--ghost:hover {
  border-color: var(--gold);
  background: var(--gold-tint-8);
  color: var(--fg);
}

.btn--gold {
  color: var(--btn-on-gold);
  background: var(--grad-gold);
  font-weight: 700;
}
.btn--gold.btn--lg { background: var(--grad-gold-lg); padding: 17px 32px; }
.btn--gold:hover { filter: brightness(1.08); color: var(--btn-on-gold); }

/* WhatsApp: default = testo. Su mobile diventa icona circolare. */
.btn--wa .btn__icon  { width: 18px; height: 18px; display: none; }
.btn--wa .btn__label { display: inline; }

.pulse-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--success);
  box-shadow: 0 0 0 3px var(--success-halo);
  animation: pulse 2.6s ease-in-out infinite;
  flex: none;
}
@keyframes pulse {
  0%, 100% { box-shadow: 0 0 0 3px var(--success-halo); }
  50%      { box-shadow: 0 0 0 6px transparent; }
}

.btn-icon {
  width: 54px; height: 54px; flex: none;
  border-radius: 50%;
  border: 1px solid var(--border-inp);
  display: flex; align-items: center; justify-content: center;
  font-size: 19px; color: var(--gold-text);
  transition: all .18s ease;
  background: transparent;
}
.btn-icon:hover {
  border-color: var(--gold);
  background: var(--gold-tint-8);
  color: var(--gold-hover);
}
.arrow { font-size: 17px; }

.link-underline {
  display: inline-flex; align-items: center; gap: 9px;
  margin-top: 22px;
  font-size: 14.5px; font-weight: 600;
  color: var(--gold-text-2);
  border-bottom: 1px solid var(--border-hi);
  padding-bottom: 4px;
  transition: color .18s ease, border-color .18s ease;
}
.link-underline:hover { color: var(--gold-hover); border-bottom-color: var(--gold-hover); }
.link-gold { font-size: 14px; font-weight: 600; color: var(--gold-text); margin-top: auto; }

/* --- Theme toggle ---------------------------------------- */
.theme-toggle {
  --sz: 40px;
  width: var(--sz); height: var(--sz);
  border-radius: 50%;
  border: 1px solid var(--border-inp);
  background: transparent;
  color: var(--fg);
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
  position: relative;
  transition: border-color .2s ease, background .2s ease, color .2s ease;
  flex: none;
}
.theme-toggle:hover {
  border-color: var(--gold);
  background: var(--gold-tint-8);
  color: var(--gold-hover);
}
.theme-toggle__icon {
  width: 18px; height: 18px;
  position: absolute;
  transition: opacity .3s ease, transform .5s cubic-bezier(.4, 0, .2, 1);
}
.theme-toggle__icon--moon  { opacity: 1; transform: rotate(0);      }
.theme-toggle__icon--sun   { opacity: 0; transform: rotate(-90deg); }
:root[data-theme="light"] .theme-toggle__icon--moon { opacity: 0; transform: rotate(90deg); }
:root[data-theme="light"] .theme-toggle__icon--sun  { opacity: 1; transform: rotate(0);     }

/* --- Nav toggle (hamburger, mobile) ---------------------- */
.nav-toggle {
  display: none;
  width: 40px; height: 40px;
  border-radius: 50%;
  border: 1px solid var(--border-inp);
  background: transparent;
  color: var(--fg);
  cursor: pointer;
  position: relative;
  flex: none;
  transition: border-color .2s ease, background .2s ease;
}
.nav-toggle:hover { border-color: var(--gold); background: var(--gold-tint-8); }
.nav-toggle span {
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  width: 18px; height: 1.6px;
  background: currentColor;
  border-radius: 2px;
  transition: transform .3s ease, opacity .2s ease;
}
.nav-toggle span:nth-child(1) { transform: translate(-50%, calc(-50% - 5px)); }
.nav-toggle span:nth-child(3) { transform: translate(-50%, calc(-50% + 5px)); }
.nav-toggle.is-open span:nth-child(1) { transform: translate(-50%, -50%) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2) { opacity: 0; }
.nav-toggle.is-open span:nth-child(3) { transform: translate(-50%, -50%) rotate(-45deg); }

/* --- Photos ---------------------------------------------- */
.photo {
  margin: 0;
  position: relative;
  border: 1px solid var(--border-hi);
  border-radius: 8px;
  overflow: hidden;
  background: var(--panel-2);
}
.photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

.photo--hero { height: 300px; }
.photo--tall { border-radius: 10px; height: 520px; border-color: var(--border-hi); }
.photo--map  { border-radius: 10px; height: 380px; border-color: var(--border-hi); }

/* --- Mappa interattiva ----------------------------------- */
.map {
  position: relative;
  height: 380px;
  border: 1px solid var(--border-hi);
  border-radius: 10px;
  overflow: hidden;
  background: var(--panel-2);
  z-index: 0;                    /* isola gli z-index interni di Leaflet */
}
.map .leaflet-container {
  width: 100%; height: 100%;
  background: var(--panel-2);
  font-family: inherit;
}
/* Bordo interno dorato sui tile per sposare la palette del sito */
/* --- Google Maps embed (iframe) ------------------------- */
.map__frame {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  border: 0;
  border-radius: inherit;
  display: block;
  transition: filter .35s ease;
}
/* Copre il riquadro info nativo di Google Maps (in alto a sinistra) con
   una nostra "card" opaca. Sposta anche il fondo del container fuori dal
   suo z-index, garantendo che il riquadro sotto sia sempre nascosto. */
.map__cover {
  position: absolute;
  top: 14px; left: 14px;
  right: 14px;
  max-width: 380px;
  z-index: 500;
  display: flex; align-items: center; gap: 12px;
  padding: 14px 18px;
  background: rgba(8, 7, 6, .92);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(201, 160, 99, .35);
  border-radius: 12px;
  color: var(--fg-title);
  text-decoration: none;
  line-height: 1.25;
  min-height: 64px;
  transition: border-color .18s ease, background .18s ease;
}
.map__cover:hover {
  border-color: var(--gold);
  color: var(--fg-title);
}
.map__coverText { display: flex; flex-direction: column; gap: 2px; }
.map__coverText strong {
  font-weight: 700;
  font-size: 14px;
  letter-spacing: .01em;
  color: var(--fg-title);
}
.map__coverText span {
  font-size: 12px;
  color: var(--fg-muted-2);
  letter-spacing: .01em;
}
:root[data-theme="light"] .map__cover {
  background: rgba(255, 250, 240, .95);
  border-color: rgba(166, 125, 56, .5);
  color: var(--fg-strong);
}
:root[data-theme="light"] .map__coverText strong { color: var(--fg-strong); }
:root[data-theme="light"] .map__coverText span   { color: var(--fg-muted-2); }
@media (max-width: 560px) {
  .map__cover { padding: 10px 14px; min-height: 52px; }
  .map__coverText strong { font-size: 12.5px; }
  .map__coverText span   { font-size: 11px; }
}
/* Sul tema dark applico il classico "night mode via invert" all'iframe */
:root:not([data-theme="light"]) .map__frame {
  filter: invert(.92) hue-rotate(180deg) brightness(.95) contrast(.95) saturate(.85);
}
/* Fix noto: sotto certi zoom compaiono "seams" bianche tra i tile.
   L'overlap di 0.5px chiude i gap subpixel. */
.map .leaflet-container img.leaflet-tile {
  width: 256.5px !important;
  height: 256.5px !important;
}
/* Attribution meno invasiva */
.map .leaflet-control-attribution {
  background: rgba(8, 7, 6, .55);
  color: #d9c9a8;
  font-size: 10px;
  padding: 3px 8px;
  backdrop-filter: blur(6px);
}
.map .leaflet-control-attribution a { color: var(--gold-text); }
:root[data-theme="light"] .map .leaflet-control-attribution {
  background: rgba(255, 250, 240, .82);
  color: var(--fg-muted-2);
}
/* Zoom controls in stile palette */
.map .leaflet-bar {
  border: 1px solid var(--border-hi);
  box-shadow: none;
}
.map .leaflet-bar a {
  background: rgba(8, 7, 6, .78);
  color: var(--gold-text);
  border-bottom-color: var(--border);
  backdrop-filter: blur(8px);
}
.map .leaflet-bar a:hover {
  background: rgba(201, 160, 99, .18);
  color: var(--fg-title);
}
:root[data-theme="light"] .map .leaflet-bar a {
  background: rgba(255, 250, 240, .92);
  color: var(--fg-strong);
}
:root[data-theme="light"] .map .leaflet-bar a:hover {
  background: rgba(166, 125, 56, .12);
}

.map__pin {
  position: absolute; left: 20px; top: 20px;
  z-index: 500;                  /* sopra i tile Leaflet ma sotto i popup */
  display: inline-flex; align-items: center; gap: 10px;
  padding: 10px 16px 10px 14px;
  background: var(--scrim-body);
  backdrop-filter: blur(10px);
  border: 1px solid var(--border-hi);
  border-radius: 100px;
  color: #ffe9c2;
  font-size: 13px; font-weight: 600;
  letter-spacing: .01em;
  pointer-events: none;
}
:root[data-theme="light"] .map__pin {
  background: rgba(255, 250, 240, .88);
  color: var(--fg-strong);
}
.map__pinDot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 4px var(--gold-tint-32);
}
.map a.map__open {
  position: absolute; right: 20px; bottom: 20px;
  z-index: 500;
  padding: 8px 14px;
  background: var(--grad-gold);
  color: var(--btn-on-gold);
  font-size: 12.5px; font-weight: 700;
  border-radius: 100px;
  text-decoration: none;
  transition: filter .18s ease;
}
.map a.map__open:hover { filter: brightness(1.08); color: var(--btn-on-gold); }

/* Marker dorato personalizzato (fatto in CSS puro sull'icona Leaflet) */
.ag-marker {
  width: 18px; height: 18px; border-radius: 50%;
  background: var(--gold);
  border: 3px solid #fff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .4), 0 0 0 4px var(--gold-tint-32);
  animation: pulse 2.4s ease-in-out infinite;
}

.photo__pin {
  position: absolute; left: 20px; bottom: 20px;
  display: inline-flex; align-items: center; gap: 10px;
  padding: 10px 16px 10px 14px;
  background: var(--scrim-body);
  backdrop-filter: blur(10px);
  border: 1px solid var(--border-hi);
  border-radius: 100px;
  color: var(--fg-title);
  font-size: 13px; font-weight: 600;
  letter-spacing: .01em;
}
:root[data-theme="light"] .photo__pin { color: #ffe9c2; }
.photo__pinDot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 4px var(--gold-tint-32);
}

.logo-placeholder {
  height: 26px; width: 140px;
  background: var(--placeholder);
  display: flex; align-items: center; justify-content: center;
  font: 9px ui-monospace, Menlo, monospace;
  color: var(--fg-muted-4);
  letter-spacing: .1em;
}

/* --- Loghi stampa: mask theme-aware --------------------- */
.press__logo {
  display: block;
  width: 110px;
  height: 24px;
  background-color: var(--fg-muted-3);
  -webkit-mask: no-repeat left center / contain;
          mask: no-repeat left center / contain;
  opacity: .7;
  transition: opacity .25s ease, background-color .25s ease, transform .25s ease;
  filter: saturate(0);
}
.press__logo:hover {
  opacity: 1;
  background-color: var(--gold);
  transform: translateY(-1px);
}

.press__logo--repubblica {
  -webkit-mask-image: url("../press/repubblica.c32feef661ad.svg");
          mask-image: url("../press/repubblica.c32feef661ad.svg");
  width: 100px; height: 22px;
}
.press__logo--stampa {
  -webkit-mask-image: url("../press/stampa.219d026b5d29.svg");
          mask-image: url("../press/stampa.219d026b5d29.svg");
  width: 132px; height: 17px;
}
.press__logo--secolo {
  -webkit-mask-image: url("../press/secolo.9388180c8130.svg");
          mask-image: url("../press/secolo.9388180c8130.svg");
  width: 112px; height: 19px;
}

/* --- Header ---------------------------------------------- */
.site-header {
  position: sticky;
  top: 0; z-index: 50;
  backdrop-filter: blur(14px);
  background: var(--header-bg);
  border-bottom: 1px solid var(--border-nav);
  transition: background-color .35s ease, border-color .35s ease;
}
.site-header__inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 16px 40px;
  display: flex; align-items: center; gap: 44px;
}
.brand {
  display: inline-flex; align-items: center; gap: 12px;
  flex: none;
}
.brand__icon {
  width: 36px; height: 36px;
  color: var(--gold);
  flex: none;
  transition: color .35s ease, transform .3s ease;
}
.brand:hover .brand__icon { transform: rotate(-6deg); }
.brand__text { display: flex; flex-direction: column; gap: 3px; }
.brand__name {
  font-weight: 700; font-size: 19px;
  letter-spacing: .16em; color: var(--fg-title); line-height: 1;
}
.brand__tag {
  font-size: 9px; letter-spacing: .34em; color: var(--fg-muted-3);
}
.nav {
  display: flex; gap: 30px;
  font-size: 14px; font-weight: 500;
  margin-left: auto;
}
.nav__link { color: var(--fg-nav); }
.nav__link.is-active,
.nav__link:hover { color: var(--fg-title); }

.header-cta { display: flex; gap: 10px; align-items: center; flex: none; }

/* --- Hero ------------------------------------------------ */
.hero {
  position: relative;
  padding: 76px 40px 90px;
  max-width: 1320px;
  margin: 0 auto;
}
.hero__glow {
  position: absolute;
  top: -160px; left: -120px;
  width: 620px; height: 620px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--glow-color), transparent 68%);
  pointer-events: none;
}
.hero__grid {
  position: relative;
  display: grid;
  grid-template-columns: 1.08fr .92fr;
  gap: 56px;
  align-items: center;
}
.hero__title {
  margin: 0;
  font-weight: 700;
  font-size: 66px;
  line-height: 1.04;
  letter-spacing: -.02em;
  color: var(--fg-strong);
  text-wrap: balance;
}
.hero__lede {
  margin: 28px 0 0;
  max-width: 520px;
  font-size: 18px;
  line-height: 1.6;
  color: var(--fg-muted);
}
.hero__actions {
  display: flex; gap: 14px; align-items: center; margin-top: 28px;
  flex-wrap: wrap;
}

/* --- Trust badge Banca d'Italia (nell'hero) ------------ */
.trust-badge {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  margin-top: 26px;
  padding: 10px 18px 10px 12px;
  border: 1px solid rgba(201, 160, 99, .35);
  border-radius: 100px;
  background: linear-gradient(90deg, rgba(201, 160, 99, .14), rgba(201, 160, 99, .04));
  color: var(--fg);
  text-decoration: none;
  line-height: 1.15;
  transition: border-color .18s ease, background .18s ease, transform .18s ease;
}
.trust-badge:hover {
  border-color: var(--gold);
  background: linear-gradient(90deg, rgba(201, 160, 99, .22), rgba(201, 160, 99, .08));
  color: var(--fg);
  transform: translateY(-1px);
}
.trust-badge__seal {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(201, 160, 99, .14);
  border: 1px solid rgba(201, 160, 99, .3);
  color: var(--gold);
  flex: none;
}
.trust-badge__seal svg { width: 20px; height: 20px; }
.trust-badge__text { display: flex; flex-direction: column; gap: 2px; }
.trust-badge__text strong {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--fg-strong);
  letter-spacing: .01em;
}
.trust-badge__text span {
  font-size: 11px;
  color: var(--fg-muted-3);
  letter-spacing: .04em;
}
:root[data-theme="light"] .trust-badge {
  background: linear-gradient(90deg, rgba(166, 125, 56, .12), rgba(166, 125, 56, .03));
  border-color: rgba(166, 125, 56, .45);
}
:root[data-theme="light"] .trust-badge:hover {
  background: linear-gradient(90deg, rgba(166, 125, 56, .20), rgba(166, 125, 56, .06));
  border-color: var(--gold-hover);
}
:root[data-theme="light"] .trust-badge__seal {
  background: rgba(166, 125, 56, .12);
  border-color: rgba(166, 125, 56, .4);
}
@media (max-width: 560px) {
  .trust-badge { gap: 10px; padding: 8px 14px 8px 10px; }
  .trust-badge__seal { width: 32px; height: 32px; }
  .trust-badge__seal svg { width: 17px; height: 17px; }
  .trust-badge__text strong { font-size: 12.5px; }
  .trust-badge__text span { font-size: 10.5px; }
}
.hero__stats {
  list-style: none;
  padding: 34px 0 0;
  margin: 52px 0 0;
  border-top: 1px solid var(--border);
  display: flex; gap: 44px;
  flex-wrap: wrap;
}
.stat__num {
  display: block;
  font-weight: 700; letter-spacing: -.02em;
  font-size: 32px; color: var(--fg-title); line-height: 1;
}
.stat__star { font-size: 19px; color: var(--gold); }
.stat__label {
  display: block;
  font-size: 12.5px; letter-spacing: .1em;
  color: var(--fg-muted-3);
  margin-top: 7px;
  text-transform: uppercase;
}

.hero__side { display: flex; flex-direction: column; gap: 16px; }

.quote-card { position: relative; border-radius: 8px; overflow: hidden; }
.quote-card__caption {
  position: absolute; inset: auto 0 0 0;
  padding: 26px 26px 22px;
  background: linear-gradient(0deg,
              rgba(8, 7, 6, .95) 0%,
              rgba(8, 7, 6, .85) 55%,
              rgba(8, 7, 6, .45) 85%,
              transparent 100%);
  color: #ffe9c2;
}
:root[data-theme="light"] .quote-card__caption { color: #ffe9c2; }
.quote-card__row {
  display: flex; align-items: flex-end; gap: 12px; margin-top: 8px;
}
.quote-card__price {
  font-weight: 700; letter-spacing: -.025em;
  font-size: 38px; line-height: 1; color: #ffe9c2;
}
.quote-card__unit { font-size: 13px; color: #d9c9a8; padding-top: 6px; }

/* --- Eyebrow "ORO OGGI · IN RIALZO" come pill ----------- */
.quote-card__caption .eyebrow__label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px 7px 10px;
  background: rgba(8, 7, 6, .78);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(201, 160, 99, .32);
  border-radius: 100px;
  color: var(--gold);
  font-size: 10.5px;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 700;
}
.quote-card__caption .live-dot {
  margin: 0;   /* neutralizza il margin del live-dot ereditato dall'impact */
}
:root[data-theme="light"] .quote-card__caption .eyebrow__label {
  background: rgba(28, 22, 10, .78);
  border-color: rgba(201, 160, 99, .40);
  color: #f7e3c0;
}

/* --- Trend hero (freccia in salita + delta %) ----------- */
.quote-card__trend {
  display: flex; align-items: center; gap: 14px;
  margin-top: 12px;
  color: #7fd39b;
  font-weight: 700;
  letter-spacing: -.02em;
  white-space: nowrap;
}
.quote-card__arrow {
  display: inline-flex;
  align-items: center; justify-content: center;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: rgba(127, 211, 155, .16);
  border: 1px solid rgba(127, 211, 155, .35);
  color: #7fd39b;
  box-shadow: 0 0 24px rgba(127, 211, 155, .18);
  animation: arrowPulse 2.4s ease-in-out infinite;
}
.quote-card__arrow svg { width: 22px; height: 22px; display: block; }
.quote-card__trendLabel {
  display: inline-block;
  font-size: 28px;
  line-height: 1;
  text-shadow: 0 2px 20px rgba(127, 211, 155, .35);
}
@keyframes arrowPulse {
  0%, 100% { box-shadow: 0 0 24px rgba(127, 211, 155, .18); }
  50%      { box-shadow: 0 0 36px rgba(127, 211, 155, .35); }
}
@media (max-width: 560px) {
  .quote-card__arrow { width: 38px; height: 38px; }
  .quote-card__arrow svg { width: 18px; height: 18px; }
  .quote-card__trendLabel { font-size: 24px; }
}

.mini-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.mini-card {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 22px;
  background: var(--panel);
  transition: border-color .18s ease, background .18s ease;
}
.mini-card:hover { border-color: var(--border-hi); background: var(--panel-2); }
.mini-card__title {
  font-weight: 700; letter-spacing: -.015em;
  font-size: 20px; color: var(--fg-title);
  margin-top: 10px; line-height: 1.25;
}

/* --- Press ----------------------------------------------- */
.press {
  border-top: 1px solid var(--border-nav);
  border-bottom: 1px solid var(--border-nav);
  background: var(--panel-3);
}
.press__grid {
  max-width: 1320px;
  margin: 0 auto;
  padding: 40px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
.press__quote { padding: 0 40px; border-right: 1px solid var(--border-nav); }
.press__quote:first-child { padding-left: 0; }
.press__quote:last-child  { padding-right: 0; border-right: none; }
.press__quote p {
  margin: 14px 0 18px;
  font-weight: 500;
  font-size: 19px;
  line-height: 1.5;
  letter-spacing: -.01em;
  color: var(--fg-strong);
}

/* --- Section head ---------------------------------------- */
.section-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 40px; margin-bottom: 44px;
}
.section-head__note {
  margin: 0; max-width: 340px;
  font-size: 15.5px; line-height: 1.65;
  color: var(--fg-muted-2);
}

/* --- Services -------------------------------------------- */
.services {
  max-width: 1320px;
  margin: 0 auto;
  padding: 104px 40px 40px;
}
.services__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr;
  gap: 18px;
}
.services__stack { display: grid; grid-template-rows: 1fr 1fr; gap: 18px; }
.service-card {
  position: relative;
  border: 1px solid var(--border-hi);
  border-radius: 10px;
  overflow: hidden;
  background: var(--panel);
  transition: border-color .22s ease, background .22s ease;
  display: flex; flex-direction: column;
}
.service-card:hover {
  border-color: var(--border-strong);
  background: var(--panel-2);
}
.service-card--hero {
  min-height: 440px;
  justify-content: flex-end;
  background: var(--panel-2);
}
.service-card--sm { padding: 30px; }
.service-card__img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .8s cubic-bezier(.19, 1, .22, 1);
}
.service-card--hero:hover .service-card__img { transform: scale(1.04); }
.service-card__scrim {
  position: absolute; inset: 0;
  background: var(--grad-scrim);
  pointer-events: none;
}
.service-card--tall .service-card__scrim { background: var(--grad-scrim-tall); }
.service-card__body { position: relative; padding: 36px; color: #ffe9c2; }
.service-card--tall .service-card__body { padding: 30px; }
.service-card__body .eyebrow__label { color: var(--gold); }

/* Eyebrow "SERVIZIO PRINCIPALE" come pill leggibile sopra le foto brillanti */
.service-card--hero .service-card__body > .eyebrow__label {
  display: inline-flex;
  align-items: center;
  padding: 6px 14px;
  background: rgba(8, 7, 6, .78);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(201, 160, 99, .32);
  border-radius: 100px;
  color: var(--gold);
  font-size: 10.5px;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 700;
  margin-bottom: 6px;
}
:root[data-theme="light"] .service-card--hero .service-card__body > .eyebrow__label {
  background: rgba(28, 22, 10, .78);
  border-color: rgba(201, 160, 99, .40);
  color: #f7e3c0;
}
.service-card__title {
  margin: 0;
  font-weight: 700; letter-spacing: -.018em;
  font-size: 24px; color: var(--fg-title);
}
.service-card--hero .service-card__title,
.service-card--tall .service-card__title { color: #fff7e6; }
.service-card__title--lg {
  font-size: 34px; letter-spacing: -.025em; line-height: 1.1;
  color: #fff7e6; margin-top: 14px;
}
.service-card--tall .service-card__title { margin-top: 16px; }
.service-card__text {
  margin: 14px 0 0;
  max-width: 420px;
  font-size: 15.5px; line-height: 1.6;
  color: var(--fg-muted);
}
.service-card--hero .service-card__text,
.service-card--tall .service-card__text { color: #dccbb0; }
.service-card__text--sm {
  margin: 12px 0 0;
  font-size: 14.5px;
  color: var(--fg-muted-2);
}
.service-card--sm .link-gold { display: inline-block; margin-top: auto; padding-top: 18px; }
.service-card--tall .link-gold { display: inline-block; margin-top: 18px; color: var(--gold-hi); }
.service-card--hero .link-underline { color: var(--gold-hi); border-bottom-color: rgba(240, 220, 187, .35); }
.service-card--hero .link-underline:hover { color: #ffe9c2; border-bottom-color: #ffe9c2; }

/* --- Quotes / chart -------------------------------------- */
.quotes {
  max-width: 1320px;
  margin: 0 auto;
  padding: 96px 40px 20px;
}
.quotes__panel {
  border: 1px solid var(--border-hi);
  border-radius: 12px;
  background: var(--grad-panel);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}
.quotes__head {
  padding: 38px 40px 0;
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 40px; flex-wrap: wrap;
}
.quotes__spotline { display: flex; align-items: flex-end; gap: 16px; margin-top: 26px; flex-wrap: wrap; }
.quotes__spot {
  font-weight: 700; letter-spacing: -.03em;
  font-size: 50px; line-height: 1; color: var(--fg-strong);
}
.quotes__meta { display: flex; flex-direction: column; gap: 4px; padding-bottom: 6px; }
.quotes__change { font-size: 13px; font-weight: 700; color: var(--success); }
.quotes__unit { font-size: 12.5px; color: var(--fg-muted-3); }

.tabs {
  display: flex; gap: 6px;
  padding: 5px;
  border: 1px solid var(--border-hi);
  border-radius: 100px;
  background: var(--gold-tint-8);
}
.tab {
  padding: 8px 18px;
  border-radius: 100px;
  border: none;
  cursor: pointer;
  font-family: inherit;
  font-size: 12.5px; font-weight: 700; letter-spacing: .06em;
  background: transparent;
  color: var(--fg-muted-2);
  transition: all .2s;
}
.tab:hover { color: var(--fg-title); }
.tab.is-active {
  background: var(--grad-gold);
  color: var(--btn-on-gold);
}

.quotes__chart { padding: 20px 24px 0; }
.chart { width: 100%; height: 250px; display: block; }
.chart__line { stroke: var(--chart-line); }
.chart__area { fill: url(#agFill); }
.chart__stop-a { stop-color: var(--gold); stop-opacity: .38; }
.chart__stop-b { stop-color: var(--gold); stop-opacity: 0; }
:root[data-theme="light"] .chart__stop-a { stop-opacity: .28; }

.quotes__table {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--border);
}
.quotes__cell {
  padding: 26px 30px;
  border-right: 1px solid var(--border);
}
.quotes__cell:last-child { border-right: none; }
.quotes__cellLabel {
  font-size: 11px; letter-spacing: .2em; color: var(--fg-muted-3); font-weight: 600;
}
.quotes__cellPrice {
  font-weight: 700; letter-spacing: -.02em;
  font-size: 27px; color: var(--fg-title); margin-top: 8px;
}
.quotes__cellUnit { font-size: 14px; color: var(--fg-muted-3); font-weight: 500; }

.quotes__note {
  margin: 16px 2px 0;
  font-size: 12.5px;
  color: var(--fg-muted-5);
}

/* --- Ticker live: flash quando il prezzo cambia --------- */
[data-quote] {
  transition: color .35s ease, text-shadow .35s ease;
  display: inline-block;   /* per stabilizzare i box durante il flash */
}
[data-quote].is-ticking-up {
  animation: priceUp .9s ease-out;
}
[data-quote].is-ticking-down {
  animation: priceDown .9s ease-out;
}
@keyframes priceUp {
  0%   { color: #7fd39b; text-shadow: 0 0 22px rgba(127, 211, 155, .45); }
  100% { }
}
@keyframes priceDown {
  0%   { color: #e39292; text-shadow: 0 0 18px rgba(227, 146, 146, .35); }
  100% { }
}
/* Il "delta oggi" è già colorato di verde: uso un pulse più delicato */
[data-quote="change"].is-ticking-up,
[data-quote="change"].is-ticking-down {
  animation: changePulse .9s ease-out;
}
@keyframes changePulse {
  0%   { transform: scale(1.08); filter: brightness(1.4); }
  100% { transform: scale(1);    filter: brightness(1);   }
}

/* --- Story ----------------------------------------------- */
.story {
  max-width: 1320px;
  margin: 0 auto;
  padding: 104px 40px;
}
.story__grid {
  display: grid;
  grid-template-columns: .95fr 1.05fr;
  gap: 64px;
  align-items: center;
}
.story__text {
  margin: 26px 0 0;
  font-size: 17px; line-height: 1.65;
  color: var(--fg-muted);
  max-width: 560px;
}
.story__matrix {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 1px;
  margin-top: 40px;
  background: var(--border);
}
.story__cell { background: var(--bg); padding: 24px 24px 24px 0; }
.story__cell:nth-child(2) { padding: 24px; }
.story__cell:nth-child(4) { padding: 24px 24px 0 24px; }
.story__cell:nth-child(3) { padding: 24px 24px 0 0; }
.story__cellTitle {
  font-weight: 700; letter-spacing: -.018em;
  font-size: 26px; color: var(--fg-title);
}
.story__cellNote { font-size: 14px; color: var(--fg-muted-2); margin-top: 6px; }

/* --- Reviews --------------------------------------------- */
.reviews {
  border-top: 1px solid var(--border-nav);
  background: var(--panel-3);
}
.reviews__inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 88px 40px;
}
.reviews__head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 40px; margin-bottom: 40px;
}
.rating-badge {
  display: flex; align-items: center; gap: 16px;
  padding: 16px 24px;
  border: 1px solid var(--border-hi);
  border-radius: 100px;
}
.rating-badge__num {
  font-weight: 700; letter-spacing: -.02em;
  font-size: 30px; color: var(--fg-title); line-height: 1;
}
.rating-badge__meta { font-size: 12px; color: var(--fg-muted-3); margin-top: 3px; }

.reviews__grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px;
}
.review-card {
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 30px;
  background: var(--panel-4);
  transition: border-color .18s ease, transform .18s ease;
}
.review-card:hover {
  border-color: var(--border-hi);
  transform: translateY(-2px);
}
.review-card p {
  margin: 16px 0 24px;
  font-size: 15.5px; line-height: 1.65;
  color: var(--fg-muted);
}
.review-card__name { font-size: 13.5px; font-weight: 600; color: var(--fg); }
.review-card__place { font-size: 12.5px; color: var(--fg-muted-4); margin-top: 2px; }

/* --- FAQ ------------------------------------------------- */
.faq {
  max-width: 1320px;
  margin: 0 auto;
  padding: 104px 40px;
}
.faq__grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 64px;
  align-items: start;
}
.faq__note {
  margin: 22px 0 0;
  font-size: 15.5px; line-height: 1.65;
  color: var(--fg-muted-2);
  max-width: 320px;
}
.faq__grid > div:first-child .btn { margin-top: 22px; }

.faq__list > .faq__item:first-child { border-top: 1px solid var(--border-hi); }
.faq__item { border-bottom: 1px solid var(--border-hi); }
.faq__item summary {
  list-style: none;
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px;
  padding: 26px 0;
  cursor: pointer;
  font-weight: 700; letter-spacing: -.015em;
  font-size: 21px;
  color: var(--fg-title);
  transition: color .18s ease;
}
.faq__item summary::-webkit-details-marker { display: none; }
.faq__item summary:hover { color: var(--fg-strong); }
.faq__icon {
  font-size: 22px;
  color: var(--gold);
  flex: none;
  line-height: 1;
  transition: transform .3s ease;
}
.faq__item[open] .faq__icon { transform: rotate(45deg); }
.faq__item p {
  margin: 0 0 26px;
  max-width: 640px;
  font-size: 15.5px; line-height: 1.7;
  color: var(--fg-muted-2);
  animation: faqIn .32s cubic-bezier(.4, 0, .2, 1);
}
@keyframes faqIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* --- Contact --------------------------------------------- */
.contact {
  border-top: 1px solid var(--border-nav);
  background: var(--grad-contact);
}
.contact__inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 96px 40px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
}
.contact__title {
  margin: 0;
  font-weight: 700; letter-spacing: -.03em;
  font-size: 52px; line-height: 1.02; color: var(--fg-strong);
}
.contact__text {
  margin: 24px 0 0;
  max-width: 480px;
  font-size: 17px; line-height: 1.65; color: var(--fg-muted);
}
.contact__actions {
  display: flex; gap: 12px;
  flex-wrap: wrap;
  margin-top: 34px;
}

/* --- Footer ---------------------------------------------- */
.site-footer { border-top: 1px solid var(--border-nav); }
.site-footer__inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 44px 40px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 40px; flex-wrap: wrap;
}
.site-footer__brand { display: flex; flex-direction: column; gap: 4px; }
.site-footer__name {
  font-weight: 700; font-size: 15px;
  letter-spacing: .16em; color: var(--fg-title);
}
.site-footer__copy { font-size: 12px; color: var(--fg-muted-5); }
.site-footer__nav { display: flex; gap: 28px; font-size: 13.5px; flex-wrap: wrap; }
.site-footer__nav a { color: var(--fg-muted-2); }
.site-footer__nav a:hover { color: var(--fg-title); }

/* --- Nav CTA (visible only in drawer / mobile) ----------- */
.nav__cta { display: none; }

/* --- Nav backdrop (mobile) ------------------------------- */
.nav-backdrop {
  position: fixed;
  top: 60px; bottom: 0; left: 0; right: 0;
  background: rgba(0, 0, 0, .55);
  opacity: 0; pointer-events: none;
  transition: opacity .3s ease;
  z-index: 49;
}
.nav-backdrop.is-open { opacity: 1; pointer-events: auto; }

/* ============================================================
   Responsive — 4 tier:
     > 1180  desktop pieno
     ≤ 1180  scale tipografico + spazi header
     ≤ 1080  header → hamburger + CTA drawer
     ≤ 1024  layout multi-colonna → colonna singola
     ≤  560  fine-tuning mobile
   ============================================================ */

@media (max-width: 1180px) {
  .hero__title    { font-size: 56px; }
  .contact__title { font-size: 44px; }
  .section-title  { font-size: 40px; }
  .section-title--md { font-size: 36px; }
  .site-header__inner { padding: 16px 32px; gap: 32px; }
  .nav { gap: 22px; }
}

/* Header → hamburger */
@media (max-width: 1080px) {
  .site-header__inner {
    padding: 14px 24px;
    gap: 16px;
  }
  .brand { gap: 10px; }
  .brand__icon { width: 24px; height: 24px; }
  .brand__name { font-size: 15px; letter-spacing: .14em; }
  .brand__tag { display: none; }

  /* Spingi il gruppo CTA a destra (la nav è fuori dal flex) */
  .header-cta { margin-left: auto; }

  /* La nav desktop sparisce del tutto: sotto i 1080px si usa .mdrawer,
     un pannello dedicato che entra da destra. Il vecchio accordion
     `max-height` sulla .nav si sovrapponeva alla navbar e i sottomenu
     `position: static` mandavano la pagina in overflow. */
  .nav { display: none !important; }

  .nav-toggle { display: inline-flex; align-items: center; justify-content: center; }
  .btn--phone { display: none; }
}

/* Tablet: layout stacks a colonna singola */
@media (max-width: 1024px) {
  /* Hero ------------------------------------------------ */
  .hero { padding: 48px 24px 64px; }
  .hero__grid { grid-template-columns: 1fr; gap: 44px; }
  .hero__glow { width: 480px; height: 480px; top: -140px; left: -100px; }
  .hero__title { font-size: 50px; }
  .hero__lede { font-size: 17px; max-width: none; }
  .hero__actions { margin-top: 32px; }
  .hero__stats { padding-top: 30px; margin-top: 42px; gap: 34px; }
  .photo--hero { height: 320px; }
  .quote-card__price { font-size: 36px; }

  /* Press ----------------------------------------------- */
  .press__grid { grid-template-columns: 1fr; padding: 32px 24px; gap: 0; }
  .press__quote {
    padding: 22px 0 !important;
    border-right: none;
    border-bottom: 1px solid var(--border-nav);
  }
  .press__quote:last-child { border-bottom: none; padding-bottom: 4px !important; }
  .press__quote p { font-size: 17px; }

  /* Section heads --------------------------------------- */
  .section-head { flex-direction: column; align-items: flex-start; gap: 16px; margin-bottom: 32px; }
  .section-title    { font-size: 36px; }
  .section-title--md { font-size: 32px; }
  .section-title--sm { font-size: 30px; }

  /* Services -------------------------------------------- */
  .services { padding: 72px 24px 24px; }
  .services__grid { grid-template-columns: 1fr; gap: 16px; }
  .services__stack { grid-template-rows: none; }
  .service-card--hero { min-height: 340px; }
  .service-card--tall { min-height: 340px; }
  .service-card__title--lg { font-size: 30px; }
  .service-card__body { padding: 30px; }

  /* Quotes ---------------------------------------------- */
  .quotes { padding: 72px 24px 20px; }
  .quotes__panel { border-radius: 10px; }
  .quotes__head { padding: 32px 32px 0; gap: 24px; }
  .quotes__spot { font-size: 42px; }
  .quotes__chart { padding: 16px 20px 0; }
  .chart { height: 220px; }
  .quotes__table { grid-template-columns: 1fr 1fr; }
  .quotes__cell { padding: 22px 26px; }
  .quotes__cell:nth-child(2) { border-right: none; }
  .quotes__cell:nth-child(1),
  .quotes__cell:nth-child(2) { border-bottom: 1px solid var(--border); }
  .quotes__cellPrice { font-size: 24px; }

  /* Story ----------------------------------------------- */
  .story { padding: 72px 24px; }
  .story__grid { grid-template-columns: 1fr; gap: 40px; }
  .photo--tall { height: 420px; }

  /* Reviews --------------------------------------------- */
  .reviews__inner { padding: 72px 24px; }
  .reviews__head { flex-direction: column; align-items: flex-start; gap: 20px; margin-bottom: 28px; }
  .rating-badge__num { font-size: 26px; }
  .reviews__grid { grid-template-columns: 1fr; gap: 14px; }
  .review-card { padding: 26px; }

  /* FAQ ------------------------------------------------- */
  .faq { padding: 72px 24px; }
  .faq__grid { grid-template-columns: 1fr; gap: 28px; }
  .faq__item summary { font-size: 18px; padding: 22px 0; gap: 16px; }

  /* Contact --------------------------------------------- */
  .contact__inner { grid-template-columns: 1fr; padding: 72px 24px; gap: 32px; }
  .contact__title { font-size: 36px; }
  .contact__text { font-size: 16px; }
  .photo--map { height: 300px; }
  .photo__pin { left: 14px; bottom: 14px; padding: 8px 14px 8px 12px; font-size: 12px; }
  .map { height: 320px; }
  .map__pin { left: 14px; top: 14px; padding: 8px 14px 8px 12px; font-size: 12px; }
  .map__open { right: 14px; bottom: 14px; padding: 7px 12px; font-size: 12px; }

  /* Footer ---------------------------------------------- */
  .site-footer__inner { padding: 32px 24px; gap: 20px; }
  .site-footer__nav { gap: 18px 22px; }
}

/* Mobile fine-tuning */
@media (max-width: 560px) {
  .site-header__inner { padding: 12px 16px; gap: 10px; }
  .header-cta { gap: 8px; }
  .brand { gap: 8px; }
  .brand__icon { width: 22px; height: 22px; }
  .brand__name { font-size: 13.5px; letter-spacing: .12em; }
  .theme-toggle, .nav-toggle { width: 38px; height: 38px; }
  /* WA in header → pastiglia circolare con icona */
  .header-cta .btn--wa {
    width: 38px; height: 38px;
    padding: 0;
    border-radius: 50%;
    justify-content: center;
  }
  .header-cta .btn--wa .btn__label { display: none; }
  .header-cta .btn--wa .btn__icon  { display: block; }
  .nav { top: 46px; }
  .nav-backdrop { top: 46px; }

  .hero { padding: 36px 18px 56px; }
  .hero__title { font-size: 36px; line-height: 1.06; }
  .hero__lede  { font-size: 15.5px; }
  .hero__glow  { width: 340px; height: 340px; }
  .hero__actions { gap: 10px; width: 100%; margin-top: 30px; }
  .hero__actions .btn--lg {
    flex: 1 1 auto; justify-content: center;
    padding: 15px 20px; font-size: 14.5px;
  }
  .hero__actions .btn-icon { flex: none; width: 48px; height: 48px; font-size: 17px; }
  .hero__stats { gap: 20px 24px; padding-top: 24px; margin-top: 36px; }
  .stat__num { font-size: 26px; }
  .photo--hero { height: 240px; }
  .quote-card__price { font-size: 30px; }
  .mini-cards { grid-template-columns: 1fr; }

  .press__grid { padding: 24px 18px; }
  .press__quote p { font-size: 16px; }

  .section-title    { font-size: 30px; }
  .section-title--md { font-size: 28px; }
  .section-title--sm { font-size: 26px; }

  .services { padding: 56px 18px 20px; }
  .service-card--hero { min-height: 300px; }
  .service-card--tall { min-height: 300px; }
  .service-card--sm { padding: 22px; }
  .service-card__title { font-size: 20px; }
  .service-card__title--lg { font-size: 26px; }
  .service-card__body { padding: 24px 22px; }

  .quotes { padding: 56px 18px 20px; }
  .quotes__head { padding: 24px 20px 0; gap: 18px; }
  .quotes__spot { font-size: 32px; }
  .tabs { padding: 4px; align-self: flex-start; }
  .tab { padding: 7px 13px; font-size: 11.5px; }
  .quotes__cell { padding: 18px 20px; }
  .quotes__cellPrice { font-size: 21px; }

  .story { padding: 56px 18px; }
  .story__grid { gap: 32px; }
  .photo--tall { height: 340px; }
  .story__matrix { grid-template-columns: 1fr; }
  .story__cell,
  .story__cell:nth-child(2),
  .story__cell:nth-child(3),
  .story__cell:nth-child(4) { padding: 20px 0; }
  .story__cellTitle { font-size: 22px; }

  .reviews__inner { padding: 56px 18px; }
  .reviews__head { gap: 18px; }
  .rating-badge__num { font-size: 24px; }
  .review-card { padding: 22px; }

  .faq { padding: 56px 18px; }
  .faq__item summary { font-size: 16.5px; padding: 20px 0; gap: 14px; }

  .contact__inner { padding: 56px 18px; gap: 28px; }
  .contact__title { font-size: 28px; line-height: 1.08; }
  .contact__text { font-size: 16px; }
  .contact__actions { gap: 10px; }
  .contact__actions .btn { flex: 1 1 100%; justify-content: center; }
  .photo--map { height: 240px; }
  .photo__pin { left: 12px; bottom: 12px; padding: 8px 12px 8px 10px; font-size: 11.5px; }
  .map { height: 260px; }
  .map__pin { left: 12px; top: 12px; font-size: 11.5px; padding: 7px 12px 7px 10px; }
  .map__open { right: 12px; bottom: 12px; padding: 6px 10px; font-size: 11.5px; }

  .site-footer__inner { padding: 28px 18px; gap: 18px; }
  .site-footer__brand { gap: 6px; }
  .site-footer__nav { gap: 16px 22px; }
}

/* ============================================================
   Pagine interne (Page + Article)
   ============================================================ */
.page-hero {
  max-width: 1320px;
  margin: 0 auto;
  padding: 96px 40px 40px;
  position: relative;
}
.page-hero__inner { max-width: 820px; }
.page-hero__title {
  margin: 0;
  font-weight: 700;
  letter-spacing: -.028em;
  font-size: 56px;
  line-height: 1.05;
  color: var(--fg-strong);
  text-wrap: balance;
}
.page-hero__subtitle {
  margin: 18px 0 0;
  font-size: 22px;
  line-height: 1.4;
  color: var(--fg-title);
  font-weight: 500;
}
.page-hero__lede {
  margin: 22px 0 0;
  font-size: 17px;
  line-height: 1.65;
  color: var(--fg-muted);
}
.page-hero__actions {
  display: flex; gap: 14px; align-items: center;
  margin-top: 34px;
  flex-wrap: wrap;
}
.page-hero__photo {
  margin: 40px auto 0;
  max-width: 1320px;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--border-hi);
  aspect-ratio: 21/9;
}
.page-hero__photo img,
.page-hero__photo picture { width: 100%; height: 100%; object-fit: cover; display: block; }

.page-body {
  max-width: 1320px;
  margin: 0 auto;
  padding: 40px 40px 80px;
}
.page-body__inner {
  max-width: 780px;
  font-size: 17px;
  line-height: 1.7;
  color: var(--fg);
}
.page-body__inner h2 {
  margin: 48px 0 16px;
  font-weight: 700;
  letter-spacing: -.02em;
  font-size: 30px;
  color: var(--fg-strong);
}
.page-body__inner h3 {
  margin: 32px 0 12px;
  font-weight: 700;
  letter-spacing: -.015em;
  font-size: 22px;
  color: var(--fg-title);
}
.page-body__inner p  { margin: 14px 0; }
.page-body__inner ul,
.page-body__inner ol { margin: 14px 0 14px 24px; }
.page-body__inner li { margin: 6px 0; }
.page-body__inner strong { color: var(--fg-strong); font-weight: 700; }
.page-body__inner a { color: var(--gold-text); border-bottom: 1px solid var(--gold-tint-32); }
.page-body__inner a:hover { color: var(--gold-hover); border-bottom-color: var(--gold-hover); }

@media (max-width: 1024px) {
  .page-hero { padding: 72px 24px 32px; }
  .page-hero__title { font-size: 44px; }
  .page-hero__subtitle { font-size: 19px; }
  .page-body { padding: 32px 24px 64px; }
}
@media (max-width: 560px) {
  .page-hero { padding: 56px 18px 24px; }
  .page-hero__title { font-size: 34px; }
  .page-hero__subtitle { font-size: 17px; }
  .page-body { padding: 24px 18px 56px; }
  .page-body__inner { font-size: 16px; }
  .page-body__inner h2 { font-size: 24px; }
  .page-body__inner h3 { font-size: 19px; }
}

/* --- Blog index --------------------------------------- */
.blog-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 24px;
  margin-top: 20px;
}
.blog-card {
  display: flex; flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  background: var(--panel);
  transition: border-color .22s ease, transform .22s ease;
}
.blog-card:hover {
  border-color: var(--border-strong);
  transform: translateY(-2px);
}
.blog-card__cover {
  display: block;
  aspect-ratio: 16/10;
  overflow: hidden;
}
.blog-card__cover img,
.blog-card__cover picture { width: 100%; height: 100%; object-fit: cover; display: block; }
.blog-card__body { padding: 22px 22px 24px; display: flex; flex-direction: column; gap: 10px; }
.blog-card__date { font-size: 11.5px; color: var(--fg-muted-3); letter-spacing: .1em; text-transform: uppercase; }
.blog-card__title {
  margin: 0;
  font-weight: 700; font-size: 20px; line-height: 1.25;
  color: var(--fg-title);
  letter-spacing: -.015em;
}
.blog-card__title a { color: inherit; }
.blog-card__title a:hover { color: var(--gold-hover); }
.blog-card__excerpt { margin: 0; font-size: 14.5px; color: var(--fg-muted); line-height: 1.55; }
.blog-empty { color: var(--fg-muted); font-style: italic; padding: 20px 0; }

/* --- Article --------------------------------------- */
.article__header { max-width: 1320px; margin: 0 auto; padding: 96px 40px 24px; }
.article__cover  { margin: 32px 0 0; border-radius: 12px; overflow: hidden; aspect-ratio: 21/9; }
.article__cover img,
.article__cover picture { width: 100%; height: 100%; object-fit: cover; display: block; }
.article__back { max-width: 780px; margin: 24px auto 60px; padding: 0 40px; font-size: 14.5px; }


/* ============================================================
   LAYOUT SERVIZIO
   ============================================================ */
.svc-hero { max-width: 1320px; margin: 0 auto; padding: 76px 40px 60px; }
.svc-hero__grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 56px; align-items: center; }
.svc-hero__title { margin: 18px 0 0; font-weight: 700; letter-spacing: -.03em; font-size: 56px; line-height: 1.05; color: var(--fg-strong); text-wrap: balance; }
.svc-hero__subtitle { margin: 18px 0 0; font-size: 20px; line-height: 1.4; color: var(--fg-title); font-weight: 500; }
.svc-hero__lede { margin: 20px 0 0; font-size: 17px; line-height: 1.65; color: var(--fg-muted); max-width: 540px; }
.svc-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 32px; }
.svc-hero__aside { position: relative; }
.svc-hero__photo {
  margin: 0;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--border-hi);
  aspect-ratio: 4 / 3;      /* landscape morbido, meno ingombrante di 4/5 */
  max-height: 420px;         /* cap in caso il grid la faccia crescere troppo */
  background: var(--panel-2);
}
.svc-hero__photo img, .svc-hero__photo picture { width: 100%; height: 100%; object-fit: cover; display: block; }
.svc-hero__photo--placeholder { background: repeating-linear-gradient(135deg, #1b1611 0 10px, #141110 10px 20px); }

.svc-usps { border-top: 1px solid var(--border-nav); border-bottom: 1px solid var(--border-nav); background: var(--panel-3); }
.svc-usps__grid { max-width: 1320px; margin: 0 auto; padding: 32px 40px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
.svc-usp__num { font-weight: 700; letter-spacing: -.025em; font-size: 32px; color: var(--fg-title); line-height: 1; }
.svc-usp__label { font-size: 12.5px; letter-spacing: .08em; color: var(--fg-muted-2); margin-top: 8px; text-transform: uppercase; }

.svc-body { max-width: 1320px; margin: 0 auto; padding: 72px 40px 40px; }
.svc-body__inner { max-width: 820px; font-size: 17px; line-height: 1.7; color: var(--fg); }
.svc-body__inner h2 { margin: 40px 0 14px; font-weight: 700; letter-spacing: -.02em; font-size: 28px; color: var(--fg-strong); }
.svc-body__inner h3 { margin: 28px 0 10px; font-weight: 700; letter-spacing: -.015em; font-size: 20px; color: var(--fg-title); }
.svc-body__inner p  { margin: 12px 0; }
.svc-body__inner ul { margin: 12px 0 12px 22px; }
.svc-body__inner li { margin: 6px 0; }
.svc-body__inner a  { color: var(--gold-text); border-bottom: 1px solid var(--gold-tint-32); }
.svc-body__inner a:hover { color: var(--gold-hover); }

.svc-steps { max-width: 1320px; margin: 0 auto; padding: 40px 40px 80px; }
.svc-steps__inner { max-width: 820px; }
.svc-steps__title { margin: 12px 0 32px; font-weight: 700; letter-spacing: -.028em; font-size: 36px; line-height: 1.1; color: var(--fg-strong); }
.svc-steps__list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 28px 40px; }
.svc-step { position: relative; padding: 24px 0 24px 68px; border-top: 1px solid var(--border); }
.svc-step__num { position: absolute; top: 24px; left: 0; font-weight: 700; letter-spacing: -.02em; font-size: 30px; color: var(--gold); line-height: 1; }
.svc-step__title { margin: 0; font-weight: 700; letter-spacing: -.015em; font-size: 20px; color: var(--fg-title); }
.svc-step__body { margin: 8px 0 0; font-size: 15.5px; line-height: 1.6; color: var(--fg-muted); }

.svc-cta { border-top: 1px solid var(--border-nav); background: var(--grad-contact); }
.svc-cta__inner { max-width: 1320px; margin: 0 auto; padding: 72px 40px; text-align: left; }
.svc-cta__title { margin: 0; font-weight: 700; letter-spacing: -.03em; font-size: 40px; line-height: 1.1; color: var(--fg-strong); text-wrap: balance; }
.svc-cta__lede { margin: 16px 0 0; font-size: 16.5px; line-height: 1.6; color: var(--fg-muted); }
.svc-cta__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 26px; }

@media (max-width: 1024px) {
  .svc-hero { padding: 56px 24px 40px; }
  .svc-hero__grid { grid-template-columns: 1fr; gap: 36px; }
  .svc-hero__title { font-size: 44px; }
  .svc-hero__photo { aspect-ratio: 16/10; }
  .svc-usps__grid { grid-template-columns: repeat(2, 1fr); padding: 28px 24px; gap: 24px; }
  .svc-body { padding: 56px 24px 32px; }
  .svc-steps { padding: 24px 24px 64px; }
  .svc-steps__list { grid-template-columns: 1fr; gap: 8px; }
  .svc-steps__title { font-size: 28px; }
  .svc-cta__inner { padding: 56px 24px; }
  .svc-cta__title { font-size: 30px; }
}
@media (max-width: 560px) {
  .svc-hero { padding: 40px 18px 32px; }
  .svc-hero__title { font-size: 34px; }
  .svc-hero__subtitle { font-size: 17px; }
  .svc-hero__actions .btn--lg { flex: 1 1 auto; justify-content: center; }
  .svc-usps__grid { grid-template-columns: 1fr 1fr; gap: 18px; padding: 22px 18px; }
  .svc-usp__num { font-size: 24px; }
  .svc-body { padding: 40px 18px 24px; }
  .svc-body__inner { font-size: 16px; }
  .svc-body__inner h2 { font-size: 22px; }
  .svc-steps { padding: 16px 18px 48px; }
  .svc-cta__inner { padding: 40px 18px; }
  .svc-cta__title { font-size: 24px; }
  .svc-cta__actions .btn { flex: 1 1 100%; justify-content: center; }
}

/* ============================================================
   LAYOUT INFO / ZONE / CHI SIAMO
   ============================================================ */
.info__hero { max-width: 900px; margin: 0 auto; padding: 88px 40px 40px; text-align: center; }
.info__hero-inner { max-width: 780px; margin: 0 auto; }
.eyebrow--center { justify-content: center; }
.info__title { margin: 20px 0 0; font-weight: 700; letter-spacing: -.03em; font-size: 52px; line-height: 1.05; color: var(--fg-strong); text-wrap: balance; }
.info__subtitle { margin: 18px 0 0; font-size: 21px; line-height: 1.4; font-weight: 500; color: var(--fg-title); }
.info__lede { margin: 20px 0 0; font-size: 17px; line-height: 1.65; color: var(--fg-muted); }
.info__hero-photo { margin: 40px auto 0; max-width: 1100px; border-radius: 12px; overflow: hidden; border: 1px solid var(--border-hi); aspect-ratio: 21/9; }
.info__hero-photo img, .info__hero-photo picture { width: 100%; height: 100%; object-fit: cover; display: block; }

.info__body { max-width: 780px; margin: 0 auto; padding: 40px 40px 72px; }
.info__body-inner { font-size: 17px; line-height: 1.75; color: var(--fg); }
.info__body-inner h2 { margin: 44px 0 14px; font-weight: 700; letter-spacing: -.02em; font-size: 28px; color: var(--fg-strong); }
.info__body-inner h3 { margin: 30px 0 10px; font-weight: 700; letter-spacing: -.015em; font-size: 20px; color: var(--fg-title); }
.info__body-inner p  { margin: 14px 0; }
.info__body-inner ul, .info__body-inner ol { margin: 14px 0 14px 24px; }
.info__body-inner li { margin: 6px 0; }
.info__body-inner strong { color: var(--fg-strong); font-weight: 700; }
.info__body-inner a { color: var(--gold-text); border-bottom: 1px solid var(--gold-tint-32); }
.info__body-inner a:hover { color: var(--gold-hover); }

.info__cta { border-top: 1px solid var(--border-nav); background: var(--panel-3); }
.info__cta-inner { max-width: 900px; margin: 0 auto; padding: 56px 40px; text-align: center; }
.info__cta-title { margin: 0; font-weight: 700; letter-spacing: -.025em; font-size: 32px; color: var(--fg-strong); }
.info__cta-lede { margin: 12px 0 0; font-size: 15.5px; color: var(--fg-muted); }
.info__cta-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 22px; }

@media (max-width: 1024px) {
  .info__hero { padding: 64px 24px 32px; }
  .info__title { font-size: 42px; }
  .info__subtitle { font-size: 18px; }
  .info__body { padding: 32px 24px 56px; }
  .info__cta-inner { padding: 44px 24px; }
  .info__cta-title { font-size: 26px; }
}
@media (max-width: 560px) {
  .info__hero { padding: 48px 18px 24px; }
  .info__title { font-size: 32px; }
  .info__subtitle { font-size: 16.5px; }
  .info__lede { font-size: 15.5px; }
  .info__body { padding: 24px 18px 48px; font-size: 16px; }
  .info__body-inner h2 { font-size: 22px; }
  .info__cta-actions .btn { flex: 1 1 100%; justify-content: center; }
}


/* ============================================================
   LAYOUT ZONA (SEO local)
   ============================================================ */
.zone__hero { max-width: 1100px; margin: 0 auto; padding: 96px 40px 40px; text-align: center; }
.zone__hero-inner { max-width: 820px; margin: 0 auto; }
.zone__title { margin: 20px 0 0; font-weight: 700; letter-spacing: -.03em; font-size: 54px; line-height: 1.05; color: var(--fg-strong); text-wrap: balance; }
.zone__subtitle { margin: 18px 0 0; font-size: 21px; line-height: 1.4; font-weight: 500; color: var(--fg-title); }
.zone__lede { margin: 20px auto 0; font-size: 17px; line-height: 1.65; color: var(--fg-muted); max-width: 640px; }
.zone__actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 30px; }

/* Chips: quartieri serviti */
.zone__chips { max-width: 1100px; margin: 0 auto; padding: 20px 40px; }
.zone__chips-inner { text-align: center; }
.zone-chips { list-style: none; padding: 0; margin: 14px 0 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.zone-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;             /* altezza fissa per uniformare linked vs plain */
  padding: 0 16px;
  border: 1px solid var(--border-hi);
  border-radius: 100px;
  background: var(--gold-tint-8);
  color: var(--fg-title);
  font-size: 13.5px; font-weight: 600;
  letter-spacing: .02em;
  line-height: 1;
  white-space: nowrap;
  vertical-align: middle;
}
/* garantisce che <li> non alteri l'allineamento verticale */
.zone-chips > li { display: inline-flex; }

/* Barra 3 promesse */
.zone__promises { max-width: 1100px; margin: 0 auto; padding: 30px 40px 10px; }
.zone__promises-inner {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  padding: 26px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--panel);
}
.zone-promise { display: flex; gap: 14px; align-items: flex-start; }
.zone-promise__num {
  font-weight: 700; letter-spacing: -.02em;
  font-size: 26px;
  color: var(--gold);
  line-height: 1;
  flex: none;
}
.zone-promise p {
  margin: 0;
  font-size: 15px;
  line-height: 1.5;
  color: var(--fg);
}

/* Blocco CTA zona */
.zone__cta { border-top: 1px solid var(--border-nav); background: var(--panel-3); margin-top: 40px; }
.zone__cta-inner { max-width: 900px; margin: 0 auto; padding: 60px 40px; text-align: center; }
.zone__cta-title { margin: 0; font-weight: 700; letter-spacing: -.025em; font-size: 32px; color: var(--fg-strong); }
.zone__cta-lede { margin: 12px 0 0; font-size: 15.5px; color: var(--fg-muted); }
.zone__cta-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 12px; margin-top: 22px; }

@media (max-width: 1024px) {
  .zone__hero { padding: 72px 24px 32px; }
  .zone__title { font-size: 42px; }
  .zone__subtitle { font-size: 18px; }
  .zone__chips { padding: 16px 24px; }
  .zone__promises { padding: 20px 24px 10px; }
  .zone__promises-inner { grid-template-columns: 1fr; gap: 16px; }
  .zone__cta-inner { padding: 48px 24px; }
  .zone__cta-title { font-size: 26px; }
}
@media (max-width: 560px) {
  .zone__hero { padding: 48px 18px 24px; }
  .zone__title { font-size: 30px; }
  .zone__subtitle { font-size: 16.5px; }
  .zone__lede { font-size: 15.5px; }
  .zone__chips { padding: 12px 18px; }
  .zone-chip { font-size: 12.5px; padding: 6px 12px; }
  .zone__promises { padding: 14px 18px 10px; }
  .zone__promises-inner { padding: 20px; }
  .zone__cta-inner { padding: 40px 18px; }
  .zone__cta-actions .btn { flex: 1 1 100%; justify-content: center; }
}


/* ============================================================
   Sidebar servizio (TOC + altri servizi)
   ============================================================ */
.svc-body__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 48px;
  max-width: 1180px;
}
.svc-side {
  position: sticky;
  top: 88px;               /* offset per l'header sticky */
  align-self: start;
  display: flex; flex-direction: column; gap: 18px;
  max-height: calc(100vh - 100px);
  overflow: auto;
  scrollbar-width: thin;
}
.svc-side__box {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--panel);
  padding: 18px 20px 20px;
}
.svc-side__heading {
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--gold);
  margin-bottom: 14px;
}
.svc-toc { display: flex; flex-direction: column; }
.svc-toc__link {
  display: block;
  padding: 8px 10px;
  border-radius: 6px;
  border-left: 2px solid transparent;
  color: var(--fg-muted);
  font-size: 14px;
  line-height: 1.35;
  text-decoration: none;
  transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.svc-toc__link:hover {
  background: var(--gold-tint-8);
  color: var(--fg-title);
}
.svc-toc__link.is-active {
  color: var(--fg-strong);
  border-left-color: var(--gold);
  background: var(--gold-tint-8);
  font-weight: 600;
}
.svc-related { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; }
.svc-related__link {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 12px;
  border-radius: 6px;
  color: var(--fg);
  text-decoration: none;
  font-size: 14px;
  line-height: 1.3;
  transition: background .18s ease, color .18s ease;
}
.svc-related__link:hover {
  background: var(--gold-tint-8);
  color: var(--fg-title);
}
.svc-related__arrow {
  color: var(--gold);
  font-weight: 700;
  transition: transform .18s ease;
}
.svc-related__link:hover .svc-related__arrow { transform: translateX(3px); }

/* Su desktop la sidebar è sempre visibile. Sotto 1024 nascondiamo. */
@media (max-width: 1024px) {
  .svc-body__grid { grid-template-columns: 1fr; gap: 0; }
  .svc-side { display: none; }
}


/* ============================================================
   Nav dropdown "Servizi" — SEO-friendly (link nel DOM al load)
   ============================================================ */
.nav__item--dropdown { position: relative; display: inline-flex; align-items: center; }
.nav__link--has-arrow {
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer;
}
.nav__chevron {
  width: 10px; height: 6px;
  transition: transform .18s ease;
  opacity: .7;
}
.nav__item--dropdown:hover .nav__chevron,
.nav__item--dropdown:focus-within .nav__chevron { transform: rotate(180deg); opacity: 1; }

.nav__submenu {
  position: absolute;
  top: calc(100% + 12px);
  left: -14px;
  min-width: 300px;
  padding: 10px;
  background: var(--panel);
  border: 1px solid var(--border-hi);
  border-radius: 12px;
  box-shadow: 0 20px 50px -20px rgba(0, 0, 0, .5);
  opacity: 0; visibility: hidden; pointer-events: none;
  transform: translateY(-6px);
  transition: opacity .18s ease, transform .2s ease, visibility 0s linear .2s;
  z-index: 60;
  display: flex; flex-direction: column;
}
.nav__item--dropdown:hover .nav__submenu,
.nav__item--dropdown:focus-within .nav__submenu {
  opacity: 1; visibility: visible; pointer-events: auto;
  transform: translateY(0);
  transition: opacity .18s ease, transform .2s ease, visibility 0s linear 0s;
}
/* Piccolo "buffer" invisibile per non far chiudere il menu quando si va
   verso il basso col mouse */
.nav__submenu::before {
  content: "";
  position: absolute; top: -12px; left: 0; right: 0; height: 12px;
}
.nav__submenu-link {
  display: flex; flex-direction: column; gap: 2px;
  padding: 10px 14px;
  border-radius: 8px;
  color: var(--fg);
  text-decoration: none;
  transition: background .18s ease;
}
.nav__submenu-link:hover { background: var(--gold-tint-8); color: var(--fg-title); }
.nav__submenu-title { font-weight: 600; font-size: 14px; letter-spacing: -.005em; }
.nav__submenu-sub { font-size: 11.5px; color: var(--fg-muted-3); }
.nav__submenu-link:hover .nav__submenu-sub { color: var(--fg-muted); }

/* Nel drawer mobile (nav in position: fixed) rendo il submenu inline sotto */
@media (max-width: 1080px) {
  .nav__item--dropdown { display: block; }
  .nav__link--has-arrow {
    padding: 14px 24px;
    font-size: 16px;
    border-bottom: 1px solid var(--border-nav);
    justify-content: space-between;
    width: 100%;
  }
  .nav__submenu {
    position: static;
    opacity: 1; visibility: visible; pointer-events: auto;
    transform: none;
    box-shadow: none;
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 4px 12px 4px 32px;
    min-width: 0;
  }
  .nav__submenu-link { padding: 10px 12px; }
  .nav__submenu-title { font-size: 14.5px; }
}

/* Il submenu Zone è più largo SOLO da desktop. Va scoped a min-width:1081px
   perché altrimenti, stando dopo il blocco @media (max-width:1080px) che fa
   `min-width: 0`, vincerebbe a parità di specificità anche su mobile:
   340px + 44px di padding sforano un viewport da 380px e mandano in
   overflow orizzontale l'INTERA pagina. */
@media (min-width: 1081px) {
  .nav__submenu--zones { min-width: 340px; }
}


/* Chip cliccabili (interlinking zone) */
.zone-chip--link {
  display: inline-flex; align-items: center; gap: 6px;
  color: var(--fg-title);
  text-decoration: none;
  cursor: pointer;
  transition: background .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}
.zone-chip--link:hover {
  background: var(--gold-tint-32);
  border-color: var(--gold);
  color: var(--fg-strong);
  transform: translateY(-1px);
}
.zone-chip__arrow { color: var(--gold); font-weight: 700; transition: transform .18s ease; }
.zone-chip--link:hover .zone-chip__arrow { transform: translateX(2px); }

/* Blocco "Altre zone servite" */
.zone__others { max-width: 1100px; margin: 40px auto 0; padding: 40px 40px 0; }
.zone__others-inner { text-align: center; }
.zone-others-grid {
  list-style: none; padding: 0; margin: 24px 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
}
.zone-other-card {
  display: flex; flex-direction: column; gap: 4px;
  padding: 18px 22px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--panel);
  color: var(--fg-title);
  text-decoration: none;
  position: relative;
  transition: border-color .22s ease, background .22s ease, transform .22s ease;
  text-align: left;
}
.zone-other-card:hover {
  border-color: var(--border-strong);
  background: var(--panel-2);
  transform: translateY(-2px);
}
.zone-other-card__title { font-weight: 700; font-size: 15px; letter-spacing: -.005em; color: var(--fg-title); }
.zone-other-card__sub   { font-size: 12.5px; color: var(--fg-muted-3); }
.zone-other-card__arrow {
  position: absolute; right: 18px; top: 50%;
  transform: translateY(-50%);
  color: var(--gold); font-weight: 700; opacity: .7;
  transition: transform .22s ease, opacity .22s ease;
}
.zone-other-card:hover .zone-other-card__arrow {
  opacity: 1;
  transform: translate(4px, -50%);
}

@media (max-width: 560px) {
  .zone__others { padding: 32px 18px 0; }
  .zone-others-grid { grid-template-columns: 1fr; }
}


/* ============================================================
   BLOG MAGAZINE — hero 1+3 + griglia filtrabile
   ============================================================ */
.mag-hero { max-width: 1320px; margin: 0 auto; padding: 76px 40px 30px; }
.mag-hero__intro { text-align: center; max-width: 780px; margin: 0 auto 40px; }
.mag-hero__title {
  margin: 20px 0 0;
  font-weight: 700; letter-spacing: -.03em;
  font-size: 52px; line-height: 1.05; color: var(--fg-strong);
}
.mag-hero__lede {
  margin: 18px 0 0;
  font-size: 17.5px; line-height: 1.6; color: var(--fg-muted);
}

.mag-hero__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: stretch;
}
/* La colonna delle 3 side card riempie in altezza lo spazio della big:
   ogni card = 1/3 esatto. */
.mag-hero__side {
  display: grid;
  grid-template-rows: 1fr 1fr 1fr;
  gap: 12px;
  min-height: 0;
}

/* Card (generic) */
.mag-card {
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  background: var(--panel);
  transition: border-color .22s ease, transform .22s ease, background .22s ease;
  position: relative;
}
.mag-card:hover {
  border-color: var(--border-strong);
  transform: translateY(-2px);
  background: var(--panel-2);
}
.mag-card__link {
  display: flex; flex-direction: column;
  color: inherit; text-decoration: none;
  height: 100%;
}
.mag-card__media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--panel-2);
}
.mag-card__media--sm { aspect-ratio: 16 / 9; }
.mag-card__media img,
.mag-card__media picture { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.19, 1, .22, 1); }
.mag-card:hover .mag-card__media img,
.mag-card:hover .mag-card__media picture { transform: scale(1.04); }
.mag-card__placeholder {
  width: 100%; height: 100%;
  background:
    radial-gradient(ellipse at 30% 30%, rgba(201,160,99,.18), transparent 60%),
    var(--placeholder);
}
.mag-card__body {
  padding: 22px 24px 24px;
  display: flex; flex-direction: column; gap: 10px;
  flex: 1;
}
.mag-card__cat {
  align-self: flex-start;
  padding: 4px 10px;
  border-radius: 100px;
  background: var(--gold-tint-16);
  color: var(--gold);
  font-size: 10.5px; font-weight: 700;
  letter-spacing: .18em; text-transform: uppercase;
}
.mag-card__title {
  margin: 4px 0 0;
  font-weight: 700; letter-spacing: -.015em;
  font-size: 26px; line-height: 1.15;
  color: var(--fg-title);
  text-wrap: balance;
}
.mag-card__title--sm { font-size: 18px; line-height: 1.25; }
.mag-card__excerpt {
  margin: 0;
  font-size: 15px; line-height: 1.55; color: var(--fg-muted);
}
.mag-card__excerpt--sm { font-size: 14px; line-height: 1.5; }
.mag-card__meta {
  margin-top: auto;
  padding-top: 12px;
  font-size: 12.5px;
  color: var(--fg-muted-3);
  display: flex; justify-content: space-between; align-items: center;
  letter-spacing: .04em;
}
.mag-card__arrow { color: var(--gold); font-weight: 600; }

/* Big card (hero) — compatta */
.mag-card--big .mag-card__media { aspect-ratio: 21 / 10; max-height: 320px; }
.mag-card--big .mag-card__title { font-size: 24px; }
.mag-card--big .mag-card__body  { padding: 18px 22px 20px; gap: 8px; }
.mag-card--big .mag-card__excerpt { font-size: 14px; }
.mag-card--big .mag-card__meta { padding-top: 8px; }

/* Mid card (side of hero) — compatte, riempiono l'altezza in griglia 1/3 */
.mag-card--md { display: block; min-height: 0; }
.mag-card--md .mag-card__link {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 0;
  height: 100%;
}
.mag-card--md .mag-card__media {
  aspect-ratio: auto;
  height: 100%;
  max-height: none;
}
.mag-card--md .mag-card__body { padding: 14px 18px 16px; gap: 6px; justify-content: center; }
.mag-card--md .mag-card__title { font-size: 16px; line-height: 1.25; }
.mag-card--md .mag-card__cat { font-size: 9.5px; padding: 3px 8px; letter-spacing: .16em; }
.mag-card--md .mag-card__meta { padding-top: 6px; font-size: 11.5px; }

/* --- Griglia + filter --- */
.mag-list { max-width: 1320px; margin: 0 auto; padding: 40px 40px 80px; }
.mag-list__head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
  margin-bottom: 24px;
}
.mag-list__title {
  margin: 0;
  font-weight: 700; letter-spacing: -.02em;
  font-size: 26px; color: var(--fg-strong);
}
.mag-filter { display: flex; flex-wrap: wrap; gap: 8px; }
.mag-filter__btn {
  display: inline-flex; align-items: center;
  height: 36px;
  padding: 0 16px;
  border: 1px solid var(--border-hi);
  border-radius: 100px;
  background: transparent;
  color: var(--fg-muted);
  font: 600 13px/1 "Figtree", sans-serif;
  letter-spacing: .02em;
  cursor: pointer;
  transition: all .18s ease;
}
.mag-filter__btn:hover {
  border-color: var(--gold);
  background: var(--gold-tint-8);
  color: var(--fg-title);
}
.mag-filter__btn.is-active {
  background: var(--grad-gold);
  border-color: var(--gold);
  color: var(--btn-on-gold);
}

.mag-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
}
.mag-card.is-hidden { display: none; }

@media (max-width: 1024px) {
  .mag-hero { padding: 60px 24px 24px; }
  .mag-hero__title { font-size: 40px; }
  .mag-hero__grid { grid-template-columns: 1fr; }
  .mag-hero__side { flex-direction: column; }
  .mag-card--big .mag-card__title { font-size: 26px; }
  .mag-list { padding: 32px 24px 64px; }
  .mag-list__head { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 560px) {
  .mag-hero { padding: 48px 18px 20px; }
  .mag-hero__title { font-size: 32px; }
  .mag-card--md .mag-card__link { grid-template-columns: 110px 1fr; }
  .mag-card--big .mag-card__title { font-size: 22px; }
  .mag-card__title { font-size: 22px; }
  .mag-list { padding: 24px 18px 56px; }
  .mag-grid { grid-template-columns: 1fr; }
  .mag-filter__btn { height: 32px; padding: 0 12px; font-size: 12px; }
}


/* ============================================================
   Blog post (article) — layout con sidebar
   ============================================================ */
.post { max-width: 1320px; margin: 0 auto; padding: 76px 40px 40px; }
.post__header { max-width: 900px; margin: 0 auto; text-align: center; }
.post__header-inner { max-width: 780px; margin: 0 auto; }
.post__title {
  margin: 20px 0 0;
  font-weight: 700; letter-spacing: -.03em;
  font-size: 46px; line-height: 1.08;
  color: var(--fg-strong);
  text-wrap: balance;
}
.post__lede {
  margin: 20px 0 0;
  font-size: 18px; line-height: 1.55; color: var(--fg-muted);
}
.post__cover {
  margin: 40px 0 0;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--border-hi);
  aspect-ratio: 21 / 9;
}
.post__cover img, .post__cover picture {
  width: 100%; height: 100%; object-fit: cover; display: block;
}

.post__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 56px;
  max-width: 1180px;
  margin: 48px auto 0;
}
.post__body {
  font-size: 17.5px;
  line-height: 1.75;
  color: var(--fg);
  max-width: 720px;
}
.post__body h2 {
  margin: 44px 0 14px;
  font-weight: 700; letter-spacing: -.02em;
  font-size: 26px; color: var(--fg-strong);
}
.post__body h3 {
  margin: 32px 0 10px;
  font-weight: 700; letter-spacing: -.015em;
  font-size: 20px; color: var(--fg-title);
}
.post__body p  { margin: 14px 0; }
.post__body ul, .post__body ol { margin: 14px 0 14px 24px; }
.post__body li { margin: 6px 0; }
.post__body strong { color: var(--fg-strong); font-weight: 700; }
.post__body a { color: var(--gold-text); border-bottom: 1px solid var(--gold-tint-32); }
.post__body a:hover { color: var(--gold-hover); border-bottom-color: var(--gold-hover); }
.post__body em { color: var(--fg-muted); }

/* Immagini in-body: gestite dall'autore via <img> nel body */
.post__body img,
.post__body figure {
  display: block;
  margin: 32px 0;
  max-width: 100%;
  height: auto;
  border-radius: 10px;
  border: 1px solid var(--border);
}
.post__body figure { padding: 0; }
.post__body figure img { margin: 0; border-radius: 0; border: none; }
.post__body figcaption {
  margin-top: 10px;
  font-size: 13.5px;
  color: var(--fg-muted-3);
  font-style: italic;
  text-align: center;
}
.post__body blockquote {
  margin: 28px 0;
  padding: 18px 24px;
  border-left: 3px solid var(--gold);
  background: var(--gold-tint-8);
  border-radius: 0 8px 8px 0;
  font-style: italic;
  color: var(--fg-title);
}
.post__body code {
  padding: 2px 6px;
  background: var(--panel-2);
  border-radius: 4px;
  font-size: .95em;
}

.post__side {
  position: sticky;
  top: 88px;
  align-self: start;
  display: flex; flex-direction: column; gap: 18px;
  max-height: calc(100vh - 100px);
  overflow: auto;
  scrollbar-width: thin;
}

.post-related { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 4px; }
.post-related__link {
  display: grid;
  grid-template-columns: 60px 1fr;
  gap: 12px;
  padding: 8px;
  border-radius: 8px;
  text-decoration: none;
  color: var(--fg);
  transition: background .18s ease;
  align-items: center;
}
.post-related__link:hover { background: var(--gold-tint-8); }
.post-related__thumb {
  display: block;
  width: 60px; height: 60px;
  border-radius: 6px;
  overflow: hidden;
  background: var(--panel-2);
}
.post-related__thumb img, .post-related__thumb picture {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.post-related__thumb--empty {
  background:
    radial-gradient(ellipse at 30% 30%, rgba(201,160,99,.18), transparent 60%),
    var(--placeholder);
}
.post-related__body { display: flex; flex-direction: column; gap: 3px; }
.post-related__cat {
  font-size: 9.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
}
.post-related__title {
  font-size: 13px;
  line-height: 1.3;
  color: var(--fg-title);
  font-weight: 600;
}

.post__back {
  max-width: 1180px;
  margin: 48px auto 40px;
  padding: 0 40px;
  font-size: 14.5px;
}
.post__back a { color: var(--fg-muted); }
.post__back a:hover { color: var(--gold-text); }

@media (max-width: 1024px) {
  .post { padding: 56px 24px 32px; }
  .post__title { font-size: 34px; }
  .post__grid { grid-template-columns: 1fr; gap: 0; padding: 0; }
  .post__side { display: none; }
  .post__body { max-width: none; }
  .post__back { padding: 0 24px; }
}
@media (max-width: 560px) {
  .post { padding: 40px 18px 24px; }
  .post__title { font-size: 28px; }
  .post__body { font-size: 16.5px; }
  .post__body h2 { font-size: 22px; }
}

/* ======================================================================
   BREADCRUMB — nav a briciole di pane, coerente su tutte le pagine
   ------------------------------------------------------------------
   Renderizzato dal partial _breadcrumb.html con microdata
   schema.org/BreadcrumbList. Diverse "wrap" per contenerlo dentro
   layout diversi (article/service hero, zone hero, info hero, blog).
====================================================================== */
.breadcrumb {
  font-size: 13px;
  color: var(--fg-muted);
  letter-spacing: 0.01em;
  padding: 20px 0 4px;
}
.breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 0;
  list-style: none;
  margin: 0;
  padding: 0;
}
.breadcrumb__item {
  display: inline-flex;
  align-items: center;
  min-width: 0;
}
.breadcrumb__link {
  color: var(--fg-muted);
  text-decoration: none;
  padding: 4px 2px;
  border-radius: 4px;
  transition: color 160ms ease;
  white-space: nowrap;
}
.breadcrumb__link:hover { color: var(--gold-text); }
.breadcrumb__link:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}
.breadcrumb__current {
  color: var(--fg-title);
  font-weight: 600;
  padding: 4px 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: min(60ch, 100%);
}
.breadcrumb__sep {
  color: var(--fg-muted);
  opacity: 0.55;
  padding: 0 8px;
  user-select: none;
}

/* CRUMB BAR — UN SOLO wrapper, subito sotto l'header, in TUTTE le pagine.
   Sempre allineato a SINISTRA, con lo stesso padding di header/footer.
   Nessuna variante per-layout: coerente su tutto il sito. */
.crumb-bar {
  max-width: 1320px;
  margin: 0 auto;
  padding: 20px 40px 0;
  text-align: left;
}
.crumb-bar .breadcrumb { padding: 0; }
.crumb-bar .breadcrumb__list { justify-content: flex-start; }

@media (max-width: 720px) {
  .crumb-bar { padding: 14px 18px 0; }
  .breadcrumb { font-size: 12.5px; padding: 0; }
  .breadcrumb__sep { padding: 0 5px; }
  .breadcrumb__current { max-width: 26ch; }
}

/* ======================================================================
   PAGINA CONTATTI — layout dedicato a blocchi con mappa full-bleed.
   Card icone + valori chiave, sezione "come raggiungerci", mappa embed.
====================================================================== */
.ct-hero {
  max-width: 900px;
  margin: 0 auto;
  padding: 40px 40px 32px;
  text-align: center;
}
.ct-hero__inner { max-width: 780px; margin: 0 auto; }
.ct-hero__title {
  font-size: 44px;
  line-height: 1.08;
  letter-spacing: -0.01em;
  color: var(--fg-title);
  margin: 12px 0 12px;
  font-weight: 700;
}
.ct-hero__subtitle {
  font-size: 18px;
  color: var(--fg-title);
  font-weight: 600;
  margin: 0 0 12px;
}
.ct-hero__lede {
  font-size: 16.5px;
  line-height: 1.65;
  color: var(--fg-body);
  margin: 0;
}

/* 3 card principali ---------------------------------------------------- */
.ct-blocks { max-width: 1320px; margin: 0 auto; padding: 32px 40px 40px; }
.ct-blocks__inner {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.ct-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 28px 26px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  transition: border-color 200ms ease, transform 200ms ease;
}
.ct-card:hover { border-color: var(--border-hi); }
.ct-card__icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--gold-tint-8);
  color: var(--gold-text);
  display: grid; place-items: center;
}
.ct-card__icon svg { width: 22px; height: 22px; }
.ct-card__title {
  font-size: 19px;
  color: var(--fg-title);
  font-weight: 700;
  margin: 0;
  letter-spacing: -0.005em;
}
.ct-card__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ct-card__list li {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 0;
  border-bottom: 1px dashed var(--border);
}
.ct-card__list li:last-child { border-bottom: 0; padding-bottom: 0; }
.ct-card__k {
  font-size: 11.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fg-muted);
  font-weight: 600;
}
.ct-card__v {
  font-size: 16px;
  color: var(--fg-title);
  font-weight: 600;
  text-decoration: none;
}
a.ct-card__v { transition: color 160ms ease; }
a.ct-card__v:hover { color: var(--gold-text); }

.ct-card__hours {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.ct-card__hours li {
  display: flex;
  justify-content: space-between;
  padding: 8px 0;
  border-bottom: 1px dashed var(--border);
  font-size: 14.5px;
  color: var(--fg-body);
}
.ct-card__hours li:last-child { border-bottom: 0; }
.ct-card__hours b { color: var(--fg-title); font-weight: 600; }
.ct-card__hours-off b { color: var(--fg-muted); font-weight: 500; }

.ct-card__note {
  font-size: 13px;
  color: var(--fg-muted);
  line-height: 1.55;
  margin: 4px 0 0;
}
.ct-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: auto;
  padding-top: 6px;
}
.ct-card__actions .btn { padding: 10px 16px; font-size: 14px; }

/* Come raggiungerci --------------------------------------------------- */
.ct-reach { max-width: 1320px; margin: 0 auto; padding: 20px 40px 40px; }
.ct-reach__inner { text-align: center; }
.ct-reach__title {
  font-size: 30px;
  line-height: 1.15;
  color: var(--fg-title);
  margin: 8px 0 28px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.ct-reach__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  text-align: left;
}
.ct-reach__item {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 22px 22px;
}
.ct-reach__icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: var(--gold-tint-8);
  color: var(--gold-text);
  display: grid; place-items: center;
  margin-bottom: 12px;
}
.ct-reach__icon svg { width: 20px; height: 20px; }
.ct-reach__item h3 {
  font-size: 17px;
  color: var(--fg-title);
  margin: 0 0 6px;
  font-weight: 700;
}
.ct-reach__item p {
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--fg-body);
  margin: 0;
}
.ct-reach__item b { color: var(--fg-title); font-weight: 700; }

/* Mappa full-bleed ---------------------------------------------------- */
.ct-map {
  max-width: 1320px;
  margin: 0 auto;
  padding: 20px 40px 40px;
}
.ct-map__frame {
  position: relative;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid var(--border);
  aspect-ratio: 21/9;
  background: var(--card-bg);
}
.ct-map__frame iframe {
  width: 100%; height: 100%; border: 0; display: block;
  filter: none;
}
:root:not([data-theme="light"]) .ct-map__frame iframe {
  filter: invert(0.92) hue-rotate(180deg) saturate(0.85) brightness(0.95);
}
:root[data-theme="dark"] .ct-map__frame iframe {
  filter: invert(0.92) hue-rotate(180deg) saturate(0.85) brightness(0.95);
}
.ct-map__open {
  position: absolute;
  right: 14px; bottom: 14px;
  padding: 10px 14px;
  background: var(--bg);
  border: 1px solid var(--border-hi);
  border-radius: 999px;
  color: var(--fg-title);
  text-decoration: none;
  font-size: 13.5px;
  font-weight: 600;
}
.ct-map__open:hover { border-color: var(--gold); color: var(--gold-text); }

/* Body long-form opzionale ------------------------------------------- */
.ct-body { max-width: 900px; margin: 0 auto; padding: 20px 40px 32px; }
.ct-body__inner {
  font-size: 16px;
  line-height: 1.7;
  color: var(--fg-body);
}
.ct-body__inner h2 {
  font-size: 22px;
  margin: 28px 0 10px;
  color: var(--fg-title);
  font-weight: 700;
}
.ct-body__inner ul { padding-left: 22px; }
.ct-body__inner li { margin: 6px 0; }

/* Responsive ---------------------------------------------------------- */
@media (max-width: 960px) {
  .ct-blocks__inner { grid-template-columns: 1fr; }
  .ct-reach__grid { grid-template-columns: 1fr; }
  .ct-hero__title { font-size: 36px; }
  .ct-reach__title { font-size: 24px; }
}
@media (max-width: 720px) {
  .ct-hero,
  .ct-blocks,
  .ct-reach,
  .ct-map,
  .ct-body { padding-left: 18px; padding-right: 18px; }
  .ct-card { padding: 22px 20px; }
  .ct-map__frame { aspect-ratio: 4/3; }
}

/* ======================================================================
   CATALOGO MONETE — griglia card per landing "Compro Monete d'Oro".
   Card con foto quadrata, badge popolare, dati tecnici in dl-grid.
====================================================================== */
.coins { max-width: 1320px; margin: 0 auto; padding: 60px 40px 40px; }
.coins__inner { text-align: center; }
.coins__title {
  font-size: 32px;
  line-height: 1.12;
  color: var(--fg-title);
  margin: 8px 0 12px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.coins__lede {
  max-width: 780px;
  margin: 0 auto 36px;
  font-size: 16.5px;
  line-height: 1.65;
  color: var(--fg-body);
}
.coins__note {
  margin: 36px 0 0;
  font-size: 14.5px;
  color: var(--fg-muted);
}
.coins__note a { color: var(--gold-text); font-weight: 600; }

.coins__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
  text-align: left;
}

/* Card moneta ------------------------------------------------------- */
.coin-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  transition: border-color 200ms ease, transform 200ms ease;
}
.coin-card:hover {
  border-color: var(--border-hi);
  transform: translateY(-2px);
}
.coin-card--popular {
  border-color: var(--gold);
  box-shadow: 0 0 0 1px var(--gold-tint-16, rgba(201, 160, 99, 0.16));
}
.coin-card__badge {
  position: absolute;
  top: 12px; right: 12px;
  padding: 5px 10px;
  background: var(--gold);
  color: #1a1108;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.03em;
  z-index: 2;
}
.coin-card__media {
  position: relative;
  aspect-ratio: 1 / 1;
  background: var(--gold-tint-8);
  overflow: hidden;
}
.coin-card__media img,
.coin-card__media picture {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.coin-card__placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, rgba(201,160,99,0.2), rgba(201,160,99,0.05));
}
.coin-card__body {
  padding: 18px 20px 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.coin-card__country {
  font-size: 11.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fg-muted);
  font-weight: 600;
}
.coin-card__years {
  text-transform: none;
  letter-spacing: normal;
  color: var(--fg-muted);
  font-weight: 500;
}
.coin-card__name {
  font-size: 17px;
  line-height: 1.25;
  color: var(--fg-title);
  margin: 0;
  font-weight: 700;
  letter-spacing: -0.005em;
}
.coin-card__desc {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--fg-body);
  margin: 0;
}
.coin-card__specs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 4px 0 0;
  padding: 12px 0 0;
  border-top: 1px dashed var(--border);
}
.coin-card__specs div {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.coin-card__specs dt {
  font-size: 10.5px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--fg-muted);
  font-weight: 600;
}
.coin-card__specs dd {
  font-size: 14px;
  color: var(--fg-title);
  margin: 0;
  font-weight: 700;
}

@media (max-width: 720px) {
  .coins { padding: 40px 18px 24px; }
  .coins__title { font-size: 26px; }
  .coins__grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
  .coin-card__body { padding: 14px 16px 16px; }
}

/* ======================================================================
   STUDIO — pannello standalone per il proprietario del sito.
====================================================================== */
.studio-body {
  background: var(--bg);
  color: var(--fg-body);
  min-height: 100vh;
  font-family: "Figtree", system-ui, sans-serif;
}

/* --- Topbar --- */
.studio-topbar {
  /* IMPORTANTE: background OPACO al 100% (non var(--card-bg) che può avere
     alpha < 1). Su mobile la topbar è sticky sopra i contenuti che
     scorrono: se è translucida, il testo sottostante bleed-through e
     rende l'header illeggibile. */
  background: var(--bg);
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 100;
}
@supports (backdrop-filter: blur(10px)) or (-webkit-backdrop-filter: blur(10px)) {
  .studio-topbar {
    background: color-mix(in oklab, var(--bg) 82%, transparent);
    backdrop-filter: saturate(180%) blur(12px);
    -webkit-backdrop-filter: saturate(180%) blur(12px);
  }
}
.studio-topbar__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 12px 24px;
  display: flex;
  align-items: center;
  gap: 24px;
}
.studio-topbar__brand {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--fg-title);
  flex-shrink: 0;
}



.studio-topbar__nav { display: flex; gap: 4px; flex: 1; margin-left: 12px; }
.studio-topbar__nav a {
  padding: 8px 14px;
  border-radius: 8px;
  text-decoration: none;
  color: var(--fg-body);
  font-size: 14px;
  font-weight: 600;
  transition: background 160ms ease, color 160ms ease;
}
.studio-topbar__nav a:hover { background: var(--gold-tint-8); color: var(--gold-text); }
.studio-topbar__nav a.is-active { background: var(--gold-tint-8); color: var(--gold-text); }
.studio-topbar__right { display: flex; align-items: center; gap: 14px; font-size: 13.5px; }
.studio-topbar__link { color: var(--fg-muted); text-decoration: none; font-weight: 500; }
.studio-topbar__link:hover { color: var(--gold-text); }
.studio-topbar__user {
  padding: 6px 10px; background: var(--gold-tint-8);
  border-radius: 999px; color: var(--gold-text);
  font-weight: 600; font-size: 12.5px;
}
.studio-topbar__logout {
  color: var(--fg-body);
  padding: 6px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
}
.studio-topbar__logout:hover { border-color: var(--gold); color: var(--gold-text); }

/* --- Flash messages --- */
.studio-flashes {
  max-width: 1280px; margin: 16px auto 0; padding: 0 24px;
  display: flex; flex-direction: column; gap: 8px;
}
.studio-flash {
  padding: 12px 18px; border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--card-bg);
  font-size: 14px;
}
.studio-flash--success {
  border-color: rgba(70, 200, 120, 0.4);
  background: rgba(70, 200, 120, 0.09);
  color: #7fdca0;
}
.studio-flash--error {
  border-color: rgba(230, 90, 90, 0.5);
  background: rgba(230, 90, 90, 0.09);
  color: #ec8b8b;
}

/* --- Main container --- */
.studio-main { max-width: 1280px; margin: 0 auto; padding: 24px; }
.studio-page__head { padding: 16px 0 24px; border-bottom: 1px solid var(--border); margin-bottom: 28px; }
.studio-page__head--row {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
}
.studio-page__title { font-size: 28px; color: var(--fg-title); margin: 4px 0 6px; font-weight: 700; letter-spacing: -0.005em; }
.studio-page__lede { font-size: 14.5px; color: var(--fg-body); margin: 0; line-height: 1.55; }
.studio-page__lede a { color: var(--gold-text); }
.studio-back { display: inline-block; font-size: 13px; color: var(--fg-muted); text-decoration: none; margin-bottom: 6px; font-weight: 600; }
.studio-back:hover { color: var(--gold-text); }

/* --- Login --- */
.studio-login { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.studio-login__card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 36px 32px;
  max-width: 420px;
  width: 100%;
}
.studio-login__brand {
  display: flex; align-items: center; gap: 14px;
  margin-bottom: 20px; padding-bottom: 20px;
  border-bottom: 1px solid var(--border);
}

.studio-login__title { font-size: 24px; color: var(--fg-title); margin: 0; font-weight: 800; }
.studio-login__brand-sub { font-size: 12px; color: var(--fg-muted); margin: 2px 0 0; letter-spacing: 0.06em; text-transform: uppercase; }
.studio-login__lede { font-size: 14px; color: var(--fg-body); margin: 0 0 22px; }
.studio-login__form { display: flex; flex-direction: column; gap: 12px; margin-top: 4px; }
.studio-login__label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: 600; color: var(--fg-title); }
.studio-login__label input {
  padding: 11px 14px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--fg-title);
  font-size: 14.5px;
  font-family: inherit;
}
.studio-login__label input:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 2px rgba(201, 160, 99, 0.15); }
.studio-login__hint { margin: 18px 0 0; font-size: 12px; color: var(--fg-muted); text-align: center; }

/* --- Statistiche --- */
.studio-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 28px; }
.studio-stat { padding: 18px 20px; background: var(--card-bg); border: 1px solid var(--border); border-radius: 12px; }
.studio-stat__num { font-size: 32px; font-weight: 800; color: var(--gold-text); line-height: 1; letter-spacing: -0.01em; }
.studio-stat__label { margin-top: 6px; font-size: 12px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--fg-muted); font-weight: 600; }

/* --- Card azioni dashboard --- */
.studio-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
  margin-bottom: 32px;
}
.studio-card {
  display: block;
  padding: 26px 26px 22px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 14px;
  text-decoration: none;
  color: var(--fg-body);
  transition: border-color 200ms ease, transform 200ms ease;
}
.studio-card:hover { border-color: var(--border-hi); transform: translateY(-2px); }
.studio-card--primary { background: linear-gradient(135deg, var(--gold-tint-8), transparent); border-color: var(--gold); }
.studio-card__icon { font-size: 28px; color: var(--gold-text); margin-bottom: 10px; }
.studio-card__title { font-size: 20px; color: var(--fg-title); margin: 0 0 6px; font-weight: 700; }
.studio-card__desc { font-size: 14px; color: var(--fg-body); margin: 0 0 14px; line-height: 1.55; }
.studio-card__cta { display: inline-block; font-size: 14px; color: var(--gold-text); font-weight: 700; }

/* --- Recenti --- */
.studio-recent { padding: 22px 24px; background: var(--card-bg); border: 1px solid var(--border); border-radius: 12px; }
.studio-recent__title { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-muted); margin: 0 0 12px; font-weight: 700; }
.studio-recent__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 4px; }
.studio-recent__list li {
  display: flex; justify-content: space-between; align-items: center;
  gap: 12px; padding: 10px 0;
  border-bottom: 1px dashed var(--border);
  font-size: 14px;
}
.studio-recent__list li:last-child { border-bottom: 0; }
.studio-recent__list a { color: var(--fg-title); text-decoration: none; font-weight: 600; }
.studio-recent__list a:hover { color: var(--gold-text); }
.studio-recent__meta { font-size: 12.5px; color: var(--fg-muted); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* --- Tag --- */
.studio-tag {
  display: inline-block; padding: 3px 8px;
  border-radius: 999px; font-size: 11px; font-weight: 700;
  letter-spacing: 0.02em; text-transform: uppercase; line-height: 1.4;
}
.studio-tag--pub { background: rgba(70, 200, 120, 0.15); color: #7fdca0; }
.studio-tag--draft { background: rgba(201, 160, 99, 0.15); color: var(--gold-text); }
.studio-tag--feat { background: rgba(201, 160, 99, 0.15); color: var(--gold-text); }
/* Programmato: azzurro, distinto sia da Online (verde) che da Bozza (oro) */
.studio-tag--sched { background: rgba(96, 165, 205, 0.16); color: #7fb6d6; }

/* Riga di stato nell'editor Studio */
.studio-state {
  margin: 0 0 14px;
  padding: 9px 12px;
  border-radius: 8px;
  font-size: 13px;
  border: 1px solid var(--border);
  background: var(--panel-3);
  color: var(--fg-muted);
}
.studio-state b { color: var(--fg-title); }
.studio-state--published { border-color: rgba(70, 200, 120, .35); }
.studio-state--scheduled { border-color: rgba(96, 165, 205, .40); }
.studio-state--draft     { border-color: var(--border-hi); }
.studio-tag--cat { background: var(--gold-tint-8); color: var(--fg-body); }

/* --- Filtro --- */
.studio-filter {
  display: flex; gap: 10px; align-items: center;
  padding: 14px 18px;
  background: var(--card-bg); border: 1px solid var(--border);
  border-radius: 12px; margin-bottom: 20px;
  flex-wrap: wrap;
}
.studio-filter__input {
  padding: 9px 12px;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 8px; color: var(--fg-title);
  font-size: 14px; font-family: inherit; min-width: 160px;
}
.studio-filter__input:focus { outline: none; border-color: var(--gold); }

/* --- Tabella --- */
.studio-table-wrap { overflow-x: auto; background: var(--card-bg); border: 1px solid var(--border); border-radius: 12px; }
.studio-table { width: 100%; border-collapse: collapse; font-size: 14px; min-width: 720px; }
.studio-table thead th {
  text-align: left; padding: 14px 18px;
  color: var(--fg-muted);
  font-size: 11px; letter-spacing: 0.08em;
  text-transform: uppercase; font-weight: 700;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}
.studio-table tbody td { padding: 14px 18px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.studio-table tbody tr:last-child td { border-bottom: 0; }
.studio-table tbody tr:hover { background: rgba(201, 160, 99, 0.04); }
.studio-table__title { color: var(--fg-title); text-decoration: none; font-weight: 600; }
.studio-table__title:hover { color: var(--gold-text); }
.studio-table__view { color: var(--fg-muted); text-decoration: none; margin-left: 6px; font-weight: 500; }
.studio-table__view:hover { color: var(--gold-text); }
.studio-table__date { color: var(--fg-muted); white-space: nowrap; }
.studio-table__actions { text-align: right; white-space: nowrap; }
.studio-table__form { display: inline-block; margin: 0; padding: 0; }
.studio-table__empty { text-align: center; padding: 40px 20px; color: var(--fg-muted); font-style: italic; }
.studio-table__empty a { color: var(--gold-text); font-weight: 600; }

/* --- Action buttons icon --- */
.studio-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; padding: 0;
  background: transparent; border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--fg-body);
  font-size: 15px; font-weight: 600;
  cursor: pointer; text-decoration: none;
  transition: all 140ms ease;
  margin-left: 3px;
}
.studio-btn:hover { border-color: var(--gold); color: var(--gold-text); background: var(--gold-tint-8); }
.studio-btn--sm { width: 30px; height: 30px; font-size: 14px; }
.studio-btn--danger:hover { border-color: #e05a5a; color: #e05a5a; background: rgba(230, 90, 90, 0.08); }

/* --- Editor --- */
.studio-editor__grid { display: grid; grid-template-columns: 1fr 340px; gap: 24px; }
.studio-editor__main { display: flex; flex-direction: column; gap: 18px; }
.studio-editor__side { display: flex; flex-direction: column; gap: 18px; }
.studio-editor__actions { display: flex; flex-direction: column; gap: 10px; }
.studio-fieldset { padding: 20px 22px; background: var(--card-bg); border: 1px solid var(--border); border-radius: 12px; }
.studio-fieldset__title { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-muted); margin: 0 0 14px; font-weight: 700; }
.studio-field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 14px; }
.studio-field:last-child { margin-bottom: 0; }
.studio-field label, .studio-field > span { font-size: 13px; font-weight: 600; color: var(--fg-title); }
.studio-field em { font-style: normal; font-weight: 400; color: var(--fg-muted); font-size: 12.5px; }
.studio-field input[type=text],
.studio-field input[type=file],
.studio-field select,
.studio-field textarea {
  width: 100%; padding: 10px 12px;
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--fg-title);
  font-size: 14.5px; font-family: inherit;
  box-sizing: border-box; resize: vertical;
}
.studio-field input[type=file] { padding: 8px 10px; }
.studio-field input:focus, .studio-field select:focus, .studio-field textarea:focus {
  outline: none; border-color: var(--gold);
  box-shadow: 0 0 0 2px rgba(201, 160, 99, 0.15);
}
.studio-field__mono {
  font-family: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
  font-size: 12.5px; line-height: 1.6;
}
.studio-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 14px; }
.studio-check {
  display: flex; gap: 10px; align-items: flex-start;
  padding: 10px 0; cursor: pointer;
  font-size: 14px; color: var(--fg-body);
}
.studio-check input[type=checkbox] { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--gold); }
.studio-check b { color: var(--fg-title); }

.studio-cover {
  margin: 0 0 12px; border-radius: 8px;
  overflow: hidden; border: 1px solid var(--border);
  aspect-ratio: 16/9; background: var(--bg);
}
.studio-cover img, .studio-cover picture { width: 100%; height: 100%; object-fit: cover; display: block; }
.studio-empty {
  margin: 0 0 12px; padding: 12px;
  border: 1px dashed var(--border); border-radius: 8px;
  color: var(--fg-muted); font-size: 13px;
  text-align: center; background: var(--bg);
}
.studio-hint { font-size: 12.5px; color: var(--fg-muted); margin: 4px 0 0; }
.studio-hint code { padding: 2px 6px; background: var(--gold-tint-8); border-radius: 4px; font-size: 12px; }

/* --- Danger zone --- */
.studio-danger {
  margin-top: 32px; padding: 20px 22px;
  background: rgba(230, 90, 90, 0.05);
  border: 1px dashed rgba(230, 90, 90, 0.4);
  border-radius: 12px;
}
.studio-danger h3 { margin: 0 0 6px; color: #ec8b8b; font-size: 15px; font-weight: 700; }
.studio-danger p { margin: 0 0 12px; font-size: 13.5px; color: var(--fg-body); }
.studio-danger .btn { padding: 10px 18px; font-size: 14px; }

/* --- Step --- */
.studio-step { background: var(--card-bg); border: 1px solid var(--border); border-radius: 12px; padding: 22px 24px; margin-bottom: 20px; }
.studio-step--info { background: transparent; border-style: dashed; }
.studio-step__head { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.studio-step__num {
  width: 30px; height: 30px; border-radius: 999px;
  background: var(--gold); color: #1a1108;
  display: grid; place-items: center;
  font-weight: 800; font-size: 14px; flex-shrink: 0;
}
.studio-step__title { font-size: 18px; color: var(--fg-title); margin: 0; font-weight: 700; }
.studio-form { display: flex; flex-direction: column; gap: 14px; }
.studio-preview { border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; background: var(--bg); }
.studio-preview summary { cursor: pointer; font-size: 13.5px; font-weight: 600; color: var(--fg-title); }
.studio-preview[open] summary { margin-bottom: 10px; }
.studio-preview__body {
  margin: 0; padding: 12px 14px;
  background: var(--card-bg); border: 1px solid var(--border); border-radius: 6px;
  font-family: ui-monospace, Menlo, Consolas, monospace;
  font-size: 11.5px; line-height: 1.55; color: var(--fg-body);
  white-space: pre-wrap; word-break: break-word;
  max-height: 380px; overflow-y: auto;
}
.studio-checklist { margin: 0; padding-left: 22px; font-size: 14px; line-height: 1.7; color: var(--fg-body); }

/* --- Responsive --- */
/* @media 900 gestito ora dal blocco drawer/hamburger sotto */
@media (max-width: 560px) {
  .studio-topbar__user { display: none; }
  .studio-stats { grid-template-columns: 1fr 1fr; gap: 10px; }
}

/* --- Studio brand logo (usa SVG horseshoe come nel sito pubblico) --- */

.studio-topbar__brand-icon {
  width: 30px; height: 30px;
  color: var(--gold-text);
  flex-shrink: 0;
}
.studio-topbar__brand-text { display: flex; flex-direction: column; }
.studio-topbar__brand-text b { font-size: 14.5px; font-weight: 800; letter-spacing: 0.06em; color: var(--fg-title); line-height: 1.1; }
.studio-topbar__brand-text em {
  font-style: normal;
  font-size: 10.5px; color: var(--fg-muted);
  letter-spacing: 0.08em; text-transform: uppercase;
  margin-top: 2px;
}

.studio-login__mark {
  width: 56px; height: 56px;
  display: grid; place-items: center;
  background: var(--gold-tint-8); border-radius: 14px;
  color: var(--gold-text);
}
.studio-login__mark svg { width: 32px; height: 32px; }

/* --- Icone SVG inline nei link/bottoni Studio --- */
.studio-topbar__nav a,
.studio-topbar__link,
.studio-topbar__user,
.studio-table__view,
.studio-page__lede a,
.studio-tag,
.studio-card__cta,
.studio-btn-icon {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.studio-topbar__user svg { color: var(--gold-text); }
.studio-btn-icon { gap: 8px; }
.studio-card__icon { color: var(--gold-text); margin-bottom: 12px; }
.studio-card__icon svg { display: block; }

/* Studio page head actions */
.studio-page__head-actions {
  display: flex; gap: 10px; flex-wrap: wrap;
}

/* Filtro search con icona interna */
.studio-filter__search {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 200px;
}
.studio-filter__search-icon {
  position: absolute;
  left: 12px; top: 50%;
  transform: translateY(-50%);
  color: var(--fg-muted);
  pointer-events: none;
}
.studio-filter__input--search { padding-left: 36px; width: 100%; }

/* Toggle button attivo (publish/featured) */
.studio-btn.is-on {
  border-color: var(--gold);
  color: var(--gold-text);
  background: var(--gold-tint-8);
}
.studio-btn svg { display: block; }

/* Emoji wave animation */
.studio-wave {
  display: inline-block;
  color: var(--gold-text);
  vertical-align: middle;
  margin-left: 6px;
  animation: studio-wave 1.4s ease-in-out infinite;
  transform-origin: 70% 70%;
}
@keyframes studio-wave {
  0%, 60%, 100% { transform: rotate(0); }
  10%, 30% { transform: rotate(14deg); }
  20%, 40% { transform: rotate(-8deg); }
  50% { transform: rotate(8deg); }
}

/* Dashboard 3 card più compatte */
.studio-cards { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .studio-cards { grid-template-columns: 1fr; } }

/* --- STUDIO — hamburger drawer + theme toggle --- */


/* --- Cluster desktop (nav + right visibili solo desktop) --- */
.studio-topbar__cluster {
  display: contents;   /* flex naturale: nav + right riescono al livello di .inner */
}
.studio-topbar__controls {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;   /* spinge sempre a destra, anche su mobile */
}
/* Su desktop hamburger nascosto */
.studio-hamburger { display: none; }

/* Theme toggle bottone --- */
.studio-theme-toggle {
  width: 36px; height: 36px;
  padding: 0;
  border: 1px solid var(--border);
  background: transparent;
  border-radius: 999px;
  color: var(--fg-body);
  cursor: pointer;
  display: grid;
  place-items: center;
  position: relative;
  transition: border-color 160ms ease, color 160ms ease;
}
.studio-theme-toggle:hover { border-color: var(--gold); color: var(--gold-text); }
.studio-theme-toggle__icon {
  position: absolute;
  width: 18px; height: 18px;
  transition: opacity 220ms ease, transform 220ms ease;
}
/* Dark mode: mostra luna */
.studio-theme-toggle__icon--moon { opacity: 1; transform: rotate(0); }
.studio-theme-toggle__icon--sun  { opacity: 0; transform: rotate(-90deg); }
/* Light mode: mostra sole */
:root[data-theme="light"] .studio-theme-toggle__icon--moon { opacity: 0; transform: rotate(90deg); }
:root[data-theme="light"] .studio-theme-toggle__icon--sun  { opacity: 1; transform: rotate(0); }

/* --- Hamburger button (icona 3 linee) --- */
.studio-hamburger {
  width: 36px; height: 36px;
  padding: 0;
  border: 1px solid var(--border);
  background: transparent;
  border-radius: 999px;    /* cerchio pieno come theme toggle */
  cursor: pointer;
  display: none;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 4px;
  transition: border-color 160ms ease;
}
.studio-hamburger:hover { border-color: var(--gold); }
.studio-hamburger span {
  display: block;
  width: 20px; height: 2px;
  background: var(--fg-title);
  border-radius: 2px;
  transition: transform 220ms ease, opacity 220ms ease;
}
.studio-hamburger.is-open span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.studio-hamburger.is-open span:nth-child(2) { opacity: 0; }
.studio-hamburger.is-open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* --- Drawer mobile --- */
.studio-drawer {
  position: fixed;
  top: 0; right: 0;
  width: min(320px, 88vw);
  height: 100vh;
  background: var(--bg);
  border-left: 1px solid var(--border);
  z-index: 200;
  padding: 24px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transform: translateX(100%);
  transition: transform 220ms cubic-bezier(.2,.9,.3,1.05);
  overflow-y: auto;
}
.studio-drawer.is-open { transform: translateX(0); }
.studio-drawer[hidden] { display: flex !important; visibility: visible; }
.studio-drawer__nav,
.studio-drawer__section {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.studio-drawer__section {
  padding-top: 12px;
  border-top: 1px solid var(--border);
  margin-top: 8px;
}
.studio-drawer a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border-radius: 10px;
  color: var(--fg-body);
  text-decoration: none;
  font-size: 15px;
  font-weight: 600;
  transition: background 160ms ease, color 160ms ease;
}
.studio-drawer a svg { color: var(--gold-text); flex-shrink: 0; }
.studio-drawer a:hover { background: var(--gold-tint-8); color: var(--gold-text); }
.studio-drawer__footer {
  margin-top: auto;
  padding-top: 16px;
  border-top: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.studio-drawer__user {
  font-size: 13px;
  color: var(--fg-muted);
  display: flex; align-items: center; gap: 6px;
}
.studio-drawer__user svg { color: var(--gold-text); }

/* Backdrop scuro dietro il drawer */
.studio-drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 150;
  opacity: 0;
  transition: opacity 220ms ease;
}
.studio-drawer-backdrop.is-open { opacity: 1; }
.studio-drawer-backdrop[hidden] { display: block !important; }
.studio-drawer[hidden]:not(.is-open),
.studio-drawer-backdrop[hidden]:not(.is-open) { pointer-events: none; }
.studio-drawer:not(.is-open):not([hidden]) { pointer-events: none; }

/* --- Breakpoint: passa a hamburger sotto 900px --- */
@media (max-width: 900px) {
  .studio-topbar__cluster { display: none; }
  .studio-hamburger { display: flex; }
  .studio-main { padding: 16px; }
  .studio-stats { grid-template-columns: repeat(2, 1fr); }
  .studio-editor__grid { grid-template-columns: 1fr; }
  .studio-field-row { grid-template-columns: 1fr; }
  .studio-topbar__inner { gap: 12px; }
  .studio-topbar__brand-text b { font-size: 13.5px; }
  .studio-topbar__brand-text em { font-size: 10px; }
  .studio-topbar__brand-icon { width: 26px; height: 26px; }
}
@media (max-width: 560px) {
  .studio-stats { grid-template-columns: 1fr 1fr; gap: 10px; }
  /* Nasconde il subtitle brand sotto 560 per non affollare */
  .studio-topbar__brand-text em { display: none; }
}

/* ======================================================================
   QUILL EDITOR — override per adattarlo al tema dark/light dello Studio.
   Snow theme di default è chiaro; sovrascriviamo i colori con i token.
====================================================================== */
.studio-quill {
  background: var(--bg);
  border-radius: 8px;
}
/* Toolbar */
.ql-toolbar.ql-snow {
  border: 1px solid var(--border);
  border-radius: 8px 8px 0 0;
  background: var(--card-bg);
  padding: 8px 10px;
}
.ql-toolbar.ql-snow .ql-picker,
.ql-toolbar.ql-snow .ql-picker-label,
.ql-toolbar.ql-snow button,
.ql-toolbar.ql-snow button svg,
.ql-toolbar.ql-snow .ql-stroke {
  color: var(--fg-body);
  stroke: var(--fg-body);
}
.ql-toolbar.ql-snow .ql-fill { fill: var(--fg-body); }
.ql-toolbar.ql-snow button:hover,
.ql-toolbar.ql-snow button:focus,
.ql-toolbar.ql-snow .ql-picker-label:hover,
.ql-toolbar.ql-snow .ql-active {
  color: var(--gold-text) !important;
}
.ql-toolbar.ql-snow button:hover .ql-stroke,
.ql-toolbar.ql-snow .ql-active .ql-stroke {
  stroke: var(--gold-text) !important;
}
.ql-toolbar.ql-snow button:hover .ql-fill,
.ql-toolbar.ql-snow .ql-active .ql-fill {
  fill: var(--gold-text) !important;
}
/* Dropdown picker */
.ql-snow .ql-picker-options {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 6px;
}
.ql-snow .ql-picker-item {
  color: var(--fg-body);
}
.ql-snow .ql-picker-item:hover {
  color: var(--gold-text);
}
.ql-toolbar.ql-snow .ql-picker-label {
  border-radius: 4px;
}

/* Container editor */
.ql-container.ql-snow {
  border: 1px solid var(--border);
  border-top: 0;
  border-radius: 0 0 8px 8px;
  background: var(--bg);
  min-height: 380px;
  font-family: "Figtree", system-ui, sans-serif;
  font-size: 15px;
}
.ql-editor {
  min-height: 380px;
  color: var(--fg-body);
  line-height: 1.7;
  padding: 18px 20px;
}
.ql-editor h2 { font-size: 22px; color: var(--fg-title); margin: 22px 0 10px; font-weight: 700; }
.ql-editor h3 { font-size: 18px; color: var(--fg-title); margin: 18px 0 8px; font-weight: 700; }
.ql-editor p  { margin: 0 0 12px; }
.ql-editor ul,
.ql-editor ol { padding-left: 24px; margin: 0 0 12px; }
.ql-editor li { margin: 4px 0; }
.ql-editor blockquote {
  border-left: 3px solid var(--gold);
  padding: 8px 16px;
  margin: 12px 0;
  color: var(--fg-body);
  font-style: italic;
  background: var(--gold-tint-8);
}
.ql-editor a { color: var(--gold-text); text-decoration: underline; }
.ql-editor.ql-blank::before {
  color: var(--fg-muted);
  font-style: italic;
  left: 20px; right: 20px;
}
/* Link tooltip (Quill popover per link) */
.ql-snow .ql-tooltip {
  background: var(--card-bg);
  border: 1px solid var(--border);
  color: var(--fg-title);
  border-radius: 8px;
  padding: 8px 12px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.4);
}
.ql-snow .ql-tooltip input[type=text] {
  background: var(--bg);
  border: 1px solid var(--border);
  color: var(--fg-title);
  border-radius: 6px;
  padding: 6px 8px;
}
.ql-snow .ql-tooltip a.ql-action { color: var(--gold-text); }

/* ======================================================================
   STUDIO — Responsive recent list + tabella articoli su mobile
====================================================================== */

/* Dashboard: lista ultimi articoli — sempre stack verticale, più pulita */
.studio-recent__row {
  display: flex !important;
  flex-direction: column;
  align-items: flex-start !important;
  gap: 6px !important;
  padding: 14px 0 !important;
}
.studio-recent__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.studio-recent__title {
  font-size: 15px;
  font-weight: 700;
  color: var(--fg-title);
  text-decoration: none;
  line-height: 1.35;
}
.studio-recent__title:hover { color: var(--gold-text); }
.studio-recent__date {
  font-size: 12.5px;
  color: var(--fg-muted);
}

/* --- Tabella articoli → cards su mobile ------------------------------ */
@media (max-width: 720px) {
  .studio-table-wrap {
    overflow: visible;
    background: transparent;
    border: 0;
    border-radius: 0;
  }
  .studio-table {
    min-width: 0;
    display: block;
  }
  .studio-table thead { display: none; }
  .studio-table tbody { display: block; }
  .studio-table tbody tr {
    display: grid;
    grid-template-columns: auto auto 1fr;
    grid-template-areas:
      "cat status ..."
      "title title title"
      "date  date   date"
      "acts  acts   acts";
    gap: 8px;
    background: var(--card-bg);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 12px;
  }
  .studio-table tbody tr:hover { background: var(--card-bg); }
  .studio-table tbody td {
    display: block;
    padding: 0;
    border: 0;
    vertical-align: initial;
  }
  /* Ogni td in una sua area distinta — niente sovrapposizioni */
  .studio-table tbody td:nth-child(1) { grid-area: title; }
  .studio-table tbody td:nth-child(2) {   /* Categoria */
    grid-area: cat;
    display: inline-flex;
    align-items: center;
  }
  .studio-table tbody td:nth-child(3) {   /* Stato + eventuale ★ */
    grid-area: status;
    display: inline-flex;
    align-items: center;
    gap: 5px;
  }
  .studio-table tbody td.studio-table__date { grid-area: date; }
  .studio-table tbody td.studio-table__actions {
    grid-area: acts;
    display: flex;
    justify-content: flex-start;
    gap: 6px;
    padding-top: 8px;
    margin-top: 4px;
    border-top: 1px dashed var(--border);
    text-align: left;
  }
  .studio-table tbody td.studio-table__date {
    font-size: 12.5px;
    color: var(--fg-muted);
  }
  .studio-table__title {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.35;
  }
  .studio-table__view { margin-left: 4px; }

  /* Bottone Filtra sotto ai select su viewport strette */
  .studio-filter { padding: 12px 14px; }
  .studio-filter__input,
  .studio-filter__search { flex: 1 1 100%; min-width: 0; }
  .studio-filter .btn { flex: 1 1 100%; }

  /* Page head actions: bottoni full-width su mobile */
  .studio-page__head-actions {
    width: 100%;
    flex-direction: column;
    gap: 6px;
  }
  .studio-page__head-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

/* ======================================================================
   FORM CONTATTI — sezione pagina Contatti
====================================================================== */
.ct-form-section { max-width: 780px; margin: 0 auto; padding: 40px 40px 20px; }
.ct-form-section__inner { text-align: center; }
.ct-form-section__title {
  font-size: 28px;
  color: var(--fg-title);
  margin: 8px 0 10px;
  font-weight: 700;
  letter-spacing: -0.005em;
}
.ct-form-section__lede {
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--fg-body);
  margin: 0 0 28px;
}
.ct-form-section__lede a { color: var(--gold-text); font-weight: 600; }

.ct-form__flashes {
  display: flex; flex-direction: column; gap: 8px;
  margin: 0 0 18px;
  text-align: left;
}
.ct-form__flash {
  padding: 12px 16px; border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--card-bg);
  font-size: 14px;
}
.ct-form__flash--success {
  border-color: rgba(70, 200, 120, 0.4);
  background: rgba(70, 200, 120, 0.10);
  color: #7fdca0;
}
.ct-form__flash--error {
  border-color: rgba(230, 90, 90, 0.5);
  background: rgba(230, 90, 90, 0.10);
  color: #ec8b8b;
}

.ct-form {
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.ct-form__hp {
  position: absolute; left: -9999px; height: 0; width: 0; overflow: hidden;
}
.ct-form__row--split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.ct-form__field { display: flex; flex-direction: column; gap: 6px; }
.ct-form__field > span {
  font-size: 13px;
  font-weight: 600;
  color: var(--fg-title);
  letter-spacing: 0.01em;
}
.ct-form__field > span b { color: var(--gold-text); font-weight: 700; }
.ct-form__field > span em {
  font-style: normal; font-weight: 400;
  color: var(--fg-muted); font-size: 12.5px;
}
.ct-form__field input,
.ct-form__field textarea {
  width: 100%;
  padding: 11px 14px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--fg-title);
  font-size: 15px;
  font-family: inherit;
  box-sizing: border-box;
  resize: vertical;
  transition: border-color 160ms ease, box-shadow 160ms ease;
}
.ct-form__field input:focus,
.ct-form__field textarea:focus {
  outline: none;
  border-color: var(--gold);
  box-shadow: 0 0 0 3px rgba(201, 160, 99, 0.15);
}
.ct-form__field textarea { min-height: 140px; }

.ct-form__privacy {
  font-size: 12.5px;
  color: var(--fg-muted);
  margin: 4px 0 0;
  line-height: 1.5;
}
.ct-form__actions {
  display: flex; justify-content: center;
  margin-top: 8px;
}

@media (max-width: 720px) {
  .ct-form-section { padding: 32px 18px 12px; }
  .ct-form__row--split { grid-template-columns: 1fr; gap: 14px; }
  .ct-form__actions .btn { width: 100%; }
}

/* Studio — Messaggi topbar badge + tabella + detail --- */
.studio-topbar__badge {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 7px;
  background: var(--gold);
  color: #1a1108;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 800;
  vertical-align: middle;
  line-height: 1.3;
}
.studio-table__row--unread td { font-weight: 600; }
.studio-table__row--unread td:first-child { border-left: 3px solid var(--gold); padding-left: 15px; }
.studio-table__meta {
  margin-top: 2px;
  font-size: 12.5px;
  color: var(--fg-muted);
  font-weight: 400;
}
.studio-table__meta a { color: var(--gold-text); text-decoration: none; }
.studio-table__preview {
  font-size: 13.5px;
  color: var(--fg-body);
  line-height: 1.45;
  max-width: 380px;
}
.studio-table__preview b { color: var(--fg-title); }

.msg-subject { font-size: 15px; margin: 0 0 12px; padding-bottom: 12px; border-bottom: 1px dashed var(--border); color: var(--fg-title); }
.msg-body { font-size: 15px; line-height: 1.7; color: var(--fg-body); white-space: pre-wrap; }
.msg-prev-reply {
  margin: 8px 0 16px;
  padding: 12px 14px;
  background: var(--gold-tint-8);
  border-left: 3px solid var(--gold);
  border-radius: 0 8px 8px 0;
}
.msg-prev-reply__body { font-size: 13.5px; color: var(--fg-body); line-height: 1.55; }
.msg-action-form { margin: 0; }

/* Callback details toggle nella pagina Contatti --- */
.ct-callback {
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--card-bg);
  overflow: hidden;
  text-align: left;
  transition: border-color 200ms ease;
}
.ct-callback:hover { border-color: var(--border-hi); }
.ct-callback[open] { border-color: var(--gold); }

.ct-callback__toggle {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 24px;
  user-select: none;
}
.ct-callback__toggle::-webkit-details-marker { display: none; }
.ct-callback__toggle-label {
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
}
.ct-callback__toggle-icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--gold-tint-8);
  color: var(--gold-text);
  display: grid; place-items: center;
  flex-shrink: 0;
}
.ct-callback__toggle-icon svg { width: 22px; height: 22px; }
.ct-callback__toggle-label > span:last-child { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ct-callback__toggle-label b {
  font-size: 17px;
  color: var(--fg-title);
  font-weight: 700;
  letter-spacing: -0.005em;
}
.ct-callback__toggle-label em {
  font-style: normal;
  font-size: 13.5px;
  color: var(--fg-muted);
}
.ct-callback__toggle-chevron {
  width: 32px; height: 32px;
  border-radius: 999px;
  border: 1px solid var(--border);
  display: grid; place-items: center;
  color: var(--fg-body);
  transition: transform 260ms ease, border-color 160ms ease, color 160ms ease;
  flex-shrink: 0;
}
.ct-callback__toggle-chevron svg { width: 16px; height: 16px; }
.ct-callback[open] .ct-callback__toggle-chevron {
  transform: rotate(180deg);
  border-color: var(--gold);
  color: var(--gold-text);
}
.ct-callback__toggle:hover .ct-callback__toggle-chevron { border-color: var(--gold); color: var(--gold-text); }

.ct-callback__panel {
  padding: 6px 24px 26px;
  border-top: 1px solid var(--border);
  animation: ct-callback-in 260ms ease;
}
.ct-callback__panel .ct-form-section__lede { margin: 16px 0 20px; text-align: left; }
@keyframes ct-callback-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (max-width: 720px) {
  .ct-callback__toggle { padding: 18px 18px; gap: 12px; }
  .ct-callback__toggle-icon { width: 40px; height: 40px; }
  .ct-callback__toggle-label b { font-size: 15px; }
  .ct-callback__toggle-label em { font-size: 12.5px; }
  .ct-callback__panel { padding: 6px 18px 20px; }
}

/* Spazio tra hint e bottone azione nei form dello Studio */
.studio-hint + .studio-editor__actions,
.studio-hint + .ct-form__actions {
  margin-top: 16px;
}
.studio-fieldset .studio-editor__actions {
  padding-top: 8px;
}


/* ============================================================
   MDRAWER - Menu mobile a pannello laterale (entra da destra)
   Sostituisce il vecchio accordion sulla .nav. Visibile solo
   sotto i 1080px; su desktop resta la nav orizzontale.
   ============================================================ */
.mdrawer[hidden],
.mdrawer-backdrop[hidden] { display: none; }

/* !important obbligatorio: styles-impact.css applica
   `position: relative; z-index: 1` a `body > *` (specificita 0,2,1),
   che batterebbe questa regola. Senza, il drawer non e ancorato e
   finisce nel flusso pagina sulla sinistra. Stesso motivo di .ag-chat. */
.mdrawer {
  position: fixed !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: auto !important;
  width: min(340px, 86vw);
  max-width: 100vw;
  /* Sopra al widget chatbot (.ag-chat = 9500): quando il menu e aperto
     deve coprirlo, non passargli sotto. */
  z-index: 9610 !important;
  display: flex;
  flex-direction: column;
  background: var(--panel);
  border-left: 1px solid var(--border-hi);
  box-shadow: -24px 0 60px -30px rgba(0, 0, 0, .8);
  transform: translateX(100%);
  transition: transform .28s cubic-bezier(.2, .9, .3, 1);
  overscroll-behavior: contain;
  /* Notch / home-bar iOS */
  padding-top: env(safe-area-inset-top);
  padding-bottom: env(safe-area-inset-bottom);
}
.mdrawer.is-open { transform: translateX(0); }

@media (prefers-reduced-motion: reduce) {
  .mdrawer { transition: none; }
}

/* Backdrop */
.mdrawer-backdrop {
  position: fixed !important;   /* vedi nota su body > * sopra */
  inset: 0 !important;
  z-index: 9600 !important;     /* sopra .ag-chat (9500), sotto .mdrawer */
  background: rgba(4, 3, 2, .62);
  backdrop-filter: blur(2px);
  opacity: 0;
  transition: opacity .28s ease;
}
.mdrawer-backdrop.is-open { opacity: 1; }

/* Blocca lo scroll della pagina sotto */
body.mdrawer-lock { overflow: hidden; }

/* Il widget chatbot sparisce mentre il drawer e aperto: il backdrop e
   semi-trasparente, quindi la bolla resterebbe visibile in trasparenza
   e cliccabile sotto il menu. */
body.mdrawer-lock .ag-chat { display: none !important; }

/* --- Testata --- */
.mdrawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 16px 14px 18px;
  border-bottom: 1px solid var(--border);
  flex: 0 0 auto;
}
.mdrawer__brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  color: var(--gold-text);
  text-decoration: none;
}
.mdrawer__brand-icon { width: 22px; height: 22px; flex: 0 0 auto; }
.mdrawer__brand-name {
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: .12em;
  color: var(--fg-title);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mdrawer__close {
  width: 38px; height: 38px;
  flex: 0 0 auto;
  display: grid; place-items: center;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: transparent;
  color: var(--fg-muted);
  cursor: pointer;
  transition: border-color .18s ease, color .18s ease, background .18s ease;
}
.mdrawer__close svg { width: 18px; height: 18px; }
.mdrawer__close:hover {
  border-color: var(--gold);
  color: var(--gold-hover);
  background: var(--gold-tint-8);
}

/* --- Navigazione (area scrollabile) --- */
.mdrawer__nav {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 6px 0 12px;
  scrollbar-width: thin;
  scrollbar-color: var(--border-hi) transparent;
}
.mdrawer__nav::-webkit-scrollbar { width: 6px; }
.mdrawer__nav::-webkit-scrollbar-thumb { background: var(--border-hi); border-radius: 3px; }

/* Voce semplice */
.mdrawer__link {
  display: block;
  padding: 14px 18px;
  font-size: 15.5px;
  font-weight: 600;
  color: var(--fg);
  text-decoration: none;
  border-bottom: 1px solid var(--border-nav);
  transition: background .18s ease, color .18s ease;
}
.mdrawer__link:hover,
.mdrawer__link:active { background: var(--gold-tint-8); color: var(--gold-hover); }

/* Gruppo con sottomenu (details, chiuso di default) */
.mdrawer__group { border-bottom: 1px solid var(--border-nav); }
.mdrawer__group-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 18px;
  font-size: 15.5px;
  font-weight: 600;
  color: var(--fg);
  cursor: pointer;
  list-style: none;
  transition: background .18s ease, color .18s ease;
}
.mdrawer__group-btn::-webkit-details-marker { display: none; }
.mdrawer__group-btn:hover { background: var(--gold-tint-8); color: var(--gold-hover); }
.mdrawer__chev {
  width: 12px; height: 8px;
  flex: 0 0 auto;
  color: var(--gold-text);
  transition: transform .22s ease;
}
.mdrawer__group[open] > .mdrawer__group-btn { color: var(--gold-text); }
.mdrawer__group[open] .mdrawer__chev { transform: rotate(180deg); }

/* Sottovoci: compatte, rientrate, senza sottotitoli */
.mdrawer__sub {
  display: flex;
  flex-direction: column;
  padding: 2px 0 10px;
  background: var(--panel-3);
}
.mdrawer__sublink {
  padding: 11px 18px 11px 34px;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--fg-muted);
  text-decoration: none;
  position: relative;
  transition: color .18s ease, background .18s ease;
}
/* Trattino dorato come bullet */
.mdrawer__sublink::before {
  content: "";
  position: absolute;
  left: 18px;
  top: 50%;
  width: 8px;
  height: 1px;
  background: var(--gold);
  opacity: .5;
}
.mdrawer__sublink:hover,
.mdrawer__sublink:active { color: var(--gold-hover); background: var(--gold-tint-8); }
.mdrawer__sublink:hover::before { opacity: 1; }

/* --- CTA in fondo --- */
.mdrawer__cta {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 16px 16px;
  border-top: 1px solid var(--border);
  background: var(--panel-2);
}
.mdrawer__cta .btn { width: 100%; justify-content: center; }

/* Su schermi molto bassi (landscape) riduci le altezze */
@media (max-height: 520px) {
  .mdrawer__link,
  .mdrawer__group-btn { padding-top: 11px; padding-bottom: 11px; }
  .mdrawer__sublink   { padding-top: 9px;  padding-bottom: 9px; }
}

/* Il drawer esiste solo su mobile/tablet */
@media (min-width: 1081px) {
  .mdrawer,
  .mdrawer-backdrop { display: none !important; }
}



/* ============================================================
   AG-CHAT â€” Widget chatbot AI (floating)
   ============================================================ */
/* NB: `!important` è necessario perché styles-impact.css forza
   `position: relative; z-index: 1` su ogni figlio diretto del body
   (`:root:not([data-theme="light"]) body > *` — specificità 0,2,1).
   Senza di questo, il widget non fluttua e resta nel flusso pagina. */
.ag-chat {
  position: fixed !important;
  right: max(18px, env(safe-area-inset-right)) !important;
  bottom: max(18px, env(safe-area-inset-bottom)) !important;
  left: auto !important;
  top: auto !important;
  z-index: 9500 !important;
  font-family: inherit;
  color: var(--fg);
}

/* --- Pulsante flottante (chiuso) --- */
.ag-chat__fab {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 20px 14px 16px;
  border: 1px solid var(--border-strong);
  border-radius: 999px;
  background: linear-gradient(160deg, #1a1208, #0d0b09 70%);
  color: var(--gold-hi);
  font-weight: 700;
  font-size: 14.5px;
  letter-spacing: .02em;
  cursor: pointer;
  box-shadow:
    0 18px 32px -18px rgba(0, 0, 0, .75),
    0 2px 6px rgba(0, 0, 0, .35),
    inset 0 0 0 1px rgba(247, 227, 192, .06);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease, background .18s ease;
}
.ag-chat__fab:hover {
  transform: translateY(-2px);
  border-color: var(--gold);
  box-shadow:
    0 22px 40px -18px rgba(0, 0, 0, .8),
    0 4px 10px rgba(0, 0, 0, .45),
    inset 0 0 0 1px rgba(247, 227, 192, .12);
}
.ag-chat__fab:active { transform: translateY(0); }
.ag-chat__fab-icon { width: 22px; height: 22px; flex: 0 0 auto; }
.ag-chat__fab-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--success);
  box-shadow: 0 0 0 3px var(--success-halo);
  margin-left: 2px;
}

/* Quando la chat è aperta il FAB sparisce del tutto (display:none —
   non opacity, che lascerebbe l'elemento cliccabile/ingombrante). */
.ag-chat.is-open .ag-chat__fab { display: none !important; }

/* --- Pannello (aperto) ---
   La visibilità è pilotata SOLO dall'attributo [hidden] gestito dal JS:
   niente opacity/transform di partenza, così non può restare invisibile
   se una transizione non parte. Il pannello è `position: fixed` (non
   absolute) per non dipendere dal contenitore e non sbordare mai. */
.ag-chat__panel[hidden] { display: none !important; }

.ag-chat__panel {
  position: fixed !important;
  right: max(18px, env(safe-area-inset-right)) !important;
  bottom: calc(max(18px, env(safe-area-inset-bottom)) + 68px) !important;
  left: auto !important;
  top: auto !important;
  width: min(380px, calc(100vw - 32px));
  height: min(600px, calc(100vh - 130px));
  display: flex;
  flex-direction: column;
  background: var(--panel);
  border: 1px solid var(--border-hi);
  border-radius: 22px;
  overflow: hidden;
  z-index: 9501;
  /* Stato di default = VISIBILE. L'animazione è solo decorativa e NON usa
     fill-mode: se il browser non la esegue (reduced-motion, animazioni
     disabilitate, throttling) il pannello resta comunque opaco e visibile. */
  opacity: 1;
  animation: ag-chat-in .22s ease;
  box-shadow:
    0 40px 80px -32px rgba(0, 0, 0, .85),
    0 12px 24px -12px rgba(0, 0, 0, .55);
}
@keyframes ag-chat-in {
  from { opacity: 0; transform: translateY(12px) scale(.97); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .ag-chat__panel { animation: none; }
}

/* --- Head --- */
.ag-chat__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 14px 12px 16px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(201, 160, 99, .08), transparent);
}
.ag-chat__head-brand { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ag-chat__avatar {
  width: 38px; height: 38px; flex: 0 0 auto;
  border-radius: 50%;
  display: grid; place-items: center;
  background: var(--grad-gold);
  color: var(--btn-on-gold);
}
.ag-chat__avatar svg { width: 22px; height: 22px; }
.ag-chat__head-txt   { display: flex; flex-direction: column; min-width: 0; line-height: 1.15; }
.ag-chat__head-txt b { color: var(--fg-title); font-size: 14.5px; font-weight: 700; }
.ag-chat__head-txt em{ color: var(--fg-muted-3); font-style: normal; font-size: 12px; margin-top: 2px; }
.ag-chat__close {
  background: transparent;
  border: 0;
  color: var(--fg-muted);
  font-size: 28px; line-height: 1;
  width: 34px; height: 34px;
  border-radius: 50%;
  cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.ag-chat__close:hover { background: var(--gold-tint-8); color: var(--gold); }

/* --- Log --- */
.ag-chat__log {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 14px 14px 4px;
  scroll-behavior: smooth;
  scrollbar-width: thin;
  scrollbar-color: var(--border-hi) transparent;
}
.ag-chat__log::-webkit-scrollbar { width: 8px; }
.ag-chat__log::-webkit-scrollbar-thumb { background: var(--border-hi); border-radius: 4px; }

.ag-chat__msg {
  display: flex;
  margin: 6px 0 8px;
}
.ag-chat__msg--user      { justify-content: flex-end; }
.ag-chat__msg--assistant { justify-content: flex-start; }
.ag-chat__bubble {
  max-width: 84%;
  padding: 10px 14px;
  border-radius: 16px;
  font-size: 14.5px;
  line-height: 1.45;
  color: var(--fg);
  border: 1px solid var(--border);
  background: var(--panel-2);
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow-wrap: anywhere;
}
.ag-chat__msg--user .ag-chat__bubble {
  color: var(--btn-on-gold);
  background: var(--grad-gold);
  border-color: transparent;
  border-bottom-right-radius: 6px;
}
.ag-chat__msg--assistant .ag-chat__bubble {
  border-bottom-left-radius: 6px;
}

.ag-chat__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: -2px 0 10px 6px;
}
.ag-chat__action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--border-hi);
  background: var(--panel-3);
  color: var(--gold-text);
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
  transition: background .18s ease, border-color .18s ease, color .18s ease;
}
.ag-chat__action:hover {
  border-color: var(--gold);
  background: var(--gold-tint-8);
  color: var(--gold-hover);
}

/* Typing dots */
.ag-chat__typing .ag-chat__bubble {
  display: inline-flex;
  gap: 4px;
  padding: 14px 16px;
}
.ag-chat__dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--fg-muted-3);
  animation: ag-chat-dot 1s infinite ease-in-out;
}
.ag-chat__dot:nth-child(2) { animation-delay: .15s; }
.ag-chat__dot:nth-child(3) { animation-delay: .3s; }
@keyframes ag-chat-dot {
  0%, 60%, 100% { transform: translateY(0); opacity: .4; }
  30%           { transform: translateY(-3px); opacity: 1; }
}

/* --- Chip suggerimenti --- */
.ag-chat__suggestions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 4px 14px 8px;
  border-top: 1px dashed var(--border);
}
.ag-chat__chip {
  padding: 6px 12px;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--gold-text);
  background: var(--gold-tint-8);
  border: 1px solid var(--border);
  border-radius: 999px;
  cursor: pointer;
  transition: border-color .18s ease, background .18s ease, color .18s ease;
}
.ag-chat__chip:hover {
  border-color: var(--gold);
  color: var(--gold-hover);
  background: var(--gold-tint-16);
}

/* --- Form input --- */
.ag-chat__form {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  padding: 10px 12px;
  border-top: 1px solid var(--border);
  background: var(--panel-3);
}
.ag-chat__form textarea {
  flex: 1 1 auto;
  min-height: 40px;
  max-height: 140px;
  padding: 10px 12px;
  resize: none;
  border-radius: 12px;
  border: 1px solid var(--border-inp);
  background: var(--panel);
  color: var(--fg);
  font: inherit;
  line-height: 1.35;
  outline: none;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.ag-chat__form textarea:focus {
  border-color: var(--gold);
  box-shadow: 0 0 0 3px var(--gold-tint-16);
}
.ag-chat__send {
  width: 42px; height: 42px;
  flex: 0 0 auto;
  border: 0;
  border-radius: 12px;
  background: var(--grad-gold);
  color: var(--btn-on-gold);
  cursor: pointer;
  display: grid; place-items: center;
  transition: filter .18s ease, transform .12s ease;
}
.ag-chat__send:hover:not(:disabled) { filter: brightness(1.08); }
.ag-chat__send:active { transform: scale(.94); }
.ag-chat__send:disabled { opacity: .55; cursor: default; }
.ag-chat__send svg { width: 20px; height: 20px; }

/* --- Footer contatti --- */
.ag-chat__foot {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  padding: 8px 12px 12px;
  border-top: 1px solid var(--border);
  background: var(--panel-2);
  font-size: 12px;
}
.ag-chat__foot-lbl {
  color: var(--fg-muted-3);
  margin-right: 4px;
  flex-basis: 100%;
}
.ag-chat__foot-a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid var(--border);
  color: var(--gold-text);
  text-decoration: none;
  transition: border-color .18s ease, background .18s ease, color .18s ease;
}
.ag-chat__foot-a svg { width: 14px; height: 14px; }
.ag-chat__foot-a:hover {
  border-color: var(--gold);
  color: var(--gold-hover);
  background: var(--gold-tint-8);
}
.ag-chat__foot-a--wa:hover { border-color: #4bd469; color: #4bd469; background: rgba(75, 212, 105, .08); }

/* AccessibilitÃ : helper visually-hidden se non esistente altrove */
.ag-chat .visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* --- Responsive ---------------------------------------------------
   Su mobile il pannello diventa un overlay a TUTTO SCHERMO ancorato a
   inset:0. Niente calc() su 100vw/100vh (che su iOS Safari includono le
   barre e causano overflow orizzontale): usiamo inset + 100dvh, con
   fallback a 100% per i browser senza dvh. */
@media (max-width: 620px) {
  .ag-chat__panel {
    right:  0 !important;
    left:   0 !important;
    top:    0 !important;
    bottom: 0 !important;
    width:  100% !important;
    height: 100% !important;
    height: 100dvh !important;
    max-width:  100% !important;
    max-height: 100% !important;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    /* Rispetta notch/hombre-bar iOS */
    padding-top:    env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
  }
  .ag-chat__fab-text { display: none; }
  .ag-chat__fab      { padding: 14px; }
  /* Il FAB resta un cerchio compatto, sempre dentro lo schermo */
  .ag-chat {
    right:  max(14px, env(safe-area-inset-right)) !important;
    bottom: max(14px, env(safe-area-inset-bottom)) !important;
  }
}

/* Blocca lo scroll della pagina mentre la chat è aperta a schermo intero */
@media (max-width: 620px) {
  body.ag-chat-lock { overflow: hidden !important; }
}