/* self-hosted fonts (latin) — no third-party request, metric-matched fallbacks so the swap does not shift the hero */
@font-face{font-family:"Inter";font-style:normal;font-weight:400 700;font-display:swap;src:url("fonts/inter-var.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:800;font-display:swap;src:url("fonts/montserrat-800.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/ibm-plex-mono-500.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter Fallback";src:local("Arial"),local("Helvetica Neue"),local("Helvetica");size-adjust:107.06%;ascent-override:90.49%;descent-override:22.56%;line-gap-override:0%}
@font-face{font-family:"Montserrat Fallback";src:local("Arial");size-adjust:113%;ascent-override:85%;descent-override:22%;line-gap-override:0%}
/* Bessi Assicurazioni — v2 (2026-09-21). Formal register: Inter for text, Montserrat wordmark echoing the shop sign,
   IBM Plex Mono for labels. One brand colour (sign navy) on warm paper. Photo-led, restrained motion. Hand-authored. */
:root{
  --paper:#F6F4EF; --paper-2:#EDEAE2; --card:#FFFFFF;
  --ink:#141B2E; --ink-2:#3A4356; --mute:#5D6577;
  --navy:#1B3A73; --navy-deep:#132C5A; --navy-ink:#0D1B3A; --navy-tint:#E5EBF6;
  --accent:#B8322A; --line:#D9D4C8; --line-2:#E7E3D9;
  --wa:#25D366; --wa-dark:#1DA851; --wechat:#07C160;
  --r:12px; --r-lg:18px; --shadow:0 20px 44px rgba(20,27,46,.10); --shadow-s:0 6px 16px rgba(20,27,46,.07);
  --max:1240px; --gutter:clamp(18px,4vw,44px);
  --f:"Inter","Inter Fallback",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --f-mark:"Montserrat","Montserrat Fallback","Inter",sans-serif;
  --ease:cubic-bezier(.16,1,.3,1); --dur:.55s;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:84px}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 var(--f);font-feature-settings:"cv11","ss01","tnum"}
img{max-width:100%;display:block;height:auto}
a{color:inherit}
h1,h2,h3{font-family:var(--f);font-weight:600;letter-spacing:-.022em;line-height:1.1;margin:0;text-wrap:balance}
h1{font-size:clamp(34px,4.6vw,58px);letter-spacing:-.03em}
h2{font-size:clamp(26px,3.1vw,40px)}
h3{font-size:clamp(17px,1.6vw,20px);line-height:1.3;letter-spacing:-.01em}
p{margin:0}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:8px 12px;border-radius:6px;z-index:100}
.skip:focus{left:8px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.eyebrow{font:500 11.5px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--navy);display:inline-flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:18px;height:1px;background:var(--navy)}
.lede{font-size:clamp(16px,1.3vw,18px);line-height:1.6;color:var(--ink-2);max-width:56ch}
.sec{padding:clamp(56px,8vw,104px) 0}
.sec-head{display:grid;gap:12px;max-width:720px;margin-bottom:clamp(24px,3.6vw,44px)}
.sec-head.row{max-width:none;grid-template-columns:1fr auto;align-items:end;gap:20px}
@media(max-width:700px){.sec-head.row{grid-template-columns:1fr}}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font:600 14.5px/1 var(--f);padding:13px 20px;border-radius:8px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:transform .2s var(--ease),background .2s,box-shadow .2s,border-color .2s;white-space:nowrap}
.btn svg{width:17px;height:17px;flex:none}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--navy-deep);box-shadow:0 10px 22px rgba(27,58,115,.22)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--ink);background:#fff}
.btn-light{background:#fff;color:var(--navy)}
.btn-light:hover{background:var(--paper)}
.btn-wa{background:var(--wa);color:#063d1e}
.btn-wa:hover{background:var(--wa-dark);color:#fff}
.btn-wechat{background:var(--wechat);color:#063d1e}
.btn-wechat:hover{background:#06a852}
.btn-sm{padding:10px 14px;font-size:13.5px}

/* top bar: address · hours | phone · WhatsApp · language (visible at every width) */
html{scroll-padding-top:112px;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.topbar{position:sticky;top:0;z-index:63;background:var(--navy-ink);color:#C9D3EA;font-size:12.5px}
.topbar .wrap{display:flex;gap:18px;align-items:center;min-height:38px}
.topbar a{color:#fff;text-decoration:none}
.topbar a:hover{text-decoration:underline}
.topbar .grow{flex:1}
.topbar .it{display:inline-flex;align-items:center;gap:7px;min-height:34px;white-space:nowrap}
.topbar svg{width:13px;height:13px;opacity:.75;flex:none}
.lang{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;font:600 12px/1 var(--f);background:#fff;margin-left:auto;flex:none}
.lang a{text-decoration:none;padding:9px 11px;color:var(--mute);letter-spacing:.04em;white-space:nowrap;transition:background .15s,color .15s}
.lang a[aria-current]{background:var(--navy);color:#fff}
.lang a:not([aria-current]):hover{background:var(--paper-2);color:var(--ink)}
.nav+.lang{margin-left:8px}
@media(max-width:760px){.hide-m{display:none!important}.topbar .hide-m{display:none}.topbar .wrap{gap:8px}.topbar .it.addr{overflow:hidden;text-overflow:ellipsis;min-width:0}}

/* header */
.hdr{position:sticky;top:38px;z-index:40;background:rgba(246,244,239,.88);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid transparent;transition:border-color .2s,box-shadow .2s}
.hdr.stuck{border-bottom-color:var(--line);box-shadow:0 8px 24px rgba(20,27,46,.06)}
.hdr .wrap{display:flex;align-items:center;gap:26px;min-height:72px;transition:min-height .25s var(--ease)}
.hdr.stuck .wrap{min-height:60px}
.mark{display:grid;gap:3px;text-decoration:none;color:var(--navy);line-height:1;flex:none;white-space:nowrap}
.mark b{font:800 23px/1 var(--f-mark);letter-spacing:.22em;text-transform:none}
.mark small{font:600 9.5px/1 var(--f-mark);letter-spacing:.32em;text-transform:uppercase;color:var(--navy)}
.mark small i{font-style:normal;letter-spacing:.12em;color:#3E5A8F;margin-left:6px;text-transform:none}
.nav{display:flex;gap:2px;margin-left:auto}
.nav a{text-decoration:none;font-size:14px;font-weight:500;color:var(--ink-2);padding:9px 11px;border-radius:6px;transition:background .15s,color .15s;white-space:nowrap}
.nav a:hover,.nav a[aria-current]{background:var(--paper-2);color:var(--ink)}
.hdr-cta{margin-left:6px}
.burger{display:none;width:44px;height:44px;flex:none;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;place-items:center;margin-left:8px;position:relative}
.burger span,.burger span::before,.burger span::after{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px;transition:transform .3s var(--ease),opacity .2s}
.burger span{position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0}
.burger span::before{top:-6px}.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-6px) rotate(-45deg)}
.mnav{display:none}
@media(max-width:1260px){.nav a{padding:9px 8px;font-size:13.5px}.hdr .wrap{gap:18px}}
@media(max-width:1140px){.hdr-cta{display:none}}
@media(max-width:980px){
  .nav,.hdr-cta{display:none}
  .burger{display:grid;z-index:61}
  .nav+.lang{margin-left:auto}
  .hdr .wrap{gap:12px}
  .mnav{display:block;position:fixed;inset:0;background:var(--paper);z-index:60;padding:124px var(--gutter) 24px;transform:translateY(-8px);opacity:0;visibility:hidden;transition:transform .3s var(--ease),opacity .3s var(--ease),visibility .3s;overflow:auto}
  .mnav.open{transform:none;opacity:1;visibility:visible}
  .mnav a.item{display:flex;justify-content:space-between;align-items:center;font:600 22px/1.2 var(--f);letter-spacing:-.02em;text-decoration:none;padding:16px 0;border-bottom:1px solid var(--line);opacity:0;transform:translateY(8px);transition:opacity .35s var(--ease),transform .35s var(--ease)}
  .mnav.open a.item{opacity:1;transform:none}
  .mnav a.item small{font:500 12px/1 var(--f-mono);color:var(--mute);letter-spacing:.1em}
  .mnav .ctas{display:grid;gap:10px;margin-top:22px}
  .mnav .meta{margin-top:26px;font-size:13.5px;color:var(--mute);display:grid;gap:6px}
  .hdr.menu-open{background:var(--paper);z-index:62;backdrop-filter:none;-webkit-backdrop-filter:none}
}

/* hero: 5/7 split, photo bleeds to the right edge on wide screens */
.hero{padding:clamp(28px,4.5vw,64px) 0 0;overflow:hidden}
.hero .grid{display:grid;grid-template-columns:5fr 7fr;gap:clamp(24px,4vw,56px);align-items:center}
.hero h1{margin:14px 0 14px;max-width:16ch}
.hero h1 em{font-style:normal;color:var(--navy);background:linear-gradient(transparent 62%,rgba(27,58,115,.14) 62%)}
.hero .lede{max-width:44ch}
.hero .ctas{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.proof{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:22px;font-size:13.5px;color:var(--ink-2)}
.proof span{display:inline-flex;align-items:center;gap:7px}
.proof svg{width:15px;height:15px;color:var(--navy)}
.stars{color:#E3A008;letter-spacing:1px;font-size:14px}
.hero-photo{position:relative;margin-right:calc(-1 * var(--gutter))}
.hero-photo .frame{border-radius:var(--r-lg) 0 0 var(--r-lg);overflow:hidden;aspect-ratio:4/3;box-shadow:var(--shadow);background:var(--paper-2)}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.hero-photo .tag{position:absolute;left:16px;bottom:16px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-radius:10px;padding:10px 13px;box-shadow:var(--shadow-s);font-size:13px;display:grid;gap:2px;max-width:min(320px,80%)}
.hero-photo a.tag{text-decoration:none;color:inherit;transition:transform .2s var(--ease),box-shadow .2s}
.hero-photo a.tag:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.hero-photo .tag b{font-size:13.5px}
.hero-photo .tag small{color:var(--mute);font-size:11.5px}
.notice{display:inline-flex;align-items:center;gap:9px;background:var(--navy-tint);color:var(--navy-deep);border-radius:6px;padding:7px 12px 7px 8px;font-size:13px;font-weight:500}
.notice i{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--navy);color:#fff;font-style:normal;font:600 11px var(--f-mono)}
@media(min-width:1400px){.hero-photo{margin-right:calc((100vw - var(--max)) / -2 - var(--gutter) + var(--gutter))}}
@media(max-width:900px){.hero .grid{grid-template-columns:1fr}.hero-photo{margin-right:0}.hero-photo .frame{border-radius:var(--r-lg);aspect-ratio:16/11}.hero h1{max-width:none}}

/* ticker (montegrappa-style) */
.ticker{margin-top:clamp(32px,5vw,56px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;background:var(--paper)}
.ticker .track{display:flex;width:max-content;animation:tick 42s linear infinite}
.ticker:hover .track{animation-play-state:paused}
.ticker span{font:500 11.5px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);padding:15px 28px;border-right:1px solid var(--line);white-space:nowrap;display:inline-flex;align-items:center;gap:12px}
.ticker span i{font-style:normal;color:var(--navy)}
/* 减弱动态效果 on: no marquee. The row then has to FILL the band — in Chinese the eight labels are much
   shorter than in Italian and the old `width:auto` left a visible hole at the right edge. Equal cells fix
   both languages; they still scroll if the labels ever outgrow the band. */
@media(prefers-reduced-motion:reduce){
  .ticker .track{animation:none;width:100%;overflow-x:auto;scrollbar-width:none}
  .ticker .track span:nth-child(n+9){display:none}
  .ticker .track span{flex:1 0 auto;justify-content:center;padding-inline:clamp(10px,1.4vw,28px)}
  .ticker .track span:last-of-type{border-right:0}
}

/* numbers */
.strip{background:var(--navy-ink);color:#fff}
.strip .wrap{display:grid;grid-template-columns:repeat(4,1fr)}
.strip .n{padding:30px 24px 26px;border-left:1px solid rgba(255,255,255,.12)}
.strip .n:first-child{border-left:0;padding-left:0}
.strip b{display:block;font:600 clamp(34px,3.6vw,50px)/1 var(--f);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.strip b .stars{font-size:.5em;vertical-align:.35em;margin-left:4px}
.strip small{display:block;margin-top:8px;font:500 11.5px/1.4 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:#9DB4E6}
@media(max-width:760px){.strip .wrap{grid-template-columns:1fr 1fr}.strip .n{padding:20px 16px;border-left:0;border-top:1px solid rgba(255,255,255,.12)}.strip .n:nth-child(-n+2){border-top:0}.strip .n:nth-child(odd){padding-left:0}.strip .n:nth-child(even){border-left:1px solid rgba(255,255,255,.12)}}

/* coverage: 3×2 desktop, compact rows on mobile */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.card{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);padding:20px;position:relative;transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .2s;display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:start}
.card h3{margin-bottom:4px}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line)}
.card .head{display:flex;justify-content:space-between;align-items:center}
.card .num{font:500 11px/1 var(--f-mono);letter-spacing:.14em;color:var(--mute)}
.card .ico{width:40px;height:40px;border-radius:9px;background:var(--navy-tint);color:var(--navy);display:grid;place-items:center}
.card .ico svg{width:20px;height:20px}
.card p{color:var(--ink-2);font-size:14.5px}
.card ul{margin:2px 0 0;padding:0;list-style:none;display:grid;gap:5px;font-size:13.5px;color:var(--ink-2)}
.card li{display:flex;gap:8px;align-items:flex-start}
.card li::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;background:var(--navy);margin-top:8px}
@media(max-width:960px){.cards{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.cards{grid-template-columns:1fr;gap:10px}.card{padding:16px}.card p{font-size:14px}}

/* compare */
.compare{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cmp{border-radius:var(--r);padding:22px 24px;display:grid;gap:10px;align-content:start}
.cmp.a{background:var(--paper-2);border:1px solid var(--line)}
.cmp.b{background:var(--navy);color:#fff}
.cmp .lab{font:500 11px/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;opacity:.8}
.cmp ul{margin:0;padding:0;list-style:none;display:grid;gap:8px;font-size:14.5px}
.cmp li{display:flex;gap:10px;align-items:flex-start}
.cmp li svg{width:17px;height:17px;flex:none;margin-top:2px}
.cmp.a li svg{color:var(--mute)}.cmp.b li svg{color:#9BE6B4}
@media(max-width:760px){.compare{grid-template-columns:1fr}}

/* claims band */
.band{background:var(--navy-ink);color:#E4EAF7}
.band .eyebrow{color:#9DB4E6}.band .eyebrow::before{background:#9DB4E6}
.band h2{color:#fff}
.band .lede{color:#B9C6E4}
.band .grid{display:grid;grid-template-columns:7fr 5fr;gap:clamp(24px,4vw,56px);align-items:center}
.steps{display:grid;margin-top:26px;border-top:1px solid rgba(255,255,255,.14)}
.step{position:relative;display:grid;grid-template-columns:56px 1fr;gap:14px;padding:18px 12px;margin:0 -12px;text-decoration:none;color:inherit;border-radius:10px;transition:background .2s,transform .25s var(--ease)}
.step::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:1px;background:rgba(255,255,255,.14)}
.step:hover{background:rgba(255,255,255,.06);transform:translateX(4px)}
.step:hover b{color:#fff}
.step:hover h3::after{opacity:1;transform:none}
.step h3::after{content:"→";display:inline-block;margin-left:8px;opacity:0;transform:translateX(-6px);transition:opacity .2s,transform .25s var(--ease);color:#9DB4E6}
.step b{font:500 13px/1.6 var(--f-mono);color:#9DB4E6;letter-spacing:.1em;transition:color .2s}
.step h3{color:#fff;margin-bottom:4px}
.step p{color:#B9C6E4;font-size:14.5px}
.band .photo{border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/5;box-shadow:0 30px 60px rgba(0,0,0,.35)}
.band .photo img{width:100%;height:100%;object-fit:cover}
.band .ctas{margin-top:24px;display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:900px){.band .grid{grid-template-columns:1fr}.band .photo{aspect-ratio:16/10}}

/* story + agency */
.story{display:grid;grid-template-columns:5fr 7fr;gap:clamp(24px,4vw,56px);align-items:start}
.timeline{display:grid;gap:0;border-left:2px solid var(--line);margin:8px 0 0 6px;padding-left:22px}
.tl{position:relative;padding:0 0 22px}
/* ⚠️ `*{box-sizing:border-box}` non copre gli pseudo-elementi: il pallino era quindi 12+3+3=18px e non 12,
   cioè 3px a destra della linea e 9px sotto la data. Box-sizing esplicito, poi centrato sui due assi:
   la riga parte a 24px (bordo 2 + padding 22) dal bordo della timeline → centro linea a 1px; il pallino
   (18px) va quindi a -32px; verticalmente la data è alta 12px → centro a 6 → top = 6 - 9 = -3. */
.tl::before{content:"";position:absolute;box-sizing:border-box;left:-32px;top:-3px;width:18px;height:18px;border-radius:50%;background:var(--navy);border:3px solid var(--paper)}
.tl b{display:block;font:500 12px/1 var(--f-mono);letter-spacing:.12em;color:var(--navy);margin-bottom:6px}
.tl p{color:var(--ink-2);font-size:14.5px}
.gallery{display:grid;grid-template-columns:1.25fr .75fr;grid-template-rows:1fr 1fr;gap:12px;width:100%;min-width:0;aspect-ratio:1.28}
.gallery figure{margin:0;border-radius:var(--r);overflow:hidden;background:var(--paper-2);position:relative;min-height:0}
.gallery figure:first-child{grid-row:1/3}
.gallery img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gallery figcaption{position:absolute;left:12px;bottom:12px;background:rgba(255,255,255,.92);border-radius:6px;padding:5px 9px;font-size:12px;font-weight:500}
.team{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:clamp(28px,4vw,44px)}
.person{display:flex;gap:16px;align-items:center;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);padding:16px 18px}
.person .ph{width:68px;height:68px;border-radius:10px;overflow:hidden;flex:none;background:var(--navy-tint);display:grid;place-items:center;color:var(--navy);font:600 22px/1 var(--f)}
.person .ph img{width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.person b{display:block;font-size:15px}
.person small{display:block;color:var(--mute);font-size:13px;margin-top:2px;line-height:1.45}
.partners{margin-top:clamp(40px,5vw,64px);border-top:1px solid var(--line);padding-top:26px}
.partners .rv-head{margin-bottom:16px}
.partners .note{font-size:13px;color:var(--mute);margin-top:14px}
.pl-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:4px 0 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.pl-track::-webkit-scrollbar{display:none}
.pl-track:focus-visible{outline:2px solid var(--navy);outline-offset:4px;border-radius:8px}
.plogo{flex:0 0 176px;height:72px;scroll-snap-align:start;padding:0 18px;border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;gap:12px;background:#fff;color:var(--ink);filter:grayscale(.2);opacity:.92;transition:filter .25s,opacity .25s}
.plogo img{width:34px;height:34px;object-fit:contain;flex:none}
.plogo img[src$=".svg"]{width:76px}
.plogo span{font:600 15px/1.15 var(--f);letter-spacing:-.01em}
.plogo img[src$=".svg"]+span{display:none}   /* il wordmark contiene già il nome */
.plogo:hover{filter:none;opacity:1}
.plogo.todo{border-style:dashed;background:transparent;color:var(--ink-2);font:500 12px/1.35 var(--f-mono);text-align:center;letter-spacing:.04em}
@media(max-width:900px){.story{grid-template-columns:1fr}}
@media(max-width:640px){
  .gallery{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;aspect-ratio:auto;padding-bottom:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .gallery::-webkit-scrollbar{display:none}
  .gallery figure{flex:0 0 78%;scroll-snap-align:start;display:grid;gap:8px;background:none;border-radius:0;overflow:visible;position:static}
  .gallery figure:first-child{grid-row:auto}
  .gallery img{position:static;width:100%;height:auto;aspect-ratio:4/3;border-radius:var(--r)}
  .gallery figcaption{position:static;background:none;padding:0;border-radius:0;font-size:13px;font-weight:500;color:var(--ink-2)}
}
@media(max-width:640px){.team{grid-template-columns:1fr}.plogo{flex-basis:152px;height:62px;gap:9px}.plogo span{font-size:14px}.plogo img{width:28px;height:28px}.plogo img[src$=".svg"]{width:64px}.partners .rv-head{align-items:end}}

/* reviews carousel */
.reviews{background:var(--paper-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden}
.rv-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:22px}
.rv-nav{display:flex;gap:8px}
.rv-nav button{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;display:grid;place-items:center;transition:background .15s,border-color .15s}
.rv-nav button:hover{border-color:var(--ink)}
.rv-nav button:disabled{opacity:.35;cursor:default}
.rv-nav svg{width:18px;height:18px}
.rv-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);scroll-behavior:smooth;padding:4px var(--gutter) 18px;margin:0 calc(-1 * var(--gutter));scrollbar-width:none;-webkit-overflow-scrolling:touch}
/* scroll-padding-inline = the track's own padding, so the first card's snap point is scrollLeft 0. Without it Chrome
   snapped the track to 18px on load, counted that as the first scroll, and never reported LCP (PSI NO_LCP, 2026-09-22). */
.rv-track::-webkit-scrollbar{display:none}
.rv{flex:0 0 min(340px,80vw);scroll-snap-align:start;background:#fff;border:1px solid var(--line-2);border-radius:var(--r);padding:22px;display:grid;gap:12px;align-content:start;min-height:200px}
.rv.badge{background:var(--navy);color:#fff;border-color:var(--navy)}
.rv.badge .score{font:600 56px/1 var(--f);letter-spacing:-.04em}
.rv.badge .stars{font-size:18px}
.rv.badge small{color:#B9C6E4;font-size:13px}
.rv q{quotes:none;font-size:15.5px;line-height:1.55;color:var(--ink)}
.rv .who{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--mute);margin-top:auto}
.rv .who b{color:var(--ink-2);font-weight:500}
.rv.more{border-style:dashed;background:transparent;align-content:center;justify-items:start}
.rv-dots{display:flex;justify-content:center;gap:6px;margin-top:6px}
.rv-dots i{width:6px;height:6px;border-radius:50%;background:var(--line);transition:width .25s var(--ease),background .2s}
.rv-dots i.on{width:18px;border-radius:3px;background:var(--navy)}
.glogo{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:13px}
.glogo i{width:16px;height:16px;border-radius:50%;background:conic-gradient(#4285F4 0 25%,#34A853 0 50%,#FBBC05 0 75%,#EA4335 0);display:inline-block}
@media(prefers-reduced-motion:reduce){.rv-track{scroll-behavior:auto}}

/* map */
.where .grid{display:grid;grid-template-columns:7fr 5fr;gap:16px;align-items:stretch}
#map{border-radius:var(--r-lg);overflow:hidden;min-height:440px;background:#E9EEF6;border:1px solid var(--line);position:relative}
#map .fallback{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:24px;color:var(--mute)}
.maplibregl-ctrl-attrib{font-size:10px}
.pin{width:44px;height:44px;border-radius:50% 50% 50% 0;background:var(--navy);transform:rotate(-45deg);box-shadow:0 10px 24px rgba(27,58,115,.35);display:grid;place-items:center;border:3px solid #fff}
.pin span{transform:rotate(45deg);color:#fff;font:800 15px/1 var(--f-mark)}
.pin-wrap{width:44px;height:44px;transform:translateY(-14px)}
.where .info{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:24px;display:grid;gap:14px;align-content:start;box-shadow:var(--shadow-s)}
.where .info h3{font-size:20px}
.row{display:grid;grid-template-columns:20px 1fr;gap:12px;align-items:start;font-size:14.5px}
.row svg{width:18px;height:18px;color:var(--navy);margin-top:2px}
.row b{display:block;font:500 11px/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:4px}
.row a{text-decoration:none;color:var(--ink);font-weight:500;display:inline-block;padding:3px 0}
.row a:hover{text-decoration:underline}
.hours{display:grid;gap:3px;font-variant-numeric:tabular-nums}
.hours div{display:flex;justify-content:space-between;gap:12px}
.hours .closed{color:var(--mute)}
.where .ctas{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:900px){.where .grid{grid-template-columns:1fr}#map{min-height:320px}}

/* faq */
#domande{background:#fff;border-top:1px solid var(--line)}
.faq-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:clamp(28px,5vw,72px);align-items:start}
.faq{max-width:none}
.faq-side{position:sticky;top:124px}
.ask{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:24px;display:grid;gap:12px}
.ask h3{font-size:19px;letter-spacing:-.015em}
.ask p{font-size:14.5px;color:var(--ink-2)}
.ask .ctas{display:grid;gap:8px;margin-top:4px}
.ask .ctas .btn{justify-content:center}
.ask small{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--mute)}
.ask small svg{width:13px;height:13px;flex:none}
@media(max-width:900px){.faq-grid{grid-template-columns:1fr;gap:28px}.faq-side{position:static}}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:16px 0}
.faq summary h3{font:600 16.5px/1.4 var(--f);letter-spacing:-.01em;margin:0}
.faq summary::-webkit-details-marker{display:none}
.faq summary i{flex:none;position:relative;width:28px;height:28px;border-radius:50%;border:1px solid var(--line);background:#fff;transition:background .25s,border-color .25s}
.faq summary i::before,.faq summary i::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:2px;background:var(--ink);border-radius:1px;transform:translate(-50%,-50%);transition:transform .3s var(--ease),background .25s}
.faq summary i::after{transform:translate(-50%,-50%) rotate(90deg)}
.faq summary:hover i{border-color:var(--ink)}
.faq details.is-open summary i{background:var(--navy);border-color:var(--navy)}
.faq details.is-open summary i::before,.faq details.is-open summary i::after{background:#fff}
.faq details.is-open summary i::after{transform:translate(-50%,-50%) rotate(0deg)}
.faq .a{overflow:hidden}
.faq .a-in{padding:0 0 18px;color:var(--ink-2);max-width:66ch;font-size:15px}
.faq .a-in p+p{margin-top:8px}

/* contact */
.contact{background:var(--paper-2);border-top:1px solid var(--line)}
.contact .grid{display:grid;grid-template-columns:7fr 5fr;gap:16px;align-items:start}
.panel{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-s);overflow:hidden}
.tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--paper-2);padding:5px;gap:5px;margin:12px 12px 0;border-radius:9px}
.tab{border:0;background:transparent;font:600 14px var(--f);padding:10px 12px;border-radius:7px;cursor:pointer;color:var(--mute);display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .2s,color .2s,box-shadow .2s}
.tab svg{width:16px;height:16px}
.tab[aria-selected="true"]{background:#fff;color:var(--ink);box-shadow:0 2px 8px rgba(20,27,46,.10)}
.tabpanel{padding:20px 22px 24px}
.tabpanel[hidden]{display:none}
.f{display:grid;gap:13px}
.f .two{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.field{display:grid;gap:6px}
.field label,.field .lab{font-size:13px;font-weight:600;color:var(--ink)}
.field label small{font-weight:400;color:var(--mute);font-size:11.5px} /* 10,8px era sotto il minimo del testo funzionale */
.input,.select,.textarea{width:100%;font:14.5px/1.4 var(--f);color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:0 12px;height:42px;outline:none;transition:border-color .15s,box-shadow .15s;-webkit-appearance:none;appearance:none}
.textarea{height:auto;min-height:96px;padding:10px 12px;resize:vertical}
.select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7386' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px;padding-right:34px}
.input:focus,.select:focus,.textarea:focus{border-color:var(--navy);box-shadow:0 0 0 3px rgba(27,58,115,.18)}
.input[aria-invalid="true"],.select[aria-invalid="true"]{border-color:var(--accent);box-shadow:0 0 0 3px rgba(184,50,42,.14)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 13px;font:500 13.5px var(--f);cursor:pointer;color:var(--ink-2);transition:all .15s}
.chip[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.check{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink-2)}
.check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--navy);flex:none}
.f .actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:2px}
.msg{font-size:14px;padding:12px 14px;border-radius:8px;background:var(--navy-tint);color:var(--navy-deep);display:none}
.msg.show{display:block}.msg.ko{background:#FBE9E7;color:#8A2219}
.wa-preview{background:var(--paper-2);border-radius:8px;padding:12px 14px;font-size:14px;white-space:pre-wrap;color:var(--ink-2);border:1px dashed var(--line)}
.side{display:grid;gap:14px}
.wechat-card{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:22px;display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center;box-shadow:var(--shadow-s)}
.wechat-card .qr{display:grid;gap:6px;justify-items:center}
.wechat-card .qr span{font:600 11px/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:#0A7A3D}
.wechat-card img{width:clamp(150px,14vw,220px);height:auto;aspect-ratio:1;border-radius:12px;border:1px solid var(--line);padding:6px;background:#fff}
.wechat-card h3{font-size:19px}
.wechat-card p{font-size:14px;color:var(--ink-2);margin-top:6px}
.wechat-card .ctas{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.direct{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:20px;display:grid;gap:14px}
@media(max-width:900px){.contact .grid{grid-template-columns:1fr}}
@media(max-width:600px){.f .two{grid-template-columns:1fr}.wechat-card{grid-template-columns:1fr;text-align:center;justify-items:center}.wechat-card .ctas{justify-content:center}.wechat-card img{width:200px}}

/* footer */
.foot{background:var(--navy-ink);color:#B9C6E4;padding:52px 0 24px}
.foot .grid{display:grid;grid-template-columns:1.3fr auto auto;gap:36px clamp(36px,6vw,96px)}
.foot .grid>div:last-child{justify-self:end}
.foot h4{color:#fff;font:500 11px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;margin:0 0 14px}
.foot .mark{color:#fff}.foot .mark small{color:#fff}.foot .mark small i{color:#B9C6E4}
.foot .brand p{margin-top:12px;font-size:14px;max-width:34ch}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:14px}
.foot ul a{display:inline-block;padding:4px 0}
.foot a{color:#fff;text-decoration:none}
.foot a:hover{text-decoration:underline}
.foot .row{color:#fff;align-items:center;min-height:30px}.foot .row svg{color:#9DB4E6;margin-top:0}.foot .row>div{padding:3px 0}.foot .row a{padding:0}.foot .row b{color:#9DB4E6}
.legal{border-top:1px solid rgba(255,255,255,.14);margin-top:34px;padding-top:16px;font-size:12px;color:#8FA1C9;display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:space-between}
.legal a{color:#B9C6E4;display:inline-block;padding:6px 2px}
@media(max-width:820px){.foot{padding:40px 0 20px}.foot .grid{grid-template-columns:1fr;gap:26px}.foot .grid>div:last-child{justify-self:start}.foot .brand p{margin-top:8px;font-size:13.5px}.foot h4{margin-bottom:10px}.foot ul{gap:2px;font-size:13.5px}.foot ul a{padding:5px 0}.foot .row{font-size:13.5px;min-height:28px}.foot .row+.row{margin-top:6px!important}.foot .row{margin-bottom:0!important}.legal{margin-top:26px;font-size:11.5px}}

/* WhatsApp launcher + intent panel */
.wa-fab{position:fixed;right:18px;bottom:18px;z-index:70;width:56px;height:56px;border-radius:50%;background:var(--wa);border:0;cursor:pointer;display:grid;place-items:center;box-shadow:0 14px 32px rgba(0,0,0,.25);transition:transform .2s var(--ease),background .2s}
.wa-fab:hover{transform:translateY(-2px)}
.wa-fab::before,.wa-fab::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--wa);opacity:0;animation:wapulse 2.6s ease-out infinite}
.wa-fab::after{animation-delay:1.3s}
.wa-fab[aria-expanded="true"]::before,.wa-fab[aria-expanded="true"]::after{animation:none}
@keyframes wapulse{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.9);opacity:0}}
.wa-hint{position:absolute;right:68px;top:50%;transform:translateY(-50%) translateX(6px);background:#fff;color:var(--ink);font:600 13px/1 var(--f);padding:9px 12px;border-radius:8px;box-shadow:0 8px 20px rgba(0,0,0,.14);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s var(--ease),transform .25s var(--ease)}
.wa-fab:hover .wa-hint,.wa-fab.hint .wa-hint{opacity:1;transform:translateY(-50%)}
.wa-fab[aria-expanded="true"] .wa-hint{display:none}
@media(prefers-reduced-motion:reduce){.wa-fab::before,.wa-fab::after{animation:none}}
@media(max-width:600px){.wa-hint{display:none}}
.wa-fab svg{width:28px;height:28px;color:#fff}
.wa-fab[aria-expanded="true"]{background:var(--ink)}
.wa-fab[aria-expanded="true"] .i-wa{display:none}
.wa-fab .i-x{display:none;width:22px;height:22px}
.wa-fab[aria-expanded="true"] .i-x{display:block}
.wa-dim{position:fixed;inset:0;background:rgba(13,27,58,.35);backdrop-filter:blur(2px);z-index:65;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.wa-dim.show{opacity:1;visibility:visible}
.wa-panel{position:fixed;right:18px;bottom:86px;z-index:70;width:min(350px,calc(100vw - 36px));background:#fff;border-radius:16px;box-shadow:0 16px 40px rgba(0,0,0,.22);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(10px) scale(.98);transition:opacity .25s var(--ease),transform .25s var(--ease),visibility .25s}
.wa-panel.show{opacity:1;visibility:visible;transform:none}
.wa-panel .head{background:var(--wa-dark);color:#fff;padding:14px 16px;display:flex;gap:12px;align-items:center}
.wa-panel .head svg{width:24px;height:24px;flex:none}
.wa-panel .head b{display:block;font-size:14.5px}
.wa-panel .head small{opacity:.85;font-size:12.5px}
.wa-panel .list{padding:10px;display:grid;gap:8px}
.wa-opt{display:grid;grid-template-columns:26px 1fr;gap:12px;align-items:center;text-decoration:none;color:var(--ink);background:var(--paper);border:1px solid var(--line-2);border-radius:10px;padding:11px 13px;font-size:14px;line-height:1.35;transition:background .15s,border-color .15s}
.wa-opt:hover{background:#fff;border-color:var(--wa)}
.wa-opt i{width:26px;height:26px;border-radius:50%;background:#E6F8EC;color:#0f6b36;display:grid;place-items:center;font:600 12px var(--f-mono);font-style:normal}
.wa-opt b{font-weight:600}
.wa-panel .foot-note{padding:6px 16px 14px;font-size:12px;color:var(--mute)}
@media(prefers-reduced-motion:reduce){.wa-panel,.wa-dim,.card,.btn,.mnav,.hero-photo img{transition:none}}

/* reveal (staggered) */
.rise{opacity:0;transform:translateY(12px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease);transition-delay:calc(var(--i,0) * 70ms)}
.rise.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rise{opacity:1;transform:none;transition:none}}

/* combobox — shadcn-style: button that looks like the input, popover with search + filtered list */
.combo{position:relative}
.combo-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;cursor:pointer}
.combo-btn svg{width:16px;height:16px;color:var(--mute);flex:none;transition:transform .2s var(--ease)}
.combo-btn[aria-expanded="true"]{border-color:var(--navy);box-shadow:0 0 0 3px rgba(27,58,115,.18)}
.combo-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.combo-val[data-empty="true"]{color:var(--mute)}
.combo-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 34px rgba(20,27,46,.14);overflow:hidden;transform-origin:top;animation:pop .16s var(--ease)}
.combo-pop[hidden]{display:none}
@keyframes pop{from{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}
.combo-search{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line-2)}
.combo-search svg{width:15px;height:15px;color:var(--mute);flex:none}
.combo-input{border:0;outline:0;font:14px var(--f);width:100%;background:transparent;color:var(--ink);height:28px}
.combo-list{list-style:none;margin:0;padding:6px;max-height:248px;overflow:auto}
.combo-list li{padding:9px 10px 9px 32px;border-radius:7px;font-size:14px;cursor:pointer;position:relative;color:var(--ink)}
.combo-list li[hidden]{display:none}
.combo-list li:hover,.combo-list li.active{background:var(--paper-2)}
.combo-list li[aria-selected="true"]::before{content:"";position:absolute;left:11px;top:13px;width:6px;height:11px;border:solid var(--navy);border-width:0 2px 2px 0;transform:rotate(45deg)}
.combo-empty{padding:14px;font-size:13.5px;color:var(--mute);text-align:center}
.combo-empty[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.combo-pop{animation:none}}

/* legal pages */
.legal-page{padding:clamp(40px,6vw,80px) 0 clamp(56px,8vw,96px)}
.legal-doc{max-width:760px}
.legal-doc h1{font-size:clamp(28px,3.4vw,40px);margin:12px 0 10px}
.legal-doc h2{font-size:19px;margin:30px 0 8px}
.legal-doc p,.legal-doc li{color:var(--ink-2);font-size:15.5px}
.legal-doc ul{padding-left:20px;display:grid;gap:8px}
.legal-doc a{color:var(--navy)}

/* ── Touch + CJK type floor (misurato 2026-09-22 a 390×844 con touch emulation) ───────────
   Due difetti che nessun controllo statico vede e che il desktop nasconde:
   1. bersagli tattili sotto i 30px — i contatti in .row erano 22–29px di altezza e una voce
      del footer larga 27px (due ideogrammi). Gli avvisi WCAG 2.5.8 escludono i link dentro
      una frase: quelli restano come sono, di proposito.
   2. il corpo piccolo è tarato sul latino. La pagina /zh/ eredita gli stessi px e il cinese
      a 9,5px si impasta: i tratti si chiudono. Regola di casa: chrome che può contenere
      cinese ≥ 12px, e niente letter-spacing da maiuscoletto sugli ideogrammi. */
@media(pointer:coarse),(max-width:760px){
  /* inline-flex, non flex: 2026-09-25 il flex a blocco spezzava «0574 · 392» su tre righe
     (il punto da solo in mezzo), metteva ogni voce del footer su una riga e, dopo un <br>,
     lasciava una riga vuota di 23px. inline-flex tiene l'altezza ≥30px e resta nel testo. */
  .row a{min-height:30px;display:inline-flex;align-items:center;padding:0}
  .foot .row a{min-height:30px;display:inline-flex;align-items:center}
  .foot .row>div{padding:0}  /* il link è già alto 30px: i 3px sopra/sotto erano doppi */
  .foot ul a{min-height:30px;min-width:30px;display:inline-flex;align-items:center;padding:0}
  .foot ul{gap:0}
  .faq .a-in p>a:only-child{min-height:30px;display:inline-flex;align-items:center}
}
html[lang="zh"] .mark small{font-size:12px;letter-spacing:.2em}
html[lang="zh"] .mark small i{letter-spacing:.06em;margin-left:7px}
html[lang="zh"] .hero-photo .tag small{font-size:12px}
html[lang="zh"] .f label small{font-size:12px}
html[lang="zh"] .row b,
html[lang="zh"] .foot h4,
html[lang="zh"] .wechat-card .qr span{font-size:12px;letter-spacing:.06em}
html[lang="zh"] .eyebrow,
html[lang="zh"] .strip .n small,
html[lang="zh"] .ticker .track span,
html[lang="zh"] .legal{font-size:12px}
/* 320–380px (a11y-baseline #5 + clip check 10-03): header + map CTAs did not fit — page was 339px wide at 320,
   the 中文 pill lost its text at 360, the burger shrank to 32px once the pill stopped shrinking */
@media(max-width:380px){.mark small i{display:none}}
@media(max-width:350px){.where .ctas{grid-template-columns:1fr}}
