/* Montserrat ospitato sul sito (nessuna connessione a Google Fonts). Licenza: assets/fonts/OFL.txt */
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 400; font-display: swap; src: url("assets/fonts/Montserrat-Regular.woff2") format("woff2"); }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 500; font-display: swap; src: url("assets/fonts/Montserrat-Medium.woff2") format("woff2"); }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 600; font-display: swap; src: url("assets/fonts/Montserrat-SemiBold.woff2") format("woff2"); }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 700; font-display: swap; src: url("assets/fonts/Montserrat-Bold.woff2") format("woff2"); }

:root {
  --paper: #fbfaf8;
  --ivory: #f7f5f1;
  --stone: #e6e3df;
  --ink: #2e2e31;
  --muted: #6e6a66;
  --line: #ded9d2;
  --blue: #a8bed2;
  --blue-dark: #6f8fae;
  --green: #2f3f35;
  --bronze: #8d7a64;
  --wood: #d6b07a;
  --black: #111113;
  --radius: 22px;
  --shadow: 0 22px 60px rgba(31,30,28,.09);
  --header-h: 84px;
  --banner-h: 0px; /* nessun banner nell'HTML attuale */
  --viewport-content: calc(100svh - var(--header-h) - 1px - var(--banner-h)); /* 1px = bordo header */
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 12px); }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: "Montserrat", Arial, Helvetica, sans-serif;
  font-weight: 400;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { color: inherit; }
button, input, textarea, select { font: inherit; }

.shell {
  width: min(1240px, calc(100% - clamp(28px, 6vw, 96px)));
  margin-inline: auto;
}

.section {
  position: relative;
  overflow: hidden;
  padding: clamp(76px, 9vh, 118px) 0;
}
.viewport-section {
  min-height: var(--viewport-content);
  display: flex;
  align-items: center;
}
.viewport-section > .shell { width: min(1240px, calc(100% - clamp(28px, 6vw, 96px))); }
.section-stone { background: var(--ivory); }
.section-dark { background: #20201f; color: #f6f3ed; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(251,250,248,.94);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(222,217,210,.85);
}
.header-inner {
  height: var(--header-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 34px;
}
.logo-link { display: inline-flex; align-items: center; min-width: 0; }
.logo { width: clamp(145px, 16vw, 190px); height: auto; }
.main-nav { display: flex; align-items: center; gap: clamp(14px, 2vw, 28px); }
.main-nav a {
  text-decoration: none;
  font-size: 11px;
  font-weight: 600;
  color: #44433f;
  white-space: nowrap;
  position: relative;
}
.main-nav a::after {
  content: "";
  position: absolute;
  left: 0; right: 100%; bottom: -8px;
  height: 1px; background: var(--blue-dark);
  transition: right .25s ease;
}
.main-nav a:hover::after, .main-nav a:focus-visible::after { right: 0; }
.menu-toggle { display: none; background: none; border: 0; padding: 10px; cursor: pointer; }
.menu-toggle span { display: block; width: 25px; height: 2px; background: var(--ink); margin: 5px 0; border-radius: 4px; transition: .2s ease; }

.eyebrow {
  margin: 0 0 18px;
  color: var(--blue-dark);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .19em;
  text-transform: uppercase;
}
.eyebrow.light { color: #dbe9f3; }
h1, h2, h3, blockquote {
  font-family: "Montserrat", Arial, Helvetica, sans-serif;
  margin-top: 0;
  letter-spacing: -.045em;
}
h1 { font-size: clamp(46px, 6.2vw, 88px); line-height: .98; font-weight: 500; margin-bottom: 26px; }
h2 { font-size: clamp(36px, 4.5vw, 66px); line-height: 1.04; font-weight: 500; margin-bottom: 24px; }
h3 { font-size: clamp(24px, 2.4vw, 34px); line-height: 1.12; font-weight: 500; }
p { margin-top: 0; }
.lead { font-size: clamp(17px, 1.6vw, 22px); max-width: 640px; }
.lead-small { font-size: clamp(19px, 2vw, 28px); line-height: 1.4; font-weight: 500; }
.micro-note { font-size: 11px; color: var(--muted); margin-top: 24px; }
.centered-note { text-align: center; max-width: 800px; margin: 26px auto 0; }

.button {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px;
  padding: 0 22px;
  border-radius: 3px;
  text-decoration: none;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  transition: transform .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
}
.button:hover { transform: translateY(-2px); }
.button-blue { background: var(--blue-dark); color: white; }
.button-light { background: rgba(255,255,255,.94); color: var(--ink); border: 1px solid rgba(255,255,255,.8); }
.disabled-link { pointer-events: none; opacity: .7; }

/* HERO: full visual stage, closer to the approved mockup */
.hero { padding: clamp(22px, 4vh, 48px) 0; background: var(--paper); }
.hero-stage {
  position: relative;
  min-height: min(760px, calc(var(--viewport-content) - 44px));
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
  display: flex;
  align-items: stretch;
  background: #302f2c;
}
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(17,17,19,.76) 0%, rgba(17,17,19,.52) 38%, rgba(17,17,19,.12) 72%, rgba(17,17,19,.03) 100%); }
.hero-copy {
  position: relative; z-index: 2;
  color: white;
  width: min(630px, 58%);
  align-self: center;
  padding: clamp(48px, 8vw, 102px);
}
.hero-copy .lead { color: rgba(255,255,255,.87); }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.hero-proof {
  position: absolute; z-index: 3;
  left: 0; right: 0; bottom: 0;
  display: grid; grid-template-columns: repeat(3,1fr);
  background: rgba(251,250,248,.94);
  color: var(--ink);
  backdrop-filter: blur(12px);
  border-top: 1px solid rgba(255,255,255,.55);
}
.hero-proof span { padding: 21px 30px; text-align: center; font-size: 11px; font-weight: 600; border-right: 1px solid var(--line); }
.hero-proof span:last-child { border-right: 0; }
.hero-proof span::before { content: "○"; color: var(--blue-dark); margin-right: 10px; }

.section-head { max-width: 860px; margin-bottom: clamp(40px,6vh,62px); }
.section-head.centered { text-align: center; margin-inline: auto; }
.section-head > p:last-child { font-size: clamp(15px, 1.4vw, 18px); color: var(--muted); max-width: 760px; }
.section-head.centered > p:last-child { margin-inline: auto; }

/* BRAND - directly follows the 4 cards + 2 images composition from the mockup */
.brand-mockup-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(18px,3vw,34px); align-items: stretch; }
.brand-card-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; }
.brand-card {
  min-height: 250px;
  padding: clamp(26px,3.2vw,46px) clamp(22px,3vw,38px);
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
  border: 1px solid #dfdad2;
  background: #f7f5f1;
}
.brand-card-warm { background: #f5eadc; }
.brand-card-blue { background: #e7eef4; }
.brand-card span { color: var(--bronze); font-size: 9px; letter-spacing: .16em; font-weight: 700; }
.brand-card strong { display: block; margin: 22px 0 16px; font-size: clamp(25px,3vw,42px); line-height: 1; font-weight: 500; letter-spacing: -.04em; }
/* Loghi dei brand: dimensionati per un peso visivo simile (proporzioni molto diverse tra loro) */
/* Allineamento comune nelle 4 card: etichetta / area logo di altezza fissa / testo da 2 righe.
   Così etichette, loghi e testi stanno alla stessa altezza in tutte le card. */
.brand-card { --logo-slot: clamp(46px, 6.4vh, 64px); display: grid; grid-template-rows: auto var(--logo-slot) auto; justify-items: center; align-content: center; row-gap: clamp(12px, 2.2vh, 22px); }
.brand-card p { min-height: calc(2em * 1.55); }
.brand-logo { display: block; width: auto; max-width: 88%; object-fit: contain; margin: 0; align-self: center; }
.brand-logo-theo     { height: clamp(46px, 6.4vh, 64px); }
.brand-logo-blackfin { height: clamp(16px, 2.2vh, 22px); }
.brand-logo-feb31    { height: clamp(30px, 4.2vh, 42px); }
.brand-logo-etnia    { height: clamp(28px, 4vh, 40px); }
.brand-card p { color: var(--muted); font-size: 12px; line-height: 1.55; margin-bottom: 0; max-width: 260px; }
.brand-photo-stack { display: grid; grid-template-rows: 1.25fr .75fr; gap: 12px; min-height: 512px; }
.brand-photo-stack figure { margin: 0; overflow: hidden; min-height: 0; }
.brand-photo-stack img { width: 100%; height: 100%; object-fit: cover; }

.split-heading { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(40px,7vw,90px); align-items: end; margin-bottom: clamp(42px,6vh,62px); }
.split-heading > p { color: var(--muted); font-size: clamp(14px,1.4vw,17px); margin-bottom: 12px; }
.split-heading-light > p { color: rgba(255,255,255,.66); }

/* Titolo a piena larghezza con testo sotto (sezione Lenti & assistenza) */
.stack-heading { margin-bottom: clamp(28px,4.5vh,48px); }
.stack-heading h2 { max-width: none; margin-bottom: clamp(12px,2vh,20px); }
.stack-heading > p { max-width: none; margin-bottom: 0; font-size: clamp(14px,1.4vw,17px); color: var(--muted); }
.stack-heading-light > p { color: rgba(255,255,255,.66); }

.collection-brand-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.collection-brand {
  min-height: clamp(270px, 33vh, 390px);
  padding: clamp(34px, 5vw, 62px);
  display: flex; flex-direction: column; justify-content: flex-end;
  border-radius: var(--radius);
  overflow: hidden;
  position: relative;
  border: 1px solid var(--line);
}
.collection-brand::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at 75% 20%, rgba(255,255,255,.95), transparent 34%), linear-gradient(135deg, transparent 55%, rgba(141,122,100,.09));
}
.collection-brand-h1 { background: #f3e7d8; }
.collection-brand-enjoy { background: #e7eef4; }
.collection-brand > * { position: relative; z-index: 1; }
.collection-brand h3 { margin: 2px 0 18px; font-weight: 500; }
.collection-brand h3 { display: flex; justify-content: center; align-items: center; height: var(--coll-logo-h); } /* loghi H1N1 / #ENJOY centrati in un'area di altezza fissa */
/* contenuto allineato in alto: etichette e loghi alla stessa altezza nelle due card */
.collection-brand { --coll-logo-h: clamp(44px, 4.6vw, 66px); justify-content: flex-start; }
.collection-brand .kicker { margin-top: 0; }
.collection-brand .kicker { text-align: center; } /* etichetta sopra il logo centrata */
/* loghi ritagliati: dimensionati in altezza (stessa resa visiva dei PNG originali con margini trasparenti) */
.collection-logo { width: auto; height: var(--coll-logo-h); }
.collection-logo-enjoy { height: clamp(36px, 3.7vw, 52px); }
.collection-brand p:last-child { max-width: 520px; color: var(--muted); margin-bottom: 0; }
.kicker { font-size: 9px; font-weight: 700; letter-spacing: .16em; color: var(--bronze); }

.price-panel {
  margin-top: 24px;
  padding: clamp(28px,4vw,46px);
  border: 1px solid #d9cab6;
  border-radius: var(--radius);
  display: grid;
  grid-template-columns: .72fr 1.28fr;
  gap: clamp(28px,4vw,48px);
  background: linear-gradient(135deg,#fffaf4 0%,#fbfaf8 100%);
}
.price-intro h3 { font-size: clamp(28px,3.2vw,42px); }
.price-intro p:last-child { color: var(--muted); }
.price-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; }
.price-card { padding: 22px; background: white; border: 1px solid var(--line); min-height: 142px; display: flex; flex-direction: column; justify-content: space-between; }
.price-card span, .price-card small { font-size: 11px; color: var(--muted); }
.price-card strong { font-size: clamp(38px,4vw,54px); font-weight: 500; color: var(--blue-dark); line-height: 1; letter-spacing: -.05em; }
.price-note { grid-column: 1 / -1; padding-top: 13px; border-top: 1px solid #e3d8ca; font-size: 11px; color: var(--muted); }

.assistance-visual { margin: 4px 0 32px; }
.assistance-visual img { width: 100%; height: clamp(280px,42vh,460px); object-fit: cover; object-position: center 45%; border-radius: var(--radius); filter: saturate(.9); }
.service-grid { display: grid; grid-template-columns: repeat(4,1fr); border-top: 1px solid rgba(255,255,255,.15); }
.service-card { padding: 26px 22px 8px 0; border-right: 1px solid rgba(255,255,255,.15); margin-right: 22px; }
.service-card:last-child { border-right: 0; }
.service-number { font-size: 10px; letter-spacing: .16em; color: var(--blue); }
.service-icon { display: block; width: clamp(30px, 2.6vw, 38px); height: auto; }
.service-card h3 { font-size: clamp(19px,2vw,25px); margin: 18px 0 10px; font-weight: 500; letter-spacing: -.03em; }
.service-card p { font-size: 13px; color: rgba(255,255,255,.62); }

.second-grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(40px,6vw,72px); align-items: center; }
.second-copy > p:not(.eyebrow):not(.second-emphasis) { color: var(--muted); font-size: clamp(14px,1.4vw,17px); }
.use-list { list-style: none; margin: 28px 0; padding: 0; border-top: 1px solid var(--line); }
.use-list li { padding: 13px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.use-list li::before { content: "↗"; color: var(--blue-dark); margin-right: 12px; }
.second-emphasis { padding: 20px 22px; background: #edf2f5; border-left: 3px solid var(--blue-dark); font-size: 13px; }
.real-store-card { margin: 0; }
.real-store-card img { width: 100%; height: clamp(420px,64vh,680px); object-fit: cover; border-radius: var(--radius); box-shadow: var(--shadow); }
.real-store-card figcaption { font-size: 10px; color: var(--muted); margin-top: 12px; text-align: right; }

.competence-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(42px,6vw,80px); align-items: center; }
.competence-grid > div > p:not(.eyebrow) { font-size: clamp(14px,1.4vw,17px); color: var(--muted); }
blockquote { margin: 34px 0 0; padding: 20px 0 20px 25px; border-left: 2px solid var(--bronze); font-size: clamp(20px,2.4vw,30px); line-height: 1.35; font-weight: 500; }
.store-detail { margin: 0; }
.store-detail img { width: 100%; height: clamp(400px,58vh,630px); object-fit: cover; border-radius: var(--radius); box-shadow: var(--shadow); }

.contactology-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(42px,6vw,72px); align-items: center; }
.contactology-copy > p:not(.eyebrow) { color: var(--muted); font-size: clamp(14px,1.4vw,17px); }
.ortho-box { margin-top: 32px; padding: 24px; border: 1px solid var(--line); background: var(--ivory); }
.ortho-box span { font-size: 10px; font-weight: 700; letter-spacing: .12em; color: var(--bronze); }
.ortho-box p { margin: 9px 0 0; font-size: 13px; }
.contactology-real { margin: 0; }
.contactology-real img { width: 100%; height: clamp(410px,58vh,620px); object-fit: cover; border-radius: var(--radius); }
.contactology-real figcaption { margin-top: 10px; color: var(--muted); font-size: 10px; text-align: right; }

.territory { background: #f3f0ea; }
.territory-head { text-align: center; max-width: 820px; margin: 0 auto clamp(38px,5vh,60px); }
.territory-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(30px,4vw,54px); align-items: stretch; }
.territory-main { width: 100%; height: 100%; min-height: clamp(420px,60vh,650px); object-fit: cover; border-radius: var(--radius); }
.territory-copy { display: flex; flex-direction: column; justify-content: center; }
.territory-copy p { color: var(--muted); font-size: clamp(14px,1.4vw,17px); }
.territory-copy img { margin-top: 22px; width: 100%; height: clamp(180px,25vh,260px); object-fit: cover; border-radius: 14px; }
.territory-badge { margin-top: 18px; padding: 16px 18px; border: 1px solid #d2b992; font-size: 16px; font-weight: 500; }

.section-contact { background: var(--green); color: white; }
.contact-grid { display: grid; grid-template-columns: 1fr .85fr; gap: clamp(44px,6vw,80px); align-items: center; }
.contact-title .eyebrow { color: #bbcfde; }
.contact-title p:last-child { color: rgba(255,255,255,.68); max-width: 620px; }
.contact-card { background: #f9f7f3; color: var(--ink); padding: clamp(28px,4vw,38px); border-radius: var(--radius); }
.contact-logo { width: 160px; margin-bottom: 22px; }
.contact-row { display: grid; grid-template-columns: 120px 1fr; gap: 20px; padding: 12px 0; border-bottom: 1px solid var(--line); font-size: 12px; }
.contact-row span { color: var(--muted); }
.contact-row strong { font-weight: 600; line-height: 1.5; }
.contact-card .button { margin-top: 24px; width: 100%; }

.contact-page-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(44px,6vw,80px); align-items: start; }
.contact-form-col .eyebrow { color: #bbcfde; }
.contact-form-col h1 { color: white; font-size: clamp(34px, 4vw, 56px); }
.contact-form-col .lead { color: rgba(255,255,255,.72); margin-bottom: clamp(28px,4vh,40px); }

.contact-form { display: flex; flex-direction: column; gap: 18px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { display: flex; flex-direction: column; gap: 8px; }
.field label { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.78); }
.field-optional { text-transform: none; font-weight: 400; letter-spacing: 0; color: rgba(255,255,255,.5); }
.field input, .field select, .field textarea {
  border: 1px solid rgba(255,255,255,.28);
  background: rgba(255,255,255,.06);
  color: white;
  border-radius: 6px;
  padding: 13px 14px;
  font-size: 13px;
  font-family: inherit;
  resize: vertical;
  transition: border-color .2s ease, background .2s ease;
}
.field input::placeholder, .field textarea::placeholder { color: rgba(255,255,255,.45); }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--blue); background: rgba(255,255,255,.1); }
.field select { color-scheme: dark; }
.field select option { color: var(--ink); background: #fff; }
.field-hidden { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.form-actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.form-actions .button { min-width: 200px; border: 0; cursor: pointer; }
.form-actions .button:disabled { opacity: .6; cursor: progress; transform: none; }
.form-status { margin: 0; font-size: 12px; font-weight: 600; }
.form-status[data-state="ok"] { color: #9fd8b0; }
.form-status[data-state="error"] { color: #e7a8a8; }
.contact-form-col .micro-note { color: rgba(255,255,255,.5); }

.map-embed { margin-top: 20px; border-radius: 12px; overflow: hidden; border: 1px solid var(--line); }
.map-embed iframe { width: 100%; height: 220px; border: 0; display: block; }
.map-consent { --map-h: 220px; position: relative; height: var(--map-h); background: #ebe7df; }
.map-consent iframe { height: 100% !important; }
.map-sketch { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.map-consent-panel {
  position: absolute; left: 12px; right: 12px; bottom: 12px;
  padding: 12px 14px; border-radius: 10px;
  background: rgba(251,250,248,.94); backdrop-filter: blur(6px);
  box-shadow: 0 6px 18px rgba(31,30,28,.12);
  display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 14px;
}
.map-consent-title { margin: 0; font-size: 12px; line-height: 1.35; font-weight: 600; color: var(--ink); }
.map-consent-button {
  grid-row: span 2; border: 0; cursor: pointer;
  min-height: 40px; padding: 0 16px; border-radius: 3px;
  background: var(--blue-dark); color: #fff;
  font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  transition: background .2s ease;
}
.map-consent-button:hover, .map-consent-button:focus-visible { background: #5c7d9c; }
.map-consent-note { margin: 0; font-size: 10px; line-height: 1.45; color: var(--muted); }
.map-consent-note a { color: var(--blue-dark); }
@media (max-width: 420px) {
  .map-consent { --map-h: 260px; }
  .map-consent-panel { grid-template-columns: 1fr; }
  .map-consent-button { grid-row: auto; width: 100%; order: 3; }
}

.text-link {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 22px;
  color: #cfe0eb;
  font-size: 12px; font-weight: 700; letter-spacing: .04em;
  text-decoration: none;
  border-bottom: 1px solid rgba(207,224,235,.45);
  padding-bottom: 2px;
  transition: border-color .2s ease, color .2s ease;
}
.text-link:hover { color: #fff; border-color: #fff; }
/* su fondo chiaro il link deve essere scuro */
.contactology-copy .text-link { color: var(--blue-dark); border-bottom-color: rgba(111,143,174,.45); }
.contactology-copy .text-link:hover { color: var(--ink); border-color: var(--ink); }
.maps-link { text-decoration: underline; text-decoration-color: var(--blue-dark); text-underline-offset: 3px; }
.maps-link:hover { color: var(--blue-dark); }

.footer { padding: 36px 0; background: #171716; color: rgba(255,255,255,.6); }
.footer-inner { display: grid; grid-template-columns: 180px 1fr auto; gap: 30px; align-items: center; }
.footer img { width: 150px; background: white; padding: 8px 10px; border-radius: 4px; }
.footer p { margin: 0; font-size: 10px; max-width: 700px; }
.footer a { font-size: 11px; color: white; text-decoration: none; }

.reveal { opacity: 0; transform: translateY(18px); transition: opacity .65s ease, transform .65s ease; }
.reveal.visible { opacity: 1; transform: none; }
.delay-1 { transition-delay: .08s; }
.delay-2 { transition-delay: .16s; }
.delay-3 { transition-delay: .24s; }

/* Casella informativa privacy (modulo contatti, fondo scuro) */
.field-check { display: flex; align-items: flex-start; gap: 12px; margin-top: 4px; }
.field-check input { flex: none; width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--blue); cursor: pointer; }
.field-check label { font-size: 13px; line-height: 1.5; color: rgba(255,255,255,.85); cursor: pointer; }
.field-check a { color: #cfe0eb; text-underline-offset: 3px; }
.field-check a:hover { color: #fff; }
.contact-form .micro-note { margin-top: 0; line-height: 1.55; }
.footer p a { font-size: inherit; color: rgba(255,255,255,.8); text-decoration: underline; text-underline-offset: 3px; }

/* Pagina informativa privacy */
.legal-page { background: var(--paper); }
.legal-shell { max-width: 820px; }
.legal-page h1 { font-size: clamp(32px, 4vw, 52px); line-height: 1.08; }
.legal-page h2 { font-size: clamp(19px, 1.8vw, 23px); letter-spacing: -.02em; line-height: 1.3; margin: 38px 0 10px; font-weight: 600; }
.legal-page p, .legal-page li { font-size: 15px; color: #4b4945; }
.legal-page ul { padding-left: 20px; margin: 0 0 16px; }
.legal-page li { margin-bottom: 6px; }
.legal-page a:not(.button) { color: var(--blue-dark); text-underline-offset: 3px; }
.legal-lead { font-size: 17px !important; }
.legal-page h3 { font-size: 16px; letter-spacing: -.01em; margin: 22px 0 6px; font-weight: 600; }
.legal-page h2 { scroll-margin-top: calc(var(--header-h) + 16px); }
.legal-toc { margin: 30px 0 10px; padding: 20px 24px; background: var(--ivory); border: 1px solid var(--line); border-radius: 12px; }
.legal-toc > p { margin: 0 0 8px; font-size: 11px !important; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--bronze) !important; }
.legal-toc ol { margin: 0; padding-left: 20px; columns: 2; column-gap: 32px; }
.legal-toc li { font-size: 14px !important; margin-bottom: 4px; break-inside: avoid; }
.legal-service { margin: 18px 0; padding: 20px 24px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.legal-service h3 { margin-top: 0; }
.legal-service dl { margin: 14px 0 0; display: grid; gap: 6px; }
.legal-service dl > div { display: grid; grid-template-columns: 170px 1fr; gap: 14px; font-size: 14px; padding-top: 6px; border-top: 1px solid var(--line); }
.legal-service dt { color: var(--muted); }
.legal-service dd { margin: 0; color: var(--ink); }
.legal-defs dt { font-weight: 600; font-size: 15px; margin-top: 14px; }
.legal-defs dd { margin: 2px 0 0; font-size: 15px; color: #4b4945; }
@media (max-width: 680px) {
  .legal-toc ol { columns: 1; }
  .legal-service { padding: 16px; }
  .legal-service dl > div { grid-template-columns: 1fr; gap: 0; }
}
.legal-updated { margin-top: 38px; font-size: 12px !important; color: var(--muted) !important; }
.legal-page .button { margin-top: 10px; }

/* ============================================================
   DESKTOP: ogni sezione entra nello schermo (altezza viewport − header).
   Le dimensioni verticali scalano con l'altezza disponibile (--fit).
   ============================================================ */
@media (min-width: 1061px) {
  :root { --fit: var(--viewport-content); }
  .section { padding: clamp(24px, calc(var(--fit) * .055), 72px) 0; }
  .viewport-section { height: var(--viewport-content); min-height: 0; }
  h2 { font-size: clamp(30px, min(4.5vw, calc(var(--fit) * .068)), 66px); margin-bottom: clamp(12px, calc(var(--fit) * .025), 24px); }
  h3 { font-size: clamp(20px, min(2.4vw, calc(var(--fit) * .04)), 34px); }

  /* HERO */
  .hero { padding: clamp(14px, calc(var(--fit) * .035), 40px) 0; }
  .hero-stage { min-height: 0; height: calc(var(--fit) - 2 * clamp(14px, calc(var(--fit) * .035), 40px)); max-height: 820px; }
  h1 { font-size: clamp(42px, min(6.2vw, calc(var(--fit) * .1)), 88px); }
  .hero-copy { padding-block: clamp(32px, calc(var(--fit) * .08), 96px) clamp(80px, calc(var(--fit) * .12), 110px); }
  .hero-actions { margin-top: clamp(16px, calc(var(--fit) * .035), 32px); }
  .hero-proof span { padding-block: clamp(12px, calc(var(--fit) * .025), 21px); }

  /* BRAND */
  .section-head { margin-bottom: clamp(18px, calc(var(--fit) * .04), 56px); }
  .brand-card { min-height: clamp(130px, calc(var(--fit) * .25), 250px); padding-block: clamp(14px, calc(var(--fit) * .035), 40px); }
  .brand-card strong { margin: clamp(10px, calc(var(--fit) * .022), 22px) 0 clamp(8px, calc(var(--fit) * .016), 16px); font-size: clamp(24px, min(3vw, calc(var(--fit) * .045)), 42px); }
  .brand-photo-stack { min-height: 0; }
  .brand-photo-stack figure { position: relative; }
  .brand-photo-stack img { position: absolute; inset: 0; }
  .centered-note { margin-top: clamp(10px, calc(var(--fit) * .02), 26px); }

  /* NOSTRE COLLEZIONI */
  .split-heading { grid-template-columns: 1.5fr .8fr; margin-bottom: clamp(16px, calc(var(--fit) * .035), 56px); gap: clamp(32px,5vw,80px); }
  .split-heading > p { margin-bottom: 6px; }
  .collection-brand { min-height: clamp(120px, calc(var(--fit) * .2), 300px); padding: clamp(18px, calc(var(--fit) * .04), 56px) clamp(28px,4vw,56px); }
  .collection-brand h3 { margin-bottom: clamp(8px, calc(var(--fit) * .018), 18px); }
  .collection-brand { --coll-logo-h: clamp(36px, min(4.6vw, calc(var(--fit) * .066)), 66px); }
  .collection-logo-enjoy { height: clamp(30px, min(3.7vw, calc(var(--fit) * .052)), 52px); }
  .kicker { margin-bottom: clamp(6px, calc(var(--fit) * .012), 14px); }
  .price-panel { margin-top: clamp(12px, calc(var(--fit) * .025), 24px); padding: clamp(16px, calc(var(--fit) * .035), 42px) clamp(24px,3.5vw,44px); align-items: center; grid-template-columns: .62fr 1.38fr; }
  .price-intro h3 { font-size: clamp(20px, min(2.4vw, calc(var(--fit) * .038)), 36px); margin-bottom: clamp(8px, calc(var(--fit) * .015), 16px); }
  .price-intro .eyebrow { margin-bottom: clamp(6px, calc(var(--fit) * .015), 18px); }
  .price-intro p:last-child { font-size: 13px; line-height: 1.5; margin-bottom: 0; }
  .price-grid { grid-template-columns: repeat(4, 1fr); }
  .price-card { min-height: clamp(100px, calc(var(--fit) * .15), 150px); padding: clamp(12px, calc(var(--fit) * .022), 22px) 16px; gap: 8px; }
  .price-card strong { font-size: clamp(30px, min(3.2vw, calc(var(--fit) * .055)), 52px); }
  .price-card span, .price-card small { font-size: 10px; line-height: 1.4; }

  /* SECONDO OCCHIALE */
  .real-store-card img { height: clamp(260px, calc(var(--fit) * .74), 680px); }
  .use-list { margin: clamp(12px, calc(var(--fit) * .03), 28px) 0; }
  .use-list li { padding: clamp(6px, calc(var(--fit) * .014), 13px) 0; }
  .second-emphasis { padding: clamp(12px, calc(var(--fit) * .022), 20px) 22px; margin-bottom: 0; }

  /* LENTI & ASSISTENZA */
  .assistance-visual { margin: 0 0 clamp(14px, calc(var(--fit) * .03), 32px); }
  .assistance-visual img { height: clamp(140px, calc(var(--fit) * .3), 440px); }
  .service-card { padding-top: clamp(12px, calc(var(--fit) * .028), 26px); }
  .service-card h3 { margin: clamp(8px, calc(var(--fit) * .018), 18px) 0 clamp(4px, calc(var(--fit) * .01), 10px); }
  .service-icon { width: clamp(28px, min(2.6vw, calc(var(--fit) * .045)), 38px); }
  .service-card p { margin-bottom: 0; line-height: 1.5; }

  /* CONTATTOLOGIA */
  .contactology-real img { height: clamp(260px, calc(var(--fit) * .7), 620px); }
  .contactology-copy > p:not(.eyebrow) { line-height: 1.55; }
  .ortho-box { margin-top: clamp(14px, calc(var(--fit) * .03), 32px); padding: clamp(14px, calc(var(--fit) * .025), 24px) 24px; }
  .contactology-copy .text-link { margin-top: clamp(12px, calc(var(--fit) * .025), 22px); }

  /* TERRITORIO */
  .territory-head { margin-bottom: clamp(16px, calc(var(--fit) * .035), 56px); }
  .territory-head h2 { margin-bottom: 8px; }
  .territory-head .lead-small { margin-bottom: 0; }
  .territory-main { min-height: 0; height: clamp(240px, calc(var(--fit) * .62), 640px); }
  .territory-copy img { height: clamp(110px, calc(var(--fit) * .22), 260px); margin-top: clamp(8px, calc(var(--fit) * .02), 22px); }
  .territory-copy p { margin-bottom: clamp(8px, calc(var(--fit) * .018), 16px); line-height: 1.5; }

  /* CONTATTI */
  .contact-card { padding: clamp(18px, calc(var(--fit) * .04), 38px) clamp(24px,3vw,38px); }
  .contact-logo { width: clamp(120px, calc(var(--fit) * .2), 160px); margin-bottom: clamp(8px, calc(var(--fit) * .025), 22px); }
  .contact-row { padding: clamp(6px, calc(var(--fit) * .014), 12px) 0; }
  .contact-card .button { margin-top: clamp(12px, calc(var(--fit) * .028), 24px); min-height: 44px; }

  /* PAGINA CONTATTI: modulo + scheda con mappa possono superare lo schermo,
     quindi la sezione cresce invece di tagliare il contenuto */
  #modulo-contatti { height: auto; min-height: var(--viewport-content); }
  .contact-page-grid { align-items: center; }
  .contact-form-col h1 { margin-bottom: clamp(12px, calc(var(--fit) * .025), 26px); }
  .contact-form { gap: clamp(12px, calc(var(--fit) * .02), 18px); }
  .map-embed { margin-top: clamp(12px, calc(var(--fit) * .02), 20px); }
  .map-embed iframe { height: clamp(150px, calc(var(--fit) * .24), 240px); }
  .map-consent { --map-h: clamp(190px, calc(var(--fit) * .28), 250px); }
}

/* Tablet */
@media (max-width: 1060px) {
  :root { --header-h: 76px; }
  .shell { width: min(100% - 36px, 820px); }
  .viewport-section > .shell { width: min(100% - 36px, 820px); }
  .header-inner { height: var(--header-h); }
  .logo { width: 155px; }
  .menu-toggle { display: block; }
  .main-nav {
    position: absolute; top: var(--header-h); left: 0; right: 0;
    background: var(--paper); border-bottom: 1px solid var(--line);
    padding: 8px 24px 22px; flex-direction: column; align-items: flex-start; gap: 0;
    opacity: 0; visibility: hidden; transform: translateY(-8px); transition: .2s ease;
    box-shadow: 0 14px 30px rgba(0,0,0,.06);
  }
  .main-nav.open { opacity: 1; visibility: visible; transform: none; }
  .main-nav a { width: 100%; padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 12px; }
  .main-nav a::after { display: none; }

  .viewport-section { min-height: auto; }
  .hero-stage { min-height: min(670px, calc(var(--viewport-content) - 2 * clamp(22px, 4vh, 48px))); }
  .hero-copy { width: 68%; padding: 62px; }
  .brand-mockup-grid, .split-heading, .price-panel, .second-grid, .competence-grid, .contactology-grid, .territory-grid, .contact-grid, .contact-page-grid { grid-template-columns: 1fr; }
  .brand-photo-stack { min-height: 520px; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr; }
  .collection-brand-cards { grid-template-columns: 1fr 1fr; }
  .price-panel { gap: 24px; }
  .service-grid { grid-template-columns: 1fr 1fr; }
  .service-card { margin-right: 0; padding-right: 20px; margin-bottom: 14px; }
  .service-card:nth-child(2) { border-right: 0; }
  .real-store-card img, .store-detail img, .contactology-real img { height: 520px; }
  .territory-main { min-height: 430px; }
  .footer-inner { grid-template-columns: 1fr; }
}

/* Mobile */
@media (max-width: 680px) {
  :root { --header-h: 70px; }
    .hero { padding: 12px 0 32px; }
  .hero-stage { min-height: 640px; border-radius: 14px; align-items: flex-end; }
  .hero-bg { object-position: 58% center; }
  .hero-shade { background: linear-gradient(0deg, rgba(17,17,19,.82) 0%, rgba(17,17,19,.55) 46%, rgba(17,17,19,.12) 82%); }
  .hero-copy { width: 100%; padding: 36px 24px 112px; align-self: flex-end; }
  .hero-copy .lead { font-size: 16px; }
  .hero-actions { flex-direction: column; align-items: stretch; }
  .hero-actions .button { width: 100%; }
  .hero-proof { grid-template-columns: 1fr; }
  .hero-proof span { padding: 10px 16px; border-right: 0; border-bottom: 1px solid var(--line); font-size: 9px; }
  .hero-proof span:last-child { border-bottom: 0; }

  .section-head { margin-bottom: 34px; }
  .brand-card-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .brand-card { min-height: 185px; padding: 22px 14px; }
  .brand-card strong { font-size: clamp(20px,7vw,30px); margin: 16px 0 12px; }
  .brand-card p { font-size: 10px; }
  .brand-card { --logo-slot: 42px; row-gap: 12px; }
  .brand-logo-theo { height: 42px; }
  .brand-logo-blackfin { height: 13px; }
  .brand-logo-feb31 { height: 26px; }
  .brand-logo-etnia { height: 24px; }
  .brand-photo-stack { grid-template-columns: 1fr; min-height: auto; }
  .brand-photo-stack figure { height: 240px; }

  .split-heading { gap: 18px; margin-bottom: 36px; }
  .collection-brand-cards { grid-template-columns: 1fr; }
  .collection-brand { min-height: 260px; padding: 28px; }
  .collection-brand { --coll-logo-h: 44px; }
  .collection-logo-enjoy { height: 34px; }
  .price-panel { padding: 22px; }
  .price-grid { grid-template-columns: 1fr 1fr; }
  .price-card { min-height: 122px; padding: 16px; }
  .price-card strong { font-size: 38px; }
  .price-card span, .price-card small { font-size: 9px; }

  .assistance-visual img { height: 270px; }
  .service-grid { grid-template-columns: 1fr; }
  .service-card, .service-card:nth-child(2) { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.15); }
  .real-store-card img, .store-detail img, .contactology-real img { height: 390px; }
  .territory-main { min-height: 340px; }
  .contact-row { grid-template-columns: 1fr; gap: 2px; }
  .contact-logo { width: 140px; }
  .form-row { grid-template-columns: 1fr; }
  .form-actions { flex-direction: column; align-items: stretch; }
  .form-actions .button { width: 100%; }
}

@media (max-width: 420px) {
  .brand-card-grid, .price-grid { grid-template-columns: 1fr; }
  .brand-card { min-height: 170px; }
  .price-card { min-height: 112px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal { opacity: 1; transform: none; transition: none; }
}
