/* ==========================================================================
   ALOHA STUDIO — foglio di stile unico
   Minimal in stile Apple, con un'anima street: testi in SF Pro (font di
   sistema), etichette in Archivo Extra Condensed, che dialoga con il logo a timbro.
   Il frame 9:16 è il segno distintivo: hero, gallerie, categorie.
   ========================================================================== */

/* I due font contengono solo maiuscole, numeri, accenti e punteggiatura (si usano
   sempre con text-transform: uppercase): così pesano 6 e 9 KB. Gli originali
   completi sono in _sorgenti/font. */
@font-face {
  font-family: "Big Shoulders Display";
  src: url("../fonts/big-shoulders-display-900-caps.woff2") format("woff2");
  font-weight: 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Archivo XC";
  src: url("../fonts/archivo-xcondensed-caps.woff2") format("woff2");
  font-weight: 800 900;
  font-style: normal;
  font-display: swap;
}

/* ---------- Token ---------- */
:root {
  --ink: #1d1d1f;
  --ink-2: #6e6e73;
  --ink-3: #86868b;
  --paper: #ffffff;
  --paper-2: #f5f5f7;
  --paper-3: #e8e8ed;
  --line: rgba(0, 0, 0, .1);
  --night: #000000;
  --night-2: #101012;
  --night-3: #1d1d1f;
  --snow: #f5f5f7;
  --snow-2: #a1a1a6;

  --f-ui: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "Segoe UI Variable Text", "Segoe UI", Roboto, Arial, sans-serif;
  --f-head: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue", "Segoe UI Variable Display", "Segoe UI", Roboto, Arial, sans-serif;
  --f-street: "Archivo XC", "Arial Narrow", Impact, sans-serif;
  --f-hero: "Big Shoulders Display", "Arial Narrow", Impact, sans-serif;
  --f-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;

  --pad: clamp(20px, 5vw, 72px);
  --max: 1240px;
  --nav-h: 56px;
  --r-xl: 32px;
  --r-l: 24px;
  --r-m: 16px;
  --r-s: 12px;
  --ease: cubic-bezier(.32, .72, 0, 1);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
}
@media (min-width: 768px) { :root { --nav-h: 64px; } }
/* --mega: corpo dei titoli grandi (shooting, sala pose, team).
   Su mobile segue "Scegli il tuo" su due righe, da 700px "Scegli il tuo shooting" su una. */
:root { --mega: min(calc((100vw - var(--pad) * 2 - 16px) / 5.3), 11svh); }
@media (min-width: 700px) { :root { --mega: min(calc((100vw - var(--pad) * 2 - 24px) / 9.25), 17svh); } }

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--nav-h) + 72px);
}
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
html.menu-open, html.lb-open { overflow: hidden; }
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--f-ui);
  font-size: 17px;
  line-height: 1.47;
  letter-spacing: -.022em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
::selection { background: var(--ink); color: #fff; }
:focus-visible { outline: 2px solid #0071e3; outline-offset: 3px; border-radius: 8px; }

.sr-only {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip-link {
  position: fixed; top: 8px; left: 8px; z-index: 200; padding: 10px 16px; border-radius: 999px;
  background: var(--ink); color: #fff; font-weight: 600; transform: translateY(-160%);
  transition: transform .3s var(--ease);
}
.skip-link:focus { transform: none; }

/* ---------- Tipografia ---------- */
.t-hero {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(44px, 8vw, 104px);
  line-height: 1.02;
  letter-spacing: -.045em;
}
.t-h2 {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(34px, 5.4vw, 72px);
  line-height: 1.04;
  letter-spacing: -.04em;
}
.t-h3 {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(30px, 3.8vw, 52px);
  line-height: 1.05;
  letter-spacing: -.035em;
}
.t-lead {
  font-size: clamp(19px, 1.9vw, 24px);
  line-height: 1.38;
  letter-spacing: -.021em;
  color: var(--ink-2);
}
.t-street {
  font-family: var(--f-street);
  font-weight: 800;
  text-transform: uppercase;
  line-height: .9;
  letter-spacing: 0;
}
.t-mega {
  font-family: var(--f-street); font-weight: 900; text-transform: uppercase;
  font-size: var(--mega); line-height: .86; letter-spacing: 0; text-align: center;
}
/* Titolo grande che riempie la riga: --fw è la larghezza (in em) della riga più
   lunga su mobile, --fw-d quella su desktop. Non supera mai la larghezza del sito. */
.fit-title {
  --w: min(100vw, var(--max) + var(--pad) * 2);
  font-size: min(var(--mega), calc((var(--w) - var(--pad) * 2 - 16px) / var(--fw, 6)));
}
@media (min-width: 700px) {
  .fit-title { white-space: nowrap; font-size: min(var(--mega), calc((var(--w) - var(--pad) * 2 - 24px) / var(--fw-d, 10))); }
}
.t-statement {
  font-family: var(--f-head);
  font-weight: 700;
  font-size: clamp(32px, 5vw, 68px);
  line-height: 1.06;
  letter-spacing: -.04em;
  max-width: 17em;
}
.t-statement .mute, .t-hero .mute, .t-h2 .mute { color: var(--ink-3); }
.on-night .t-statement .mute, .on-night .t-h2 .mute { color: #6e6e73; }
.measure { max-width: 34em; }
.on-night { background: var(--night); color: var(--snow); }
.on-night .t-lead { color: var(--snow-2); }

/* ---------- Layout ---------- */
.wrap {
  width: 100%;
  max-width: calc(var(--max) + var(--pad) * 2);
  margin-inline: auto;
  padding-inline: var(--pad);
}
.section { padding-block: clamp(88px, 12vw, 168px); }
.section--tight { padding-block: clamp(56px, 8vw, 112px); }
.section--grey { background: var(--paper-2); }
.section__head { display: flex; flex-direction: column; align-items: center; text-align: center; margin-bottom: clamp(36px, 5vw, 60px); }
.section__head .t-lead { margin-top: 14px; margin-inline: auto; }
.center { text-align: center; }
.center .measure, .center .t-statement { margin-inline: auto; }
.stack-s > * + * { margin-top: 12px; }
.stack-m > * + * { margin-top: 20px; }

/* ---------- Bottoni e link ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .45em;
  min-height: 48px; padding: 0 24px; border-radius: 999px;
  font-size: 17px; font-weight: 600; letter-spacing: -.015em; white-space: nowrap;
  transition: transform .45s var(--ease), background-color .25s, color .25s, box-shadow .25s;
}
.btn:hover { transform: scale(1.03); }
.btn:active { transform: scale(.97); }
.btn svg { width: 19px; height: 19px; flex: none; }
.btn .ic-maps { width: auto; height: 20px; }
.btn--ink {
  background: linear-gradient(180deg, #2e2e30 0%, #0b0b0c 100%); color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16), 0 1px 2px rgba(0, 0, 0, .2), 0 10px 22px -12px rgba(0, 0, 0, .6);
}
.btn--ink:hover { background: linear-gradient(180deg, #3a3a3c 0%, #111 100%); }
.btn--snow { background: #fff; color: #000; }
.btn--line { box-shadow: inset 0 0 0 1.5px currentColor; }
.btn--line:hover { background: var(--ink); color: #fff; box-shadow: inset 0 0 0 1.5px var(--ink); }
.on-night .btn--line:hover, .btn--line.on-dark:hover { background: #fff; color: #000; box-shadow: inset 0 0 0 1.5px #fff; }
.btn--s { min-height: 40px; padding: 0 18px; font-size: 15px; }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }
.center .btn-row { justify-content: center; }

.link-arrow {
  display: inline-flex; align-items: center; gap: .2em;
  font-size: clamp(17px, 1.5vw, 21px); font-weight: 500; letter-spacing: -.02em;
}
.link-arrow::after {
  content: ""; width: .5em; height: .5em; margin-left: .1em;
  border-top: 1.6px solid currentColor; border-right: 1.6px solid currentColor;
  transform: rotate(45deg) scale(.8); transition: transform .35s var(--ease);
}
.link-arrow:hover { text-decoration: underline; text-underline-offset: .18em; text-decoration-thickness: 1px; }
.link-arrow:hover::after { transform: translateX(3px) rotate(45deg) scale(.8); }
.links { display: flex; flex-wrap: wrap; gap: 14px 32px; }
.center .links { justify-content: center; }

/* ---------- Liquid glass ----------
   Vetro con bordo rifrangente (anello a gradiente mascherato), riflesso
   speculare in alto e sfocatura saturata dello sfondo. Usato solo dove c'è
   qualcosa dietro da far trasparire: navbar, controlli su foto, tag prezzo. */
.glass {
  --tint: rgba(255, 255, 255, .12);
  --edge: rgba(255, 255, 255, .7);
  --edge-2: rgba(255, 255, 255, .1);
  --shadow: 0 8px 28px rgba(0, 0, 0, .22);
  position: relative;
  isolation: isolate;
  color: #fff;
  background: var(--tint);
  -webkit-backdrop-filter: blur(16px) saturate(180%);
  backdrop-filter: blur(16px) saturate(180%);
  box-shadow:
    inset 0 1px .5px rgba(255, 255, 255, .5),
    inset 0 -1px .5px rgba(255, 255, 255, .12),
    inset 0 0 14px rgba(255, 255, 255, .07),
    var(--shadow);
}
.glass::before {
  content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; padding: 1px;
  background: linear-gradient(135deg, var(--edge), var(--edge-2) 32%, transparent 55%, var(--edge-2) 78%, var(--edge));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
  pointer-events: none;
}
.glass::after {
  content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit;
  background: radial-gradient(120% 70% at 25% -10%, rgba(255, 255, 255, .26), transparent 60%);
  pointer-events: none;
}
.glass--light {
  --tint: rgba(255, 255, 255, .62);
  --edge: rgba(255, 255, 255, 1);
  --edge-2: rgba(255, 255, 255, .35);
  --shadow: 0 6px 24px rgba(0, 0, 0, .08), 0 0 0 .5px rgba(0, 0, 0, .07);
  color: var(--ink);
}
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .glass { --tint: rgba(28, 28, 30, .72); }
  .glass--light { --tint: rgba(255, 255, 255, .94); }
}
.btn.glass:hover { --tint: rgba(255, 255, 255, .22); }
.btn.glass--light:hover { --tint: rgba(255, 255, 255, .82); }

.ctl {
  display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  transition: transform .4s var(--ease), --tint .25s;
}
.ctl:hover { transform: scale(1.06); }
.ctl:active { transform: scale(.94); }
.ctl svg { width: 18px; height: 18px; }
.ctl[disabled] { opacity: .35; pointer-events: none; }

/* ---------- Navbar (Leva-style: menu · logo · social) ---------- */
.nav {
  position: fixed; inset: 0 0 auto; z-index: 50;
  height: var(--nav-h);
  color: #fff;
  transition: color .35s var(--ease);
}
.nav::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: #000;
  box-shadow: 0 .5px 0 rgba(255, 255, 255, .1);
  transition: opacity .45s var(--ease);
}
.nav__bar {
  position: relative;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  height: 100%;
  max-width: calc(var(--max) + var(--pad) * 2);
  margin-inline: auto;
  padding-inline: max(10px, calc(var(--pad) - 12px));
}
.nav__logo {
  --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 93'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M71.9 90.5C71.2 90.4 70.2 90.2 69.6 90C69.1 89.9 67.4 89.8 66 89.8C64.6 89.8 63.2 89.8 63.1 89.8C62.8 89.8 62.8 88.4 62.7 83.9C62.7 73.8 62.6 67.3 62.4 67.1C62.3 66.9 62.4 66 62.6 65.1C62.8 64.2 63 62.6 62.9 61.6C62.9 60.5 62.9 57.1 63 54C63.1 47.8 63.1 38.5 63 23.1C62.9 14.2 63 12.8 63.4 10.6C63.7 8.7 64 8.1 64.4 7.9C64.8 7.7 65.9 7.6 69.2 7.8C72.1 7.9 74.7 7.9 76.6 7.7C78.2 7.6 79.6 7.6 79.8 7.7C80 7.8 81 7.9 82 7.9C83.4 7.9 84.1 8 84.6 8.3C85.7 9 86.7 9.3 88.9 9.4C90 9.4 91.3 9.6 91.9 9.7C92.8 9.9 93.2 9.8 94 9.5C95 9 95.4 9 97.8 9.2C100.6 9.5 102.3 10 102.2 10.5C102.2 10.7 102 11.2 101.7 11.6C101.3 12.2 101.3 12.6 101.4 13.9C101.5 14.7 101.6 17.5 101.6 20C101.7 22.5 101.8 25.3 101.8 26.1C101.9 26.9 102 29.3 102.1 31.2C102.2 33.2 102.4 36.2 102.5 37.8C103.1 44.2 103.2 53 102.7 57.2C102.6 58.6 102.5 61.6 102.5 64C102.5 66.4 102.5 69 102.5 69.9C102.5 70.7 102.5 75.4 102.4 80.4C102.4 90.5 102.5 89.9 100.5 90.5C99.6 90.7 99.4 90.7 99 90.3C98.5 89.9 98.3 89.9 96.3 90.2C94.7 90.4 93.9 90.5 93.3 90.2C92.6 90 91.2 90 78.6 90.3C77 90.4 75.1 90.5 74.4 90.6C73.7 90.6 72.6 90.6 71.9 90.5ZM166.5 87.5C165.8 86.8 165.7 86 165.9 82.9C166 81.4 166.1 77.9 166.1 75.2C166.1 72 166.2 70.2 166.4 69.8C166.9 69.1 166.8 68.3 166.4 68.1C165.9 67.9 165.9 67 166.3 66.6C166.5 66.4 166.6 64.8 166.6 62C166.6 59.6 166.7 57.5 166.8 57.4C166.9 57.2 166.8 56.8 166.6 56.4C166.3 55.7 166.3 55.6 166.6 55C166.9 54.4 166.9 54.3 166.6 53.6C166.2 52.9 166.3 52.7 166.6 52C167 51.3 167 51.2 166.6 50.5C166.1 49.6 166.2 49.2 166.8 47.2C167.1 46.1 167.2 45.4 167 45C166.3 42.9 166.2 42.3 166.5 41.4C166.7 40.9 166.7 40.4 166.6 40.1C166.5 39.8 166.3 38.8 166.3 37.9C166.3 36.9 166.2 35.1 166.1 33.9C166 31.5 166 22.5 166.1 20.2C166.2 19.5 166.3 18.5 166.5 18.1C166.8 17.4 166.8 17.2 166.4 16.2C166.1 15.4 165.9 14.2 165.8 11.1C165.7 6.1 165.8 5.7 166.9 4.8C167.9 4.1 167.9 4.1 171.5 4.1C173.5 4.1 175.8 4.2 176.6 4.3C177.4 4.4 180 4.6 182.2 4.8C184.5 4.9 186.9 5.1 187.6 5.3C189.2 5.7 192.6 5.7 193.9 5.3C194.4 5.1 195.7 5 196.8 5C197.9 5 198.8 4.9 198.9 4.7C199.2 4.5 199.4 4.5 199.8 4.7C200.3 4.9 201 4.9 202.4 4.7C203.4 4.6 204.4 4.5 204.5 4.6C204.6 4.7 206.4 4.6 208.4 4.5C210.5 4.4 214.6 4.2 217.6 4.1C222.8 4 223 4 223.5 4.5C223.9 4.9 224 5.2 223.8 5.8C223.5 7.1 223.7 10.9 224.1 11.7C224.4 12.3 224.4 12.4 224 13C223.4 13.8 223.1 17.8 223.6 18.5C223.8 18.9 223.8 19.2 223.6 19.8C223.1 21 223.2 22.4 223.6 22.7C224.1 23.1 224.1 23.9 223.7 24.1C223.4 24.3 223.7 26.5 224.2 27.7C224.5 28.5 224.5 28.6 224.2 29C223.9 29.3 223.8 30.1 224.1 34.4C224.2 37.1 224.3 39.8 224.3 40.3C224.3 40.9 224.4 41.9 224.6 42.7C224.8 43.4 224.9 44.3 224.9 44.6C224.8 45 224.8 45.5 225.1 45.9C225.5 46.4 225.5 46.5 224.8 47L224.1 47.5L224.7 48C225.5 49 225.5 49.2 225 50.2C224.6 51.1 224.5 51.3 224.8 51.9C225 52.4 225 52.7 224.7 53.3C224.1 54.5 223.9 57.6 224.4 58C224.9 58.4 224.9 58.9 224.3 59.7C223.9 60.4 223.8 61.5 224.2 62.6C224.5 63.2 224.4 63.4 224.1 63.9C223.8 64.4 223.8 64.7 224 65.5C224.2 66.1 224.2 66.6 224.1 66.9C223.9 67.2 223.9 67.7 223.9 68C224 68.4 223.9 69 223.6 69.5C223.1 70.4 223.1 71.1 223.7 71.9C224.1 72.5 224.1 72.6 223.6 73C223.1 73.3 223 73.6 223 76.6C223 81.4 223.1 83 223.6 83.8C224.2 84.7 224 85.2 222.7 86.4C222 87 221.6 87.2 221.3 87.1C220.9 87 217.7 86.7 217.1 86.8C217 86.8 214.8 86.8 212.3 86.9C208.9 87 207.6 87.1 207 87.4C206.1 87.8 204.1 87.9 203 87.4C202.3 87.2 201.1 87.1 197.9 87.2C194.6 87.2 193.5 87.2 192.6 86.9C191.3 86.4 189.8 86.4 188.8 86.8C187.5 87.3 181.5 87.4 179.7 86.9C179.3 86.8 178.6 86.8 177.8 87.1C176.6 87.5 176.4 87.5 175.5 87.2C174.8 86.9 174.5 86.9 174 87.1C173.5 87.4 173.1 87.4 172.5 87.3C171.2 86.9 168.7 87.1 168 87.6C167.2 88.1 167.1 88.1 166.5 87.5ZM113.7 86.2C111.7 86 108.9 85.2 108.3 84.6C108 84.4 108 83.9 108.2 82.1C108.7 79.1 108.7 78.7 108.1 75.9C107.8 74 107.7 72.8 107.9 71.2C108 69.4 107.9 68.8 107.7 68.4C107.3 67.8 107.1 60.5 107.2 53C107.2 51.7 107.2 48.1 107.2 45C107.1 29.6 107.2 22.8 107.5 21.9C107.7 21.4 107.6 20.2 107.4 18.2C107.1 16.2 107.1 15 107.3 14.4C107.4 13.9 107.5 13.1 107.5 12.6C107.5 12.1 107.6 10 107.7 8.1C107.9 4.3 108.2 3.4 109.4 3C110.1 2.7 115.1 3.2 116.3 3.7C117.1 4 117.7 4 119.7 3.8C122.1 3.5 123.1 3.6 128.3 4.2C130.5 4.5 131.3 4.4 133.8 3.4C134.3 3.2 135.3 3.1 136.4 3.2C140.8 3.3 143.3 3.5 144.8 3.7C146.4 4 146.6 3.9 147.2 3.5C147.7 3.1 148.1 3 149.4 3.1C151.1 3.3 153.1 3.8 154.9 4.6C156.1 5 156.4 5.1 158.4 4.8C160.4 4.5 160.7 4.5 161.2 5C162.1 5.6 162.4 8.3 162 11.2C161.8 12.7 161.8 14.9 161.9 18.5C162.1 21.3 162.1 24.3 162.1 25.1C162 25.9 162 27.6 161.9 28.9C161.9 30.1 161.7 31.4 161.5 31.7C161.4 32 161.3 32.5 161.3 32.8C161.4 33 161.3 35.7 161.2 38.8C161.1 41.9 161 46.3 161 48.6C161 51 160.8 54.1 160.7 55.6C160.4 58.1 160.5 58.5 160.8 59C161.2 59.5 161.2 59.7 160.7 60.9C160.2 62.5 160.1 64.4 160.4 70.4C160.5 72.6 160.5 74.9 160.6 75.6C160.6 76.3 160.7 78.2 160.8 79.8C161.2 84.7 160.9 85.3 157.5 85.4C156.5 85.5 154.7 85.6 153.6 85.6C152.5 85.7 148.8 85.8 145.4 85.9C141.9 86 137.9 86.1 136.5 86.1C127.5 86.3 115.3 86.4 113.7 86.2ZM5.1 85.7C4.1 84.4 3.4 79.5 3.5 74.8C3.5 73.7 3.6 71.1 3.6 68.9C3.7 66.7 3.8 61.2 3.9 56.6C4 49.3 4 47.8 3.5 43.3L3 38.2L3.5 37C4 35.8 4.1 36 3.2 32.4C3.1 31.8 3.1 28.6 3.1 24.9C3.2 21.3 3.3 16.2 3.3 13.5L3.4 8.6L7.1 8.6C9.1 8.5 11.6 8.4 12.6 8.2C13.9 8 16.6 7.9 22.5 8C29.9 8.1 41.6 8.1 47.5 8C48.8 8 50.2 8.1 50.6 8.2C51.1 8.4 51.7 8.3 52.4 8.1C53.6 7.6 56.8 7.9 57.3 8.4C57.5 8.7 57.6 10.9 57.7 17.2C57.7 21.8 57.8 26.4 57.8 27.2C57.8 28.1 57.7 30.6 57.7 32.6C57.6 35.1 57.6 36.7 57.8 37.2C58 37.7 58.1 38.7 58.2 39.4C58.4 44.5 58.5 45.6 58.6 46.5C58.7 47 58.6 48.1 58.5 49C58.3 49.9 58.1 51.6 58.1 52.8C58.1 55.6 57.8 58.7 57.5 59.6C57.4 60 57.3 61.6 57.3 63.1C57.3 64.6 57.1 66.2 57 66.7C56.9 67.1 56.7 68 56.8 68.8C56.8 70.7 56.3 79.2 56.1 80.3C56 81 56.1 81.3 56.6 81.9C57.3 82.7 57.4 83.4 57 83.6C56.5 84 51.4 84.4 49.1 84.3C47.9 84.3 45.4 84.2 43.6 84.1C41.6 84 40.1 84.1 39.5 84.2C38.8 84.4 38.4 84.4 37.8 84.2C37.2 84 36.8 84 36.2 84.2C34.4 84.9 31.1 85.7 30.3 85.7C29.9 85.7 29.2 85.6 28.9 85.5C28.4 85.3 28 85.4 27.1 85.7C26.1 86.1 25.6 86.1 21.6 85.8C19.1 85.6 16.9 85.5 16.7 85.6C16.5 85.7 13.9 85.8 10.9 85.9C6.5 86 5.3 86 5.1 85.7ZM231.6 85.8C231.4 85.7 231 84.5 230.6 83.2C230.1 81.1 230 80.2 230 76.8C230 69.3 230 66.8 230.3 59.2C230.5 51.9 230.3 44.9 229.6 39.2C229.5 38.5 229.6 37.8 229.9 37.2C230.3 36.1 230.2 33.8 229.6 32C229.3 31.2 229.2 30.4 229.3 28.9C229.4 27.8 229.6 24.5 229.7 21.6C229.9 14.7 229.9 15.3 229.7 11.9C229.6 9.3 229.7 8.9 230.1 8.6C230.4 8.4 230.8 8.4 231.4 8.5C231.9 8.7 232.9 8.7 233.6 8.6C234.3 8.5 236 8.4 237.3 8.4C238.6 8.3 240 8.2 240.4 8C240.9 7.9 244.2 7.9 249 8C253.4 8 260.2 8.1 264.2 8.1C268.3 8.1 272.8 8.1 274.1 8.1C275.5 8.1 277.2 8.1 277.9 8C281 7.9 283.4 8 283.7 8.3C283.9 8.6 284.2 23.2 284 33C284 35.9 284.1 37.1 284.3 37.7C284.6 38.3 284.6 38.8 284.5 39.2C284.3 39.6 284.4 40.1 284.6 40.7C284.8 41.2 285 42.2 285 42.9C284.9 43.6 284.9 45.3 285 46.8C285 48.4 284.9 49.9 284.7 50.6C284.4 51.5 284.4 52.1 284.6 52.7C284.7 53.2 284.7 53.9 284.6 54.4C284.2 56.6 283.8 60.7 283.8 63.2C283.8 64.8 283.6 66.3 283.5 66.6C283.3 66.8 283.2 68.3 283.1 69.8C282.9 76.9 282.8 79.1 282.6 80.1C282.5 81.1 282.5 81.3 283.1 82C284.5 83.6 284 83.8 277.8 84.3C274.8 84.5 273.5 84.5 273.1 84.3C272.3 83.9 266.9 83.9 265.7 84.3C265.1 84.4 264.6 84.4 264.1 84.3C263.6 84 262.9 84.2 260.6 84.9C257.6 85.8 256.5 85.9 255.4 85.5C254.9 85.3 254.5 85.4 253.6 85.7C252.6 86.1 252.1 86.1 248.2 85.8C245.8 85.6 243.7 85.5 243.5 85.6C242.8 85.8 231.9 86 231.6 85.8ZM89.6 81.6C91.9 81.5 94 81.3 94.4 81.1C95.5 80.7 95.7 79.7 95.7 75.4C95.7 72.3 95.7 72 95.2 71.5C95 71.2 94.6 71 94.4 71C94.3 71 92.1 70.9 89.5 70.9L84.9 70.9L84.4 70.2C83.9 69.6 83.8 69.2 83.7 66.2C83.4 60.4 83.8 25.6 84.1 22.6C84.4 20.3 84.6 20.4 77.8 20.2C74.1 20.1 72.1 20.1 71.9 20.3C71.7 20.4 71.6 24.4 71.6 31.4C71.6 37.5 71.4 44.3 71.3 46.6C71 51.4 70.9 70.1 71.2 76.6L71.3 80.8L72.1 81.1C72.6 81.4 74.4 81.5 78.1 81.5C81 81.5 83.8 81.6 84.2 81.7C84.7 81.8 85.2 81.9 85.4 81.9C85.5 81.8 87.5 81.7 89.6 81.6ZM46.6 77.7C47.1 77.3 47.1 77.2 46.8 75.3C46.3 72 45.6 68.2 45.3 67.4C45.1 67 45 66.1 45 65.3C45 64.5 44.9 63.5 44.8 63C44.3 61.4 43.5 56.2 43.1 53.1C42.7 48.8 42 44.4 41.6 42.2C41.4 41.2 41.1 38.7 40.9 36.8C40.5 32.7 39.8 29.6 39.3 28.9C39 28.6 39 28.4 39.2 27.7C39.5 26.9 39.2 23.7 38.7 21.2C38.6 20.6 38.4 19.6 38.4 18.9C38.2 14.8 38.5 15 34.2 15.2C29.7 15.4 25.1 15.3 20.9 15C19 14.9 17.3 14.8 17.2 14.9C16.4 15.2 16.2 16.4 16.1 21.2C16 27.7 15.7 30.7 14.7 35.9C14.3 38.2 13.9 40.5 13.8 40.9C13.8 41.3 13.6 42.2 13.5 43C13.3 43.8 13.1 45.9 12.9 47.8C12.4 52.3 11.6 58.4 11.4 58.7C11.3 58.8 11.2 60.1 11 61.6C10.9 63.1 10.6 65.1 10.5 66C10.4 66.9 10.1 68.8 10 70.1C9.9 71.5 9.6 73.4 9.5 74.4C9.3 75.6 9.2 76.3 9.4 76.5C9.8 76.9 22.2 77.1 22.6 76.8C23 76.4 23.1 71.3 22.7 70.1C22.4 69.5 22.5 69.4 23 69C23.3 68.8 23.7 68.3 23.9 67.8C24.1 67.4 24.4 67 24.5 67C28 66.7 32.1 66.9 32.6 67.4C32.8 67.6 33 68.4 33.1 69.3C33.2 70.2 33.5 71.4 33.7 72C34 73 34 73.4 33.8 74.2C33.7 74.7 33.6 75.4 33.7 75.8C33.9 77.1 34.5 77.2 38.9 77.3C41.7 77.3 43.2 77.4 43.9 77.6C45.2 78.1 46 78.1 46.6 77.7ZM273.1 77.5C273.5 77.1 273.5 76.9 273 74.1C272.2 69.5 271.8 67.4 271.5 66.7C271.4 66.3 271.2 65.5 271.2 64.9C271.2 63.9 271 62.3 270.2 57.5C270 56.3 269.6 53.7 269.4 51.8C269.1 49.8 268.8 47.5 268.7 46.8C268.6 46 268.4 44.6 268.2 43.6C268.1 42.6 267.9 41.2 267.7 40.6C267.6 39.9 267.4 38.1 267.2 36.5C266.9 32.7 266.3 29.5 265.8 28.9C265.5 28.6 265.5 28.2 265.7 27.5C265.9 26.8 265.8 25.8 265.4 23.6C265.2 22 264.9 19.6 264.9 18.4C264.7 15 264.8 15 260.5 15.1C258.6 15.2 256.9 15.3 256.7 15.4C256.5 15.5 247.9 15.1 245.1 14.8C242.8 14.6 242.7 14.9 242.6 19.8C242.5 24.9 241.9 32.5 241.4 34.2C241.2 35 241 36.1 241 36.6C241 37.2 240.8 38.3 240.6 39C240.2 40.5 240.2 40.6 239.5 46.4C238.7 52.6 238.5 53.9 238 57.5C237.7 59.4 237.3 62.7 237 65C236.8 67.3 236.3 70.7 236.1 72.7C235.8 75.1 235.7 76.3 235.9 76.5C236.3 76.9 248.9 77.1 249.1 76.8C249.3 76.5 249.3 75.3 249.2 71.7C249.1 69.5 249.2 69.2 249.5 69C249.8 68.8 250.1 68.4 250.2 67.9C250.5 66.9 251 66.8 255.2 66.9C257.6 66.9 258.6 67 258.9 67.3C259.1 67.5 259.3 68.4 259.5 69.2C259.7 70.1 259.9 71.4 260.1 72C260.4 73 260.5 73.4 260.2 74.3C259.8 75.7 260.1 76.6 260.9 77C261.3 77.1 263 77.3 265.4 77.3C268.2 77.3 269.7 77.4 270.4 77.6C271.7 78.1 272.6 78.1 273.1 77.5ZM139.6 76.4C143.2 75.9 145.5 75 147.2 73.4C149.4 71.3 151 68 151 65.5C151 64.8 151.2 63 151.4 61.6C151.9 58.2 152.4 26 152 23.7C151.6 21.5 151 20.6 148.4 17.9C144.7 13.9 141.9 12.4 137.6 12C136.4 11.9 135.2 11.7 134.9 11.6C134.4 11.4 129.4 12.2 128.1 12.7C126.5 13.3 123.2 15.6 122.4 16.6C120.8 18.4 119.8 20.9 118.6 25.1C118 27.4 117.8 31.5 117.6 41.8C117.6 43.7 117.5 48.1 117.4 51.4C117.3 57.8 117.5 61.5 118.5 66.5C119.1 69.3 119.3 69.7 120.9 71.6C123.4 74.6 125.1 75.4 131.5 76.2C135.5 76.8 136 76.8 139.6 76.4ZM206.8 75.7L207.2 75.1L207.8 75.7C208.2 76 208.6 76.3 208.8 76.2C209.4 76 209.7 73.5 209.8 67.6C209.9 65.4 210.1 61.7 210.2 59.4C210.3 57 210.3 53.8 210.3 52.2C210.1 44.8 210.2 38.8 210.6 35C211.1 30.2 211.5 21.2 211.4 18.5C211.3 17.5 211.3 16.4 211.3 16.2C211.2 15.1 210.6 15 207.3 15C205.5 15.1 203.1 15.1 201.8 15C200.3 14.9 199.4 15 199.2 15.2C199 15.4 198.9 17.9 199 24.5C199 29.4 199 34.4 198.9 35.5C198.7 37.5 198.7 37.6 197.9 37.9C197 38.2 192.2 38 191.3 37.5C189.9 36.8 190 37.1 190.1 28.1C190.3 20.2 190.3 19.7 189.9 19.2C189.4 18.7 189.4 18.7 189.9 18C190.8 16.3 189.5 14.2 188.2 15.5C187.5 16.1 187 16.1 186.4 15.5C186 15 185 14.9 179.1 15C176.7 15 176.4 15.3 176.6 16.9C176.7 17.5 176.6 21.6 176.5 26C176.3 30.5 176.2 39.6 176.1 46.2C176.1 52.9 175.9 59.3 175.8 60.5C175.7 61.7 175.6 65.4 175.6 68.7L175.7 74.8L176.3 75.2C177 75.8 186.2 76 187.1 75.5C187.8 75.1 188.2 74.4 188.5 72.2C188.9 69.9 189.5 53.7 189.3 51.4C189.2 49.4 189.2 49.3 189.9 48.9C190.3 48.6 190.8 48.5 191.4 48.6C191.8 48.7 193.1 48.8 194.3 48.9C196.7 49 197.8 49.4 198.4 50.4C198.8 51 198.8 52.2 198.8 61.8C198.8 67.8 198.7 73.1 198.6 73.6C198.5 74.4 198.6 74.8 199 75.3C199.5 76 199.6 76 202.1 76.1C203.5 76.1 205 76.2 205.5 76.2C206.2 76.2 206.5 76.1 206.8 75.7ZM131.9 69.1C129.8 67.7 129.7 65.8 129.8 48.6C130.1 27.3 130.6 23 133.1 21.5C134.7 20.4 138.6 21.2 138.9 22.6C139.4 25.7 139.6 27.2 139.8 30.5C139.9 32.6 140 36 140.1 37.9C140.2 40 140.2 44.5 140 49.1C139.8 53.4 139.6 58.6 139.6 60.8C139.6 64.8 139.3 66.7 138.3 67.6C137.6 68.2 134.1 69.8 133.4 69.8C133.1 69.8 132.4 69.5 131.9 69.1ZM25.4 56.7C25 56.5 25 56.2 25.1 54.2C25.2 52.9 25.4 51.6 25.5 51.2C25.6 50.8 25.9 49.2 26 47.8C26.2 46 26.6 44.3 27.1 42.8C27.6 41.4 28.1 39.9 28.2 39.3C28.5 38.4 28.6 38.2 29.1 38.3C29.7 38.4 29.6 37.8 30.6 46.5C31 49.5 31.4 52.3 31.5 52.8C31.9 54.1 31.8 56.1 31.4 56.5C30.9 56.9 26.1 57.1 25.4 56.7ZM251.7 56.6C251.5 56.3 251.5 55.7 251.6 54.4C251.9 51 253 44 253.4 43.1C253.6 42.5 254.1 41.3 254.4 40.2C255.6 36.3 256 37.2 256.9 45.5C257.1 47.5 257.4 49.9 257.6 51C258.1 53.4 258.2 56.1 257.8 56.5C257.3 57 252.1 57.1 251.7 56.6Z'/%3E%3C/svg%3E");
  grid-column: 2;
  display: block;
  width: clamp(92px, 24vw, 116px);
  aspect-ratio: 288 / 93;
  background: currentColor;
  -webkit-mask: var(--logo) center / contain no-repeat;
  mask: var(--logo) center / contain no-repeat;
  transition: opacity .25s;
}
.nav__logo:hover { opacity: .75; }
.nav__end { grid-column: 3; justify-self: end; display: flex; align-items: center; gap: 6px; }
.nav__menu { grid-column: 1; justify-self: start; }
.nav__btn {
  display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 50%;
  transition: transform .4s var(--ease), background-color .3s, box-shadow .3s, opacity .25s;
}
.nav__btn svg { width: 26px; height: 26px; }
.nav__btn:hover { transform: scale(1.08); }
.nav__btn:active { transform: scale(.88); transition-duration: .1s; }
/* Fuori dall'hero la barra è nera e il bottone menu è una semplice icona */
.nav:not(.is-clear) .nav__btn.glass {
  color: inherit; background: transparent; box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
.nav:not(.is-clear) .nav__btn.glass::before,
.nav:not(.is-clear) .nav__btn.glass::after { opacity: 0; }
@media (hover: hover) { .nav:not(.is-clear) .nav__menu:hover { background: rgba(255, 255, 255, .12); } }
/* Menu aperto: la X sta in un cerchio chiaro, uguale su tutte le pagine */
.nav.is-open .nav__menu.nav__btn.glass { background: rgba(255, 255, 255, .16); }
.nav .nav__menu.nav__btn.glass:active { background: rgba(255, 255, 255, .26); }
/* Sopra l'hero: barra trasparente, testo bianco, menu in liquid glass.
   Instagram e WhatsApp restano sempre nei loro colori originali. */
.nav.is-clear { color: #fff; }
.nav.is-clear::before { opacity: 0; }
.nav.is-clear .nav__end svg { filter: drop-shadow(0 1px 6px rgba(0, 0, 0, .3)); }
.nav.is-open { color: #fff; }
.nav.is-open::before { opacity: 0; }

.burger {
  position: relative; display: block; width: 19px; height: 1.7px; border-radius: 2px;
  background: currentColor; transition: background-color .2s;
}
.burger::before, .burger::after {
  content: ""; position: absolute; left: 0; right: 0; height: 1.7px; border-radius: 2px;
  background: currentColor; transition: transform .45s var(--ease);
}
.burger::before { top: -6px; }
.burger::after { top: 6px; }
.nav.is-open .burger { background-color: transparent; }
.nav.is-open .burger::before { transform: translateY(6px) rotate(45deg); }
.nav.is-open .burger::after { transform: translateY(-6px) rotate(-45deg); }

/* Menu a tendina: nero pieno, uguale su tutte le pagine, voci grandi */
.menu {
  position: fixed; inset: 0 0 auto; z-index: -2;
  max-height: 100dvh; overflow-y: auto; overscroll-behavior: contain;
  padding: calc(var(--nav-h) + 12px) 0 calc(32px + env(safe-area-inset-bottom));
  color: #fff;
  background: #000;
  border-radius: 0 0 26px 26px;
  clip-path: inset(0 0 100% 0 round 0 0 26px 26px);
  visibility: hidden;
  transition: clip-path .5s var(--ease), visibility 0s .5s;
}
.nav.is-open .menu { clip-path: inset(0 0 0 0 round 0 0 26px 26px); visibility: visible; transition: clip-path .5s var(--ease); }
/* Sotto il menu la pagina si scurisce; toccandola il menu si chiude */
.menu-scrim {
  position: fixed; inset: 0; z-index: 49; background: rgba(0, 0, 0, .45);
  opacity: 0; visibility: hidden; -webkit-tap-highlight-color: transparent;
  transition: opacity .4s var(--ease), visibility 0s .4s;
}
html.menu-open .menu-scrim { opacity: 1; visibility: visible; transition: opacity .4s var(--ease); }
.menu__grid { display: grid; gap: 40px; }
/* Ogni voce è una riga con angoli arrotondati: al tocco si illumina subito.
   Le linee di separazione sono disegnate a parte, così non si deformano. */
.menu__links a {
  position: relative; display: flex; align-items: center; justify-content: space-between;
  margin-inline: -12px; padding: 12px 12px; border-radius: 16px;
  font-family: var(--f-head); font-weight: 700;
  font-size: clamp(32px, 4.6vw, 52px); line-height: 1.08; letter-spacing: -.045em;
  opacity: 0; transform: translateY(-8px);
  transition: opacity .35s, transform .5s var(--ease), color .2s, background-color .12s;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
.menu__links a + a::before { content: ""; position: absolute; left: 12px; right: 12px; top: 0; height: 1px; background: rgba(255, 255, 255, .12); }
.menu__links a:active, .menu__links a.is-target { background-color: rgba(255, 255, 255, .12); color: #fff !important; }
.menu__links a:active::before, .menu__links a.is-target::before,
.menu__links a:active + a::before, .menu__links a.is-target + a::before { opacity: 0; }
.menu__links a.is-target::after { opacity: 1; transform: translateX(-2px) rotate(45deg); }
/* Dopo il tocco: la voce scelta resta evidente, le altre si attenuano finché arriva la pagina */
.menu.is-going .menu__links a:not(.is-target) { opacity: .3 !important; }
.menu.is-going .menu__aside { opacity: .3 !important; }
/* Riscontro del tocco istantaneo: niente animazione (durante il cambio pagina
   il browser può fermare le animazioni, e il riscontro non si vedrebbe) */
.menu__links a:active, .menu__links a:active::after,
.menu__links a.is-target, .menu__links a.is-target::after,
.menu.is-going .menu__links a, .menu.is-going .menu__aside { transition: none !important; }
.menu__links a::after {
  content: ""; width: .32em; height: .32em; border-top: 2px solid currentColor; border-right: 2px solid currentColor;
  transform: rotate(45deg); opacity: 0; transition: opacity .25s, transform .35s var(--ease);
}
/* Freccetta solo con il mouse: su iPhone un effetto al passaggio costringe a toccare due volte */
@media (hover: hover) and (pointer: fine) {
  .menu__links a:hover { color: rgba(255, 255, 255, .62); }
  .menu__links a:hover::after { opacity: 1; transform: translateX(4px) rotate(45deg); }
}
.nav.is-open .menu__links a { opacity: 1; transform: none; transition-delay: calc(.06s + var(--i, 0) * .04s); }
.menu__aside { display: grid; gap: 22px; align-content: start;
  opacity: 0; transition: opacity .4s .25s; }
.nav.is-open .menu__aside { opacity: 1; }
@media (min-width: 900px) {
  .menu__grid { grid-template-columns: 1.6fr 1fr; align-items: end; }
}

/* Mobile: menu istantaneo. Niente tendina né voci in sequenza: compare subito
   con una dissolvenza brevissima (solo opacità e spostamento, leggeri per iPhone). */
@media (max-width: 899px) {
  .nav__btn, .menu a, .menu-scrim { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
  .menu {
    clip-path: none; opacity: 0; transform: translate3d(0, -10px, 0);
    transition: opacity .16s ease-out, transform .2s ease-out, visibility 0s .2s;
  }
  .nav.is-open .menu {
    clip-path: none; opacity: 1; transform: none;
    transition: opacity .14s ease-out, transform .18s ease-out;
  }
  .menu__links a, .nav.is-open .menu__links a { opacity: 1; transform: none; transition: color .15s; transition-delay: 0s; }
  .menu__aside, .nav.is-open .menu__aside { opacity: 1; transition: none; }
  .menu__links a { padding: 10px 12px; font-size: 34px; }
  .menu-scrim { touch-action: none; }
  .menu__grid { gap: 26px; }
  .menu-scrim, html.menu-open .menu-scrim { transition-duration: .16s; transition-timing-function: ease-out; }
  .burger::before, .burger::after { transition-duration: .22s; }
  .nav, .nav::before { transition-duration: .15s; }
}

/* Pagine che si aprono con una sezione a tutto schermo (home, team, sala, business):
   le sezioni sotto il browser le prepara (e ne scarica le foto) solo quando ti avvicini.
   All'apertura lavora solo sulla prima schermata: si apre prima. */
.stories ~ section, .crew ~ section, .sala-hero ~ section, .biz-hero ~ section { content-visibility: auto; contain-intrinsic-size: auto 100svh; }
.footer { content-visibility: auto; contain-intrinsic-size: auto 420px; }
/* …e per il primissimo fotogramma restano del tutto in attesa: si sbloccano subito dopo
   che la hero è comparsa (site.js aggiunge "cv-ready"). Senza JavaScript non cambia nulla. */
.js:not(.cv-ready) :is(.stories, .crew, .sala-hero, .biz-hero) ~ section { content-visibility: hidden; }
/* Salto a una sezione (link con #): tutto viene preparato, così si arriva al punto esatto */
.cv-off :is(.stories, .crew, .sala-hero, .biz-hero) ~ section { content-visibility: visible; }

/* ---------- Hero "stories" 9:16 ---------- */
.stories {
  position: relative; isolation: isolate;
  height: 100svh; min-height: 560px;
  background: #000; color: #fff;
  overflow: hidden;
  -webkit-user-select: none; user-select: none;
}
.stories__ambient { display: none; }
.stories__frame {
  position: absolute; inset: 0; z-index: 0; overflow: hidden;
  touch-action: pan-y; cursor: pointer;
  background: #0b0b0c;
}
.story { position: absolute; inset: 0; opacity: 0; transition: opacity .45s var(--ease); }
.story.is-active { opacity: 1; z-index: 1; }
.story img {
  width: 100%; height: 100%; object-fit: cover;
  -webkit-touch-callout: none; pointer-events: none;
  transform: scale(1.04);
  transition: transform 2.6s linear;
}
.story.is-active img { transform: scale(1); }
.stories__frame::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(0, 0, 0, .5), rgba(0, 0, 0, 0) 24%),
    linear-gradient(to top, rgba(0, 0, 0, .78), rgba(0, 0, 0, .35) 32%, rgba(0, 0, 0, 0) 56%);
}
.stories__bars {
  position: absolute; z-index: 3; left: 14px; right: 14px; top: calc(var(--nav-h) + 4px);
  display: flex; gap: 4px; pointer-events: none;
}
.bar { flex: 1; height: 2.5px; border-radius: 2px; background: rgba(255, 255, 255, .3); overflow: hidden; }
.bar i { display: block; height: 100%; background: #fff; transform: scaleX(0); transform-origin: 0 50%; }
.bar.is-done i { transform: scaleX(1); }
.bar.is-active i { animation: bar-fill var(--dur, 2s) linear forwards; }
.stories.is-paused .bar.is-active i { animation-play-state: paused; }
@keyframes bar-fill { to { transform: scaleX(1); } }

/* Didascalie: un unico titolo che cambia parola a ogni slide (per il browser resta lo
   stesso elemento: il titolo conta una volta sola come "contenuto principale"), sotto
   le descrizioni con il bottone, impilate: si vede solo quella della slide attiva. */
.stories__caps {
  position: absolute; inset: 0; pointer-events: none;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 0 20px calc(30px + env(safe-area-inset-bottom));
}
.caps__feet { display: grid; margin-top: 14px; }
.cap { grid-area: 1 / 1; visibility: hidden; transition: visibility 0s .4s; }
.cap.is-active { visibility: visible; transition: none; }
/* Titolo dell'hero: niente maschera (che mozzava le lettere durante il cambio)
   e niente ritaglio dell'interlinea stretta: le lettere restano sempre intere. */
.cap__t {
  font-family: var(--f-hero); font-weight: 900; text-transform: uppercase;
  font-size: clamp(76px, 22vw, 150px); line-height: .82; letter-spacing: -.01em;
}
.cap__t span {
  display: block; padding-block: .08em .04em; margin-block: -.08em -.04em;
  transition: opacity .3s ease, transform .5s var(--ease);
}
.stories__title.is-leaving span { opacity: 0; transform: translateY(-.1em); transition-duration: .2s, .3s; }
.stories__title.is-entering span { opacity: 0; transform: translateY(.14em); transition: none; }
.cap__foot { opacity: 0; transform: translateY(8px); transition: opacity .25s, transform .4s var(--ease); }
.cap.is-active .cap__foot { opacity: 1; transform: none; transition-delay: .06s; }
.cap__d { font-size: 17px; font-weight: 500; line-height: 1.35; max-width: 22em; text-wrap: balance; color: rgba(255, 255, 255, .9); }
.cap__cta { margin-top: 16px; pointer-events: auto; min-height: 44px; padding: 0 20px; font-size: 16px; }
.cap__cta svg { width: 15px; height: 15px; }

.stories__frame:focus-visible { outline: 2px solid #fff; outline-offset: -4px; border-radius: 0; }

/* Desktop e tablet orizzontale: frame 9:16 centrato su sfondo ambient */
@media (min-width: 700px) and (min-aspect-ratio: 4/5) {
  .stories__ambient { display: block; position: absolute; inset: -12%; z-index: -1; }
  .stories__ambient img {
    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
    filter: blur(60px) saturate(1.5) brightness(.5);
    opacity: 0; transition: opacity .5s var(--ease);
  }
  .stories__ambient img.is-on { opacity: 1; }
  .stories__frame {
    inset: auto; left: 50%; top: calc(var(--nav-h) + 14px);
    height: calc(100% - var(--nav-h) - 46px); aspect-ratio: 9 / 16;
    transform: translateX(-50%);
    border-radius: 28px;
    box-shadow: 0 50px 120px -20px rgba(0, 0, 0, .7), 0 0 0 1px rgba(255, 255, 255, .08);
  }
  .stories__frame::after {
    background: linear-gradient(to bottom, rgba(0, 0, 0, .42), rgba(0, 0, 0, 0) 18%);
  }
  .stories__bars { top: 14px; left: 14px; right: 14px; }
  .stories__caps { display: block; padding: 0; }
  .caps__feet { display: block; margin: 0; }
  .cap__t {
    position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%);
    text-align: center; white-space: nowrap;
    font-size: min(15vw, 24vh); line-height: .8;
    mix-blend-mode: difference;
  }
  .cap__foot { position: absolute; left: var(--pad); bottom: 40px; max-width: calc(50% - 16vh - 40px); }
  .cap__d { font-size: clamp(17px, 1.4vw, 21px); }
  .stories__frame:focus-visible { border-radius: 28px; }
}
@media (prefers-reduced-motion: reduce) {
  .story img, .story.is-active img { transform: none; transition: none; }
  .bar.is-active i { animation: none; transform: scaleX(1); }
}

/* ---------- Rail orizzontale (carosello Apple) ---------- */
.rail {
  display: grid; grid-auto-flow: column;
  grid-auto-columns: clamp(250px, 70vw, 330px);
  gap: 16px;
  overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  --edge: max(var(--pad), calc((100% - var(--max)) / 2));
  padding: 6px var(--edge) 28px;
  scroll-padding-inline: var(--edge);
  scrollbar-width: none;
}
.rail::-webkit-scrollbar { display: none; }
.rail > * { scroll-snap-align: start; }
.rail-foot { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 8px; }
.rail-foot .ctl { display: none; width: 44px; height: 44px; background: var(--paper-3); color: var(--ink); transition: transform .4s var(--ease), background-color .2s, opacity .2s; }
.rail-foot .ctl:hover { background: #dcdce1; }
@media (min-width: 900px) { .rail-foot .ctl { display: inline-grid; } }

.card { display: block; position: relative; }
.card__media {
  position: relative; aspect-ratio: 4 / 5; border-radius: var(--r-l); overflow: hidden;
  background: var(--paper-3); transform: translateZ(0);
}
.card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.card:hover .card__media img { transform: scale(1.045); }
.tag {
  position: absolute; top: 12px; left: 12px; z-index: 1;
  padding: 7px 13px; border-radius: 999px;
  font-size: 14px; font-weight: 600; letter-spacing: -.01em; line-height: 1;
}
.card__title { margin-top: 16px; font-size: 21px; font-weight: 600; letter-spacing: -.025em; line-height: 1.2; }
.card__text { margin-top: 4px; font-size: 15px; color: var(--ink-2); line-height: 1.4; }

/* ---------- Feature a tutta pagina (sala pose) ---------- */
.feature {
  position: relative; display: flex; flex-direction: column; justify-content: space-between;
  min-height: 100svh; color: #fff; background: #111; overflow: hidden; text-align: center;
}
@media (min-width: 768px) { .feature { min-height: max(100svh, 720px); } }
.feature__media { position: absolute; inset: 0; }
.feature__media img { width: 100%; height: 100%; object-fit: cover; }
.feature::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(0, 0, 0, .8), rgba(0, 0, 0, .42) 30%, rgba(0, 0, 0, 0) 54%),
    linear-gradient(to top, rgba(0, 0, 0, .86), rgba(0, 0, 0, .45) 30%, rgba(0, 0, 0, 0) 58%);
}
.feature__top { position: relative; z-index: 1; width: 100%; padding-top: calc(var(--nav-h) + clamp(72px, 12vh, 132px)); }
.feature__title { font-size: min(var(--mega), calc((100vw - var(--pad) * 2 - 16px) / 5.95)); }
.feature__body { position: relative; z-index: 1; width: 100%; padding-block: 48px clamp(40px, 6vw, 80px); }
.feature__body .t-lead { color: rgba(255, 255, 255, .88); margin-inline: auto; max-width: 26em; text-shadow: 0 1px 14px rgba(0, 0, 0, .45); }
.feature__title { text-shadow: 0 2px 30px rgba(0, 0, 0, .25); }
.feature__price { margin-top: 20px; font-size: clamp(40px, 5vw, 72px); }
.feature__body .btn-row { margin-top: 24px; justify-content: center; }

/* ---------- Team ---------- */
.team { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px 12px; }
@media (min-width: 1024px) { .team { grid-template-columns: repeat(4, 1fr); gap: 20px; } }
.member-card { display: block; }
.member-card__media { aspect-ratio: 1; border-radius: var(--r-l); overflow: hidden; background: #111; }
.member-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease), filter .6s; filter: contrast(1.05); }
@media (hover: hover) { .member-card:hover .member-card__media img { transform: scale(1.03); } }
.member-card__name { margin-top: 14px; font-size: clamp(38px, 4.4vw, 56px); }
.member-card__role { margin-top: 4px; font-size: 15px; color: var(--ink-2); }

/* ---------- Split (testo + immagine) ---------- */
.split { display: grid; gap: clamp(36px, 5vw, 72px); align-items: center; }
@media (min-width: 900px) { .split { grid-template-columns: 1fr 1fr; } .split--rev > :first-child { order: 2; } }
.split__media { border-radius: var(--r-l); overflow: hidden; background: var(--night-3); }
.split__media img { width: 100%; height: 100%; object-fit: cover; }
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pair > * { aspect-ratio: 9 / 16; border-radius: var(--r-l); overflow: hidden; background: var(--paper-3); }
.pair > :nth-child(2) { margin-top: 18%; }
.pair img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Pagine interne ---------- */
.page-head { padding-top: calc(var(--nav-h) + clamp(56px, 9vw, 136px)); padding-bottom: clamp(40px, 6vw, 80px); text-align: center; }
.page-head .t-lead { margin: 22px auto 0; max-width: 32em; }
.page-head .btn-row { margin-top: 30px; justify-content: center; }
.media-wide { border-radius: var(--r-xl); overflow: hidden; background: var(--paper-3); aspect-ratio: 4 / 5; }
@media (min-width: 700px) { .media-wide { aspect-ratio: 16 / 9; } }
.media-wide img { width: 100%; height: 100%; object-fit: cover; }

/* Sotto-navigazione in vetro (servizi, team) */
.subnav {
  position: sticky; top: calc(var(--nav-h) + 10px); z-index: 30;
  display: flex; justify-content: center; pointer-events: none;
  margin-top: -6px; padding-inline: 12px;
}
.subnav__pill {
  pointer-events: auto; display: flex; gap: 2px; padding: 4px;
  border-radius: 999px; max-width: 100%; overflow-x: auto; scrollbar-width: none;
}
.subnav__pill::-webkit-scrollbar { display: none; }
.subnav a {
  flex: none; padding: 9px 16px; border-radius: 999px;
  font-size: 14px; font-weight: 600; letter-spacing: -.01em; color: var(--ink-2);
  transition: background-color .3s var(--ease), color .3s;
}
.subnav a:hover { color: var(--ink); }
.subnav a.is-active { background: var(--ink); color: #fff; }

/* ---------- Servizi ----------
   Le foto restano nel formato di sempre (4:5, il video 16:10). Ogni servizio sta in
   circa una schermata: su mobile foto e nome/prezzo affiancati, sotto descrizione,
   pacchetti compatti e bottoni; su desktop foto da un lato e contenuto dall'altro. */
.group { padding-top: 0; }
.svc {
  display: grid; grid-template-columns: minmax(0, 48fr) minmax(0, 52fr);
  grid-template-areas: "media head" "body body";
  gap: 16px; align-items: center;
  padding-block: 24px; border-top: 1px solid var(--line);
}
.svc__media { grid-area: media; aspect-ratio: 4 / 5; border-radius: 18px; overflow: hidden; background: var(--paper-3); }
.svc--wide .svc__media { aspect-ratio: 16 / 10; }
.svc__media img { width: 100%; height: 100%; object-fit: cover; }
.svc__head { grid-area: head; }
.svc__title { font-family: var(--f-head); font-weight: 700; font-size: clamp(22px, 6vw, 28px); line-height: 1.08; letter-spacing: -.03em; }
.svc__from { margin-top: 10px; font-size: clamp(28px, 8vw, 36px); line-height: .9; }
.svc__from small { font-family: var(--f-ui); text-transform: none; font-weight: 500; font-size: 14px; letter-spacing: -.01em; color: var(--ink-2); margin-right: .25em; }
.svc__body { grid-area: body; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.svc__text { font-size: 16px; line-height: 1.45; color: var(--ink-2); }
.pkgs { display: grid; gap: 8px; }
.pkg {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 14px;
  padding: 13px 14px 13px 16px; border-radius: 16px; background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .07), 0 1px 2px rgba(0, 0, 0, .04), 0 10px 24px -18px rgba(0, 0, 0, .35);
}
.pkg__name { font-size: 15px; font-weight: 600; letter-spacing: -.015em; line-height: 1.25; }
.pkg__det { margin-top: 2px; font-size: 13.5px; line-height: 1.35; color: var(--ink-2); }
.pkg__price { font-size: 26px; line-height: 1; white-space: nowrap; align-self: stretch; display: flex; align-items: center; padding-left: 14px; border-left: 1px solid var(--line); }
.svc__note { font-size: 14px; color: var(--ink-2); }
.svc__cta { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 2px; }
.svc__cta .btn { min-height: 44px; padding: 0 12px; font-size: 15px; }
@media (min-width: 900px) {
  .svc {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    grid-template-rows: 1fr auto auto 1fr;
    grid-template-areas: "media ." "media head" "media body" "media .";
    gap: 0 clamp(32px, 5vw, 80px); align-items: start;
    padding-block: clamp(32px, 3.6vw, 48px);
  }
  .svc--rev {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    grid-template-areas: ". media" "head media" "body media" ". media";
  }
  .svc__media { border-radius: var(--r-l); }
  .svc__head { margin-bottom: 18px; }
  .svc__title { font-size: clamp(32px, 3.2vw, 46px); }
  .svc__from { margin-top: 14px; font-size: clamp(44px, 4.4vw, 64px); }
  .svc__from small { font-size: 17px; }
  .svc__body { gap: 14px; }
  .svc__text { font-size: 17px; max-width: 36em; }
  .pkgs { grid-template-columns: 1fr 1fr; }
  .pkgs--1 { grid-template-columns: minmax(0, 420px); }
  .pkg { padding: 15px 16px 15px 18px; }
  .pkg__price { font-size: 30px; }
  .svc__cta { display: flex; flex-wrap: wrap; gap: 10px; }
  .svc__cta .btn { min-height: 46px; padding: 0 22px; font-size: 16px; }
}

/* Riquadri di collegamento */
.tiles { display: grid; gap: 12px; }
@media (min-width: 768px) { .tiles { grid-template-columns: 1fr 1fr; } }
.tile {
  position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 40px;
  min-height: 220px; padding: clamp(24px, 3vw, 36px); border-radius: var(--r-l);
  background: var(--paper-2); overflow: hidden; transition: transform .5s var(--ease);
}
.tile:hover { transform: scale(1.012); }
.tile--night { background: #000; color: #fff; }
.tile--night .t-lead { color: var(--snow-2); }
.tile .t-street { font-size: clamp(54px, 6vw, 88px); }

/* ---------- Team (pagina) ---------- */
/* Hero del team: i 4 ritratti (fondo nero) affiancati come una foto di gruppo.
   Su mobile 2×2 a tutta altezza, su desktop in fila. Ogni ritratto porta al suo profilo. */
.crew {
  display: flex; flex-direction: column; height: 100svh; min-height: 540px;
  padding: calc(var(--nav-h) + 2.6svh) 0 0; text-align: center;
}
.crew__title { padding-inline: var(--pad); margin-bottom: 2.4svh; }
.crew__grid { flex: 1 1 0; min-height: 0; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; width: 100%; }
.crew__grid li { min-height: 0; }
.crew__tile { position: relative; display: block; height: 100%; overflow: hidden; color: #fff; -webkit-tap-highlight-color: transparent; }
.crew__tile img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; transition: opacity .45s var(--ease); }
.crew__tile:active img { opacity: .75; }
/* Bordi sfumati nel nero: i ritratti si fondono come un'unica foto di gruppo */
.crew__tile::after { content: ""; position: absolute; inset: 0; box-shadow: inset 0 0 36px 22px #000; pointer-events: none; }
.crew__name {
  position: absolute; z-index: 1; left: 0; right: 0; bottom: clamp(12px, 2.2svh, 22px);
  font-size: clamp(28px, 7.4vw, 40px); letter-spacing: .01em; text-shadow: 0 2px 18px rgba(0, 0, 0, .7);
}
@media (min-width: 700px) {
  .crew { height: auto; min-height: 100svh; justify-content: center; padding-bottom: 4svh; }
  .crew__grid {
    flex: none; grid-template-columns: repeat(4, 1fr); grid-template-rows: none;
    width: min(100% - var(--pad) * 2, var(--max), (100svh - var(--nav-h) - 30svh) * 3); margin-inline: auto;
  }
  .crew__tile { aspect-ratio: 3 / 4; height: auto; }
  .crew__name { font-size: clamp(30px, 3.2vw, 48px); }
  /* Passando sopra un ritratto, gli altri si attenuano */
  .crew__grid:hover .crew__tile:not(:hover) img { opacity: .4; }
}
.member { padding-block: clamp(30px, 3vw, 40px); border-top: 1px solid var(--line); }
.crew + .member { border-top: 0; }
/* Pagina team: arrivando su un profilo, il profilo parte subito sotto la barra */
html:has(.crew) { scroll-padding-top: var(--nav-h); }
.member__top {
  display: grid; grid-template-columns: 112px minmax(0, 1fr); grid-template-areas: "p h" "b b";
  gap: 22px 18px; align-items: center;
}
.member__portrait { grid-area: p; aspect-ratio: 1; border-radius: 24px; overflow: hidden; background: #111; }
.member__head { grid-area: h; }
.member__top .member__bio { grid-area: b; }
@media (min-width: 900px) {
  .member__top {
    grid-template-columns: minmax(0, clamp(260px, 24vw, 340px)) minmax(0, 1fr); grid-template-areas: "p h" "p b";
    gap: 16px clamp(36px, 5vw, 72px); align-items: start;
  }
  .member__portrait { border-radius: var(--r-xl); }
  .member__head { align-self: end; }
}
.member__portrait img { width: 100%; height: 100%; object-fit: cover; }
.member__name { font-size: clamp(40px, 11vw, 64px); line-height: .88; font-weight: 900; }
.member__role { margin-top: 8px; font-size: clamp(15px, 1.5vw, 21px); font-weight: 600; letter-spacing: -.02em; }
@media (min-width: 900px) { .member__name { font-size: clamp(64px, 7.6vw, 120px); } .member__role { margin-top: 12px; } }
.member__bio p { color: var(--ink-2); font-size: 16px; line-height: 1.5; max-width: 36em; }
.member__bio p + p { margin-top: .7em; }
@media (min-width: 900px) { .member__bio p { font-size: 17px; } }
.cats {
  display: grid; grid-auto-flow: column; grid-auto-columns: clamp(130px, 35vw, 200px);
  gap: 10px; margin-top: clamp(24px, 3vw, 36px);
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
  margin-inline: calc(var(--pad) * -1); padding-inline: var(--pad); scroll-padding-inline: var(--pad);
}
.cats::-webkit-scrollbar { display: none; }
/* "Scorri" sulle gallerie dei fotografi (solo dove la fila scorre) */
.cats-wrap { position: relative; margin-top: clamp(24px, 3vw, 36px); }
.cats-wrap .cats { margin-top: 0; }
.cats-wrap .swipe-hint { top: 50%; right: 4px; }
.cats.is-nudging > * { animation: rail-nudge 1.2s cubic-bezier(.45, 0, .2, 1) 1; }
@media (min-width: 1024px) { .cats-wrap .swipe-hint { display: none; } }
.cats > * { scroll-snap-align: start; }
@media (min-width: 1024px) {
  .cats { grid-auto-flow: row; grid-template-columns: repeat(6, 1fr); overflow: visible; margin-inline: 0; padding-inline: 0; gap: 14px; }
}
.cat {
  position: relative; display: block; aspect-ratio: 9 / 16;
  border-radius: var(--r-m); overflow: hidden; background: #111; color: #fff;
  transform: translateZ(0);
}
.cat img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.cat:hover img { transform: scale(1.06); }
.cat::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0, 0, 0, .7), rgba(0, 0, 0, 0) 45%); pointer-events: none; }
.cat__name { position: absolute; left: 12px; right: 12px; bottom: 12px; z-index: 1; font-size: clamp(24px, 2.2vw, 32px); }
.cat__go { position: absolute; top: 10px; right: 10px; z-index: 1; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; transition: transform .4s var(--ease); }
.cat__go svg { width: 14px; height: 14px; }
.cat:hover .cat__go { transform: rotate(45deg); }

/* ---------- Galleria ---------- */
.gal-head { padding-top: calc(var(--nav-h) + clamp(48px, 8vw, 112px)); padding-bottom: clamp(28px, 4vw, 48px); text-align: center; }
.gal-back { display: inline-flex; align-items: center; gap: 6px; font-size: 15px; font-weight: 500; color: var(--ink-2); }
.gal-back::before { content: ""; width: 7px; height: 7px; border-left: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor; transform: rotate(45deg); }
.gal-back:hover { color: var(--ink); }
.gal-title { margin-top: 18px; font-size: clamp(56px, 14vw, 220px); line-height: .9; font-weight: 900; }
.gal-meta { margin-top: 18px; color: var(--ink-2); font-size: clamp(17px, 1.5vw, 21px); }
.masonry { columns: 2; column-gap: 8px; }
@media (min-width: 768px) { .masonry { columns: 3; column-gap: 12px; } }
@media (min-width: 1280px) { .masonry { columns: 4; } }
.m-item {
  display: block; width: 100%; margin-bottom: 8px; break-inside: avoid;
  border-radius: 12px; overflow: hidden; background: var(--paper-2); cursor: zoom-in;
}
@media (min-width: 768px) { .m-item { margin-bottom: 12px; border-radius: 16px; } }
.m-item img { width: 100%; height: auto; transition: transform .9s var(--ease), opacity .6s; }
.m-item:hover img { transform: scale(1.03); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { padding: 9px 16px; border-radius: 999px; background: var(--paper-2); font-size: 15px; font-weight: 600; transition: background-color .2s; }
.chip:hover { background: var(--paper-3); }
.chip[aria-current="page"] { background: var(--ink); color: #fff; }
.gal-index { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(56px, 7vw, 96px); }
/* Singola galleria (galleria.html?g=…): l'indice resta nascosto e non scarica nulla;
   lo spazio della galleria è riservato, così la pagina non salta quando arrivano le foto */
/* Indice: le sezioni dopo la prima si preparano (e scaricano le copertine) quando ti avvicini */
.gal-index > section + section { content-visibility: auto; contain-intrinsic-size: auto 420px; }
.gal-one [data-gal-index] { display: none; }
.gal-one:not(.gal-ready) [data-gal-head] { visibility: hidden; }
.gal-one [data-gal-body]:empty { min-height: 120svh; }

/* Lightbox */
.lb {
  position: fixed; inset: 0; z-index: 100; background: rgba(0, 0, 0, .96); color: #fff;
  display: grid; place-items: center; opacity: 0; visibility: hidden;
  transition: opacity .35s var(--ease), visibility 0s .35s; touch-action: pan-y;
}
.lb.is-open { opacity: 1; visibility: visible; transition: opacity .35s var(--ease); }
.lb__img { max-width: 100vw; max-height: 100svh; width: auto; height: auto; object-fit: contain; -webkit-user-select: none; user-select: none; }
@media (min-width: 768px) { .lb__img { max-width: calc(100vw - 176px); max-height: calc(100svh - 120px); border-radius: 6px; } }
.lb__close { position: absolute; top: calc(14px + env(safe-area-inset-top)); right: 14px; }
.lb__prev, .lb__next { position: absolute; top: 50%; transform: translateY(-50%); display: none; }
.lb__prev:hover, .lb__next:hover { transform: translateY(-50%) scale(1.06); }
.lb__prev { left: 24px; }
.lb__next { right: 24px; }
@media (min-width: 768px) { .lb__prev, .lb__next { display: inline-grid; } }
.lb__count { position: absolute; left: 50%; bottom: calc(18px + env(safe-area-inset-bottom)); transform: translateX(-50%); padding: 8px 14px; border-radius: 999px; font-family: var(--f-mono); font-size: 13px; }

/* ---------- Sala pose ---------- */
/* Attrezzatura: card quasi quadrate, foto 4:3 in alto e sotto il numero
   separato da una linea, con i testi allineati. Su mobile si scorrono. */
.kit { padding-block: clamp(64px, 9vw, 128px); }
.kit__title { margin-bottom: clamp(28px, 4vw, 52px); }
.kit__wrap { position: relative; }
.stats {
  display: grid; grid-auto-flow: column; grid-auto-columns: min(78%, 320px); gap: 12px;
  overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none;
  margin-inline: calc(var(--pad) * -1); padding: 4px var(--pad) 14px; scroll-padding-inline: var(--pad);
}
.stats::-webkit-scrollbar { display: none; }
.stats > .stat { scroll-snap-align: start; }
.stats.is-nudging > * { animation: rail-nudge 1.2s cubic-bezier(.45, 0, .2, 1) 1; }
.kit__wrap .swipe-hint { top: 38%; right: 4px; }
@media (min-width: 900px) {
  .stats { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; overflow: visible; margin-inline: 0; padding: 0; }
  .kit__wrap .swipe-hint { display: none; }
}
.stat {
  display: flex; flex-direction: column; overflow: hidden;
  border-radius: 22px; background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .07), 0 1px 2px rgba(0, 0, 0, .04), 0 10px 24px -18px rgba(0, 0, 0, .35);
}
.stat__ph { aspect-ratio: 4 / 3; background: var(--paper-2); }
.stat__ph img { width: 100%; height: 100%; object-fit: cover; }
.stat__ph--empty { display: grid; place-items: center; color: var(--ink-3); }
.stat__ph--empty svg { width: 34px; height: 34px; }
.stat__row {
  flex: 1; display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: start; gap: 12px;
  padding: 14px 16px 16px 12px;
}
.stat__row > div { padding-left: 14px; border-left: 1px solid var(--line); }
.stat__n { padding-top: 4px; text-align: center; font-size: 44px; line-height: .8; font-weight: 900; }
.stat__t { font-weight: 600; font-size: 17px; letter-spacing: -.02em; line-height: 1.25; }
.stat__s { margin-top: 2px; font-size: 14px; color: var(--ink-2); line-height: 1.35; }
@media (min-width: 900px) {
  .stat { border-radius: var(--r-l); }
  .stat__row { grid-template-columns: 50px minmax(0, 1fr); gap: 14px; padding: 18px 22px 20px 14px; }
  .stat__row > div { padding-left: 18px; }
  .stat__n { padding-top: 5px; font-size: 54px; }
  .stat__t { font-size: 19px; }
  .stat__s { font-size: 15px; }
}
/* Tariffe: card compatte, prezzo a destra separato da una linea (come i pacchetti) */
.rates-sec { padding-block: clamp(40px, 9vw, 128px); }
.rates__title { margin-bottom: clamp(24px, 4vw, 52px); }
.rates { display: grid; gap: 10px; max-width: 560px; margin-inline: auto; }
@media (min-width: 900px) { .rates { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; max-width: none; } }
.rate {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "info price" "btn btn";
  align-items: center; gap: 12px 16px;
  padding: 16px 16px 16px 18px; border-radius: 20px; background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .07), 0 1px 2px rgba(0, 0, 0, .04), 0 10px 24px -18px rgba(0, 0, 0, .35);
}
.rate__info { grid-area: info; }
.rate__h { font-size: 20px; font-weight: 600; letter-spacing: -.02em; line-height: 1.2; }
.rate__d { margin-top: 3px; font-size: 14px; line-height: 1.35; color: var(--ink-2); }
.rate__p {
  grid-area: price; align-self: stretch; display: flex; align-items: center;
  padding-left: 16px; border-left: 1px solid var(--line);
  font-size: 44px; line-height: .8; font-weight: 900; white-space: nowrap;
}
.rate__btn { grid-area: btn; width: 100%; min-height: 44px; font-size: 16px; }
@media (min-width: 900px) {
  .rate { gap: 20px 22px; padding: 26px 26px 26px 28px; border-radius: var(--r-l); }
  .rate__h { font-size: 22px; }
  .rate__d { font-size: 15px; }
  .rate__p { padding-left: 22px; font-size: 60px; }
  .rate__btn { min-height: 50px; font-size: 17px; }
}
.strip { grid-auto-columns: clamp(280px, 78vw, 560px); }
.strip .shot { aspect-ratio: 3 / 2; border-radius: var(--r-l); overflow: hidden; background: var(--paper-3); }
.strip .shot img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Business ---------- */
.partners { display: grid; gap: 12px; }
@media (min-width: 768px) { .partners { grid-template-columns: 1fr 1fr; gap: 16px; } }
.partner {
  display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; align-items: center; gap: 16px;
  padding: 14px 18px 14px 14px; border-radius: 20px; background: var(--night-2); color: #fff;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .1); transition: transform .5s var(--ease);
}
.partner:hover { transform: scale(1.015); }
.partner img { width: 64px; height: 64px; border-radius: 14px; object-fit: cover; }
.partner__name { font-weight: 600; font-size: 17px; letter-spacing: -.02em; }
/* Profilo Instagram: pillola con il logo, invita al tocco */
.partner__ig {
  display: inline-flex; align-items: center; gap: 7px; margin-top: 6px; padding: 4px 11px 4px 4px;
  border-radius: 999px; background: rgba(255, 255, 255, .09); color: #fff;
  font-size: 14px; font-weight: 500; letter-spacing: -.01em; transition: background-color .25s;
}
.partner__ig svg { width: 22px; height: 22px; flex: none; }
.partner:hover .partner__ig { background: rgba(255, 255, 255, .17); }
.partner:active { transform: scale(.98); }
.partner:active .partner__ig { background: rgba(255, 255, 255, .2); }
.partner__n {
  align-self: stretch; display: flex; flex-direction: column; justify-content: center; align-items: flex-end;
  padding-left: 16px; border-left: 1px solid rgba(255, 255, 255, .14); font-size: 44px;
}
.partner__n small { display: block; font-family: var(--f-ui); font-size: 12px; font-weight: 600; text-transform: none; letter-spacing: 0; color: var(--snow-2); margin-top: 4px; }
@media (min-width: 900px) {
  .partner { grid-template-columns: 80px minmax(0, 1fr) auto; gap: 20px; padding: 18px 24px 18px 18px; border-radius: var(--r-l); }
  .partner img { width: 80px; height: 80px; border-radius: 18px; }
  .partner__name { font-size: 19px; }
  .partner__ig { font-size: 15px; }
  .partner__ig svg { width: 24px; height: 24px; }
  .partner__n { padding-left: 22px; font-size: 56px; }
}

/* ---------- Contatti e moduli ---------- */
/* Contatti: elenco a righe (stile Apple) a sinistra, modulo a destra */
/* Contatti: un'unica card con le righe, come le Impostazioni di iPhone */
.contact { padding-bottom: clamp(56px, 8vw, 112px); }
.crows {
  max-width: 640px; margin-inline: auto; overflow: hidden;
  border-radius: 22px; background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .07), 0 1px 2px rgba(0, 0, 0, .04), 0 16px 34px -24px rgba(0, 0, 0, .4);
}
.crow {
  position: relative; display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 16px;
  padding: 14px 18px 14px 16px; transition: background-color .2s; -webkit-tap-highlight-color: transparent;
}
.crows li + li .crow::before { content: ""; position: absolute; top: 0; left: 72px; right: 0; height: 1px; background: var(--line); }
.crow__ic svg { width: 40px; height: 40px; display: block; }
.crow__tx strong { display: block; font-size: 17px; font-weight: 600; letter-spacing: -.02em; line-height: 1.25; }
.crow__tx span { display: block; margin-top: 1px; font-size: 15px; color: var(--ink-2); overflow-wrap: break-word; }
.crow__act {
  padding: 7px 14px; border-radius: 999px; background: var(--paper-2); color: var(--ink);
  font-size: 14px; font-weight: 600; letter-spacing: -.01em; white-space: nowrap;
  transition: background-color .2s, color .2s;
}
.crow:active .crow__act { background: var(--ink); color: #fff; }
@media (hover: hover) {
  .crow:hover { background: #fafafa; }
  .crow:hover .crow__act { background: var(--ink); color: #fff; }
}
.crow:active { background: var(--paper-2); }
@media (min-width: 900px) {
  .crow { padding: 18px 24px 18px 20px; gap: 18px; grid-template-columns: 44px minmax(0, 1fr) auto; }
  .crow__ic svg { width: 44px; height: 44px; }
  .crows li + li .crow::before { left: 82px; }
}
.contact-form { border-top: 1px solid var(--line); }
.contact-form .form-wrap { max-width: 760px; }
.contact__more { display: flex; width: fit-content; margin: 2.2svh auto 0; font-size: 15px; }
/* Dove siamo: mappa di Google (si carica solo quando ci si arriva) */
.where { border-top: 1px solid var(--line); }
.where .section__head { margin-bottom: clamp(28px, 4vw, 44px); }
.where .btn svg { width: 20px; height: 20px; }
.map { position: relative; aspect-ratio: 4 / 5; border-radius: var(--r-xl); overflow: hidden; background: var(--paper-3); box-shadow: 0 0 0 1px var(--line); }
@media (min-width: 700px) { .map { aspect-ratio: 16 / 8; } }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.form { display: grid; gap: 16px; }
@media (min-width: 640px) { .form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } }
.form__row { display: grid; gap: 16px; }
.field { display: grid; gap: 8px; }
.field label, .field legend { font-size: 14px; font-weight: 600; color: var(--ink); padding: 0; }
.field label .opt { font-weight: 400; color: var(--ink-3); }
.field input:not([type="radio"]), .field textarea {
  appearance: none; width: 100%; font: inherit; font-size: 17px; letter-spacing: -.02em; color: var(--ink);
  padding: 15px 16px; border-radius: 14px; border: 1px solid rgba(0, 0, 0, .16); background: #fff;
  transition: border-color .2s, box-shadow .2s;
}
.field textarea { min-height: 150px; resize: vertical; line-height: 1.45; }
.field input:not([type="radio"]):focus, .field textarea:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 4px rgba(0, 0, 0, .07); }
.field input::placeholder, .field textarea::placeholder { color: #a1a1a6; }
.field .hint { font-size: 14px; color: var(--ink-2); }
fieldset.field { border: 0; margin: 0; padding: 0; min-width: 0; }
.seg { position: relative; display: inline-flex; justify-self: start; padding: 4px; border-radius: 999px; background: var(--paper-2); gap: 2px; }
.seg input { position: absolute; width: 1px; height: 1px; margin: 0; opacity: 0; pointer-events: none; }
.seg label { padding: 10px 20px; border-radius: 999px; font-size: 15px; font-weight: 600; color: var(--ink-2); cursor: pointer; transition: background-color .25s, color .25s, box-shadow .25s; }
.seg input:checked + label { background: #fff; color: var(--ink); box-shadow: 0 2px 8px rgba(0, 0, 0, .1); }
.seg input:focus-visible + label { outline: 2px solid #0071e3; outline-offset: 2px; }
.form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 8px; }
.form__note { font-size: 14px; color: var(--ink-2); }
.form__status { font-size: 15px; font-weight: 500; }
.form-card { padding: clamp(24px, 4vw, 48px); border-radius: var(--r-xl); background: #fff; box-shadow: 0 0 0 1px var(--line); }

/* ---------- CTA finale ---------- */
.cta-end .btn-row { margin-top: 36px; }
.cta-end .t-lead { margin-top: 18px; }

/* ---------- Footer: compatto, contatti con i loghi originali ---------- */
.footer { background: #000; color: var(--snow-2); padding: 44px 0 calc(22px + env(safe-area-inset-bottom)); font-size: 14px; }
.footer__top { display: grid; justify-items: center; gap: 22px; text-align: center; }
@media (min-width: 900px) { .footer__top { grid-template-columns: auto 1fr auto; align-items: center; gap: 40px; } }
.footer__logo {
  --logo: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 117'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M98.8 113.2C97.2 112.6 96.6 111.8 97.3 111.1C97.7 110.7 97.8 110.7 98.7 111.2C99.3 111.5 100.1 111.8 100.5 111.8C101.2 111.8 102.2 111.1 102.2 110.6C102.2 110.1 101 109.3 99.9 109.1C98.4 108.8 97.2 107.6 97.2 106.1C97.2 104.7 98.4 103.4 99.8 103.1C101.5 102.8 103.9 104.1 103.7 105.2C103.6 105.8 102.7 105.9 101.9 105.4C101.2 104.9 99.7 104.9 99.3 105.4C98.6 106.2 99 106.8 100.9 107.4C103 108.1 103.7 108.8 103.9 110.1C104.2 112.6 101.5 114.2 98.8 113.2ZM134.1 113.2C133.7 113 133.1 112.4 132.8 112C132.2 111.2 132.1 110.9 132 107.4C132 104.1 132 103.7 132.4 103.6C133.2 103.3 133.5 104.2 133.5 107C133.5 110.1 133.7 110.8 134.9 111.4C135.6 111.7 135.9 111.7 136.5 111.5C137.8 111 138 110.4 138 107.2C138 104 138.1 103.5 138.8 103.5C139.4 103.5 139.5 104.1 139.5 107.4C139.5 110.7 139.1 112.1 137.9 112.9C137 113.5 135.1 113.6 134.1 113.2ZM151.2 113.1C150.8 112.8 150.8 112.1 150.8 108.5C150.8 106 150.9 104 151 103.7C151.4 103 155.2 103 156.6 103.8C159.5 105.5 159.6 111.2 156.8 112.9C155.6 113.6 151.8 113.7 151.2 113.1ZM184.5 113.2C183.8 112.9 182.6 111.8 182.2 111.2C181.7 110.3 181.5 108.2 181.8 107C182.2 104.9 183.7 103.5 185.8 103.1C187.3 102.8 189.3 103.9 190.2 105.4C190.8 106.4 190.9 106.9 190.9 108.4C190.9 109.9 190.8 110.3 190.1 111.2C189 112.9 188.2 113.3 186.6 113.4C185.8 113.5 184.8 113.4 184.5 113.2ZM117.2 113.1C117.1 113 117 111.3 117 109.2C117 105.1 117 105.1 115.2 105C114.2 104.9 114.1 104.8 114.1 104.1L114.1 103.4L117.5 103.3C120.8 103.2 121 103.3 121.3 103.8C121.7 104.5 121.2 105 120 105C118.6 105 118.5 105.2 118.5 109.1C118.5 111.5 118.4 112.7 118.2 113C117.9 113.3 117.4 113.3 117.2 113.1ZM169.8 113C169.4 112.6 169.4 104.3 169.7 103.8C169.8 103.6 170.1 103.5 170.4 103.5C170.8 103.6 170.9 104 170.9 107.9C171 110.2 171 112.4 170.9 112.7C170.7 113.3 170.3 113.4 169.8 113ZM188 111C189 110.3 189.3 109.5 189.2 108C189.1 106.8 189 106.6 188.2 105.8C186.8 104.6 185.5 104.7 184.2 106C183.3 106.8 183.2 107.1 183.2 108.2C183.2 111.1 185.9 112.6 188 111ZM156 111.1C157.2 110.5 157.6 108.4 156.9 106.7C156.5 105.7 155.2 105 153.9 105C152.2 105 152.2 105 152.2 108.2C152.2 109.8 152.3 111.2 152.4 111.3C152.7 111.6 155.3 111.5 156 111.1ZM71.9 90.5C71.2 90.4 70.2 90.2 69.6 90C69.1 89.9 67.4 89.8 66 89.8C64.6 89.8 63.2 89.8 63.1 89.8C62.8 89.8 62.8 88.4 62.7 83.9C62.7 73.8 62.6 67.3 62.4 67.1C62.3 66.9 62.4 66 62.6 65.1C62.8 64.2 63 62.6 62.9 61.6C62.9 60.5 62.9 57.1 63 54C63.1 47.8 63.1 38.5 63 23.1C62.9 14.2 63 12.8 63.4 10.6C63.7 8.7 64 8.1 64.4 7.9C64.8 7.7 65.9 7.6 69.2 7.8C72.1 7.9 74.7 7.9 76.6 7.7C78.2 7.6 79.6 7.6 79.8 7.7C80 7.8 81 7.9 82 7.9C83.4 7.9 84.1 8 84.6 8.3C85.7 9 86.7 9.3 88.9 9.4C90 9.4 91.3 9.6 91.9 9.7C92.8 9.9 93.2 9.8 94 9.5C95 9 95.4 9 97.8 9.2C100.6 9.5 102.3 10 102.2 10.5C102.2 10.7 102 11.2 101.7 11.6C101.3 12.2 101.3 12.6 101.4 13.9C101.5 14.7 101.6 17.5 101.6 20C101.7 22.5 101.8 25.3 101.8 26.1C101.9 26.9 102 29.3 102.1 31.2C102.2 33.2 102.4 36.2 102.5 37.8C103.1 44.2 103.2 53 102.7 57.2C102.6 58.6 102.5 61.6 102.5 64C102.5 66.4 102.5 69 102.5 69.9C102.5 70.7 102.5 75.4 102.4 80.4C102.4 90.5 102.5 89.9 100.5 90.5C99.6 90.7 99.4 90.7 99 90.3C98.5 89.9 98.3 89.9 96.3 90.2C94.7 90.4 93.9 90.5 93.3 90.2C92.6 90 91.2 90 78.6 90.3C77 90.4 75.1 90.5 74.4 90.6C73.7 90.6 72.6 90.6 71.9 90.5ZM166.5 87.5C165.8 86.8 165.7 86 165.9 82.9C166 81.4 166.1 77.9 166.1 75.2C166.1 72 166.2 70.2 166.4 69.8C166.9 69.1 166.8 68.3 166.4 68.1C165.9 67.9 165.9 67 166.3 66.6C166.5 66.4 166.6 64.8 166.6 62C166.6 59.6 166.7 57.5 166.8 57.4C166.9 57.2 166.8 56.8 166.6 56.4C166.3 55.7 166.3 55.6 166.6 55C166.9 54.4 166.9 54.3 166.6 53.6C166.2 52.9 166.3 52.7 166.6 52C167 51.3 167 51.2 166.6 50.5C166.1 49.6 166.2 49.2 166.8 47.2C167.1 46.1 167.2 45.4 167 45C166.3 42.9 166.2 42.3 166.5 41.4C166.7 40.9 166.7 40.4 166.6 40.1C166.5 39.8 166.3 38.8 166.3 37.9C166.3 36.9 166.2 35.1 166.1 33.9C166 31.5 166 22.5 166.1 20.2C166.2 19.5 166.3 18.5 166.5 18.1C166.8 17.4 166.8 17.2 166.4 16.2C166.1 15.4 165.9 14.2 165.8 11.1C165.7 6.1 165.8 5.7 166.9 4.8C167.9 4.1 167.9 4.1 171.5 4.1C173.5 4.1 175.8 4.2 176.6 4.3C177.4 4.4 180 4.6 182.2 4.8C184.5 4.9 186.9 5.1 187.6 5.3C189.2 5.7 192.6 5.7 193.9 5.3C194.4 5.1 195.7 5 196.8 5C197.9 5 198.8 4.9 198.9 4.7C199.2 4.5 199.4 4.5 199.8 4.7C200.3 4.9 201 4.9 202.4 4.7C203.4 4.6 204.4 4.5 204.5 4.6C204.6 4.7 206.4 4.6 208.4 4.5C210.5 4.4 214.6 4.2 217.6 4.1C222.8 4 223 4 223.5 4.5C223.9 4.9 224 5.2 223.8 5.8C223.5 7.1 223.7 10.9 224.1 11.7C224.4 12.3 224.4 12.4 224 13C223.4 13.8 223.1 17.8 223.6 18.5C223.8 18.9 223.8 19.2 223.6 19.8C223.1 21 223.2 22.4 223.6 22.7C224.1 23.1 224.1 23.9 223.7 24.1C223.4 24.3 223.7 26.5 224.2 27.7C224.5 28.5 224.5 28.6 224.2 29C223.9 29.3 223.8 30.1 224.1 34.4C224.2 37.1 224.3 39.8 224.3 40.3C224.3 40.9 224.4 41.9 224.6 42.7C224.8 43.4 224.9 44.3 224.9 44.6C224.8 45 224.8 45.5 225.1 45.9C225.5 46.4 225.5 46.5 224.8 47L224.1 47.5L224.7 48C225.5 49 225.5 49.2 225 50.2C224.6 51.1 224.5 51.3 224.8 51.9C225 52.4 225 52.7 224.7 53.3C224.1 54.5 223.9 57.6 224.4 58C224.9 58.4 224.9 58.9 224.3 59.7C223.9 60.4 223.8 61.5 224.2 62.6C224.5 63.2 224.4 63.4 224.1 63.9C223.8 64.4 223.8 64.7 224 65.5C224.2 66.1 224.2 66.6 224.1 66.9C223.9 67.2 223.9 67.7 223.9 68C224 68.4 223.9 69 223.6 69.5C223.1 70.4 223.1 71.1 223.7 71.9C224.1 72.5 224.1 72.6 223.6 73C223.1 73.3 223 73.6 223 76.6C223 81.4 223.1 83 223.6 83.8C224.2 84.7 224 85.2 222.7 86.4C222 87 221.6 87.2 221.3 87.1C220.9 87 217.7 86.7 217.1 86.8C217 86.8 214.8 86.8 212.3 86.9C208.9 87 207.6 87.1 207 87.4C206.1 87.8 204.1 87.9 203 87.4C202.3 87.2 201.1 87.1 197.9 87.2C194.6 87.2 193.5 87.2 192.6 86.9C191.3 86.4 189.8 86.4 188.8 86.8C187.5 87.3 181.5 87.4 179.7 86.9C179.3 86.8 178.6 86.8 177.8 87.1C176.6 87.5 176.4 87.5 175.5 87.2C174.8 86.9 174.5 86.9 174 87.1C173.5 87.4 173.1 87.4 172.5 87.3C171.2 86.9 168.7 87.1 168 87.6C167.2 88.1 167.1 88.1 166.5 87.5ZM113.7 86.2C111.7 86 108.9 85.2 108.3 84.6C108 84.4 108 83.9 108.2 82.1C108.7 79.1 108.7 78.7 108.1 75.9C107.8 74 107.7 72.8 107.9 71.2C108 69.4 107.9 68.8 107.7 68.4C107.3 67.8 107.1 60.5 107.2 53C107.2 51.7 107.2 48.1 107.2 45C107.1 29.6 107.2 22.8 107.5 21.9C107.7 21.4 107.6 20.2 107.4 18.2C107.1 16.2 107.1 15 107.3 14.4C107.4 13.9 107.5 13.1 107.5 12.6C107.5 12.1 107.6 10 107.7 8.1C107.9 4.3 108.2 3.4 109.4 3C110.1 2.7 115.1 3.2 116.3 3.7C117.1 4 117.7 4 119.7 3.8C122.1 3.5 123.1 3.6 128.3 4.2C130.5 4.5 131.3 4.4 133.8 3.4C134.3 3.2 135.3 3.1 136.4 3.2C140.8 3.3 143.3 3.5 144.8 3.7C146.4 4 146.6 3.9 147.2 3.5C147.7 3.1 148.1 3 149.4 3.1C151.1 3.3 153.1 3.8 154.9 4.6C156.1 5 156.4 5.1 158.4 4.8C160.4 4.5 160.7 4.5 161.2 5C162.1 5.6 162.4 8.3 162 11.2C161.8 12.7 161.8 14.9 161.9 18.5C162.1 21.3 162.1 24.3 162.1 25.1C162 25.9 162 27.6 161.9 28.9C161.9 30.1 161.7 31.4 161.5 31.7C161.4 32 161.3 32.5 161.3 32.8C161.4 33 161.3 35.7 161.2 38.8C161.1 41.9 161 46.3 161 48.6C161 51 160.8 54.1 160.7 55.6C160.4 58.1 160.5 58.5 160.8 59C161.2 59.5 161.2 59.7 160.7 60.9C160.2 62.5 160.1 64.4 160.4 70.4C160.5 72.6 160.5 74.9 160.6 75.6C160.6 76.3 160.7 78.2 160.8 79.8C161.2 84.7 160.9 85.3 157.5 85.4C156.5 85.5 154.7 85.6 153.6 85.6C152.5 85.7 148.8 85.8 145.4 85.9C141.9 86 137.9 86.1 136.5 86.1C127.5 86.3 115.3 86.4 113.7 86.2ZM5.1 85.7C4.1 84.4 3.4 79.5 3.5 74.8C3.5 73.7 3.6 71.1 3.6 68.9C3.7 66.7 3.8 61.2 3.9 56.6C4 49.3 4 47.8 3.5 43.3L3 38.2L3.5 37C4 35.8 4.1 36 3.2 32.4C3.1 31.8 3.1 28.6 3.1 24.9C3.2 21.3 3.3 16.2 3.3 13.5L3.4 8.6L7.1 8.6C9.1 8.5 11.6 8.4 12.6 8.2C13.9 8 16.6 7.9 22.5 8C29.9 8.1 41.6 8.1 47.5 8C48.8 8 50.2 8.1 50.6 8.2C51.1 8.4 51.7 8.3 52.4 8.1C53.6 7.6 56.8 7.9 57.3 8.4C57.5 8.7 57.6 10.9 57.7 17.2C57.7 21.8 57.8 26.4 57.8 27.2C57.8 28.1 57.7 30.6 57.7 32.6C57.6 35.1 57.6 36.7 57.8 37.2C58 37.7 58.1 38.7 58.2 39.4C58.4 44.5 58.5 45.6 58.6 46.5C58.7 47 58.6 48.1 58.5 49C58.3 49.9 58.1 51.6 58.1 52.8C58.1 55.6 57.8 58.7 57.5 59.6C57.4 60 57.3 61.6 57.3 63.1C57.3 64.6 57.1 66.2 57 66.7C56.9 67.1 56.7 68 56.8 68.8C56.8 70.7 56.3 79.2 56.1 80.3C56 81 56.1 81.3 56.6 81.9C57.3 82.7 57.4 83.4 57 83.6C56.5 84 51.4 84.4 49.1 84.3C47.9 84.3 45.4 84.2 43.6 84.1C41.6 84 40.1 84.1 39.5 84.2C38.8 84.4 38.4 84.4 37.8 84.2C37.2 84 36.8 84 36.2 84.2C34.4 84.9 31.1 85.7 30.3 85.7C29.9 85.7 29.2 85.6 28.9 85.5C28.4 85.3 28 85.4 27.1 85.7C26.1 86.1 25.6 86.1 21.6 85.8C19.1 85.6 16.9 85.5 16.7 85.6C16.5 85.7 13.9 85.8 10.9 85.9C6.5 86 5.3 86 5.1 85.7ZM231.6 85.8C231.4 85.7 231 84.5 230.6 83.2C230.1 81.1 230 80.2 230 76.8C230 69.3 230 66.8 230.3 59.2C230.5 51.9 230.3 44.9 229.6 39.2C229.5 38.5 229.6 37.8 229.9 37.2C230.3 36.1 230.2 33.8 229.6 32C229.3 31.2 229.2 30.4 229.3 28.9C229.4 27.8 229.6 24.5 229.7 21.6C229.9 14.7 229.9 15.3 229.7 11.9C229.6 9.3 229.7 8.9 230.1 8.6C230.4 8.4 230.8 8.4 231.4 8.5C231.9 8.7 232.9 8.7 233.6 8.6C234.3 8.5 236 8.4 237.3 8.4C238.6 8.3 240 8.2 240.4 8C240.9 7.9 244.2 7.9 249 8C253.4 8 260.2 8.1 264.2 8.1C268.3 8.1 272.8 8.1 274.1 8.1C275.5 8.1 277.2 8.1 277.9 8C281 7.9 283.4 8 283.7 8.3C283.9 8.6 284.2 23.2 284 33C284 35.9 284.1 37.1 284.3 37.7C284.6 38.3 284.6 38.8 284.5 39.2C284.3 39.6 284.4 40.1 284.6 40.7C284.8 41.2 285 42.2 285 42.9C284.9 43.6 284.9 45.3 285 46.8C285 48.4 284.9 49.9 284.7 50.6C284.4 51.5 284.4 52.1 284.6 52.7C284.7 53.2 284.7 53.9 284.6 54.4C284.2 56.6 283.8 60.7 283.8 63.2C283.8 64.8 283.6 66.3 283.5 66.6C283.3 66.8 283.2 68.3 283.1 69.8C282.9 76.9 282.8 79.1 282.6 80.1C282.5 81.1 282.5 81.3 283.1 82C284.5 83.6 284 83.8 277.8 84.3C274.8 84.5 273.5 84.5 273.1 84.3C272.3 83.9 266.9 83.9 265.7 84.3C265.1 84.4 264.6 84.4 264.1 84.3C263.6 84 262.9 84.2 260.6 84.9C257.6 85.8 256.5 85.9 255.4 85.5C254.9 85.3 254.5 85.4 253.6 85.7C252.6 86.1 252.1 86.1 248.2 85.8C245.8 85.6 243.7 85.5 243.5 85.6C242.8 85.8 231.9 86 231.6 85.8ZM89.6 81.6C91.9 81.5 94 81.3 94.4 81.1C95.5 80.7 95.7 79.7 95.7 75.4C95.7 72.3 95.7 72 95.2 71.5C95 71.2 94.6 71 94.4 71C94.3 71 92.1 70.9 89.5 70.9L84.9 70.9L84.4 70.2C83.9 69.6 83.8 69.2 83.7 66.2C83.4 60.4 83.8 25.6 84.1 22.6C84.4 20.3 84.6 20.4 77.8 20.2C74.1 20.1 72.1 20.1 71.9 20.3C71.7 20.4 71.6 24.4 71.6 31.4C71.6 37.5 71.4 44.3 71.3 46.6C71 51.4 70.9 70.1 71.2 76.6L71.3 80.8L72.1 81.1C72.6 81.4 74.4 81.5 78.1 81.5C81 81.5 83.8 81.6 84.2 81.7C84.7 81.8 85.2 81.9 85.4 81.9C85.5 81.8 87.5 81.7 89.6 81.6ZM46.6 77.7C47.1 77.3 47.1 77.2 46.8 75.3C46.3 72 45.6 68.2 45.3 67.4C45.1 67 45 66.1 45 65.3C45 64.5 44.9 63.5 44.8 63C44.3 61.4 43.5 56.2 43.1 53.1C42.7 48.8 42 44.4 41.6 42.2C41.4 41.2 41.1 38.7 40.9 36.8C40.5 32.7 39.8 29.6 39.3 28.9C39 28.6 39 28.4 39.2 27.7C39.5 26.9 39.2 23.7 38.7 21.2C38.6 20.6 38.4 19.6 38.4 18.9C38.2 14.8 38.5 15 34.2 15.2C29.7 15.4 25.1 15.3 20.9 15C19 14.9 17.3 14.8 17.2 14.9C16.4 15.2 16.2 16.4 16.1 21.2C16 27.7 15.7 30.7 14.7 35.9C14.3 38.2 13.9 40.5 13.8 40.9C13.8 41.3 13.6 42.2 13.5 43C13.3 43.8 13.1 45.9 12.9 47.8C12.4 52.3 11.6 58.4 11.4 58.7C11.3 58.8 11.2 60.1 11 61.6C10.9 63.1 10.6 65.1 10.5 66C10.4 66.9 10.1 68.8 10 70.1C9.9 71.5 9.6 73.4 9.5 74.4C9.3 75.6 9.2 76.3 9.4 76.5C9.8 76.9 22.2 77.1 22.6 76.8C23 76.4 23.1 71.3 22.7 70.1C22.4 69.5 22.5 69.4 23 69C23.3 68.8 23.7 68.3 23.9 67.8C24.1 67.4 24.4 67 24.5 67C28 66.7 32.1 66.9 32.6 67.4C32.8 67.6 33 68.4 33.1 69.3C33.2 70.2 33.5 71.4 33.7 72C34 73 34 73.4 33.8 74.2C33.7 74.7 33.6 75.4 33.7 75.8C33.9 77.1 34.5 77.2 38.9 77.3C41.7 77.3 43.2 77.4 43.9 77.6C45.2 78.1 46 78.1 46.6 77.7ZM273.1 77.5C273.5 77.1 273.5 76.9 273 74.1C272.2 69.5 271.8 67.4 271.5 66.7C271.4 66.3 271.2 65.5 271.2 64.9C271.2 63.9 271 62.3 270.2 57.5C270 56.3 269.6 53.7 269.4 51.8C269.1 49.8 268.8 47.5 268.7 46.8C268.6 46 268.4 44.6 268.2 43.6C268.1 42.6 267.9 41.2 267.7 40.6C267.6 39.9 267.4 38.1 267.2 36.5C266.9 32.7 266.3 29.5 265.8 28.9C265.5 28.6 265.5 28.2 265.7 27.5C265.9 26.8 265.8 25.8 265.4 23.6C265.2 22 264.9 19.6 264.9 18.4C264.7 15 264.8 15 260.5 15.1C258.6 15.2 256.9 15.3 256.7 15.4C256.5 15.5 247.9 15.1 245.1 14.8C242.8 14.6 242.7 14.9 242.6 19.8C242.5 24.9 241.9 32.5 241.4 34.2C241.2 35 241 36.1 241 36.6C241 37.2 240.8 38.3 240.6 39C240.2 40.5 240.2 40.6 239.5 46.4C238.7 52.6 238.5 53.9 238 57.5C237.7 59.4 237.3 62.7 237 65C236.8 67.3 236.3 70.7 236.1 72.7C235.8 75.1 235.7 76.3 235.9 76.5C236.3 76.9 248.9 77.1 249.1 76.8C249.3 76.5 249.3 75.3 249.2 71.7C249.1 69.5 249.2 69.2 249.5 69C249.8 68.8 250.1 68.4 250.2 67.9C250.5 66.9 251 66.8 255.2 66.9C257.6 66.9 258.6 67 258.9 67.3C259.1 67.5 259.3 68.4 259.5 69.2C259.7 70.1 259.9 71.4 260.1 72C260.4 73 260.5 73.4 260.2 74.3C259.8 75.7 260.1 76.6 260.9 77C261.3 77.1 263 77.3 265.4 77.3C268.2 77.3 269.7 77.4 270.4 77.6C271.7 78.1 272.6 78.1 273.1 77.5ZM139.6 76.4C143.2 75.9 145.5 75 147.2 73.4C149.4 71.3 151 68 151 65.5C151 64.8 151.2 63 151.4 61.6C151.9 58.2 152.4 26 152 23.7C151.6 21.5 151 20.6 148.4 17.9C144.7 13.9 141.9 12.4 137.6 12C136.4 11.9 135.2 11.7 134.9 11.6C134.4 11.4 129.4 12.2 128.1 12.7C126.5 13.3 123.2 15.6 122.4 16.6C120.8 18.4 119.8 20.9 118.6 25.1C118 27.4 117.8 31.5 117.6 41.8C117.6 43.7 117.5 48.1 117.4 51.4C117.3 57.8 117.5 61.5 118.5 66.5C119.1 69.3 119.3 69.7 120.9 71.6C123.4 74.6 125.1 75.4 131.5 76.2C135.5 76.8 136 76.8 139.6 76.4ZM206.8 75.7L207.2 75.1L207.8 75.7C208.2 76 208.6 76.3 208.8 76.2C209.4 76 209.7 73.5 209.8 67.6C209.9 65.4 210.1 61.7 210.2 59.4C210.3 57 210.3 53.8 210.3 52.2C210.1 44.8 210.2 38.8 210.6 35C211.1 30.2 211.5 21.2 211.4 18.5C211.3 17.5 211.3 16.4 211.3 16.2C211.2 15.1 210.6 15 207.3 15C205.5 15.1 203.1 15.1 201.8 15C200.3 14.9 199.4 15 199.2 15.2C199 15.4 198.9 17.9 199 24.5C199 29.4 199 34.4 198.9 35.5C198.7 37.5 198.7 37.6 197.9 37.9C197 38.2 192.2 38 191.3 37.5C189.9 36.8 190 37.1 190.1 28.1C190.3 20.2 190.3 19.7 189.9 19.2C189.4 18.7 189.4 18.7 189.9 18C190.8 16.3 189.5 14.2 188.2 15.5C187.5 16.1 187 16.1 186.4 15.5C186 15 185 14.9 179.1 15C176.7 15 176.4 15.3 176.6 16.9C176.7 17.5 176.6 21.6 176.5 26C176.3 30.5 176.2 39.6 176.1 46.2C176.1 52.9 175.9 59.3 175.8 60.5C175.7 61.7 175.6 65.4 175.6 68.7L175.7 74.8L176.3 75.2C177 75.8 186.2 76 187.1 75.5C187.8 75.1 188.2 74.4 188.5 72.2C188.9 69.9 189.5 53.7 189.3 51.4C189.2 49.4 189.2 49.3 189.9 48.9C190.3 48.6 190.8 48.5 191.4 48.6C191.8 48.7 193.1 48.8 194.3 48.9C196.7 49 197.8 49.4 198.4 50.4C198.8 51 198.8 52.2 198.8 61.8C198.8 67.8 198.7 73.1 198.6 73.6C198.5 74.4 198.6 74.8 199 75.3C199.5 76 199.6 76 202.1 76.1C203.5 76.1 205 76.2 205.5 76.2C206.2 76.2 206.5 76.1 206.8 75.7ZM131.9 69.1C129.8 67.7 129.7 65.8 129.8 48.6C130.1 27.3 130.6 23 133.1 21.5C134.7 20.4 138.6 21.2 138.9 22.6C139.4 25.7 139.6 27.2 139.8 30.5C139.9 32.6 140 36 140.1 37.9C140.2 40 140.2 44.5 140 49.1C139.8 53.4 139.6 58.6 139.6 60.8C139.6 64.8 139.3 66.7 138.3 67.6C137.6 68.2 134.1 69.8 133.4 69.8C133.1 69.8 132.4 69.5 131.9 69.1ZM25.4 56.7C25 56.5 25 56.2 25.1 54.2C25.2 52.9 25.4 51.6 25.5 51.2C25.6 50.8 25.9 49.2 26 47.8C26.2 46 26.6 44.3 27.1 42.8C27.6 41.4 28.1 39.9 28.2 39.3C28.5 38.4 28.6 38.2 29.1 38.3C29.7 38.4 29.6 37.8 30.6 46.5C31 49.5 31.4 52.3 31.5 52.8C31.9 54.1 31.8 56.1 31.4 56.5C30.9 56.9 26.1 57.1 25.4 56.7ZM251.7 56.6C251.5 56.3 251.5 55.7 251.6 54.4C251.9 51 253 44 253.4 43.1C253.6 42.5 254.1 41.3 254.4 40.2C255.6 36.3 256 37.2 256.9 45.5C257.1 47.5 257.4 49.9 257.6 51C258.1 53.4 258.2 56.1 257.8 56.5C257.3 57 252.1 57.1 251.7 56.6Z'/%3E%3C/svg%3E");
  display: block; width: 116px; aspect-ratio: 288 / 117; background: #fff;
  -webkit-mask: var(--logo) left center / contain no-repeat;
  mask: var(--logo) left center / contain no-repeat;
}
.footer__nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 22px; }
.footer__social { display: flex; gap: 10px; }
.footer__social a {
  display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  background: rgba(255, 255, 255, .08); transition: background-color .2s, transform .3s var(--ease);
}
.footer__social a:hover { background: rgba(255, 255, 255, .16); transform: translateY(-2px); }
.footer__social svg { width: 24px; height: 24px; }
.footer__info { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 10px; margin-top: 22px; font-size: 13px; }
.footer__info a { display: inline-flex; align-items: center; min-height: 28px; padding-inline: 4px; }
.footer__info span { display: inline-flex; align-items: center; color: #48484a; }
@media (max-width: 599px) { .footer__info { flex-direction: column; align-items: center; gap: 2px; } .footer__info span { display: none; } }
@media (min-width: 900px) { .footer__info { margin-top: 26px; } }
.footer a { transition: color .2s; }
.footer a:hover { color: #fff; }
.footer__bottom {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; margin-top: 22px; padding-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, .12); font-size: 12px; color: #86868b; text-align: center;
}
@media (min-width: 900px) { .footer__bottom { justify-content: space-between; } }
.footer__bottom span { display: inline-flex; align-items: center; gap: 7px; }
.footer__bottom span:last-child { font-size: 13px; letter-spacing: .01em; }
.footer__leva { display: inline-flex; transition: opacity .2s; }
.footer__leva img { height: 10px; width: auto; }
.footer__leva:hover { opacity: .75; }

/* ---------- Comparsa allo scroll ---------- */
@media (prefers-reduced-motion: no-preference) {
  .reveal-on [data-reveal] {
    opacity: 0; transform: translateY(28px);
    transition: opacity 1s var(--ease-out), transform 1.2s var(--ease-out);
    transition-delay: var(--d, 0s);
  }
  .reveal-on [data-reveal].is-in { opacity: 1; transform: none; }
}
.lb[hidden] { display: none; }
/* Nell'istante in cui la dissolvenza si arma, i blocchi fuori schermo si nascondono senza animazione */
.reveal-arming [data-reveal] { transition: none !important; }

/* ---------- Blocchi centrati ---------- */
.pair--center { max-width: 660px; margin: clamp(8px, 2vw, 24px) auto 0; }
.form-wrap { max-width: 720px; margin-inline: auto; }
.section__head .btn-row { justify-content: center; }
.center .partners { text-align: left; }

/* ---------- Home: "Scegli il tuo shooting" ----------
   Titolo imponente e card dimensionate sull'altezza dello schermo: titolo,
   card e bottone stanno sempre in una sola schermata.
   --tf = corpo del titolo, --tl = righe del titolo (2 su mobile, 1 da 700px). */
.shooting {
  --tf: var(--mega);
  --tl: 2;
  min-height: calc(100svh - var(--nav-h));
  display: flex; flex-direction: column; justify-content: center;
  padding-block: 5svh;
}
.shooting__head { padding-inline: var(--pad); }
.shooting__title { margin-bottom: 4svh; }
@media (min-width: 700px) {
  .shooting { --tl: 1; }
  .shooting__title { white-space: nowrap; }
  .br-m { display: none; }
}
.shooting .rail {
  grid-auto-columns: min(76vw, 360px, calc((100svh - var(--nav-h) - 17.5svh - var(--tf) * .86 * var(--tl) - 168px) * .8));
  gap: clamp(12px, 1.4vw, 20px);
  padding-block: 4px 8px;
}
.shooting .card__media { border-radius: 26px; box-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 12px 32px -18px rgba(0, 0, 0, .28); }
.shooting .card { transition: transform .6s var(--ease); }
.shooting .card:hover { transform: translateY(-4px); }
.shooting .tag { top: 12px; left: 12px; padding: 8px 13px; font-size: 14px; }
.shooting .card__title { margin-top: 14px; font-size: 19px; }
.shooting .card__text { margin-top: 3px; font-size: 14px; }
.shooting .rail-foot { margin-top: 3.5svh; }

/* ---------- Home: team ---------- */
.member-card { text-align: center; }
.member-card__btn { margin-top: 14px; transition: transform .18s ease, background-color .15s, color .15s, box-shadow .15s; }
.member-card__btn:active { transform: scale(.95); background: var(--ink); color: #fff; box-shadow: inset 0 0 0 1.5px var(--ink); }
@media (hover: hover) { .member-card__btn:hover { background: var(--ink); color: #fff; box-shadow: inset 0 0 0 1.5px var(--ink); } }

/* Righe bilanciate nei testi centrati: niente parole orfane in fondo */
.section__head .t-h2, .section__head .t-lead, .page-head .t-hero, .page-head .t-lead,
.group__head .t-lead, .feature__body .t-lead, .cta-end .t-lead { text-wrap: balance; }

/* ---------- Home: "Il nostro team" in una sola schermata ----------
   --tt = corpo del titolo; --cw = lato di ogni ritratto, calcolato anche
   sull'altezza dello schermo (2 righe su mobile/tablet, 1 riga da 1024px). */
.team-sec {
  --tt: min(var(--mega), calc((100vw - var(--pad) * 2 - 16px) / 6.2));
  --cw: max(136px, min(calc((100vw - var(--pad) * 2 - 12px) / 2),
            calc((100svh - var(--nav-h) - 11svh - var(--tt) * .86 - 166px) / 2)));
  min-height: calc(100svh - var(--nav-h));
  display: flex; flex-direction: column; justify-content: center;
  padding-block: 3svh;
}
.team-sec .section__head { margin-bottom: 3svh; }
.team-title { font-size: var(--tt); white-space: nowrap; }
.team-sec .team { grid-template-columns: repeat(2, var(--cw)); justify-content: center; gap: 2svh 12px; }
.team-sec .member-card__name { margin-top: 8px; font-size: 28px; }
/* Su mobile il bottone va su due righe ("Scopri di più / su Nome"): uguale per tutti e sempre dentro la card */
.team-sec .member-card__btn { margin-top: 8px; min-height: 0; padding: 7px 16px; font-size: 13px; line-height: 1.15; white-space: normal; max-width: 100%; }
@media (min-width: 700px) { .team-sec .member-card__btn { min-height: 38px; padding: 0 16px; white-space: nowrap; } }
@media (min-width: 1024px) {
  .team-sec {
    --cw: min(calc((min(100vw, var(--max) + var(--pad) * 2) - var(--pad) * 2 - 60px) / 4),
              calc(100svh - var(--nav-h) - 14svh - var(--tt) * .86 - 124px));
  }
  .team-sec { padding-block: 5svh; }
  .team-sec .section__head { margin-bottom: 4svh; }
  .team-sec .team { grid-template-columns: repeat(4, var(--cw)); gap: 20px; }
  .team-sec .member-card__name { margin-top: 10px; font-size: clamp(30px, 3.6vw, 52px); }
  .team-sec .member-card__btn { margin-top: 10px; min-height: 40px; padding: 0 18px; font-size: 15px; }
}

/* Suggerimento di scorrimento sul carosello (solo touch: su desktop ci sono le frecce) */
.rail-wrap { position: relative; }
.swipe-hint {
  position: absolute; z-index: 2; right: max(16px, var(--pad)); top: 40%;
  display: inline-flex; align-items: center; gap: 10px;
  padding: 10px 14px 10px 16px; border-radius: 999px;
  font-size: 14px; font-weight: 600; letter-spacing: -.01em;
  --tint: rgba(20, 20, 22, .38);
  pointer-events: none;
  transform: translateY(-50%);
  transition: opacity .35s ease, transform .45s var(--ease);
  animation: hint-sway 2.2s var(--ease) infinite;
}
.swipe-hint__chev { display: inline-flex; gap: 2px; }
.swipe-hint__chev i {
  width: 7px; height: 7px; border-top: 2px solid currentColor; border-right: 2px solid currentColor;
  transform: rotate(45deg); opacity: .25; animation: hint-chev 1.4s ease-in-out infinite;
}
.swipe-hint__chev i:nth-child(2) { animation-delay: .18s; }
.swipe-hint__chev i:nth-child(3) { animation-delay: .36s; }
[data-swipe-hint].is-swiped .swipe-hint { opacity: 0; transform: translateY(-50%) scale(.9); animation: none; }
@keyframes hint-sway { 0%, 100% { translate: 0 0; } 50% { translate: -8px 0; } }
@keyframes hint-chev { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
@media (hover: hover) and (pointer: fine) { .swipe-hint { display: none; } }
/* "Assaggio" di scorrimento la prima volta che il carosello compare */
.rail.is-nudging > * { animation: rail-nudge 1.2s cubic-bezier(.45, 0, .2, 1) 1; }
@keyframes rail-nudge { 0% { transform: none; } 45% { transform: translate3d(-64px, 0, 0); } 100% { transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .swipe-hint, .swipe-hint__chev i { animation: none; }
  .swipe-hint__chev i { opacity: .8; }
}

/* Con il touch niente effetti "hover" che restano attaccati dopo il tocco */
@media (hover: none) {
  .btn:hover, .ctl:hover, .nav__btn:hover, .tile:hover, .quick a:hover, .partner:hover, .shooting .card:hover { transform: none; }
  .card:hover .card__media img, .cat:hover img, .m-item:hover img { transform: none; }
}


/* Pagina con titolo grande e niente sottotitolo (Servizi) */
.page-head--tight { padding-top: calc(var(--nav-h) + clamp(36px, 6vw, 88px)); padding-bottom: clamp(22px, 3vw, 40px); }
/* --pw = larghezza della parola in em (misurata): il titolo riempie la riga senza uscire */
.page-title { font-size: max(min(var(--mega), calc((100vw - var(--pad) * 2 - 16px) / (var(--pw, 3) + .2))), min(calc((100vw - var(--pad) * 2 - 16px) / (var(--pw, 3) + .2)), 15svh)); }
.page-head--tight + .subnav + .group .svc:first-child { border-top: 0; }

/* Touch: dissolvenza fluida (0,9 s, curva uniforme, niente cascata), senza movimento.
   - niente scorrimento verso l'alto: faceva sembrare le scritte "in movimento";
   - si parte da opacità .01 e non da 0: per Safari su iPhone l'elemento conta già
     come visibile, quindi un tocco durante la dissolvenza non viene scambiato per
     hover (era la causa dei link da premere due volte). */
@media (hover: none) {
  .reveal-on [data-reveal] { transform: none; }
}
@media (hover: none) and (prefers-reduced-motion: no-preference) {
  .reveal-on [data-reveal] {
    opacity: .01;
    transition: opacity .9s cubic-bezier(.4, 0, .2, 1);
    transition-delay: 0s;
  }
  /* il blocco in arrivo viene preparato sulla scheda grafica prima della dissolvenza */
  .reveal-on [data-reveal].is-near { will-change: opacity; }
  .reveal-on [data-reveal].is-in { opacity: 1; }
}
a, button, .btn, summary, label { touch-action: manipulation; }

/* ---------- Home: "Video su misura per i tuoi social" (reel) ----------
   Titolo, reel, loghi, pallini e bottone stanno in una schermata: la larghezza dei
   reel (--rw) si ricava dall'altezza rimasta. --st = corpo del titolo, --sl = righe
   (2 su mobile, 1 da 700px). */
.social-sec {
  --st: min(var(--mega), calc((100vw - var(--pad) * 2 - 16px) / 6.65));
  --sl: 2;
  --rw: min(66vw, 340px, calc((100svh - var(--nav-h) - 12svh - var(--st) * .86 * var(--sl) - 116px) * 9 / 16));
  min-height: calc(100svh - var(--nav-h));
  display: flex; flex-direction: column; justify-content: center;
  padding-block: 3svh;
  overflow: hidden;
}
.social-title { font-size: var(--st); color: #fff; white-space: nowrap; }
@media (min-width: 700px) { .social-sec { --st: min(var(--mega), calc((100vw - var(--pad) * 2 - 24px) / 13.2)); --sl: 1; } }
.social-head { padding-inline: var(--pad); }
.social-sec .section__head { margin-bottom: 3svh; }
@media (hover: hover) and (min-width: 900px) {
  .social-sec {
    --rw: min(340px, calc((100svh - var(--nav-h) - 14svh - var(--st) * .86 * var(--sl) - 160px) * 9 / 16));
    padding-block: 4svh;
  }
}

.reels__track {
  position: relative;
  display: flex; gap: clamp(10px, 2vw, 28px);
  overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scrollbar-width: none;
  padding: 10px calc(50% - var(--rw) / 2) 6px;
}
.reels__track::-webkit-scrollbar { display: none; }
.reel {
  flex: 0 0 var(--rw); margin: 0;
  scroll-snap-align: center; scroll-snap-stop: always;
  opacity: .38; transform: scale(.86);
  transition: opacity .45s var(--ease), transform .55s var(--ease);
}
.reel.is-active { opacity: 1; transform: none; }
.reel__frame {
  position: relative; aspect-ratio: 9 / 16; border-radius: 26px; overflow: hidden;
  background: #111; cursor: pointer; isolation: isolate;
  box-shadow: 0 30px 80px -30px rgba(0, 0, 0, .9), 0 0 0 1px rgba(255, 255, 255, .08);
}
.reel__bg { position: absolute; inset: -12%; width: 124%; height: 124%; max-width: none; object-fit: cover; filter: blur(22px) brightness(.55) saturate(1.3); }
.reel__poster, .reel__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.reel--land .reel__poster, .reel--land .reel__video { object-fit: contain; }
.reel__video { opacity: 0; transition: opacity .3s ease; }
.reel.is-started .reel__video { opacity: 1; }
.reel__play {
  position: absolute; left: 50%; top: 50%; width: 70px; height: 70px; margin: -35px 0 0 -35px;
  display: grid; place-items: center; border-radius: 50%;
  transition: opacity .3s ease, transform .35s var(--ease);
}
.reel__play svg { width: 28px; height: 28px; margin-left: 3px; }
.reel:not(.is-active) .reel__play, .reel.is-playing .reel__play { opacity: 0; transform: scale(.82); pointer-events: none; }
.reel__mute {
  position: absolute; bottom: 12px; right: 12px; width: 40px; height: 40px;
  display: grid; place-items: center; border-radius: 50%;
  opacity: 0; pointer-events: none; transition: opacity .3s ease;
}
.reel__mute svg { width: 20px; height: 20px; }
.reel__mute .i-mute, .reel.is-muted .reel__mute .i-vol { display: none; }
.reel.is-muted .reel__mute .i-mute { display: block; }
.reel.is-active.is-started .reel__mute { opacity: 1; pointer-events: auto; }
.reel__bar {
  position: absolute; left: 14px; right: 14px; top: 12px; height: 3px; border-radius: 2px;
  background: rgba(255, 255, 255, .25); overflow: hidden; opacity: 0; transition: opacity .3s;
}
.reel.is-started .reel__bar { opacity: 1; }
.reel__bar i { display: block; height: 100%; background: #fff; transform: scaleX(0); transform-origin: 0 50%; }
.reel__logo {
  --lg: 44px;
  position: relative; z-index: 2; width: var(--lg); height: var(--lg); margin: calc(var(--lg) / -2) auto 0;
  border-radius: 50%; background: #111;
  box-shadow: 0 0 0 3px #000, 0 0 0 4px rgba(255, 255, 255, .2), 0 8px 20px rgba(0, 0, 0, .5);
}
.reel__logo img { width: 100%; height: 100%; border-radius: 50%; }
@media (hover: hover) and (min-width: 900px) { .reel__logo { --lg: 56px; } }

.reels__nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 12px; min-height: 8px; }
.reels__nav .ctl { display: none; background: rgba(255, 255, 255, .1); color: #fff; }
@media (hover: hover) and (min-width: 900px) { .reels__nav .ctl { display: inline-grid; } }
.reels__dots { display: flex; gap: 8px; }
.reels__dots button { width: 8px; height: 8px; border-radius: 4px; background: rgba(255, 255, 255, .3); transition: width .35s var(--ease), background-color .3s; }
.reels__dots button[aria-current="true"] { width: 26px; background: #fff; }
.social-cta { justify-content: center; margin-top: 3svh; }
@media (prefers-reduced-motion: reduce) { .reel { transition: none; } }

/* Servizi con 3+ pacchetti, su mobile: pacchetti in un carosello (uno intero + l'inizio del successivo) */
@media (max-width: 899px) {
  .pkgs--rail {
    grid-auto-flow: column; grid-auto-columns: 74%;
    overflow-x: auto; overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory; scrollbar-width: none;
    margin-inline: calc(var(--pad) * -1); padding-inline: var(--pad); scroll-padding-inline: var(--pad);
  }
  .pkgs--rail::-webkit-scrollbar { display: none; }
  .pkgs--rail > .pkg { scroll-snap-align: start; }
}

/* ---------- Sala pose: apertura in una schermata ----------
   Titolo grande, foto (formato originale 3:2), sottotitolo grande
   e un solo bottone, in basso al centro. La foto prende l'altezza che resta
   (al massimo tutta la larghezza), sempre in 3:2. */
.sala-hero {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2.4svh; height: 100svh; min-height: 520px; text-align: center;
  padding: calc(var(--nav-h) + 3svh) var(--pad) calc(4svh + env(safe-area-inset-bottom));
}
.sala-title { margin-top: auto; font-size: min(var(--mega), calc((100vw - var(--pad) * 2 - 16px) / 4.15)); }
.sala-hero__media { flex: 1 1 0; min-height: 110px; max-height: calc((100vw - var(--pad) * 2) / 1.5); width: 100%; display: flex; justify-content: center; }
.sala-hero__ph { height: 100%; max-width: 100%; aspect-ratio: 3 / 2; border-radius: 22px; overflow: hidden; background: var(--paper-3); }
.sala-hero__ph img { width: 100%; height: 100%; object-fit: cover; }
/* Il sottotitolo cresce con lo schermo e riempie lo spazio sopra il bottone */
.sala-hero__lead {
  max-width: 22em; margin: 0 auto; text-wrap: balance; color: var(--ink);
  font-size: clamp(17px, min(3.3svh, 5.6vw), 26px); font-weight: 500; line-height: 1.25; letter-spacing: -.015em;
}
.sala-hero__cta { margin-top: auto; min-width: 200px; min-height: 48px; padding: 0 28px; font-size: 16px; }
@media (max-width: 899px) and (max-height: 600px) {
  .sala-hero { gap: 1.8svh; padding-top: calc(var(--nav-h) + 2svh); padding-bottom: calc(3svh + env(safe-area-inset-bottom)); }
}
@media (min-width: 700px) {
  .sala-title { font-size: min(var(--mega), calc((100vw - var(--pad) * 2 - 24px) / 8.3)); white-space: nowrap; }
}
@media (min-width: 900px) {
  .sala-hero { min-height: 620px; }
  .sala-hero__media { min-height: 0; max-height: none; }
  .sala-hero__ph { border-radius: var(--r-xl); }
  .sala-hero__lead { max-width: 30em; font-size: clamp(20px, 1.75vw, 26px); }
  .sala-hero__cta { margin-top: 1svh; min-height: 50px; padding: 0 32px; font-size: 17px; }
}

/* ---------- Social & Business ----------
   Apertura con i reel (stesso blocco della home) in una schermata: la sezione
   parte sotto la barra, quindi altezza piena e spazio per la barra in alto. */
.biz-hero { min-height: 100svh; padding-top: calc(var(--nav-h) + 3svh); }
/* Social & Business: come lavoriamo, card come quelle dell'attrezzatura */
.biz-steps { padding-block: clamp(64px, 9vw, 128px); }
.biz-title { margin-bottom: clamp(24px, 4vw, 52px); }
.steps { display: grid; gap: 10px; }
@media (min-width: 900px) { .steps { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; } }
.step {
  display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: start; gap: 12px;
  padding: 16px 18px 18px 12px; border-radius: 20px; background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .07), 0 1px 2px rgba(0, 0, 0, .04), 0 10px 24px -18px rgba(0, 0, 0, .35);
}
.step > div { padding-left: 14px; border-left: 1px solid var(--line); }
.step__n { padding-top: 4px; text-align: center; font-size: 44px; line-height: .8; font-weight: 900; }
.step__t { font-weight: 600; font-size: 17px; letter-spacing: -.02em; line-height: 1.25; }
.step__d { margin-top: 3px; font-size: 15px; line-height: 1.4; color: var(--ink-2); }
@media (min-width: 900px) {
  .step { grid-template-columns: 50px minmax(0, 1fr); gap: 14px; padding: 24px 26px 26px 14px; border-radius: var(--r-l); }
  .step > div { padding-left: 18px; }
  .step__n { padding-top: 5px; font-size: 54px; }
  .step__t { font-size: 19px; }
  .step__d { font-size: 16px; }
}
.biz-partners-title { margin-top: clamp(72px, 10vw, 128px); margin-bottom: clamp(24px, 3.5vw, 44px); }
.biz-form .form-wrap { max-width: 760px; }

/* Sezioni in una schermata: "Ormai si sa…" + partner, e i moduli (Social & Business,
   Contatti). Testi e spazi seguono l'altezza dello schermo. */
.biz-why, .biz-form, .contact-form {
  min-height: calc(100svh - var(--nav-h)); display: flex; flex-direction: column; justify-content: center;
}
.biz-why { padding-block: 4svh; }
.biz-why .t-statement { font-size: clamp(22px, min(4.2svh, 7.4vw), 64px); }
.biz-why__lead { margin-top: 2.4svh; font-size: clamp(15px, 2.4svh, 21px); }
.biz-why .biz-partners-title { margin-top: 4.5svh; margin-bottom: 2.4svh; }
@media (max-width: 899px) {
  .biz-why .partners { gap: 8px; }
  .biz-why .partner { grid-template-columns: 52px minmax(0, 1fr) auto; gap: 12px; padding: 10px 14px 10px 10px; }
  .biz-why .partner img { width: 52px; height: 52px; border-radius: 12px; }
  .biz-why .partner__ig { margin-top: 4px; }
  .biz-why .partner__n { padding-left: 14px; font-size: 38px; }
}
@media (min-width: 900px) {
  .biz-why .t-statement { font-size: min(5.6svh, 4.4vw, 64px); }
  .biz-why .biz-partners-title { font-size: min(var(--mega), 10svh); }
}
.biz-form, .contact-form { padding-block: 3.5svh; }
.biz-form .biz-title, .contact-form .biz-title { margin-bottom: 2.6svh; }

/* Modulo raggruppato come su iPhone: campi in un'unica card, separati da linee */
.form--group { gap: 14px; }
.fgroup {
  overflow: hidden; border-radius: 18px; background: #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .09), 0 1px 2px rgba(0, 0, 0, .04), 0 16px 34px -26px rgba(0, 0, 0, .45);
}
.frow { --fpy: 14px; --fpx: 16px; position: relative; transition: background-color .2s; }
.frow + .frow::before { content: ""; position: absolute; top: 0; left: var(--fpx); right: 0; height: 1px; background: var(--line); }
/* Il "trattino" del cursore nei campi vuoti: lampeggia nel primo da compilare,
   fermo e più chiaro negli altri; sparisce nel campo in cui stai scrivendo. */
.frow::after {
  content: ""; position: absolute; left: var(--fpx); top: calc(var(--fpy) + 1px);
  width: 2px; height: 20px; border-radius: 1px; background: var(--ink);
  opacity: 0; pointer-events: none;
}
.frow:has(:placeholder-shown)::after { opacity: .9; animation: caret-blink 1.1s ease-in-out infinite; }
.frow:has(:placeholder-shown) ~ .frow:has(:placeholder-shown)::after { opacity: .22; animation: none; }
.frow:focus-within::after { opacity: 0 !important; animation: none; }
@keyframes caret-blink { 0%, 42% { opacity: .9; } 55%, 88% { opacity: 0; } 100% { opacity: .9; } }
@media (prefers-reduced-motion: reduce) { .frow:has(:placeholder-shown)::after { animation: none; } }
.frow:focus-within { background: #f7f7f8; }
.frow input, .frow textarea {
  display: block; width: 100%; padding: var(--fpy) var(--fpx); border: 0; border-radius: 0; background: transparent;
  appearance: none; font: inherit; font-size: 17px; letter-spacing: -.02em; color: var(--ink);
  transition: text-indent .2s var(--ease);
}
/* Il testo d'esempio parte subito dopo il trattino */
.frow input:placeholder-shown:not(:focus), .frow textarea:placeholder-shown:not(:focus) { text-indent: 8px; }
.frow input:focus, .frow textarea:focus { outline: none; }
.frow input::placeholder, .frow textarea::placeholder { color: #8e8e93; }
.frow textarea { height: clamp(78px, 15svh, 160px); resize: none; line-height: 1.4; }
.form--group .form__foot { display: grid; gap: 8px; justify-items: center; margin-top: 0; text-align: center; }
.form--group .form__foot .btn { width: 100%; max-width: 420px; }
.form--group .form__note { font-size: 13px; line-height: 1.35; text-wrap: balance; }
.form--group .form__status:empty { display: none; }
/* Schermi bassi (es. iPhone SE con le barre di Safari): tutto un filo più compatto */
@media (max-width: 899px) and (max-height: 600px) {
  .biz-why { padding-block: 3svh; }
  .biz-why .t-statement { font-size: min(3.9svh, 6.8vw); }
  .biz-why__lead { margin-top: 2svh; font-size: 14px; }
  .biz-why .biz-partners-title { margin-top: 3.4svh; margin-bottom: 2svh; }
  .biz-why .partner { grid-template-columns: 44px minmax(0, 1fr) auto; padding: 8px 12px 8px 8px; }
  .biz-why .partner img { width: 44px; height: 44px; border-radius: 10px; }
  .biz-why .partner__n { font-size: 32px; }
  .biz-form, .contact-form { padding-block: 2.4svh; }
  .form--group { gap: 10px; }
  .frow { --fpy: 11px; }
  .frow textarea { height: 66px; }
  .form--group .form__foot { gap: 6px; }
  .form--group .form__foot .btn { min-height: 44px; }
  .form--group .form__note { font-size: 12px; }
  .contact__more { margin-top: 1.6svh; font-size: 14px; }
}
@media (min-width: 700px) {
  .frow { --fpy: 16px; --fpx: 20px; }
  .form--group .form__note { font-size: 14px; }
}

/* "Scorri" sui pacchetti a scorrimento (Servizi, solo mobile) */
.pkgs-wrap { position: relative; min-width: 0; }
.pkgs--rail { padding-block: 4px 10px; }
.swipe-hint--ink {
  top: 50%; right: -6px;
  color: #fff; background: rgba(29, 29, 31, .86);
  -webkit-backdrop-filter: blur(10px) saturate(160%); backdrop-filter: blur(10px) saturate(160%);
  box-shadow: 0 8px 22px -8px rgba(0, 0, 0, .45);
}
@media (min-width: 900px) { .pkgs-wrap .swipe-hint { display: none; } }
.pkgs--rail.is-nudging > * { animation: rail-nudge 1.2s cubic-bezier(.45, 0, .2, 1) 1; }

/* ---------- Servizi: Riprese video ----------
   Titolo grande sopra; il video mostra il primo fotogramma e parte solo con il
   pulsante play (si scarica solo in quel momento). */
.svc-film { padding-block: 32px clamp(36px, 4vw, 52px); border-top: 1px solid var(--line); }
.film__heading { margin-bottom: clamp(16px, 2.4vw, 28px); font-size: clamp(34px, 10vw, 48px); }
.film__sub { max-width: 34em; margin: 0 auto; text-align: center; font-size: clamp(16px, 1.4vw, 19px); line-height: 1.45; color: var(--ink-2); text-wrap: balance; }
@media (min-width: 900px) { .film__heading { font-size: min(4.4vw, 64px); } }
.film { position: relative; aspect-ratio: 16 / 9; border-radius: 22px; overflow: hidden; background: #000; isolation: isolate; }
@media (min-width: 900px) { .film { border-radius: var(--r-xl); } }
.film__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #000; }
/* Copertina: un'immagine leggera sopra il video; sparisce quando il video parte davvero */
.film__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; transition: opacity .3s, visibility 0s; }
.film.is-started .film__poster { opacity: 0; visibility: hidden; transition: opacity .3s, visibility 0s .3s; }
.film__play {
  position: absolute; z-index: 2; left: 50%; top: 50%; width: 72px; height: 72px; margin: -36px 0 0 -36px;
  display: grid; place-items: center; color: #fff; opacity: .9;
  filter: drop-shadow(0 2px 10px rgba(0, 0, 0, .45));
  transition: transform .35s var(--ease), opacity .3s ease;
}
.film__play svg { width: 44px; height: 44px; margin-left: 4px; }
@media (hover: hover) { .film__play:hover { transform: scale(1.1); opacity: 1; } }
.film__play:active { transform: scale(.92); }
@media (min-width: 900px) { .film__play { width: 96px; height: 96px; margin: -48px 0 0 -48px; } .film__play svg { width: 60px; height: 60px; } }
.film.is-playing .film__play { opacity: 0; pointer-events: none; }
.film__body { display: grid; justify-items: center; gap: 14px; margin-top: 18px; text-align: center; }
.film__cta { display: flex; justify-content: center; margin-top: 4px; }
.film__cta .btn { min-height: 48px; padding: 0 28px; }

/* ---------- Servizi: card fotografiche Sala pose e Social & Business ---------- */
.promos-sec { padding-top: 8px; padding-bottom: clamp(56px, 7vw, 96px); }
.promos { display: grid; gap: 14px; }
@media (min-width: 900px) { .promos { grid-template-columns: 1fr 1fr; gap: 20px; } }
.promo {
  position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: space-between;
  aspect-ratio: 4 / 5; border-radius: var(--r-xl); overflow: hidden; background: #111; color: #fff; text-align: center;
}
.promo > img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
@media (hover: hover) { .promo:hover > img { transform: scale(1.04); } }
.promo::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    linear-gradient(to bottom, rgba(0, 0, 0, .7), rgba(0, 0, 0, .2) 32%, rgba(0, 0, 0, 0) 48%),
    linear-gradient(to top, rgba(0, 0, 0, .82), rgba(0, 0, 0, .3) 32%, rgba(0, 0, 0, 0) 54%);
}
.promo__top { padding: clamp(28px, 5vw, 52px) 18px 0; }
.promo__title { font-size: clamp(34px, 10vw, 48px); color: #fff; line-height: .9; }
@media (min-width: 900px) { .promo__title { font-size: min(4.4vw, 64px); } }
.promo__bottom { display: grid; justify-items: center; gap: 12px; padding: 0 20px clamp(24px, 4vw, 44px); }
.promo__text { max-width: 24em; font-size: 16px; line-height: 1.4; color: rgba(255, 255, 255, .88); text-wrap: balance; text-shadow: 0 1px 12px rgba(0, 0, 0, .4); }
.promo__price { font-size: clamp(30px, 3.4vw, 46px); line-height: .9; }
.promo__btn { pointer-events: none; }
.promo:active { transform: scale(.99); }

/* Home: "Riprese video su richiesta" sotto i reel */
.film-sec { padding-block: clamp(48px, 6vw, 84px) clamp(56px, 7vw, 96px); }
.film-sec .film { max-width: 1100px; margin-inline: auto; }

/* ---------- Prenotazione: pannello con calendario in stile Apple ----------
   Su mobile sale dal basso, su desktop è una finestra al centro. Il contenuto
   scorre, il riepilogo con il bottone resta sempre visibile in fondo. */
html.book-open { overflow: hidden; }
.book {
  width: 100%; max-width: 100%; max-height: none; margin: auto 0 0; padding: 0; border: 0;
  border-radius: 28px 28px 0 0; background: #fff; color: var(--ink); overflow: hidden;
  box-shadow: 0 -12px 40px rgba(0, 0, 0, .18);
}
.book[open] { animation: book-up .5s var(--ease); }
.book.is-closing { animation: book-down .26s cubic-bezier(.4, 0, 1, 1) forwards; }
.book::backdrop { background: rgba(0, 0, 0, .38); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); animation: book-fade .35s ease; }
.book.is-closing::backdrop { animation: book-fade-out .26s ease forwards; }
@keyframes book-up { from { transform: translateY(100%); } }
@keyframes book-down { to { transform: translateY(100%); } }
@keyframes book-fade { from { opacity: 0; } }
@keyframes book-fade-out { to { opacity: 0; } }
.book__form { display: flex; flex-direction: column; max-height: calc(100svh - 24px); }
.book__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; display: grid; gap: 12px; padding: 16px 18px 4px; }
.book__foot {
  flex: none; display: grid; gap: 8px; text-align: center;
  padding: 10px 18px calc(14px + env(safe-area-inset-bottom));
  transition: box-shadow .2s;
}
.book__foot.is-stuck { box-shadow: 0 -1px 0 var(--line); }
@media (min-width: 700px) {
  .book { max-width: 440px; margin: auto; border-radius: 28px; box-shadow: 0 30px 80px rgba(0, 0, 0, .3); }
  .book[open] { animation: book-pop .4s var(--ease); }
  .book.is-closing { animation: book-pop-out .2s ease-in forwards; }
  @keyframes book-pop { from { opacity: 0; transform: scale(.94); } }
  @keyframes book-pop-out { to { opacity: 0; transform: scale(.96); } }
  .book__form { max-height: 92svh; }
  .book__body { gap: 16px; padding: 24px 24px 4px; }
  .book__foot { padding: 12px 24px 22px; }
}
.book__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.book__title { font-size: 22px; font-weight: 700; letter-spacing: -.025em; line-height: 1.15; }
.book__x { flex: none; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--paper-2); color: var(--ink-2); }
.book__x svg { width: 13px; height: 13px; }
.book fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.book legend { margin-bottom: 6px; padding: 0; font-size: 15px; font-weight: 600; letter-spacing: -.01em; }
.book legend span { font-weight: 400; color: var(--ink-3); }
.book .bseg__opt, .book .opt, .book .chips label { position: relative; cursor: pointer; }
.book .bseg__opt input, .book .opt input, .book .chips input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
.book .bseg__opt input:focus-visible + span, .book .opt input:focus-visible + span, .book .chips input:focus-visible + span { outline: 2px solid var(--ink); outline-offset: 2px; }

/* Durata: controllo segmentato come su iOS */
.book .bseg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; padding: 3px; border-radius: 12px; background: rgba(118, 118, 128, .12); }
.book .bseg__opt span {
  display: flex; flex-direction: column; align-items: center; padding: 6px 4px;
  border-radius: 9px; font-size: 15px; font-weight: 600; letter-spacing: -.015em; line-height: 1.2;
  transition: background-color .2s, box-shadow .2s;
}
.book .bseg__opt small { font-size: 12px; font-weight: 500; color: var(--ink-2); }
.book .bseg__opt input:checked + span { background: #fff; box-shadow: 0 3px 8px rgba(0, 0, 0, .12), 0 3px 1px rgba(0, 0, 0, .04); }

/* Pacchetti: riquadri a due colonne */
.book .opts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.book .opts--one { grid-template-columns: minmax(0, 1fr); }
.book .opt span {
  display: flex; flex-direction: column; justify-content: center; height: 100%; min-height: 50px;
  padding: 8px 12px; border-radius: 14px; box-shadow: inset 0 0 0 1px var(--line);
  font-size: 15px; font-weight: 600; letter-spacing: -.015em; line-height: 1.2;
  transition: background-color .2s, color .2s, box-shadow .2s;
}
.book .opt small { margin-top: 2px; font-size: 13px; font-weight: 500; color: var(--ink-2); transition: color .2s; }
.book .opt input:checked + span { background: var(--ink); color: #fff; box-shadow: none; }
.book .opt input:checked + span small { color: rgba(255, 255, 255, .72); }

/* Calendario */
.book .cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 2px; }
.book .cal__month { font-size: 17px; font-weight: 700; letter-spacing: -.02em; }
.book .cal__nav { display: flex; gap: 2px; margin-right: -8px; }
.book .cal__nav button { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; color: #ff3b30; }
.book .cal__nav button:disabled { color: var(--ink-3); opacity: .4; }
.book .cal__nav svg { width: 17px; height: 17px; }
.book .cal__dow, .book .cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.book .cal__dow { margin-bottom: 2px; text-align: center; font-size: 11px; font-weight: 600; text-transform: uppercase; color: var(--ink-3); }
.book .cal__grid > * { height: 38px; }
.book .cal__grid button {
  justify-self: center; width: 38px; border-radius: 50%;
  font-size: 19px; font-weight: 400; font-variant-numeric: tabular-nums; color: var(--ink);
  transition: background-color .15s, color .15s;
}
@media (min-width: 700px) { .book .cal__grid > * { height: 42px; } .book .cal__grid button { width: 42px; } }
.book .cal__grid button:disabled { color: var(--ink-3); opacity: .5; }
.book .cal__grid button.is-today { color: #ff3b30; font-weight: 600; }
.book .cal__grid button[aria-pressed="true"] { background: var(--ink); color: #fff; font-weight: 600; }
.book .cal__grid button.is-today[aria-pressed="true"] { background: #ff3b30; }
@media (hover: hover) { .book .cal__grid button:not(:disabled):not([aria-pressed="true"]):hover { background: var(--paper-2); } }

/* Fascia oraria (facoltativa) */
.book .chips { display: flex; gap: 8px; }
.book .chips label { flex: 1; }
.book .chips span {
  display: block; padding: 9px 6px; border-radius: 999px; text-align: center;
  font-size: 15px; font-weight: 500; box-shadow: inset 0 0 0 1px var(--line);
  transition: background-color .2s, color .2s;
}
.book .chips input:checked + span { background: var(--ink); color: #fff; box-shadow: none; }

.book__sum { font-size: 15px; font-weight: 600; letter-spacing: -.01em; text-wrap: balance; }
.book__send { width: 100%; min-height: 50px; }
.book__send:disabled { opacity: .3; pointer-events: none; box-shadow: none; }
.book__note { font-size: 13px; line-height: 1.35; color: var(--ink-2); text-wrap: balance; }

/* ---------- Sala pose: il nostro studio + mappa ---------- */
.studio { padding-top: clamp(64px, 9vw, 128px); }
.studio__title { margin-bottom: clamp(24px, 4vw, 48px); padding-inline: var(--pad); }
.studio .swipe-hint { right: max(16px, var(--pad)); }
@media (min-width: 700px) { .studio__title { white-space: nowrap; } }
.visit { padding-top: clamp(56px, 8vw, 112px); }
.visit__map { aspect-ratio: 4 / 3; margin-bottom: clamp(28px, 4vw, 48px); }
@media (min-width: 700px) { .visit__map { aspect-ratio: 21 / 9; } }

/* ==========================================================================
   DESKTOP (da 1024 px di larghezza) — il mobile resta esattamente com'è.
   Navbar orizzontale, hero impaginata come una rivista, servizi in griglia,
   reel tutti visibili, contenuti più ampi sugli schermi grandi.
   ========================================================================== */
.nav__links, .hero-strip { display: none; }

/* Schermi grandi: contenuti più larghi (1440px) e titoli grandi allineati a quella
   larghezza invece che allo schermo intero */
@media (min-width: 1600px) {
  :root { --max: 1440px; }
  .social-sec { --st: min(var(--mega), calc((var(--max) - 24px) / 13.2)); }
}

@media (min-width: 1024px) {
  /* Titoli grandi più contenuti che su mobile: presenti ma mai giganti */
  :root { --mega: clamp(52px, min(6vw, 10.5svh), 112px); }
  .page-title { font-size: var(--mega); }

  /* ---------- Navbar: logo a sinistra, sezioni al centro, social a destra ---------- */
  .nav__menu, .menu, .menu-scrim { display: none !important; }
  .nav__logo { grid-column: 1; justify-self: start; margin-left: 12px; width: 108px; } /* allineato al bordo dei contenuti */
  .nav__links { grid-column: 2; display: flex; align-items: center; gap: clamp(24px, 2.6vw, 40px); }
  .nav__end { gap: 4px; }
  .nav__links a {
    position: relative; padding-block: 10px;
    font-size: 15px; font-weight: 500; letter-spacing: -.01em; white-space: nowrap;
    color: rgba(255, 255, 255, .7); transition: color .2s;
  }
  .nav__links a:hover, .nav__links a[aria-current="page"] { color: #fff; }
  .nav__links a[aria-current="page"]::after {
    content: ""; position: absolute; left: 50%; bottom: 2px;
    width: 4px; height: 4px; border-radius: 50%; background: currentColor; transform: translateX(-50%);
  }
  .nav.is-clear .nav__links a { text-shadow: 0 1px 10px rgba(0, 0, 0, .35); }

  /* ---------- "Scegli il tuo shooting": tutto in una schermata ----------
     12 card in 2 righe da 6; l'altezza delle foto (--mh) si ricava da quella dello
     schermo, così titolo, card e bottone stanno sempre in una schermata. Sotto i
     1280px le card sono strette: solo il nome, senza descrizione. */
  .shooting {
    --pb: clamp(24px, 4svh, 48px);       /* sopra e sotto */
    --gt: clamp(18px, 3svh, 36px);       /* sotto il titolo e sopra il bottone */
    --gr: clamp(14px, 2.4svh, 28px);     /* tra le due righe */
    --txt: 34px;                         /* nome sotto la foto */
    --mh: max(130px, calc((100svh - var(--nav-h) - var(--pb) * 2 - var(--mega) * .86 - var(--gt) * 2 - 48px - var(--gr) - var(--txt) * 2) / 2));
    min-height: calc(100svh - var(--nav-h)); padding-block: var(--pb);
  }
  .shooting__title { margin-bottom: var(--gt); }
  .shooting .rail-wrap { max-width: calc(var(--max) + var(--pad) * 2); margin-inline: auto; padding-inline: var(--pad); }
  .shooting .rail {
    grid-auto-flow: row; grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-columns: auto;
    gap: var(--gr) clamp(12px, 1.4vw, 20px);
    overflow: visible; scroll-snap-type: none; padding: 0;
  }
  .shooting .card__media { aspect-ratio: auto; height: var(--mh); border-radius: 20px; }
  .shooting .tag { top: 10px; left: 10px; padding: 7px 11px; font-size: 13px; }
  .shooting .card__title { margin-top: 10px; font-size: 15px; line-height: 24px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .shooting .card__text { display: none; }
  .shooting .rail-foot { margin-top: var(--gt); }
  .shooting .rail-foot .ctl, .shooting .swipe-hint { display: none; }
  @media (min-width: 1280px) {
    .shooting { --txt: 74px; }
    .shooting .card__title { font-size: 17px; }
    .shooting .card__text {
      display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;
      margin-top: 2px; font-size: 13.5px; line-height: 19px; height: 38px; text-wrap: pretty;
    }
  }

  /* ---------- Sala pose (home): testo a sinistra, foto originale a destra ---------- */
  .feature {
    --fp: clamp(28px, 5svh, 56px);
    min-height: calc(100svh - var(--nav-h)); padding: var(--fp) max(var(--pad), calc((100vw - var(--max)) / 2));
    display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: 1fr auto auto 1fr;
    column-gap: clamp(40px, 5vw, 80px); align-items: center;
    background: #000; text-align: left;
  }
  .feature::after { display: none; } /* la foto resta com'è, senza velature */
  .feature__media {
    position: relative; inset: auto; grid-column: 2; grid-row: 1 / -1;
    width: 100%; height: calc(100svh - var(--nav-h) - var(--fp) * 2); max-height: 820px;
    border-radius: var(--r-xl); overflow: hidden;
  }
  .feature .wrap { max-width: none; margin: 0; padding: 0; }
  .feature .feature__top { grid-column: 1; grid-row: 2; }
  .feature .feature__body { grid-column: 1; grid-row: 3; padding-top: clamp(18px, 3svh, 28px); }
  .feature__title {
    text-align: left; text-shadow: none;
    font-size: min(var(--mega), calc((min(100vw, var(--max) + var(--pad) * 2) - var(--pad) * 2) * 5 / 12 / 6.3));
  }
  .feature__body .t-lead { margin-inline: 0; max-width: 22em; text-shadow: none; font-size: clamp(17px, 1.4vw, 21px); }
  .feature__price { margin-top: 18px; font-size: clamp(34px, 3.2vw, 52px); }
  .feature__body .btn-row { margin-top: 22px; justify-content: flex-start; }

  /* ---------- Riprese video su richiesta: tutto in una schermata, video più piccolo ---------- */
  .film-sec {
    min-height: calc(100svh - var(--nav-h)); display: flex; flex-direction: column; justify-content: center;
    padding-block: clamp(24px, 4svh, 48px);
  }
  .film-sec .film {
    width: min(100%, 860px, calc((100svh - var(--nav-h) - var(--mega) * .86 - 250px) * 16 / 9));
    max-width: none; margin-inline: auto;
  }
  .film__heading { font-size: var(--mega); margin-bottom: clamp(16px, 2.6svh, 28px); }
  .film__play { width: 76px; height: 76px; margin: -38px 0 0 -38px; }
  .film__play svg { width: 46px; height: 46px; }

  /* ---------- Servizi: la prima card intera già nella prima schermata ----------
     Intestazione compatta; la foto di ogni servizio (sempre 4:5) prende l'altezza dallo
     schermo (--sh), così ogni servizio sta in una schermata sotto la barra delle
     categorie, che resta in alto mentre scorri. */
  .page-head--tight { padding-top: calc(var(--nav-h) + clamp(22px, 4svh, 44px)); padding-bottom: clamp(10px, 1.6svh, 18px); }
  .svc {
    --sh: clamp(300px, calc(100svh - var(--nav-h) - 236px), 560px);
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0 clamp(36px, 4.4vw, 72px); padding-block: clamp(18px, 2.8svh, 30px);
  }
  .svc--rev { grid-template-columns: minmax(0, 1fr) auto; }
  .svc__media { height: var(--sh); aspect-ratio: 4 / 5; }
  .svc--wide .svc__media { aspect-ratio: 16 / 10; }
  .svc__head { margin-bottom: 14px; }
  .svc__title { font-size: clamp(28px, 2.5vw, 38px); }
  .svc__from { margin-top: 10px; font-size: clamp(38px, 3.4vw, 52px); }
  .svc__from small { font-size: 16px; }
  .svc__body { gap: 12px; }
  .svc__text { font-size: 16px; max-width: 38em; }
  .pkg { padding: 12px 14px 12px 16px; }
  .pkg__price { font-size: 26px; }
  .svc__cta .btn { min-height: 44px; padding: 0 20px; font-size: 15px; }
  .svc-film { padding-block: clamp(20px, 3svh, 32px); }
  .svc-film .film { width: min(100%, 860px, calc((100svh - var(--nav-h) - var(--mega) * .86 - 300px) * 16 / 9)); margin-inline: auto; }
  .promos-sec { padding-bottom: clamp(28px, 5svh, 56px); }
  .promo { aspect-ratio: auto; height: clamp(420px, calc(100svh - var(--nav-h) - 130px), 720px); }
  .promo__title { font-size: min(calc(var(--mega) * .72), 3.6vw); }

  /* ---------- Sala pose: apertura a due colonne (testo a sinistra, foto a destra) ---------- */
  .sala-hero {
    --pb: clamp(24px, 4svh, 48px);
    display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: 1fr auto auto auto 1fr;
    gap: 0 clamp(40px, 5vw, 80px); align-items: center; justify-items: start; text-align: left;
    height: auto; min-height: 100svh;
    padding: calc(var(--nav-h) + var(--pb)) max(var(--pad), calc((100vw - var(--max)) / 2)) var(--pb);
  }
  .sala-title {
    grid-column: 1; grid-row: 2; margin: 0; white-space: normal; text-align: left;
    font-size: min(var(--mega), calc((min(100vw, var(--max) + var(--pad) * 2) - var(--pad) * 2) * 5 / 12 / 4.7));
  }
  .sala-hero__media { grid-column: 2; grid-row: 1 / -1; width: 100%; height: calc(100svh - var(--nav-h) - var(--pb) * 2); max-height: 820px; flex: none; }
  .sala-hero__ph { width: 100%; height: 100%; aspect-ratio: auto; }
  .sala-hero__lead { grid-column: 1; grid-row: 3; margin: clamp(16px, 2.6svh, 26px) 0 0; max-width: 24em; font-size: clamp(18px, 1.5vw, 22px); text-wrap: pretty; }
  .sala-hero__cta { grid-column: 1; grid-row: 4; margin-top: clamp(20px, 3svh, 32px); }

  /* ---------- Sala pose: le 6 card dell'attrezzatura in una schermata (3×2) ----------
     --kh = altezza delle foto (sempre 4:3), ricavata da quella dello schermo */
  .kit {
    --pb: clamp(24px, 4svh, 48px);
    --kr: 86px;
    --kh: clamp(150px, calc((100svh - var(--nav-h) - var(--pb) * 2 - var(--mega) * .86 - clamp(18px, 3svh, 36px) - 16px - var(--kr) * 2) / 2), 300px);
    min-height: calc(100svh - var(--nav-h)); display: flex; flex-direction: column; justify-content: center;
    padding-block: var(--pb);
  }
  .kit__title { margin-bottom: clamp(18px, 3svh, 36px); }
  .stats { grid-template-columns: repeat(3, max(calc(var(--kh) * 4 / 3), 290px)); justify-content: center; gap: 16px; }
  .stat__ph { aspect-ratio: auto; height: var(--kh); }
  .stat__row { grid-template-columns: 42px minmax(0, 1fr); gap: 12px; padding: 13px 18px 14px 10px; }
  .stat__row > div { padding-left: 14px; }
  .stat__n { font-size: 44px; }
  .stat__t { font-size: 17px; }
  .stat__s { font-size: 13.5px; }

  /* ---------- Sala pose: tariffe e "Il nostro studio" ---------- */
  /* Tariffe: sezione compatta, alta quanto il suo contenuto (niente vuoto attorno) */
  .rates-sec { padding-block: clamp(48px, 8svh, 80px); }
  .rates__title { margin-bottom: clamp(24px, 3.6svh, 36px); }
  .rates { max-width: 1160px; margin-inline: auto; }
  .rate { grid-template-rows: 1fr auto; align-items: start; gap: 18px 20px; padding: 24px 24px 24px 26px; }
  .rate__info { align-self: center; }
  .rate__d { text-wrap: pretty; }
  .rate__p { padding-left: 20px; font-size: 48px; }
  .studio {
    --rh: clamp(220px, calc(100svh - var(--nav-h) - var(--mega) * .86 - 210px), 440px);
    min-height: calc(100svh - var(--nav-h)); display: flex; flex-direction: column; justify-content: center;
    padding-block: clamp(24px, 4svh, 48px);
  }
  .studio__title { margin-bottom: clamp(18px, 3svh, 36px); }
  .studio .strip { grid-auto-columns: calc(var(--rh) * 1.5); }
  .studio .rail-foot { margin-top: clamp(10px, 1.6svh, 20px); }

  /* ---------- Dove siamo (Sala pose e Contatti): mappa a sinistra, indirizzo a destra ---------- */
  .visit { min-height: calc(100svh - var(--nav-h)); display: flex; align-items: center; padding-block: clamp(24px, 4svh, 48px); }
  /* la mappa riempie la prima colonna, i testi vanno nella seconda, centrati in verticale */
  .visit > .wrap {
    width: 100%; height: min(600px, calc(100svh - var(--nav-h) - clamp(24px, 4svh, 48px) * 2));
    display: flex; flex-direction: column; flex-wrap: wrap; justify-content: center; align-content: space-between;
    text-align: left;
  }
  .visit .visit__map { width: 57%; height: 100%; aspect-ratio: auto; }
  .visit .t-statement, .visit .t-lead, .visit .btn-row { width: 36%; }
  .visit .t-statement { margin: 0; font-size: clamp(30px, 2.8vw, 44px); }
  .visit .t-lead { margin: 16px 0 0; }
  .visit .btn-row { margin-top: 28px; justify-content: flex-start; }

  /* ---------- Team: ogni fotografo in una schermata ----------
     Nome alla misura dei titoli, ritratto più piccolo e miniature delle gallerie alte
     quanto lo spazio che resta (--gh). Nella pagina Gallerie restano 9:16. */
  .member { padding-block: clamp(22px, 3.4svh, 36px); }
  .member__top { grid-template-columns: minmax(0, clamp(200px, min(20vw, 32svh), 300px)) minmax(0, 1fr); }
  .member__name { font-size: var(--mega); }
  .member__bio p { font-size: 16px; }
  .member .cats { --gh: clamp(170px, calc(100svh - var(--nav-h) - 470px), 330px); }
  .member .cats-wrap { margin-top: clamp(18px, 3svh, 32px); }
  .member .cat { aspect-ratio: auto; height: var(--gh); }
  .cat__name { font-size: clamp(20px, 1.8vw, 28px); }
  .gal-head { padding-top: calc(var(--nav-h) + clamp(28px, 5svh, 56px)); padding-bottom: clamp(20px, 3svh, 36px); }
  .gal-title { font-size: var(--mega); }

  /* ---------- Reel: tutti e tre affiancati, grandi e accesi ---------- */
  .social-sec {
    --rw: min(380px, calc((100vw - var(--pad) * 2 - 96px) / 3), calc((100svh - var(--nav-h) - 12svh - var(--st) * .86 * var(--sl) - 120px) * 9 / 16));
  }
  .reels__track {
    justify-content: center; gap: clamp(28px, 3vw, 48px);
    overflow: visible; scroll-snap-type: none; padding: 10px var(--pad) 6px;
  }
  .reel { opacity: 1; transform: none; }
  .reel:not(.is-active):not(.is-playing) .reel__play { opacity: 1; transform: none; pointer-events: auto; }
  .reels__nav { display: none; }
}

/* ---------- Hero desktop: striscia di foto 9:16 alte quanto lo schermo, che scorre ----------
   La crea hero.js (solo da 1024px). La storia a tutto schermo del mobile resta nella
   pagina ma su desktop è nascosta e non scarica nulla. --cw = larghezza di una foto. */
@media (min-width: 1024px) and (min-aspect-ratio: 4/5) {
  .stories__ambient, .stories__frame, .stories__caps { display: none; }
  .hero-strip {
    --gap: 12px;
    --cw: calc((100svh - var(--nav-h) - 22px) * 9 / 16);
    display: block; position: absolute; inset: calc(var(--nav-h) + 4px) 0 18px;
    overflow: hidden;
  }
  .hero-strip__track { display: flex; width: max-content; height: 100%; padding-left: var(--gap); will-change: transform; }
  .hero-strip__card {
    position: relative; flex: none; width: var(--cw); height: 100%; margin-right: var(--gap);
    border-radius: 24px; overflow: hidden; isolation: isolate; background: #111; color: #fff;
  }
  .hero-strip__card img {
    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
    transition: transform 1.2s var(--ease);
  }
  .hero-strip__card::after {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(to top, rgba(0, 0, 0, .68), rgba(0, 0, 0, .2) 34%, rgba(0, 0, 0, 0) 54%);
  }
  .hero-strip__card:hover img { transform: scale(1.045); }
  .hero-strip__card:focus-visible { outline: 2px solid #fff; outline-offset: -5px; }
  .hero-strip__txt { position: absolute; z-index: 1; left: 0; right: 0; bottom: 0; padding: 0 calc(var(--cw) * .07) calc(var(--cw) * .075); }
  .hero-strip__t {
    display: block; font-family: var(--f-hero); font-weight: 900; text-transform: uppercase;
    font-size: calc(var(--cw) / 5.2); line-height: .86; letter-spacing: -.01em;
  }
  .hero-strip__d {
    display: block; margin-top: 10px; max-width: 20em;
    font-size: clamp(14px, calc(var(--cw) / 27), 18px); font-weight: 500; line-height: 1.35;
    color: rgba(255, 255, 255, .9); text-wrap: balance;
  }
}
/* movimento ridotto: niente scorrimento automatico, la striscia si scorre a mano */
@media (min-width: 1024px) and (min-aspect-ratio: 4/5) and (prefers-reduced-motion: reduce) {
  .hero-strip { overflow-x: auto; scrollbar-width: none; }
  .hero-strip__track { will-change: auto; }
}
