/* ================================================================
   Centro Medico Michelangelo — CSS per Elementor
   Gruppo NefroCenter · generato dai mockup approvati (Fase 2)
   ----------------------------------------------------------------
   DOVE: Elementor -> Impostazioni sito -> CSS personalizzato
   Si incolla UNA VOLTA e vale su tutto il sito.
   NON modificare a mano: si rigenera dai mockup.
   ================================================================ */
/* ============================================================
   Kit Gruppo NefroCenter — token e componenti IDENTICI al riferimento
   (riferimento-home-mockup.html). Adattamenti da singola clinica:
   niente mappa Italia, niente carosello sedi. Contenuti reali dal
   sito centromedicomichelangelo.it (v. CONTENUTI-SITO-ATTUALE.md).
   ============================================================ */
:root{
  --bg:#F3F6FB;
  --dust:#D5E2F1;
  --paper:#FFFFFF;
  --paper-2:#F8FAFD;
  --blue:#1C4184;
  --blue-d:#1F3A70;
  --blue-deep:#14294F;
  --blue-tint:#E7EEF8;
  --sky:#4F79C4;
  --red:#E10717;
  --ink:#14202E;
  --ink-2:#38455A;
  --muted:#667488;
  --line:rgba(20,32,46,.10);
  --line-2:rgba(20,32,46,.06);
  --radius:20px;--radius-s:14px;
  --shadow:0 1px 2px rgba(20,41,79,.05), 0 14px 34px -16px rgba(20,41,79,.20);
  --shadow-lg:0 34px 74px -32px rgba(20,41,79,.40);
  --ease:cubic-bezier(.22,1,.36,1);
  --maxw:1200px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);overflow-x:hidden;
  background:var(--bg);
  background:linear-gradient(to left, #FFFFFF 0%, #FBFCFE 32%, #EFF4FA 68%, #DFE9F5 100%) no-repeat;
  background-attachment:fixed;
  font-family:'Inter',sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:radial-gradient(rgba(79,121,196,.13) 1.2px,transparent 1.2px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(to left,#000 0%,rgba(0,0,0,.5) 38%,transparent 72%);
  mask-image:linear-gradient(to left,#000 0%,rgba(0,0,0,.5) 38%,transparent 72%)}
h1,h2,h3{font-family:'Manrope',sans-serif,-apple-system,'Segoe UI',Arial,sans-serif;font-weight:700;line-height:1.05;letter-spacing:-.025em;margin:0;text-wrap:balance}
p{margin:0}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}
.rblock .n{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.eyebrow{font:600 12.5px 'Inter',sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--blue);display:inline-flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:26px;height:1.5px;background:var(--blue)}
.btn{display:inline-flex;align-items:center;gap:10px;font:600 15px 'Inter',sans-serif;padding:13px 24px;border-radius:100px;border:1px solid transparent;cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease),border-color .25s var(--ease)}
.btn svg{width:16px;height:16px}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-d);transform:translateY(-2px);box-shadow:0 14px 30px -12px rgba(28,65,132,.55)}
.btn-ghost{background:transparent;color:var(--blue);border-color:var(--line)}
.btn-ghost:hover{border-color:var(--blue);transform:translateY(-2px)}
:focus-visible{outline:3px solid var(--sky);outline-offset:2px;border-radius:6px}

/* ---------- Topbar ---------- */
.topbar{background:var(--blue-deep);color:#dce4f2;font-size:13px}
.topbar .wrap{display:flex;justify-content:space-between;align-items:center;height:36px;gap:22px}
.topbar a{color:#dce4f2;opacity:.92;display:inline-flex;align-items:center;gap:7px}
.topbar a:hover{opacity:1}
.topbar .rs{color:#fff;font-weight:700;opacity:1;letter-spacing:.02em}
.topbar .rs:hover{text-decoration:underline;text-underline-offset:4px}
.topbar .sep{width:1px;height:15px;background:rgba(255,255,255,.18)}

/* ---------- Nav ---------- */
header.nav{position:sticky;top:0;z-index:100;background:rgba(243,246,251,.85);backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--line-2);transition:box-shadow .35s var(--ease)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:60px;gap:24px;transition:height .35s var(--ease)}
body.scrolled header.nav{box-shadow:0 10px 30px -14px rgba(20,41,79,.16)}
body.scrolled .nav .wrap,body.scrolled nav.menu{height:52px}
.brand{display:flex;align-items:center;gap:11px}
/* Il logo ufficiale e' rigenerato dal PDF vettoriale (tools/normalizza-loghi.py e
   MuPDF): 903x114, 3x dei 38px a cui viene mostrato. Le regole .mark/.bt qui sotto
   restano per il ripiego testuale se l'immagine non carica. */
.brand .mark{flex:none;width:38px;height:38px;border-radius:9px;background:linear-gradient(135deg,#2b56a5,var(--blue-d));display:grid;place-items:center;color:#fff;font:700 18px 'Manrope',sans-serif}
.brand .bt{line-height:1.12}
.brand .bt b,.brand .bt strong{display:block;font:700 16.5px 'Manrope',sans-serif;letter-spacing:-.02em;color:var(--ink);white-space:nowrap}
.brand .bt span{display:block;font:600 9.5px 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--sky)}
nav.menu{display:flex;gap:28px;margin-left:auto;margin-right:8px;align-items:stretch;height:60px;transition:height .35s var(--ease)}
.mi{display:flex;align-items:center}
nav.menu .mi>a,nav.menu>a.mi-link{display:inline-flex;align-items:center;gap:7px;font-size:15px;font-weight:500;color:var(--ink-2);position:relative;padding:4px 0;white-space:nowrap}
nav.menu .mi>a::after,nav.menu>a.mi-link::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--blue);transition:width .3s var(--ease)}
nav.menu .mi:hover>a,nav.menu>a.mi-link:hover{color:var(--blue)}
nav.menu .mi:hover>a::after,nav.menu>a.mi-link:hover::after{width:100%}
.mi>a svg{width:13px;height:13px;transition:transform .3s var(--ease);color:currentColor}
.mi:hover>a svg,.mi:focus-within>a svg{transform:rotate(180deg)}

/* ---------- Megamenu ---------- */
.mega{position:absolute;left:0;right:0;top:100%;background:var(--paper);border-bottom:1px solid var(--line-2);box-shadow:0 34px 64px -34px rgba(20,41,79,.30);opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .35s var(--ease),transform .35s var(--ease),visibility .35s;pointer-events:none}
.mi:hover .mega,.mi:focus-within .mega{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition-delay:.12s}
.mega-in{max-width:var(--maxw);margin:0 auto;padding:38px 24px 44px;display:grid;grid-template-columns:repeat(3,1fr);gap:44px;align-items:start}
.mega-4 .mega-in{grid-template-columns:repeat(4,1fr);gap:36px}
.m-eyebrow{display:flex;align-items:center;gap:9px;font:700 11px 'Inter',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--sky);padding-bottom:11px;margin-bottom:8px;border-bottom:1px solid var(--line-2)}
.m-eyebrow>svg{width:16px;height:16px;color:var(--blue);flex:none}
.m-eyebrow .m-count{margin-left:auto;background:var(--blue-tint);color:var(--blue);font:700 11px 'Inter',sans-serif;letter-spacing:0;padding:2px 9px;border-radius:100px}
.d-meta{font:600 12.5px 'Inter',sans-serif;color:var(--muted);margin-right:2px}
.mega .mcol a:not(.m-all){display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;margin:0 -10px;border-radius:9px;font:500 14.5px 'Inter',sans-serif;color:var(--ink-2);transition:background .2s var(--ease),color .2s var(--ease),padding-left .2s var(--ease)}
.mega .mcol a:not(.m-all):hover{background:var(--blue-tint);color:var(--blue);padding-left:16px}
.mega .mcol a .mch{color:#c3cbd8;font-size:0;display:grid;place-items:center}
.mega .mcol a .mch svg{width:13px;height:13px}
.mega .mcol a:not(.m-all):hover .mch{color:var(--blue)}
.mega .m-all{margin-top:16px;justify-content:center;color:#fff}
.mi-rel{position:relative}
.mega-sm{left:50%;right:auto;width:300px;transform:translate(-50%,12px);border:1px solid var(--line-2);border-radius:16px;box-shadow:0 24px 54px -24px rgba(20,41,79,.30)}
.mi:hover .mega-sm,.mi:focus-within .mega-sm{transform:translate(-50%,0)}
.mega-sm .mega-in{grid-template-columns:1fr;padding:20px 20px 14px;gap:0}
.nav-cta{display:flex;gap:10px;align-items:center}
.menu-toggle{display:none}

/* ---------- Drawer mobile ---------- */
.drawer-scrim{position:fixed;inset:0;background:rgba(20,32,46,.5);backdrop-filter:blur(2px);opacity:0;visibility:hidden;transition:opacity .35s var(--ease),visibility .35s;z-index:150}
.drawer-scrim.open{opacity:1;visibility:visible}
.drawer{position:fixed;inset:0;width:100%;height:100dvh;background:var(--paper);color:var(--ink);z-index:200;display:flex;flex-direction:column;transform:translateX(101%);transition:transform .42s cubic-bezier(.4,0,.2,1);visibility:hidden}
.drawer.open{transform:none;visibility:visible}
.d-head{display:flex;align-items:center;justify-content:space-between;padding:15px 22px;border-bottom:1px solid var(--line);flex:none}
.d-close{width:42px;height:42px;border-radius:9px;border:1px solid var(--line);background:transparent;cursor:pointer;display:grid;place-items:center;color:var(--ink);transition:background .2s var(--ease),border-color .2s var(--ease)}
.d-close:hover{background:var(--blue-tint);border-color:var(--blue)}
.d-close svg{width:20px;height:20px}
.d-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:22px 22px 16px}
.d-eyebrow{font:700 10.5px 'Inter',sans-serif;letter-spacing:.22em;text-transform:uppercase;color:var(--blue);margin:28px 0 8px}
.d-body .d-eyebrow:first-child{margin-top:0}
.d-row{display:flex;align-items:center;gap:14px;padding:14px 8px;margin:0 -8px;border-bottom:1px solid var(--line-2);border-radius:10px;color:var(--ink);opacity:0;transform:translateX(26px);transition:opacity .4s ease calc(var(--i,0)*45ms),transform .4s ease calc(var(--i,0)*45ms),background .15s ease-out,padding-left .15s ease-out}
.drawer.open .d-row{opacity:1;transform:none}
.d-row>svg{width:19px;height:19px;color:var(--blue);flex:none}
.d-row .nm{font:500 16px 'Inter',sans-serif;flex:1;line-height:1.25}
.d-row .ch{color:#b9c2cf;display:grid;place-items:center}
.d-row .ch svg{width:14px;height:14px}
.d-row:hover{background:var(--blue-tint);padding-left:14px;color:var(--blue)}
.d-row:hover .ch{color:var(--blue)}
.d-cta{padding:16px 22px 22px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:10px;flex:none}
.d-cta .btn{justify-content:center;width:100%}

/* ---------- Hero (singola clinica: foto, non mappa) ---------- */
.hero .wrap{display:grid;grid-template-columns:1.12fr .88fr;gap:56px;align-items:center;padding:76px 24px 66px}
.hero h1{font-size:clamp(34px,4.4vw,48px);color:var(--ink)}
.hero h1 em{font-style:normal;color:var(--blue)}
.hero h1 .brandname{color:var(--blue-deep)}
.hero .lead{margin-top:24px;font-size:19px;color:var(--ink-2);max-width:44ch}
.hero .actions{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap}
.hero .ssn{margin-top:26px;display:inline-flex;align-items:center;gap:9px;font-size:14.5px;font-weight:500;color:var(--ink-2)}
.hero .ssn svg{width:17px;height:17px;color:var(--blue);flex:none}
/* placeholder foto della struttura (pattern .ph-sq del kit: 1:1, radius 26) */
.hero-ph{position:relative;aspect-ratio:1/1;border-radius:26px;overflow:hidden;background:linear-gradient(160deg,#2b56a5,var(--blue-deep));box-shadow:var(--shadow-lg)}
.hero-ph .badge{position:absolute;top:18px;left:18px;background:rgba(255,255,255,.94);color:var(--ink);font:600 12.5px 'Inter',sans-serif;padding:7px 14px;border-radius:100px;display:inline-flex;align-items:center;gap:7px}
.hero-ph .badge svg{width:13px;height:13px;color:var(--blue)}

/* ---------- UX layer ---------- */
.skip{position:fixed;top:-60px;left:16px;z-index:500;background:var(--blue);color:#fff;padding:10px 18px;border-radius:0 0 12px 12px;font:600 14px 'Inter',sans-serif;transition:top .25s var(--ease)}
.skip:focus{top:0;outline:none}
.tb-tel{font-weight:600;color:#fff !important;display:inline-flex;align-items:center;gap:8px}
.tb-tel svg{width:13px;height:13px}
.tb-left{display:flex;align-items:center;gap:18px}
.tb-mail{display:inline-flex;align-items:center;gap:7px}
.tb-mail svg{width:13px;height:13px}
.tb-right{display:flex;align-items:center;gap:22px}
.fz{background:none;border:1px solid rgba(255,255,255,.28);color:#dce4f2;border-radius:6px;padding:4px 9px;font:700 12px 'Inter',sans-serif;cursor:pointer}
.fz:hover{background:rgba(255,255,255,.12);color:#fff}
html.bigtext{zoom:1.12} /* mockup: in produzione preferire scala rem */
.quick{display:none;padding:0 0 60px}
.quick .wrap{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.q-card{display:flex;align-items:center;gap:16px;background:var(--paper);border:1px solid var(--line-2);border-radius:18px;padding:20px 22px;transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .5s var(--ease)}
.q-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--blue-tint)}
.q-card .qi{flex:none;width:46px;height:46px;border-radius:13px;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center}
.q-card .qi svg{width:22px;height:22px}
.q-card b,.q-card strong{display:block;font:700 16px 'Manrope',sans-serif;color:var(--ink)}
.q-card span{font-size:13.5px;color:var(--muted)}
.bottombar{display:none}
/* social footer */
.social{display:flex;gap:10px;margin-top:20px}
.social a{width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;color:#c3c9d4;transition:background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease),border-color .25s var(--ease)}
.social a:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.4);color:#fff;transform:translateY(-2px)}
.social svg{width:16px;height:16px}
/* News */
.news .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;max-width:none;flex-wrap:wrap}
.news .sec-head>div{max-width:640px}
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.n-card{background:var(--paper);border:1px solid var(--line-2);border-radius:20px;overflow:hidden;color:inherit;display:block;transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .6s var(--ease)}
.n-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--blue-tint)}
.n-ph{aspect-ratio:16/9;position:relative;background:linear-gradient(160deg,#2b56a5,var(--blue-deep));overflow:hidden}
.n-body{padding:20px 22px 24px}
.n-meta{font:600 11.5px 'Inter',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--sky);display:flex;gap:10px;align-items:center}
.n-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--sky)}
.n-body h3{font-size:19px;margin-top:10px;line-height:1.25}
.n-body .n-link{margin-top:14px;display:inline-flex;align-items:center;gap:7px;font:600 14px 'Inter',sans-serif;color:var(--blue)}
.n-body .n-link svg{width:14px;height:14px;transition:transform .3s var(--ease)}
.n-card:hover .n-link svg{transform:translateX(3px)}
.grid-lines{position:absolute;inset:0;opacity:.15;background-image:linear-gradient(#fff 1px,transparent 1px),linear-gradient(90deg,#fff 1px,transparent 1px);background-size:42px 42px}
/* placeholder immagine */
.img-ph{position:relative}
.ph-mark{position:absolute;inset:0;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;color:rgba(255,255,255,.82);text-align:center;padding:16px}
.ph-mark svg{width:52px;height:52px;opacity:.85}
.ph-mark span{font:600 12.5px 'Inter',sans-serif;letter-spacing:.04em;opacity:.85}
.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.10) 1.1px,transparent 1.1px);background-size:20px 20px;pointer-events:none}

/* ---------- Recensioni (al posto della stat bar — feedback Giuseppe 28/07/2026) ---------- */
.reviews .sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;max-width:none;flex-wrap:wrap;margin-bottom:36px}
.reviews .sec-head>div{max-width:640px}
.g-badge{display:inline-flex;align-items:center;gap:9px;background:var(--paper);border:1px solid var(--line-2);border-radius:100px;padding:11px 20px;font:600 14px 'Inter',sans-serif;color:var(--ink-2);box-shadow:var(--shadow)}
.g-badge svg{width:15px;height:15px;color:var(--blue);flex:none}
.g-badge b,.g-badge strong{color:var(--ink)}
.rev-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:18px}
.rev-card{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);padding:26px 26px 22px;display:flex;flex-direction:column;gap:14px;transition:transform .55s var(--ease),box-shadow .55s var(--ease),border-color .55s var(--ease)}
.rev-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--blue-tint)}
.rev-card .stars{display:flex;gap:3px;color:var(--blue)}
.rev-card .stars svg{width:15px;height:15px}
.rev-card p{color:var(--ink-2);font-size:15.5px;line-height:1.65;flex:1}
.rev-foot{display:flex;align-items:center;gap:12px;padding-top:14px;border-top:1px solid var(--line-2)}
.rev-foot .av{flex:none;width:38px;height:38px;border-radius:50%;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;font:700 14px 'Manrope',sans-serif}
.rev-foot b,.rev-foot strong{display:block;font:600 14.5px 'Inter',sans-serif;color:var(--ink)}
.rev-foot span{font-size:12.5px;color:var(--muted)}

section{padding:92px 0}
.sec-head{max-width:640px;margin-bottom:46px}
.sec-head h2{font-size:clamp(30px,3.6vw,46px);margin-top:16px;color:var(--ink)}
.sec-head p{margin-top:18px;color:var(--ink-2);font-size:18px}

/* ---------- Modulo TAB (immagine sx / testo dx) ---------- */
.areas{padding:0}
.areas .wrap{max-width:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0;background:var(--paper);border:0;border-radius:0;overflow:hidden;box-shadow:none}
.area-visual{position:relative;min-height:660px;background:radial-gradient(130% 90% at 25% 15%,#2b56a5,var(--blue) 45%,var(--blue-deep));transition:background .5s var(--ease)}
.area-visual.diagnostica{background:radial-gradient(130% 90% at 25% 15%,#3a63b0,var(--blue-d) 45%,#0f2242)}
.area-visual.fisio{background:radial-gradient(130% 90% at 25% 15%,#26467f,var(--blue-deep) 55%,#0c1c39)}
.area-visual .anno{position:absolute;border:1.5px solid rgba(255,255,255,.7);border-radius:8px;width:26px;height:26px;display:grid;place-items:center;color:#fff;font-size:0}
.area-visual .anno::after{content:"+";font-size:15px;opacity:.85}
.area-visual .tagn{position:absolute;color:#dfe8fb;font:600 11px 'Inter',sans-serif;letter-spacing:.05em}
.area-content{padding:clamp(56px,7vh,96px) clamp(36px,6vw,104px);display:flex;flex-direction:column;justify-content:center}
.area-tabs{display:flex;gap:26px;border-bottom:1px solid var(--line);padding-bottom:2px;margin-bottom:30px}
.area-tabs button{background:none;border:none;font:600 15px 'Inter',sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:0 0 14px;cursor:pointer;position:relative;transition:color .25s var(--ease)}
.area-tabs button[aria-selected="true"]{color:var(--blue)}
.area-tabs button[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--blue)}
.area-content .no{font-family:'Manrope',sans-serif;font-size:15px;color:var(--sky);letter-spacing:.1em}
.area-content h2{font-size:clamp(30px,3.4vw,44px);margin-top:10px}
.area-content p{margin-top:18px;color:var(--ink-2);font-size:17.5px;max-width:40ch}
.area-content .more{margin-top:30px;display:inline-flex;align-items:center;gap:14px;font-weight:600;color:var(--blue)}
.area-content .more .circle{width:48px;height:48px;border-radius:14px;background:var(--blue);color:#fff;display:grid;place-items:center;transition:transform .3s var(--ease)}
.area-content .more:hover .circle{transform:translateX(5px)}
.area-content .more svg{width:18px;height:18px}
#areaNo,#areaTitle,#areaText,#areaMore{transition:opacity .4s var(--ease),transform .5s var(--ease)}
.area-content.swapping #areaNo,.area-content.swapping #areaTitle,.area-content.swapping #areaText,.area-content.swapping #areaMore{opacity:0;transform:translateY(14px)}
.area-content.swapping #areaTitle{transition-delay:.03s}
.area-content.swapping #areaText{transition-delay:.06s}
.area-content.swapping #areaMore{transition-delay:.09s}
.area-visual .anno,.area-visual .tagn{transition:opacity .5s var(--ease),transform .5s var(--ease)}
.area-visual.swapping .anno,.area-visual.swapping .tagn{opacity:0;transform:scale(.85)}

/* ---------- Check-up & Prevenzione (accento rosso, pattern "giornate") ---------- */
.giornate{background:linear-gradient(115deg,var(--blue) 0%,var(--blue-deep) 100%);color:#fff;position:relative;overflow:hidden}
.giornate .wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center;padding:78px 24px}
.giornate .eyebrow{color:#bcccec}.giornate .eyebrow::before{background:var(--red)}
.giornate h2{font-size:clamp(30px,3.6vw,46px);color:#fff;margin-top:16px}
.giornate p{margin-top:20px;color:#cdd8ee;font-size:18px;max-width:44ch}
.giornate .actions{margin-top:30px;display:flex;gap:14px;flex-wrap:wrap}
.giornate .btn-primary{background:#fff;color:var(--blue)}
.giornate .btn-primary:hover{background:var(--blue-tint)}
.giornate .btn-ghost{color:#fff;border-color:rgba(255,255,255,.4)}
.hub{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:22px;padding:12px;backdrop-filter:blur(4px)}
.hub .hrow{display:flex;align-items:center;gap:16px;padding:14px 16px;border-radius:14px;transition:background .25s var(--ease)}
.hub .hrow:hover{background:rgba(255,255,255,.07)}
.hub .hrow+.hrow{border-top:1px solid rgba(255,255,255,.10)}
.hub .ico{flex:0 0 46px;height:46px;border-radius:13px;background:rgba(255,255,255,.10);display:grid;place-items:center;color:#fff}
.hub .ico svg{width:22px;height:22px}
.hub .info h3,.hub .info h4{margin:0;font:600 16px 'Inter',sans-serif;color:#fff}
.hub .info span{font-size:13.5px;color:#b7c4de}
.hub .arrow{margin-left:auto;color:#9db1d9}
.hub .foot{padding:14px 16px 8px;font-size:13.5px;color:#bcccec;display:flex;align-items:center;gap:8px}

/* ---------- Servizi del centro (griglia con featured) ---------- */
.exc{background:var(--paper-2);border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.exc-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-auto-rows:1fr;gap:18px}
.card-x{position:relative;background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);padding:26px;display:flex;flex-direction:column;min-height:200px;color:inherit;transition:transform .55s var(--ease),box-shadow .55s var(--ease),border-color .55s var(--ease)}
.card-x:hover{transform:translateY(-6px);box-shadow:0 22px 48px -24px rgba(20,41,79,.20);border-color:var(--blue-tint)}
.card-x .cx-ic{width:44px;height:44px;border-radius:12px;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;margin-bottom:16px}
.card-x .cx-ic svg{width:23px;height:23px}
.card-x .tag{font:600 11.5px 'Inter',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--sky)}
.card-x h3{font-size:20px;margin-top:7px}
.card-x p{margin-top:9px;color:var(--muted);font-size:14px;line-height:1.5}
.card-x .cx-arrow{position:absolute;top:22px;right:22px;color:#b9c2cf;transition:transform .55s var(--ease),color .55s var(--ease)}
.card-x .cx-arrow svg{width:18px;height:18px}
.card-x:hover .cx-arrow{color:var(--blue);transform:translate(3px,-3px)}
.feature{grid-row:span 2;justify-content:flex-end;color:#fff;background:linear-gradient(180deg,rgba(20,41,79,.12),rgba(12,28,57,.9)),radial-gradient(130% 80% at 80% 0%,#3360b5,var(--blue-deep));min-height:auto}
.feature .cx-ic{background:rgba(255,255,255,.14);color:#fff}
.feature .tag{color:#bcccec}.feature p{color:#cdd8ee}.feature h3{font-size:30px}
.feature .cx-arrow{color:rgba(255,255,255,.7)}.feature:hover .cx-arrow{color:#fff}

/* ---------- Équipe (banda scura, pattern "research") ---------- */
.research{background:var(--blue-deep);color:#fff;scroll-margin-top:100px}
.research .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:center}
.research .eyebrow{color:#bcccec}.research .eyebrow::before{background:var(--sky)}
.research h2{font-size:clamp(30px,3.6vw,46px);color:#fff}
.research p{margin-top:20px;color:#c7d3ea;font-size:18px}
.rblocks{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:16px}
.rblock{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-s);padding:24px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.rblock .n{font-family:'Manrope',sans-serif;font-size:38px;color:#fff}
.rblock .l{color:#b9c6e2;font-size:14px;margin-top:6px}

/* ---------- Dove siamo (sostituisce il carosello sedi del gruppo) ---------- */
.dove .sec-head{margin-bottom:36px}
.info-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;gap:18px}
.i-card{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);padding:26px;transition:transform .55s var(--ease),box-shadow .55s var(--ease),border-color .55s var(--ease)}
.i-card:hover{transform:translateY(-6px);box-shadow:0 22px 48px -24px rgba(20,41,79,.20);border-color:var(--blue-tint)}
.i-card .qi{width:44px;height:44px;border-radius:12px;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;margin-bottom:16px}
.i-card .qi svg{width:22px;height:22px}
.i-card h3{font-size:18px}
.i-card p{margin-top:9px;color:var(--ink-2);font-size:14.5px;line-height:1.55}
.i-card p b,.i-card p strong{color:var(--ink)}
.i-card a{color:var(--blue);font-weight:600}
.i-card .sub{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.5}

/* ---------- Convenzioni (pattern loghi partner) ---------- */
.partners{padding:84px 0}
.partners .sec-head{max-width:none;text-align:center;margin-bottom:36px}
.partners .sec-head .eyebrow{justify-content:center}
/* ---------- Convenzioni: muro di loghi ----------
   Griglia, NON carosello. La regola l'ha scritta VAM: griglia "quando la pagina E'
   l'elenco". Michelangelo non ha una pagina /convenzioni/, quindi questa fascia in
   home E' l'elenco. E' anche il ritorno al kit di gruppo: riferimento-home-mockup.html
   era gia' grid repeat(4,1fr); il flex-wrap era una deriva locale.
   In piu': un carosello da 4 nasconderebbe 7 tessere su 11 proprio dove il paziente
   cerca il PROPRIO fondo, e su questa home lo Swiper di Elementor non e' caricato.

   ⚠️ LA TESSERA DEVE RESTARE BIANCA (--paper = #FFFFFF esatto).
   Nove file su dodici hanno un fondo bianco cotto dentro (i 4 .jpg su tutta la tela,
   faschim con alpha 237, e fisde/galeno/help-card/salute-semplice con una placca
   opaca rientrata). Su #FFFFFF `mix-blend-mode:multiply` e' l'operazione IDENTITA':
   non tocca un pixel dei loghi puliti e fa sparire la placca degli altri.
   Se questa fascia finisce su --paper-2, su una band o sul gradiente, multiply TINGE
   tutti i loghi. Non spostarla senza riesportare gli asset. */
.partners .logos{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.logo{display:grid;place-items:center;text-align:center;min-height:159px;min-width:0;padding:20px;border:1px solid var(--line-2);border-radius:16px;background:var(--paper);color:var(--muted);font:700 15px 'Manrope',sans-serif;letter-spacing:-.01em;filter:grayscale(1);transition:color .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease),box-shadow .35s var(--ease),filter .35s var(--ease)}
/* 234 di luce interna x 117 di altezza: la misura di VAM. Il grayscale sta su .logo
   e si eredita sull'img, quindi :hover{grayscale(0)} la riporta a colori: zero righe
   in piu' per l'effetto VAM. */
.logo img{max-height:117px;height:auto;width:auto;max-width:100%;margin:0;display:block;object-fit:contain;mix-blend-mode:multiply}
.partners-nota{max-width:70ch;margin:26px auto 0;text-align:center;color:var(--ink-2);font-size:15.5px;line-height:1.6}
.partners-nota a{color:var(--blue);font-weight:600}
.logo:hover{color:var(--blue);border-color:var(--blue-tint);transform:translateY(-4px);box-shadow:var(--shadow);filter:grayscale(0)}

/* ---------- CTA finale ---------- */
.cta{padding:76px 0 96px}
.cta-box{background:transparent;border:0;color:var(--ink);padding:0;display:grid;grid-template-columns:1.3fr .7fr;gap:40px;align-items:center;position:relative}
.cta-box h2{font-size:clamp(30px,3.8vw,46px);color:var(--ink)}
.cta-box p{margin-top:16px;color:var(--ink-2)}
.cta-box .actions{display:flex;flex-direction:column;gap:12px}
.cta-box .btn-primary{background:var(--blue);color:#fff}.cta-box .btn-primary:hover{background:var(--blue-d)}
.cta-box .btn-ghost{color:var(--blue);border-color:var(--line)}.cta-box .btn-ghost:hover{border-color:var(--blue)}

/* ---------- Footer ---------- */
footer{background:var(--ink);color:#c3c9d4;padding:66px 0 32px;font-size:14.5px}
footer .cols{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;padding-bottom:42px;border-bottom:1px solid rgba(255,255,255,.1)}
footer h3,footer h4{font:600 12.5px 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8b93a3;margin:0 0 16px}
footer a{display:block;padding:6px 0;color:#c3c9d4}footer a:hover{color:#fff}
footer .fbrand{color:#fff;margin-bottom:14px;font-family:'Manrope',sans-serif;font-size:21px;display:flex;align-items:center;gap:11px}
footer .fbrand .mark{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,#2b56a5,var(--blue-d));display:grid;place-items:center;color:#fff;font:700 17px 'Inter',sans-serif}
footer .legal{padding-top:24px;display:flex;justify-content:space-between;color:#8b93a3;font-size:13px;flex-wrap:wrap;gap:10px}

.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}
.si,.benefit-list li{opacity:0}
.in .si,.in .benefit-list li{opacity:1;animation:siIn .9s var(--ease) backwards}
@keyframes siIn{from{opacity:0;transform:translateX(-26px)}to{opacity:1;transform:none}}
.in :is(.si,.benefit-list li):nth-child(1){animation-delay:.05s}
.in :is(.si,.benefit-list li):nth-child(2){animation-delay:.12s}
.in :is(.si,.benefit-list li):nth-child(3){animation-delay:.19s}
.in :is(.si,.benefit-list li):nth-child(4){animation-delay:.26s}
.in :is(.si,.benefit-list li):nth-child(5){animation-delay:.33s}
.in :is(.si,.benefit-list li):nth-child(6){animation-delay:.40s}
.in :is(.si,.benefit-list li):nth-child(7){animation-delay:.47s}
.in :is(.si,.benefit-list li):nth-child(8){animation-delay:.54s}
.in :is(.si,.benefit-list li):nth-child(9){animation-delay:.61s}
.in :is(.si,.benefit-list li):nth-child(10){animation-delay:.68s}
.in :is(.si,.benefit-list li):nth-child(11){animation-delay:.75s}
.in :is(.si,.benefit-list li):nth-child(12){animation-delay:.82s}
.in :is(.si,.benefit-list li):nth-child(13){animation-delay:.89s}
.in :is(.si,.benefit-list li):nth-child(14){animation-delay:.96s}
.hero h1,.sec-head h2,.giornate h2,.research h2,.cta-box h2{overflow:hidden;padding-bottom:.14em}
.rt{display:block;transform:translateY(115%);transition:transform .85s var(--ease)}
.in .rt{transform:none}
.btn svg{transition:transform .25s var(--ease)}
.btn:hover svg{transform:translateX(3px)}
.hub .arrow{transition:transform .3s var(--ease),color .3s var(--ease)}
.hub .hrow:hover .arrow{transform:translateX(4px);color:#fff}

@media (max-width:960px){
  .partners .logos{grid-template-columns:repeat(3,1fr)}
  .hero .wrap{grid-template-columns:1fr;gap:36px;padding:52px 24px}
  .hero-ph{aspect-ratio:16/10}
  .rev-grid{grid-template-columns:1fr}
  .areas .wrap{grid-template-columns:1fr}.area-visual{min-height:280px}
  .area-content{padding:40px 30px}
  .giornate .wrap,.research .wrap,.cta-box{grid-template-columns:1fr}
  .exc-grid{grid-template-columns:1fr 1fr}.feature{grid-row:auto}
  .info-grid{grid-template-columns:1fr 1fr}
  nav.menu,.nav-cta .btn-ghost,.nav-cta .btn-primary{display:none}
  .menu-toggle{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;border:1px solid var(--line);background:transparent;cursor:pointer}
  footer .cols{grid-template-columns:1fr 1fr}
  .quick{display:block}
  .quick .wrap{grid-template-columns:1fr}
  .news-grid{grid-template-columns:1fr}
  body{padding-bottom:76px}
  .bottombar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;position:fixed;left:0;right:0;bottom:0;z-index:140;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:9px 14px calc(9px + env(safe-area-inset-bottom))}
  .bottombar a{display:flex;flex-direction:column;align-items:center;gap:3px;font:600 11.5px 'Inter',sans-serif;color:var(--ink-2)}
  .bottombar a svg{width:20px;height:20px;color:var(--blue)}
  .bottombar .bb-primary{flex-direction:row;justify-self:center;background:var(--blue);color:#fff;border-radius:100px;padding:12px 26px;font:600 14.5px 'Inter',sans-serif;gap:8px}
  .bottombar .bb-primary svg{color:#fff;width:16px;height:16px}
}
@media (max-width:560px){
  .partners .logos{grid-template-columns:repeat(2,1fr);gap:12px}
  .logo{min-height:112px;padding:14px}
  .logo img{max-height:72px}
  .exc-grid{grid-template-columns:1fr}
  .info-grid{grid-template-columns:1fr}
  footer .cols{grid-template-columns:1fr}.cta-box{padding:40px 26px}
  .topbar .wrap{gap:14px}
  .tb-right .rs,.tb-right .rs + .sep{display:none}
  .tb-tel .lbl{display:none}
  .tb-left .tb-mail,.tb-left .sep{display:none}
  .brand .bt span{display:none}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal,.si,.benefit-list li{opacity:1!important;transform:none!important}
  .rt{transform:none!important}
}
/* ---------- Layer pagine interne (dal kit gruppo — riferimento-specialita-mockup) ---------- */
/* briciola: #5B687C (regola di gruppo, 07/10/2026): --muted a 13px sul fondo azzurro fa 4,1:1, #5B687C 4,8-5,7:1 */
.crumbs{font-size:13px;color:#5B687C;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.crumbs a{color:#5B687C}
.crumbs a:hover{color:var(--blue)}
.crumbs .cs{color:#b9c2cf}
.page-hero{padding:44px 0 56px;position:relative;overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(28,65,132,.08) 1.2px,transparent 1.2px);background-size:22px 22px;
  -webkit-mask-image:linear-gradient(to left,#000 0%,rgba(0,0,0,.35) 38%,transparent 66%);
  mask-image:linear-gradient(to left,#000 0%,rgba(0,0,0,.35) 38%,transparent 66%)}
.page-hero .wrap{position:relative}
.ph-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:60px;align-items:center}
.ph-sq{aspect-ratio:1/1;border-radius:26px;position:relative;overflow:hidden;
  background:linear-gradient(160deg,#2b56a5,var(--blue-deep));box-shadow:var(--shadow-lg)}
.hero-icn{width:48px;height:48px;border-radius:14px;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;margin-top:28px;box-shadow:0 8px 20px -10px rgba(28,65,132,.25)}
.hero-icn svg{width:24px;height:24px}
.page-hero .eyebrow{margin-top:16px}
.page-hero h1{font-size:clamp(34px,4.6vw,56px);margin-top:14px;color:var(--ink);overflow:hidden;padding-bottom:.08em}
.page-hero h1 em{font-style:normal;color:var(--blue)}
.page-hero .lead{margin-top:20px;font-size:19px;color:var(--ink-2);max-width:62ch}
.chips-info{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.chip-i{display:inline-flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line-2);border-radius:100px;padding:8px 16px;font:500 14px 'Inter',sans-serif;color:var(--ink-2)}
.chip-i svg{width:15px;height:15px;color:var(--blue)}
.page-hero .actions{margin-top:28px;display:flex;gap:14px;flex-wrap:wrap}
.gl-panel{position:relative;border-radius:22px;padding:24px;overflow:hidden;margin:14px 0 6px;
  background:linear-gradient(135deg,#D8E5F4,#E8F0F9 55%,#F5FAFE)}
.gl-panel .dots-p{position:absolute;inset:0;background-image:radial-gradient(rgba(28,65,132,.10) 1.2px,transparent 1.2px);background-size:20px 20px;pointer-events:none}
.gl-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:14px}
.gl-card{background:rgba(255,255,255,.55);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);
  border:1px solid rgba(255,255,255,.75);border-radius:16px;padding:20px;display:block;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),background .5s var(--ease)}
.gl-card:hover{transform:translateY(-4px);background:rgba(255,255,255,.78);box-shadow:0 18px 40px -20px rgba(20,41,79,.28)}
.gl-card .gi{width:38px;height:38px;border-radius:11px;background:rgba(28,65,132,.10);color:var(--blue);display:grid;place-items:center;margin-bottom:12px}
.gl-card .gi svg{width:19px;height:19px}
.gl-card h3,.gl-card h4{font:700 16.5px 'Manrope',sans-serif;color:var(--ink);margin:0}
.gl-card p{font-size:13.5px;color:var(--ink-2);margin-top:6px;line-height:1.55}
.gl-card .az{margin-top:12px;display:inline-flex;align-items:center;gap:7px;font:600 13px 'Inter',sans-serif;color:var(--blue)}
.gl-card .az svg{width:13px;height:13px;transition:transform .3s var(--ease)}
.gl-card:hover .az svg{transform:translateX(3px)}
.sec-white{background:var(--paper);border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.dyn-note{display:inline-flex;align-items:center;gap:8px;border:1.5px dashed var(--sky);color:var(--blue);background:rgba(79,121,196,.06);border-radius:10px;padding:7px 14px;font:600 12.5px 'Inter',sans-serif;margin-top:10px}
.dyn-note svg{width:14px;height:14px}
.spec-layout{display:grid;grid-template-columns:1fr 340px;gap:52px;align-items:start}
.prose h2{font-size:clamp(26px,3vw,32px);margin:40px 0 12px}
.prose h3{font-size:24px;margin:34px 0 12px}
.prose h2:first-child,.prose h3:first-child{margin-top:0}
.prose p{color:var(--ink-2);margin-bottom:14px}
.prose ul{margin:0 0 14px;padding-left:0;list-style:none}
.prose ul li{display:flex;gap:10px;align-items:flex-start;padding:7px 0;color:var(--ink-2)}
.prose ul li svg{width:16px;height:16px;color:var(--blue);flex:none;margin-top:4px}
.aside-card{position:sticky;top:84px;display:flex;flex-direction:column;gap:14px}
.as-box{background:var(--paper);border:1px solid var(--line-2);border-radius:18px;padding:24px;box-shadow:var(--shadow)}
.as-box h3{font-size:19px}
.as-box p{font-size:14px;color:var(--muted);margin-top:6px}
.as-box .btn{width:100%;justify-content:center;margin-top:14px}
.avatar{width:52px;height:52px;border-radius:50%;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;font:700 17px 'Manrope',sans-serif;flex:none}
.as-doc{display:flex;gap:14px;align-items:center}
.as-doc b,.as-doc strong{display:block;font:700 15.5px 'Manrope',sans-serif}
.as-doc span{font-size:13px;color:var(--muted)}
.str-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.str-card{background:var(--paper);border:1px solid var(--line-2);border-radius:18px;overflow:hidden;transition:transform .6s var(--ease),box-shadow .6s var(--ease),border-color .6s var(--ease);display:block}
.str-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--blue-tint)}
.str-ph{aspect-ratio:16/9;position:relative;background:linear-gradient(160deg,#2b56a5,var(--blue-deep))}
.str-body{padding:18px 20px 22px}
.str-body .rg{font:600 11.5px 'Inter',sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--sky)}
.str-body h3{font-size:18.5px;margin-top:7px}
.str-body span{font-size:13.5px;color:var(--muted)}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;counter-reset:step}
.step{background:var(--paper);border:1px solid var(--line-2);border-radius:18px;padding:24px}
.step .n{font:800 15px 'Manrope',sans-serif;color:var(--sky);letter-spacing:.08em}
.step h3{font-size:19px;margin-top:10px}
.step p{font-size:14px;color:var(--muted);margin-top:8px}
.timeline{position:relative;margin-top:8px;padding-left:26px}
.timeline::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--blue-tint)}
.t-item{position:relative;padding:0 0 30px}
.t-item::before{content:"";position:absolute;left:-26px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--blue);border:2.5px solid #fff;box-shadow:0 0 0 2px var(--blue-tint)}
.t-item .yy{font:800 15px 'Manrope',sans-serif;color:var(--blue);letter-spacing:.04em}
.t-item h3{font-size:19px;margin-top:5px}
.t-item p{font-size:14.5px;color:var(--muted);margin-top:6px;max-width:60ch}
.vgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.vgrid.v2{grid-template-columns:repeat(2,1fr)}
.v-card{background:var(--paper);border:1px solid var(--line-2);border-radius:20px;padding:28px;display:block;transition:transform .55s var(--ease),box-shadow .55s var(--ease),border-color .55s var(--ease)}
.v-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--blue-tint)}
.v-card .vi{width:46px;height:46px;border-radius:13px;background:var(--blue-tint);color:var(--blue);display:grid;place-items:center;margin-bottom:16px}
.v-card .vi svg{width:22px;height:22px}
.v-card h3{font-size:20px}
.v-card p{font-size:14.5px;color:var(--muted);margin-top:9px;line-height:1.55}
.lgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.l-card{background:var(--paper);border:1px solid var(--line-2);border-radius:18px;padding:22px;text-align:center}
.l-card .avatar{margin:0 auto 14px;width:64px;height:64px;font-size:20px}
.l-card b,.l-card strong{display:block;font:700 16px 'Manrope',sans-serif}
.l-card span{font-size:13px;color:var(--muted)}
.qgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.quote{background:var(--paper);border:1px solid var(--line-2);border-radius:20px;padding:28px;position:relative}
.quote .qm{font:800 54px/1 'Manrope',sans-serif;color:var(--blue-tint);position:absolute;top:14px;right:20px}
.quote p{color:var(--ink-2);font-size:15.5px;line-height:1.6;position:relative}
.quote .who{margin-top:16px;display:flex;gap:12px;align-items:center}
.quote .who .avatar{width:40px;height:40px;font-size:14px}
.quote .who b,.quote .who strong{display:block;font:700 14.5px 'Manrope',sans-serif}
.quote .who span{font-size:12.5px;color:var(--muted)}
.band{background:var(--blue-deep);color:#fff;border-radius:26px;padding:44px 46px;display:grid;grid-template-columns:1.4fr .6fr;gap:32px;align-items:center;position:relative;overflow:hidden}
.band .dots{opacity:.7}
.band h2{color:#fff;font-size:clamp(24px,2.8vw,34px);position:relative;overflow:hidden;padding-bottom:.12em}
.band p{color:#c7d3ea;margin-top:10px;position:relative}
.band .actions{position:relative;display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap}
.band .band-ghost{color:#fff;border-color:rgba(255,255,255,.4)}
.band .band-ghost:hover{border-color:#fff}
.band .btn-primary{background:#fff;color:var(--blue)}
.band.band-light{background:#DCE7F4}
.band-light h2{color:var(--ink)}
.band-light p{color:var(--ink-2)}
.band-light .dots{background-image:radial-gradient(rgba(28,65,132,.10) 1.1px,transparent 1.1px)}
.band-light .btn-primary{background:var(--blue);color:#fff}
.band-light .btn-primary:hover{background:var(--blue-d)}
.band-light .band-ghost{color:var(--blue);border-color:var(--line)}
.band-light .band-ghost:hover{border-color:var(--blue)}
.ed-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:44px}
.ed-col{border-top:1px solid var(--line);padding-top:20px}
.ed-col .lbl{font:700 11.5px 'Inter',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--sky)}
.ed-col h3{font-size:21px;margin-top:10px}
.ed-col p{font-size:15px;color:var(--ink-2);margin-top:8px;line-height:1.65}
.manifesto{display:grid;grid-template-columns:1fr 1fr;gap:0 64px}
.m-item{display:grid;grid-template-columns:52px 1fr;gap:18px;padding:26px 0;border-top:1px solid var(--line)}
.m-item .no{font:800 14px 'Manrope',sans-serif;color:var(--sky);letter-spacing:.08em;padding-top:4px}
.m-item h3{font-size:20px}
.m-item p{font-size:15px;color:var(--ink-2);margin-top:7px;line-height:1.6}
.steps-ed{display:grid;grid-template-columns:repeat(4,1fr);gap:44px}
.step-ed{border-top:1px solid var(--line);padding-top:18px}
.step-ed .n{font:800 32px/1 'Manrope',sans-serif;color:#C9D8EC}
.step-ed h3{font-size:19px;margin-top:10px}
.step-ed p{font-size:14.5px;color:var(--ink-2);margin-top:8px;line-height:1.6}
.people{display:grid;grid-template-columns:repeat(4,1fr);gap:40px}
.person .avatar{width:60px;height:60px;font-size:19px;margin-bottom:14px}
.person b,.person strong{display:block;font:700 16px 'Manrope',sans-serif}
.person span{font-size:13.5px;color:var(--muted)}
.quotes-ed{display:grid;grid-template-columns:repeat(3,1fr);gap:48px}
.q-ed{border-left:2px solid var(--blue-tint);padding-left:24px}
.q-ed .qm{display:block;font:800 34px/0.6 'Manrope',sans-serif;color:var(--blue);margin-bottom:14px}
.q-ed p{font-size:16px;line-height:1.65;color:var(--ink-2)}
.q-ed .who{margin-top:16px;font:700 14px 'Manrope',sans-serif;color:var(--ink)}
.q-ed .who span{display:block;font:500 12.5px 'Inter',sans-serif;color:var(--muted);margin-top:2px}
.as-links{border-top:1px solid var(--line);margin-top:8px}
.as-links a{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 2px;border-bottom:1px solid var(--line-2);font:600 15px 'Inter',sans-serif;color:var(--ink-2);transition:color .25s var(--ease),padding-left .25s var(--ease)}
.as-links a:hover{color:var(--blue);padding-left:8px}
.as-links svg{width:15px;height:15px;color:var(--sky)}
.review-line{display:inline-flex;gap:9px;align-items:center;margin-top:18px;font:500 13.5px 'Inter',sans-serif;color:var(--muted)}
.review-line svg{width:16px;height:16px;color:var(--blue);flex:none}
.review-line b,.review-line strong{color:var(--ink-2);font-weight:600}
.faq{margin-top:20px}
.faq details{border-top:1px solid var(--line)}
.faq details:last-of-type{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:17px 0;font:700 16.5px 'Manrope',sans-serif;color:var(--ink)}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--blue)}
.faq .fx{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;color:var(--blue);flex:none;transition:transform .35s var(--ease),background .35s var(--ease)}
.faq .fx svg{width:13px;height:13px}
.faq details[open] .fx{transform:rotate(45deg);background:var(--blue-tint)}
.faq .fa{padding:0 40px 18px 0;color:var(--ink-2);font-size:15px;line-height:1.65;max-width:68ch}
.benefit-list{margin:22px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:2px 44px}
.benefit-list li{display:flex;gap:11px;align-items:flex-start;padding:9px 0;color:var(--ink-2);font-size:15.5px;border-bottom:1px solid var(--line-2)}
.benefit-list li svg{width:17px;height:17px;color:var(--blue);flex:none;margin-top:4px}
/* form (servizi a domicilio / richieste) — solo mockup, in produzione plugin form */
.f-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.f-field{display:flex;flex-direction:column;gap:6px}
.f-field.f-full{grid-column:1/-1}
.f-field label{font:600 13px 'Inter',sans-serif;color:var(--ink-2)}
.input{padding:13px 15px;border:1px solid var(--line);border-radius:12px;font:400 15px 'Inter',sans-serif;background:var(--paper);color:var(--ink);width:100%}
.input:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px rgba(28,65,132,.18)}
textarea.input{min-height:120px;resize:vertical}
.f-note{font-size:12.5px;color:var(--muted);display:flex;gap:8px;align-items:flex-start}
@media (max-width:960px){
  .spec-layout{grid-template-columns:1fr}
  .aside-card{position:static}
  .str-grid,.vgrid,.qgrid{grid-template-columns:1fr}
  .steps,.lgrid{grid-template-columns:1fr 1fr}
  .ed-cols,.manifesto,.quotes-ed{grid-template-columns:1fr}
  .steps-ed,.people{grid-template-columns:1fr 1fr}
  .gl-grid{grid-template-columns:1fr}
  .benefit-list{grid-template-columns:1fr}
  .ph-hero{grid-template-columns:1fr}
  .ph-sq{display:none}
  /* in Elementor `.ph-sq` sta DENTRO un widget html: nascondere il figlio lascia
     il wrapper come seconda cella della griglia, alta 0 ma con i 60px di gap
     (misurato il 17/09/2026: hero 852px invece di 792 a 375px). Si nasconde il
     wrapper. */
  .elementor .ph-hero>.elementor-widget-html:has(>.ph-sq){display:none}
  .band{grid-template-columns:1fr}
  .band .actions{justify-content:flex-start}
  .f-grid{grid-template-columns:1fr}
}
@media (max-width:560px){.steps,.lgrid,.steps-ed,.people{grid-template-columns:1fr}}

/* ============================================================
   PONTE ELEMENTOR — regole per il DOM che Elementor produce
   ------------------------------------------------------------
   Il CSS sopra e' scritto per il DOM dei mockup. Elementor rende:
     container -> <div class="e-con [classi]">           (mai <section>)
     heading   -> <div class="elementor-widget-heading nc-h1">
                    <div class="elementor-heading-title">      <- NIENTE inner wrapper
     text      -> <div class="elementor-widget-text-editor nc-lead">
                    <p>                                        <- NIENTE inner wrapper
   ⚠️ SU QUESTA INSTALLAZIONE `.elementor-widget-container` NON ESISTE: l'output DOM
   ottimizzato di Elementor 3.x lo elimina e il contenuto sta dentro
   `.elementor-element`. Misurato sul pubblicato il 10/09/2026: 0 occorrenze in
   pagina, con 10 text-editor e 14 heading. Una regola che lo nomina non e' un
   errore visibile: e' un NO-OP SILENZIOSO. Il cancello e' tools/verifica-ponte.py.
     button    -> <div class="elementor-widget-button nc-btn">…<a class="elementor-button">
   Quindi ogni regola del mockup agganciata a un TAG (section, p, h2) o a una classe che
   in Elementor non esiste (.eyebrow, .lead) va riscritta qui. Vocabolario nc-* del kit
   di gruppo: non inventarne di nuove.
   ============================================================ */

/* ---------- struttura ----------
   ⚠️ QUI C'ERA `.e-con,.e-con-inner{--flex-gap:0px}`, scritta credendo che il gap
   dei container passasse da quella variabile. Su Elementor 4.2.4 NON esiste
   (misurato dai revisori il 17/09/2026: `grep -c flex-gap frontend.min.css` = 0):
   il gap arriva da `.elementor-element:where(.e-con-full,.elementor-widget)
   {gap:var(--row-gap) var(--column-gap)}` con `--widgets-spacing:20px` del kit.
   La regola era un no-op silenzioso. NON si sostituisce con `--row-gap:0` su
   tutti i `.e-con`: cambierebbe il ritmo di ogni pagina approvata. Il gap di un
   container senza classe si DICHIARA nei settings (`flex_gap` 0, vedi il ramo
   GRIGLIE_A_CELLE del convertitore); per quelli con classe decide il ponte,
   che sotto usa gia' `--row-gap`. */
/* ⚠️ QUI C'ERA `.elementor-widget-html>.elementor-widget-container{position:static}`,
   messa per evitare che i widget html collassassero a altezza zero. Su questa
   installazione quel nodo NON ESISTE (output DOM ottimizzato) e la regola non
   faceva niente. Misurato sul pubblicato il 10/09/2026: 8 widget html in pagina,
   7 con altezza propria e `position:relative`, 1 a zero — ed e' quello dell'header,
   che ha `display:contents` di proposito (vedi sotto). Forzare `position:static`
   non cambiava nessuna delle due misure. Rimossa invece di sdoppiata: una regola
   che non serve non va scritta due volte. */

/* ---------- padding delle sezioni: NON sta qui ----------
   Il padding dei container Elementor arriva da custom properties applicate da frontend.css
   a specificita' (0,1,0). Una regola come `.nc-sec{padding:92px 0}` le cancellerebbe TUTTE,
   compresi i 33 padding per-sezione delle pagine interne. Quindi il padding vive nei
   settings di ogni container sezione (vedi SECTION_PADDING in tools/mockup2elementor.py).
   Non aggiungere qui regole di padding su .nc-sec.

   Questa sola regola serve a rendere i settings AUTOREVOLI: il CSS del mockup contiene
   ancora .quick/.areas/.partners/.cta con il loro padding, e una regola di classe (0,1,0)
   batterebbe le custom properties applicate da frontend.css. Il selettore raddoppiato
   (0,2,0) le riporta in vigore senza inventare valori. */
.nc-sec.nc-sec{padding-block-start:var(--padding-block-start,0px);
  padding-block-end:var(--padding-block-end,0px);
  padding-inline-start:var(--padding-inline-start,0px);
  padding-inline-end:var(--padding-inline-end,0px)}


/* ---------- eyebrow ---------- */
.nc-eyebrow .elementor-heading-title{font:600 12.5px 'Inter',sans-serif;letter-spacing:.16em;
  text-transform:uppercase;color:var(--blue);display:inline-flex;align-items:center;gap:10px}
.nc-eyebrow .elementor-heading-title::before{content:"";width:26px;height:1.5px;background:var(--blue)}

/* ---------- titoli ---------- */
.nc-h1 .elementor-heading-title{font-style:normal;font-weight:700;font-size:clamp(34px,4.6vw,56px);line-height:1.05;font-family:'Manrope',sans-serif;
  letter-spacing:-.025em;color:var(--ink);text-wrap:balance}
.nc-h1 .elementor-heading-title em{font-style:normal;color:var(--blue)}
/* h2: NON una taglia unica. Il mockup ne ha tre secondo il contesto, e .nc-h2 (0,2,0)
   batterebbe .sec-head h2 (0,1,1) schiacciando i titoli da 46px a 36px. */
.nc-h2 .elementor-heading-title{font-style:normal;font-weight:700;font-size:clamp(26px,3vw,36px);line-height:1.05;font-family:'Manrope',sans-serif;
  letter-spacing:-.025em;color:var(--ink);text-wrap:balance}
.nc-h2 .elementor-heading-title em{font-style:normal;color:var(--blue)}
.sec-head .nc-h2 .elementor-heading-title{font-size:clamp(30px,3.6vw,46px)}
.cta-box .nc-h2 .elementor-heading-title{font-size:clamp(30px,3.8vw,46px)}
.band .nc-h2 .elementor-heading-title{font-size:clamp(24px,2.8vw,34px)}
.nc-h2-w .elementor-heading-title{color:#fff}

/* ---------- testo ---------- */
.nc-lead .elementor-widget-container{font-size:19px;color:var(--ink-2);max-width:62ch;line-height:1.65}
.nc-lead .elementor-widget-container p{margin:0}
.nc-p .elementor-widget-container{color:var(--ink-2);line-height:1.7}
.nc-p .elementor-widget-container p:last-child{margin-bottom:0}
.nc-p-w .elementor-widget-container{color:#c7d3ea;line-height:1.7}
.nc-p-w .elementor-widget-container p:last-child{margin-bottom:0}
/* ⚠️ I SEI GEMELLI, e non sono un vezzo: fino al 10/09/2026 le regole qui sopra
   erano le UNICHE, e `.elementor-widget-container` su questa installazione non
   esiste. Cioe': il lead di tutte e dieci le sottopagine era sbagliato in linea,
   e nessuno se n'era accorto perche' non c'era niente da vedere — solo l'assenza.
   Misurato sul pubblicato /medicina-del-lavoro/ il 10/09/2026, prima e dopo:
       corpo         17px  ->  19px          (il mockup dice 19)
       colore     #7a7a7a  ->  #38455A       (era il grigio predefinito, non --ink-2)
       interlinea  27.2px  ->  31.35px       (1.6 ereditata -> 1.65 del kit)
       misura        none  ->  662px = 62ch  (il lead correva per tutta la colonna)
   ⚠️ E il `max-width` va sul <p>, NON sul wrapper: su `.nc-lead` pareggia a
   (0,1,0) con `.elementor-element{max-width:100%}` di Elementor, che viene dopo
   e vince. Misurato: sul wrapper resta 100%, sul <p> diventa 662px.
   Il cancello che impedisce di riscrivere una regola morta e' tools/verifica-ponte.py. */
.nc-lead{font-size:19px;color:var(--ink-2);line-height:1.65}
.nc-lead>p{max-width:62ch;margin:0}
.nc-p{color:var(--ink-2);line-height:1.7}
.nc-p>p:last-child{margin-bottom:0}
.nc-p-w{color:#c7d3ea;line-height:1.7}
.nc-p-w>p:last-child{margin-bottom:0}

/* ---------- margini verticali dei widget nativi ----------
   nel mockup stavano su .eyebrow / .lead / p: classi e tag che in Elementor non ci sono. */
.page-hero .nc-eyebrow{margin-top:16px}
.page-hero .nc-lead{margin-top:20px}
/* NB: .sec-head h2, .cta-box p, .band p del mockup colpiscono gia' il tag reso da
   Elementor col valore giusto. Aggiungere qui la regola omologa sul wrapper del widget
   RADDOPPIA il margine (il wrapper e' un flex item: nessun margin collapsing). */

/* ---------- bottoni ----------
   forma e comportamento qui; il COLORE sta anche nello Style del widget, perche' nel
   canvas i Global Colors del kit WP non sono battibili da CSS (trappola n.2). */
body .nc-btn .elementor-button{background:var(--blue);color:#fff;border-radius:100px;
  padding:13px 24px;border:1px solid transparent;font:600 15px 'Inter',sans-serif;
  display:inline-flex;align-items:center;gap:10px;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),background .25s var(--ease)}
body .nc-btn .elementor-button:hover{background:var(--blue-d);transform:translateY(-2px);
  box-shadow:0 14px 30px -12px rgba(28,65,132,.55)}
body .nc-btn-ghost .elementor-button{background:transparent;color:var(--blue);
  border:1px solid var(--line);border-radius:100px;padding:13px 24px;font:600 15px 'Inter',sans-serif;
  display:inline-flex;align-items:center;gap:10px;
  transition:transform .25s var(--ease),border-color .25s var(--ease)}
body .nc-btn-ghost .elementor-button:hover{border-color:var(--blue);transform:translateY(-2px)}
body .nc-btn-white .elementor-button{background:#fff;color:var(--blue)}
body .nc-btn-white .elementor-button:hover{background:var(--blue-tint);color:var(--blue)}
/* icona freccia: dimensione e micro-animazione come .btn svg del mockup.
   Elementor annida uno <span> in piu' del mockup: senza inline-flex il suo line-height
   fa crescere il bottone di 2px, e il gap del mockup non arriva (i figli flex del
   bottone sono UN solo elemento, il content-wrapper) -> la spaziatura va messa li'. */
body .elementor-button .elementor-button-content-wrapper{display:inline-flex;
  align-items:center;gap:10px}
body .elementor-button .elementor-button-icon{display:inline-flex;align-items:center;
  margin:0}
body .elementor-button .elementor-button-icon svg,
body .elementor-button .elementor-button-icon i{width:16px;height:16px;font-size:16px;
  transition:transform .25s var(--ease)}
body .elementor-button:hover .elementor-button-icon svg,
body .elementor-button:hover .elementor-button-icon i{transform:translateX(3px)}
/* rete di sicurezza: su fascia scura il primario va invertito comunque */
body .band:not(.band-light) .nc-btn .elementor-button{background:#fff !important;color:var(--blue) !important}
body .band:not(.band-light) .nc-btn .elementor-button:hover{background:var(--blue-tint) !important}
body .band:not(.band-light) .nc-btn-ghost .elementor-button{background:transparent !important;
  color:#fff !important;border-color:rgba(255,255,255,.4) !important}
body .band:not(.band-light) .nc-btn-ghost .elementor-button:hover{border-color:#fff !important}
body .nc-dark .nc-eyebrow .elementor-heading-title{color:#bcccec}
body .nc-dark .nc-eyebrow .elementor-heading-title::before{background:#bcccec}

/* ---------- CTA finale: i due bottoni sono barre a larghezza piena ---------- */
.cta-box .actions{align-items:stretch}
body .cta-box .actions .elementor-widget-button,
body .cta-box .actions .elementor-button-wrapper{width:100%}
body .cta-box .actions .elementor-button{width:100%;justify-content:center}

/* ---------- puntinatura decorativa della fascia ----------
   nel mockup <div class="dots"> e' figlio diretto di .band e position:absolute, quindi
   FUORI dal flusso. Incapsulata in un widget HTML diventerebbe un grid item e sfaserebbe
   la griglia 1.4fr/.6fr: il convertitore non la emette piu' e la rifacciamo qui. */
.nc-sec .band{position:relative;overflow:hidden}
.nc-sec .band::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.7;
  background-image:radial-gradient(rgba(255,255,255,.10) 1.1px,transparent 1.1px);
  background-size:20px 20px}
.nc-sec .band.band-light::after{background-image:radial-gradient(rgba(28,65,132,.10) 1.1px,transparent 1.1px)}

/* ---------- la tipografia e i colori globali del tema vincono per pari specificita' ---------- */
.nc-h1 .elementor-heading-title,.nc-h2 .elementor-heading-title{font-family:'Manrope',sans-serif !important}
.nc-eyebrow .elementor-heading-title{font-family:'Inter',sans-serif !important}
.nc-h1 .elementor-heading-title,.nc-h2 .elementor-heading-title{color:var(--ink) !important}
.nc-h2-w .elementor-heading-title,.band:not(.band-light) .nc-h2 .elementor-heading-title{color:#fff !important}
/* il reveal a maschera .rt viene applicato dallo script dentro questi titoli */
.nc-h1 .elementor-heading-title,.nc-h2 .elementor-heading-title{overflow:hidden}
.nc-h1 .elementor-heading-title{padding-bottom:.08em}
.sec-head .nc-h2 .elementor-heading-title,
.cta-box .nc-h2 .elementor-heading-title{padding-bottom:.14em}
.band .nc-h2 .elementor-heading-title{padding-bottom:.12em}

/* ---------- elementi nativi DENTRO i widget HTML ----------
   Sono 17 <a class="btn btn-primary">, 15 ghost e 6 <button> (tab aree, A+, hamburger,
   chiusura drawer): non hanno uno Style di widget, quindi il kit WP li colora e va
   neutralizzato a mano — sono le stesse pezze che il kit di gruppo porta in produzione. */
body a.btn,body a.btn-primary{color:#fff;text-decoration:none}
body a.btn-ghost{color:var(--blue)}
body .band:not(.band-light) a.btn-primary{background:#fff;color:var(--blue)}
body .band:not(.band-light) a.btn-ghost,body .giornate a.btn-ghost{color:#fff;border-color:rgba(255,255,255,.4)}
body a.skip{color:#fff}
body button.fz,body button.menu-toggle,body button.d-close{
  background:none;border-radius:0;padding:0;box-shadow:none;text-transform:none;
  letter-spacing:normal;font-family:'Inter',sans-serif}
body button.fz{border:1px solid rgba(255,255,255,.35);border-radius:100px;padding:4px 9px}
/* ⚠️ Le tab delle aree NON vanno nel neutralizzatore generico: quel reset azzerava
   anche cio' che il kit decide (padding:0 0 14px, maiuscoletto, letter-spacing).
   Effetto misurato: bersaglio alto 18px invece di 32 (sotto il minimo di WCAG 2.5.8)
   e sottolineatura dell'attiva incollata al testo invece che sul filetto della sezione. */
body .area-tabs button{background:none;border:none;border-radius:0;box-shadow:none;
  font:600 15px 'Inter',sans-serif;letter-spacing:.04em;text-transform:uppercase;
  color:var(--muted);padding:0 0 14px;position:relative}
body .area-tabs button[aria-selected="true"]{color:var(--blue)}
/* il pulsante di chiusura del drawer e' un flex item: senza flex:none si comprime a 22px */
.d-close{flex:none}
body .area-tabs button:hover,body button.fz:hover,body button.menu-toggle:hover,
body button.d-close:hover{background:none}

/* ---------- header sticky ----------
   Tutto l'header sta in UN widget HTML: <header class="nav"> avrebbe come blocco
   contenitore il .elementor-widget-container, alto quanto il suo contenuto (~96px), e
   lo sticky si staccherebbe dopo pochi pixel di scroll. display:contents promuove
   topbar/header/drawer a figli diretti del container della sezione. */
[data-elementor-type="header"] .elementor-widget-html,
[data-elementor-type="header"] .elementor-widget-html>.elementor-widget-container{display:contents}

/* ============================================================
   ALLINEAMENTO VILLA ANNA MARIA — 31/08/2026
   ------------------------------------------------------------ */

/* ⚠️ LOGO: le regole .brand-logo{height:...} esistevano gia' sul sito ma NON
   si applicavano MAI. Il tema Hello/Elementor emette `.elementor img{height:auto}`
   — specificita' (0,1,1) contro (0,1,0) della classe: vinceva il tema e il logo
   si dimensionava da solo con lo spazio flex disponibile (436x55 a 1725px,
   261x33 a 420px: cambiava con la finestra).
   Qui sono le stesse misure di prima, riscritte a specificita' vincente.
   Stessa famiglia della trappola dei padding: una regola del tema che batte il kit. */
header.nav .brand .brand-logo,
.drawer .d-head .brand .brand-logo{width:auto;max-width:none;display:block;
  transition:height .35s var(--ease)}
header.nav .brand .brand-logo{height:38px}
.drawer .d-head .brand .brand-logo{height:38px}
body.scrolled header.nav .brand .brand-logo{height:32px}
@media (max-width:560px){
  header.nav .brand .brand-logo{height:30px}
}
.brand-logo-neg{height:34px;filter:brightness(0) invert(1);opacity:.95}

/* Mega a due colonne: il centro ha due sole famiglie di prestazioni
   (Prestazioni sanitarie / Servizi). Tre colonne avrebbero richiesto di
   inventare una terza famiglia o di duplicare voci gia' di primo livello. */
.mega-2 .mega-in{grid-template-columns:repeat(2,1fr);max-width:860px;gap:56px}

/* Topbar: il numero del centralino resta bianco come il resto della riga. */
.topbar .tb-tel a{color:#fff;opacity:1}
.topbar .tb-tel a:hover{text-decoration:underline;text-underline-offset:3px}
.topbar .tb-tel svg{width:13px;height:13px;flex:none}

/* Nav: VAM usa peso 400 + letter-spacing .15px, non 500.
   (I "17px di VAM" erano un artefatto: la misura andava presa su
   span.e-n-menu-title-text, non sul wrapper <a>. Entrambi i siti sono a 15px.)
   A saldo zero sulla larghezza: verificato sulle stringhe di VAM, delta < 0,5px. */
nav.menu .mi>a,nav.menu>a.mi-link{font-weight:400;letter-spacing:.15px}

/* ⚠️ Elementor mette 20px di `gap` fra i container figli del documento.
   Le sezioni del kit portano il proprio padding e sono disegnate per stare
   A FILO: quel gap produce una cucitura chiara fra una sezione e l'altra
   (7 volte sulla sola home, visibile fra .giornate e .areas).
   Il contenitore da correggere e' uno solo per pagina: il figlio diretto
   del documento, quello che tiene le sezioni. */
[data-elementor-type="wp-page"] > .e-con{--row-gap:0px;row-gap:0}

/* ---------- Allineamento al kit di gruppo del 28/08/2026 (VAM) ----------
   Le regole con prefisso `body` battono i Global Colors di Elementor, che altrimenti
   ridipingono i bottoni con il rosso/rosa del kit WP (trappola n.2 del ricettario).
   VAM le ha aggiunte tutte a fine agosto; qui mancavano quattro. */
body .giornate a.btn-primary{color:var(--blue)}
body .cta-box a.btn-primary{color:#fff}
body .cta-box a.btn-ghost{color:var(--blue)}
body .band a.btn-primary,body .sec-blue a.btn-primary{color:var(--blue)}

/* ---------- Chrome: stesse regole di vam-chrome.css (kit 28/08/2026) ----------
   Misurato a 1000px: logo 301 + menu 494 + CTA 132 + spazi = 975 su 952 disponibili,
   la CTA esce dal viewport (bordo a 1007) e il toggle non compare. VAM ha lo stesso
   problema col suo lockup e lo risolve passando al drawer a 1080: qui si adotta lo
   stesso valore, e il gap del menu scende a 24 come nel kit. Con questi numeri a 1080
   il contenuto e' 1027 su 1032: entra. */
nav.menu{gap:24px}
nav.menu .mi>a,nav.menu>a.mi-link,.nav-cta .btn{white-space:nowrap}
.brand{flex:none}
@media (max-width:1080px){
  nav.menu{display:none}
  .menu-toggle{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;
    border:1px solid var(--line);background:var(--paper);cursor:pointer}
}

/* --- guardia anti-sfondamento sulle griglie di numeri (collaudo mobile 03/09) ---
   Un item di griglia ha min-width:auto: la colonna non puo' restringersi sotto il
   min-content del contenuto. In .rblock il contenuto e' .n a 38px Manrope: basta una
   parola non spezzabile e la colonna si pianta (misurato: "Specialisti" = 171px di
   inchiostro -> tessera 221px -> griglia 370px dentro un contenitore da 307 ->
   29px di scroll orizzontale su tutta la home a 375px).
   Il contenuto e' stato corretto, ma la regola resta: e' il componente a dover reggere. */
.rblocks{min-width:0}
.rblock{min-width:0}
.rblock .n,.rblock .l{min-width:0;overflow-wrap:anywhere}

/* --- reflow a 320px (WCAG 2.1 SC 1.4.10) ---
   Un bottone e' inline-flex: il suo min-content e' la parola piu' lunga + i padding,
   e a 320px "Vai a nefrocenter.it" (171px) sfonda la colonna da 160.
   max-width:100% e' correttezza sempre; la rottura del token solo sotto i 400px,
   dove non c'e' alternativa che non sia troncare. */
.elementor-button,.btn{max-width:100%}
@media (max-width:400px){
  .elementor-button .elementor-button-text,.btn{overflow-wrap:anywhere}
}

/* --- reflow a 320px: la riga del logo ---
   Il lockup CMM e' 903x114 (7,9:1): a 30px di altezza sono 238px di larghezza.
   Con .brand{flex:none} (regola di gruppo) la riga non puo' comprimersi:
   238 + gap 24 + toggle 42 + padding 48 = 352 su un viewport da 320.
   Sotto i 360px il logo scende a 26px (206) e la gronda a 16px: 320 esatti, over 0.
   Sopra i 360 non cambia nulla. */
@media (max-width:360px){
  header.nav .wrap,.topbar .wrap{padding-left:16px;padding-right:16px}
  header.nav .brand .brand-logo{height:26px}
}

/* --- reflow a 320px: l'email nelle schede informazioni ---
   "info@centromedicomichelangelo.it" e' un token di 241px che non si spezza:
   a 320 la colonna della griglia si pianta a 295 e la pagina scrolla in orizzontale.
   Vale sulle schede di /informazioni/ e sulle azioni rapide della home. */
.i-card,.q-card,.q-card>*{min-width:0}
.i-card p,.i-card a,.i-card h3,.q-card b,.q-card strong,.q-card span{overflow-wrap:anywhere}

/* --- reflow a 320px: le tab delle aree sulla home ---
   Tre voci in maiuscoletto (51+112+112) + due gap da 26 = 327px: a 375 entrano esatte,
   a 320 la terza ("Fisioterapia") finisce a 367px dentro un contenitore Elementor con
   overflow:hidden -> tagliata e non cliccabile. Sotto i 360 si va a capo. */
@media (max-width:360px){
  .area-tabs{flex-wrap:wrap;row-gap:0;column-gap:20px}
}

/* --- riquadro mappa come link (04/09): il segnaposto «Mappa [in produzione]» e' diventato
   un <a class="ph-mark"> verso Google Maps: nessun embed, nessun cookie prima del clic. */
a.ph-mark{color:rgba(255,255,255,.92);text-decoration:none;transition:background .3s var(--ease)}
a.ph-mark:hover,a.ph-mark:focus-visible{background:rgba(255,255,255,.08)}
a.ph-mark span{text-decoration:underline;text-underline-offset:4px;text-decoration-color:rgba(255,255,255,.45)}

/* --- ponte per i loghi convenzioni come widget image (08/09/2026) ---
   Griglia e tessere sono diventate container Elementor.
   `.partners .logos` e' (0,2,0) e batte gia' `.e-con{display:var(--display)}`
   (0,1,0): NON va raddoppiato, e soprattutto non vanno ridichiarate le colonne,
   o si perdono i breakpoint del kit (4 colonne -> 3 a 960px -> 2 a 560px).
   `.logo` invece e' (0,1,0), pari a `.e-con`: a specificita' uguale decide
   l'ordine dei fogli, quindi quello si raddoppia.
   L'immagine ora sta in .elementor-widget-image > .elementor-widget-container:
   `.logo img` fa ancora match perche' e' un discendente, ma i due wrapper
   vanno resi trasparenti al centraggio. */
.logo.logo{display:grid;place-items:center}
/* Il gap: `.e-con.e-flex{gap:var(--flex-gap)}` di Elementor e' (0,2,0), pari a
   `.partners .logos{gap:…}` del kit. A pari specificita' vince l'ordine dei
   fogli, che non controlliamo. Qui i DUE valori del kit (18px, e 12px sotto i
   560px: il breakpoint e' quello del kit, riga 414, verificato) sono a (0,3,0): e' l'unica duplicazione accettata, e serve a
   togliere il pareggio invece di scommetterci. Se il kit li cambia, cambiare qui. */
.partners .logos.logos{gap:18px}
@media (max-width:560px){.partners .logos.logos{gap:12px}}
/* ⚠️ NON display:contents sui wrapper: toglie il box al widget e nell'editor
   Elementor diventa difficile selezionarlo. Il box deve restare cliccabile:
   e' il gesto con cui il committente sostituisce la foto. */
.logo .elementor-widget-image,
.logo .elementor-widget-image > .elementor-widget-container{display:grid;place-items:center;width:100%;margin:0}

/* --- guardia per l'editor Elementor (08/09/2026) — PREREQUISITO della nativizzazione ---
   Il CSS del kit si applica anche dentro il canvas dell'editor, ma
   michelangelo-ui.js NON gira: `.reveal{opacity:0}` e `.si{opacity:0}` restano
   tali. Finche' il corpo era un unico widget html nessuno se ne accorgeva,
   perche' nessuno lo apriva. Appena il corpo diventa nativo, chi deve
   modificarlo lo vedrebbe INVISIBILE: la conversione produrrebbe zero
   editabilita', in silenzio. Questa e' la riga che la rende utile. */
body.elementor-editor-active .reveal,
body.elementor-editor-active .si,
body.elementor-editor-active .rt,
body.elementor-editor-active .benefit-list li{opacity:1!important;transform:none!important;animation:none!important}

/* --- ponte fase 2: il corpo delle sottopagine in widget nativi (08/09/2026) ---
   Le 8 .wrap.spec-layout erano un widget html da ~7 KB; ora sono container.
   Tre pareggi di specificita' da rompere, tutti misurati:

   1) display — `.e-con{display:var(--display)}` e' (0,1,0) come `.spec-layout`
      e `.aside-card`: a pari specificita' decide l'ordine dei fogli. Raddoppio.
   2) gap — `.e-con.e-flex{gap:var(--flex-gap)}` e' (0,2,0) e BATTE
      `.spec-layout{gap:52px}` (0,1,0): i gap del kit sparirebbero. Servono
      (0,3,0), quindi si aggancia il genitore.
   3) .prose — il kit non le da' un display, quindi come container diventerebbe
      flex column e i margini NON collasserebbero piu': fra l'ultimo <p>
      (margin-bottom 14) e l'<h2> dopo (margin-top 40) uscirebbero 54px invece
      di 40. display:block li fa collassare attraverso i wrapper di Elementor. */
.spec-layout.spec-layout{display:grid}
.nc-sec .spec-layout.spec-layout{grid-template-columns:1fr 340px;gap:52px;align-items:start}
.aside-card.aside-card{display:flex;flex-direction:column}
.spec-layout .aside-card.aside-card{gap:14px}
.prose.prose{display:block}
/* ⚠️ IL CONTRARIO di quello che sembra, misurato l'08/09.
   Il kit ha `.prose h2:first-child,.prose h3:first-child{margin-top:0}` (riga 475)
   per togliere il margine al PRIMO titolo. Dentro Elementor ogni h2 e' il primo
   (e unico) figlio del proprio `.elementor-widget-container`: quella regola
   quindi colpisce TUTTI i titoli, e il ritmo verticale crolla da 40px a 14px su
   8 pagine. Il progetto diceva l'opposto («non fa piu' match»): era sbagliato.
   Qui il margine si ripristina a (0,4,1), che batte `.prose h2:first-child` (0,2,1).
   ⚠️ Ogni catena e' scritta DUE volte, con e senza `.elementor-widget-container`:
   su questa installazione l'esperimento «optimized markup» di Elementor e' attivo
   e quel div NON esiste (0 occorrenze in pagina, misurate). Se domani viene
   disattivato, la seconda catena regge. Il simulatore d'anteprima e' stato
   allineato: prima emetteva quel div e i ponti passavano in anteprima senza
   funzionare sul sito.
   ⚠️ Catena FIGLIO anche qui: un discendente sborderebbe nei titoli annidati
   dentro .sec-head (che il kit vuole a 16px, non 40) e dentro .as-box.
   Misurato: con il selettore discendente l'h2 di .sec-head su /informazioni/
   passava da 16 a 40px e si staccava dal proprio occhiello. */
.prose.prose > .elementor-element > h2,
.prose.prose > .elementor-element > .elementor-widget-container > h2{margin-top:40px}
.prose.prose > .elementor-element > h3,
.prose.prose > .elementor-element > .elementor-widget-container > h3{margin-top:34px}
/* Lo stesso guasto un livello piu' dentro: nel .sec-head il titolo resta
   first-child del proprio wrapper, quindi `.prose h2:first-child` (0,2,1) gli
   azzera il margine che `.sec-head h2` (0,1,1) vorrebbe a 16px. Misurato su
   /informazioni/: occhiello e titolo attaccati, 0px invece di 16. */
.prose.prose .sec-head > .elementor-element > h2,
.prose.prose .sec-head > .elementor-element > .elementor-widget-container > h2{margin-top:16px}
/* ...e si azzera solo sul primo widget VERO della colonna.
   ⚠️ Catena FIGLIO, non discendente: su /informazioni/ il primo figlio e' il
   container .sec-head, e un selettore discendente cancellerebbe il
   margin-top:16px di `.sec-head h2` attaccando due titoli. */
.prose.prose > .elementor-element:first-child > :is(h2,h3),
.prose.prose > .elementor-element:first-child > .elementor-widget-container > :is(h2,h3){margin-top:0}
/* Le ancore (#prestazioni, #richiesta): Elementor scrive l'id sul wrapper,
   quindi lo scroll-margin va sul wrapper, non sull'h2. */
.prose.prose > .elementor-element[id]{scroll-margin-top:90px}
@media (max-width:960px){
  .nc-sec .spec-layout.spec-layout{grid-template-columns:1fr}
  .aside-card.aside-card{position:static}
}

/* Elementor da' `margin-bottom:20px` ai widget non ultimi: dentro .prose, che
   ora e' un blocco, quel margine si somma al ritmo del kit. Misurato su
   /informazioni/: 46px fra .sec-head e il titolo dopo, invece di 40. */
.prose.prose > .elementor-element{margin-bottom:0}
.prose.prose .sec-head > .elementor-element{margin-bottom:0}

/* `.sec-head` nel kit e' un blocco semplice (riga 220: solo max-width e
   margin-bottom). Come container Elementor diventa flex con il gap di default
   del kit WP, che si SOMMA ai 16px di `.sec-head h2`: misurato 36px invece di
   16 fra occhiello e titolo. Torna blocco, senza gap. */
.prose.prose .sec-head.sec-head{display:block;row-gap:0;column-gap:0}

/* --- drawer: confronto col componente di gruppo (08/09/2026) ---
   Riferimento: kit-gruppo/componenti/drawer-mobile-ncd.md, estratto da
   test.nefrocenter.it il 27/08 e collaudato. Dice, testualmente: «non va
   riprogettato, va riusato cambiando solo le voci». Su VAM infatti il drawer e'
   UN widget html per scelta (shell con role/aria-modal, JS proprio, e una icona
   SVG diversa per ogni voce): NON si nativizza.

   Del confronto e' rimasta una sola cosa da correggere, l'`aria-modal="true"`,
   che sta nel generatore dell'header, non qui. Le altre due che sembravano
   divergenze non lo erano, e vale la pena scriverlo:

   ⚠️ L'entrata scaglionata c'e' GIA', dentro la `transition` di `.d-row`
   (riga 129): `calc(var(--i,0)*45ms)`, esattamente i 45ms del gruppo. Mi era
   sembrata assente perche' la sonda con cui misuravo iniettava
   `*{transition:none!important}` e poi leggeva il ritardo della transizione che
   aveva appena spento. Un `transition-delay` secco avrebbe ritardato ANCHE
   l'hover (background, padding-left) di mezzo secondo: peggio del difetto
   immaginario.

   ⚠️ Il burger 42x42 NON e' sotto la misura di gruppo: il kit dichiara 42x42
   sia in `nefrocenter-ds.css` (riga 411) sia in `vam-chrome.css` (riga 17).
   I 44x44 del documento sono di `.ncd-burger`, che e' un ALTRO componente (il
   burger a tre barre di test.nefrocenter.it). Avevo confrontato col riferimento
   sbagliato e stavo creando una divergenza fra i siti del gruppo.
   Resta una domanda vera per il gruppo, non per questo sito: 42px e' sopra il
   minimo AA di WCAG 2.5.8 (24px) ma sotto i 44px del livello AAA (2.5.5). Se si
   cambia, si cambia nel kit per tutti.

   Blocco dello scroll con una CLASSE, non con lo stile inline: il gruppo usa
   `body.ncd-lock{overflow:hidden!important}`. Lo stile inline si ripristina a ''
   e il valore calcolato torna `hidden auto` (per `body{overflow-x:hidden}` del
   kit): funziona, ma dipende dall'ordine di ripristino. */
body.nc-lock{overflow:hidden!important}

/* --- ponte: gli elenchi con la spunta come icon-list nativo (08/09/2026) ---
   Decisione di Giuseppe: spunta classica (`fas fa-check`), che Elementor rende
   come SVG inline. 8 elenchi, 54 voci, ora modificabili a clic.

   ⚠️ La classe `.benefit-list` finisce sul WRAPPER del widget, non sull'<ul>.
   Quindi il `grid-template-columns:1fr 1fr` del kit si applica al wrapper, che
   ha UN figlio solo: l'elenco finirebbe nella prima colonna, a metà larghezza.
   Il wrapper torna un blocco e la griglia si riporta sull'elenco vero.
   ⚠️ E il kit LE HA, le regole responsive: dentro @media (max-width:960px) c'e'
   `.benefit-list{grid-template-columns:1fr}`. Quella regola ora colpisce il
   wrapper, che non e' piu' una griglia: senza il ponte qui sotto l'elenco resta
   a due colonne anche sul telefono (misurato: 130px + 140px a 402px di viewport).
   Il commento precedente diceva il contrario ed era sbagliato. */
.benefit-list.benefit-list{display:block}
.benefit-list .elementor-icon-list-items{display:grid;grid-template-columns:1fr 1fr;
  gap:2px 44px;margin:0;padding:0;list-style:none}
.benefit-list .elementor-icon-list-item{display:flex;gap:11px;align-items:flex-start;
  padding:9px 0;color:var(--ink-2);font-size:15.5px;border-bottom:1px solid var(--line-2);
  margin:0}
.benefit-list .elementor-icon-list-item > a{display:flex;gap:11px;align-items:flex-start;color:inherit}
.benefit-list .elementor-icon-list-icon{flex:none;margin-top:4px;display:flex}
.benefit-list .elementor-icon-list-icon svg{width:17px;height:17px;fill:var(--blue);color:var(--blue)}
.benefit-list .elementor-icon-list-text{padding:0;color:inherit}
@media (max-width:960px){
  .benefit-list .elementor-icon-list-items{grid-template-columns:1fr}
}

/* --- ponte: le griglie di schede in container nativi (09/09/2026) ---
   .vgrid (7 blocchi) e .info-grid (3) erano widget html: 3.700 caratteri non
   modificabili. Ora ogni scheda e' un container e ogni titolo/paragrafo un
   widget. Tre pareggi di specificita', misurati e rotti qui:

   1) display — `.e-con{display:var(--display)}` e' (0,1,0) come `.vgrid`
      e `.info-grid`: la griglia diventerebbe una colonna flex.
   2) gap — `.e-con.e-flex{gap:var(--flex-gap)}` e' (0,2,0) e BATTE
      `.vgrid{gap:18px}` (0,1,0); il container nasce con --flex-gap:0, quindi
      le schede si toccherebbero. Servono (0,3,0): si aggancia .nc-sec.
   3) la scheda — `.v-card{display:block}` pareggia a (0,1,0); `.i-card` un
      display non ce l'ha proprio e come container diventerebbe flex column,
      con i margini dei <p> che non collassano piu'.
   ⚠️ Il padding NON si tocca: `.v-card{padding:28px}` e `.i-card{padding:26px}`
   sono regole del kit e restano la fonte unica. */
.vgrid.vgrid,.info-grid.info-grid{display:grid}
.nc-sec .vgrid.vgrid,.nc-sec .info-grid.info-grid{gap:18px}
.v-card.v-card,.i-card.i-card{display:block}

/* ---------- briciole di pane (famiglia 1) ----------
   Il mockup: <nav class="crumbs"> con i figli inline e `display:flex;gap:8px`.
   Elementor: <div class="e-con crumbs" html_tag=nav> > widget text-editor >
   .elementor-widget-container > (i figli inline, e un <p> dopo il primo
   salvataggio dal pannello, che TinyMCE aggiunge da se').
   Percio' il flex va su ENTRAMBI i nodi possibili: se il <p> non c'e' ancora
   spazia il contenitore, se c'e' spazia il <p>. Senza questo le briciole si
   attaccherebbero: «Home›Prestazioni sanitarie›Fisiokinesiterapia».
   Il `gap:8px` di .crumbs non serve piu' su .e-con (un figlio solo) e comunque
   perderebbe contro `.e-con.e-flex{gap:var(--flex-gap)}` (0,2,0). */
/* il colore della briciola va anche sul widget: porta il suo (#7A7A7A, dal Kit) e batte quello di .crumbs.
   Misurato sul pubblicato: senza, resta grigio il testo non-link (la pagina corrente). */
.elementor .crumbs .elementor-widget-text-editor,
.elementor .crumbs .elementor-widget-text-editor>p{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;color:#5B687C}

/* ---------- chip informativi dell'hero (famiglia 1) ----------
   Ogni chip e' un widget heading (header_size: div) con la classe .chip-i sul
   wrapper, dentro un container .chips-info in direzione row/wrap.
   1) LARGHEZZA. Elementor da' ai widget dentro un container
      `width:var(--container-widget-width,100%)` con selettore (0,2,0): a 100%
      ogni chip andrebbe a capo da solo e la pillola sarebbe larga quanto la
      pagina. Serve (0,3,0), e si ottiene agganciando il genitore.
   2) MARGINE. `.elementor-widget:not(:last-child){margin-bottom:20px}` e'
      (0,2,0) e aprirebbe 20px sotto ogni riga di chip.
   3) TESTO. `.chip-i` porta il font 500 14px Inter e `color:var(--ink-2)`, ma il
      titolo del widget ha le sue regole: si fa ereditare, cosi' il chip resta
      identico al mockup senza duplicare i valori.
   Il disegno davanti al testo e' una CSS mask, non un <svg>: dentro
   `heading.title` un SVG viene sanitizzato al salvataggio. Vedi il blocco
   ICONE-CSS-MASK qui sotto e tools/glifi_chip.py. */
.elementor .chips-info>.chip-i{width:auto;max-width:100%;margin:0}
.elementor .chip-i .elementor-heading-title{font:inherit;color:inherit}

/* ---------- i richiami laterali `.as-links` (correzione del 10/09/2026) ----------
   SEGNALATO dal committente: «allinea a sinistra il testo». Misurato sul
   pubblicato, il difetto era piu' grande di quello che si vedeva — QUATTRO
   regole del kit perdevano contro Elementor, e solo una si notava.

   Il kit vuole: testo a sinistra, freccia a destra, il font 600 15px Inter,
   freccia 15px color --sky. Il DOM del widget icon-list mette l'icona PRIMA
   del testo, e il `justify-content:space-between` del kit (che nel mockup
   separava testo e freccia) spingeva il TESTO a destra.

   Le regole di Elementor da battere, lette in widget-icon-list.min.css 4.2.4:
     .elementor-widget .elementor-icon-list-item a
        -> display:flex · font-size:INHERIT            (0,2,0)  ⚠️ batte il `font` del kit (0,1,1)
     .elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text
        -> padding-inline-start:5px                    (0,2,0)
     .elementor-widget .elementor-icon-list-icon svg
        -> width/height:var(--e-icon-list-icon-size,1em) (0,2,1)  ⚠️ batte i 15px del kit
     .elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg
        -> margin:0 .25em 0 0                          (0,3,1)
   Quindi qui si sta a (0,3,0) e (0,4,1).

   ⚠️ L'ordine si sistema con `order`, NON invertendo il DOM: il DOM lo scrive
   Elementor e non e' nostro. E `order` non tocca l'ordine di lettura di un
   lettore di schermo, che resta quello del DOM — l'icona e' decorativa
   (aria-hidden), quindi non cambia nulla per chi ascolta. */
.elementor .as-links .elementor-icon-list-text{order:1;padding-inline-start:0;
  margin-inline-end:auto;text-align:left}
.elementor .as-links .elementor-icon-list-icon{order:2;flex:0 0 auto}
/* corpo e colore del link: il `font-size:inherit` di Elementor vince sul
   `font:` del kit, quindi si ridichiara qui */
.elementor .as-links .elementor-icon-list-item a{font:600 15px 'Inter',sans-serif;
  color:var(--ink-2);justify-content:space-between;gap:10px}
.elementor .as-links .elementor-icon-list-item a:hover{color:var(--blue)}
/* la freccia: 15px e --sky come nel kit, e senza il margine destro che
   Elementor le da' pensandola a sinistra del testo */
.elementor .as-links .elementor-icon-list-item .elementor-icon-list-icon svg{
  width:15px;height:15px;margin:0;fill:var(--sky);color:var(--sky)}

/* ---------- le famiglie chiuse il 10/09/2026: griglie, carta dei servizi,
             segnaposto, numeri ----------
   Sempre lo stesso trittico di pareggi, ormai riconoscibile a occhio:
   `display` del kit a (0,1,0) pareggia con `.e-con{display:var(--display)}`;
   il `gap` del kit a (0,1,0) PERDE contro `.e-con.e-flex{gap:var(--flex-gap)}`
   (0,2,0), che nasce a 0; e ogni scheda che nel kit e' block o flex, come
   container diventa una colonna flex. Si raddoppia la classe per il display e
   si aggancia `.nc-sec` per il gap.
   ⚠️ Nessun padding qui: dove il kit lo dichiara per classe, resta la fonte unica. */

/* la carta dei servizi de «Il Centro» — 6 punti su due colonne */
.manifesto.manifesto{display:grid}
.nc-sec .manifesto.manifesto{gap:0 64px}
.m-item.m-item{display:grid}
.nc-sec .m-item.m-item{gap:18px}

/* la griglia delle eccellenze della home — 1.4fr 1fr 1fr, la prima in evidenza */
.exc-grid.exc-grid{display:grid}
.nc-sec .exc-grid.exc-grid{gap:18px}
.card-x.card-x{display:flex}
/* la freccia in alto a destra e' `position:absolute` e va misurata sulla
   SCHEDA. Il widget html che la porta e' un wrapper con un box proprio:
   `display:contents` lo toglie di mezzo, come per la trama a pallini. */
.elementor .card-x>.elementor-widget-html{display:contents}

/* il pannello delle giornate dedicate — righe cliccabili su fondo scuro */
.hub .hrow.hrow{display:flex}
.nc-sec .hub .hrow.hrow{gap:16px}
.elementor .hub .hrow>.elementor-widget-html{display:contents}
/* `.info` resta un container: il kit stila `.hub .info h3` e `.hub .info span` */
.elementor .hub .info>.elementor-widget-text-editor{margin:0}
.elementor .hub .info>.elementor-widget-text-editor>p{margin:0}

/* le tre schede rapide sotto l'hero — la griglia sta sul .wrap, non su un div */
.quick .wrap.wrap{display:grid}
.nc-sec.quick .wrap.wrap{gap:16px}
.q-card.q-card{display:flex}
.nc-sec .q-card.q-card{gap:16px}
.elementor .q-card>.elementor-widget-html{display:contents}
.elementor .q-card>.elementor-widget-text-editor{margin:0}
.elementor .q-card>.elementor-widget-text-editor>p{margin:0}

/* i quattro numeri della fascia scura */
.rblocks.rblocks{display:grid}
.nc-sec .rblocks.rblocks{gap:16px}
.rblock.rblock{display:flex}

/* i segnaposto delle foto: `position:relative` e' cio' che regge la pastiglia
   e la trama, quindi il container deve conservarlo */
.hero-ph.hero-ph,.str-ph.str-ph,.img-ph.img-ph{position:relative}
.elementor .img-ph>.elementor-widget-html{display:contents}
/* la pastiglia e il richiamo della mappa erano `position:absolute` su uno
   <span>/<a>: adesso la classe sta sul WRAPPER del widget, che e' l'elemento
   posizionato — quindi le regole del kit funzionano cosi' come sono. Serve solo
   togliere il margine che Elementor da' ai widget in colonna. */
.elementor .img-ph>.elementor-widget{margin:0}
/* l'icona dentro la pastiglia e dentro le righe con icona (.ssn, .foot):
   era un <svg>, adesso e' una maschera, e va dimensionata come nel kit */
/* ⚠️ La misura deve BATTERE la regola generata nel blocco ICONE-CSS-MASK, che
   e' `.elementor .nc-ic-<nome>::before` a (0,2,0) e sta piu' in basso nel
   file: a parita' di specificita' vince l'ultima. Quindi qui serve (0,3,0),
   e si ottiene agganciando il contenitore. Misurato in anteprima: senza il
   contenitore la pastiglia usciva a 15px (la misura dei chip) invece di 13. */
.elementor .hero-ph .badge::before{flex:0 0 13px;width:13px;height:13px}
.elementor .hero .ssn::before{flex:0 0 17px;width:17px;height:17px}
.elementor .hub .foot::before{flex:0 0 14px;width:14px;height:14px}
/* .ssn e .foot sono inline-flex nel kit: la classe sta sul wrapper del widget
   heading, e il titolo dentro non deve diventare un blocco a se' */
.elementor .ssn .elementor-heading-title,
.elementor .hub .foot .elementor-heading-title,
.elementor .badge .elementor-heading-title{font:inherit;color:inherit;letter-spacing:inherit}
/* Stessa famiglia, trovata col censimento del 17/09/2026 (11 pagine, 236 heading):
   le sigle degli avatar (4), i numeri della carta dei servizi (6), le etichette
   delle schede in evidenza (5) e le didascalie dei numeri della fascia scura (4)
   prendevano font e colore dai Global di Elementor (Roboto 600, primary), non
   dal wrapper che il kit stila (`.avatar`, `.m-item .no`, `.card-x .tag`,
   `.rblock .l`). Con i Global allineati al kit sarebbero comunque sbagliati
   (ink invece di sky/blue/#b9c6e2). Si eredita dal wrapper, come sopra. */
/* ⚠️ CORRETTA il 17/09/2026, dopo la misura sul vivo: `color:inherit` NON va dato a
   tutte e quattro le famiglie. Sulla fascia scura serve (le didascalie erediano
   #b9c6e2 dal blocco e passano da 2,90:1 a 7,26:1). Sulle ETICHETTE no: `.card-x .tag`
   porta un azzurro da pastiglia (#4F79C4) pensato per stare su un fondo colorato, e
   sulle schede bianche della home le cinque etichette sono crollate da 9,82:1 a
   **4,32:1** — sotto la soglia AA di 4,5:1 a 11,5px — e quella della scheda in
   evidenza, su fondo #F8FAFD, a **1,55:1**: praticamente illeggibile.
   Misurato spegnendo e riaccendendo questa regola sulla home pubblicata.
   Quindi: il colore si eredita SOLO dove il fondo e' scuro; font, spaziatura e
   maiuscole — che erano il vero motivo della regola — restano a tutte e quattro. */
.elementor .avatar .elementor-heading-title,
.elementor .no .elementor-heading-title,
.elementor .tag .elementor-heading-title{font:inherit;letter-spacing:inherit;text-transform:inherit}
.elementor .rblock .l .elementor-heading-title,
.elementor .rblock .n .elementor-heading-title{font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit}
/* `.rblock .n` era rimasto fuori dalla correzione del 17/09 mattina: i quattro numeri
   piu' in vista della home (1996 / 25 / 10 / +25, 38px) uscivano in Roboto 600 dai Global
   di Elementor. Il kit dice `.rblock .n{font-family:'Manrope';font-size:38px;color:#fff}`
   e NON dichiara un peso — e cosi' dicono anche il mockup di gruppo e quello di
   Michelangelo. Quindi ereditare non cambia il disegno: lo RIPRISTINA (Manrope 400).
   Verificato sulla home pubblicata: contrasto invariato a 12,45:1. */

/* ---------- l'elenco dei professionisti (famiglia 4) ----------
   46 persone in tre elenchi. La resa NON cambia: e' un elenco e resta un
   elenco (vincolo del committente, 10/09/2026). Cambia solo che ogni persona
   e' un blocco modificabile a clic.
   I soliti tre pareggi: `.people{display:grid}` (0,1,0) contro `.e-con`,
   `.people{gap:40px}` (0,1,0) contro `.e-con.e-flex{gap:var(--flex-gap)}`
   (0,2,0), e `.person`, che nel kit non ha un display e come container
   diventerebbe una colonna flex. */
.people.people{display:grid}
.nc-sec .people.people{gap:40px}
.person.person{display:block}
/* Le iniziali restano un widget html (2 caratteri, aria-hidden, derivate dal
   nome). Il wrapper del widget e' un blocco e spezzerebbe il flusso fra il
   cerchio e il nome: `display:contents` lo toglie di mezzo, e il
   `margin-bottom:14px` di `.person .avatar` torna a fare il suo lavoro. */
.elementor .person>.elementor-widget-html{display:contents}
/* Nome e qualifica stanno in UN solo campo di testo, cosi' il kit continua a
   vestirli con `.person b,.person strong` e `.person span` senza inventare
   classi nuove. Il <p> che TinyMCE aggiunge al primo salvataggio non deve
   portarsi dietro un margine: il ritmo lo da' il `display:block` del kit. */
.elementor .person>.elementor-widget-text-editor{margin:0}
.elementor .person>.elementor-widget-text-editor>p{margin:0}

/* ---------- il pannello con le schede (famiglia 2) ----------
   5 pannelli, 15 schede: i pacchetti di check-up, la fisioterapia, le
   certificazioni sportive. Tre pareggi, tutti gia' noti da .vgrid/.info-grid:
   1) la griglia: `.gl-grid{display:grid}` (0,1,0) pareggia con
      `.e-con{display:var(--display)}` e diventerebbe una colonna flex;
   2) il gap: `.e-con.e-flex{gap:var(--flex-gap)}` e' (0,2,0) e BATTE
      `.gl-grid{gap:14px}` (0,1,0) — il container nasce con --flex-gap:0 e le
      schede si toccherebbero. Serve (0,3,0): si aggancia .nc-sec;
   3) la scheda: `.gl-card{display:block}` c'e' nel kit ma pareggia a (0,1,0),
      e come container Elementor la farebbe flex column.
   ⚠️ Il padding NON si tocca: `.gl-panel{padding:24px}` e `.gl-card{padding:20px}`
   sono regole del kit e restano la fonte unica. */
.gl-grid.gl-grid{display:grid}
.nc-sec .gl-grid.gl-grid{gap:14px}
.gl-card.gl-card{display:block}
/* La trama a pallini e' `position:absolute;inset:0` e deve misurarsi sul
   PANNELLO. Ma il widget html di Elementor e' un wrapper con un box proprio:
   l'inset:0 si misurerebbe su di lui, che e' alto zero, e la trama sparirebbe.
   `display:contents` toglie il wrapper dal flusso e dal contenimento — la
   stessa pezza usata per il drawer nell'header. */
.elementor .gl-panel>.elementor-widget-html{display:contents}
/* Il richiamo in coda alla scheda: `.az` e' inline-flex con gap 7px e la
   freccia era un <svg> inline. Nei campi WYSIWYG non sopravvive, quindi la
   disegna la maschera `a.nc-freccia::after` del blocco qui sotto — che pero'
   nasce per un link nella prosa e porta `margin-left:6px`: dentro `.az` si
   sommerebbe al gap e la freccia starebbe a 13px dal testo invece di 7.
   E lo scorrimento in hover, che nel kit e' su `.az svg`, va sullo pseudo. */
.elementor .gl-card .az::after{margin-left:0;flex:0 0 13px;
  transition:transform .3s var(--ease)}
.elementor .gl-card:hover .az::after{transform:translateX(3px)}
/* il text-editor che porta l'<a class="az"> non deve aggiungere un suo margine:
   il `margin-top:12px` lo da' gia' `.az` */
.elementor .gl-card>.elementor-widget-text-editor:last-child{margin:0}

/* ---------- il .faq come widget `toggle` (famiglia 7) ----------
   25 branche su /visite-specialistiche/ e 10 gruppi di esami su
   /esami-strumentali-diagnostici/: 3.125 caratteri, il pezzo piu' grande del
   debito, ed e' l'elenco delle prestazioni.

   PERCHE' `toggle` E NON `accordion`: il mockup usa <details> SENZA attributo
   `name`, cioe' nessuno aperto al caricamento (0 su 25, misurato) e piu' di uno
   puo' restare aperto. L'accordion classico non sa fare ne' l'una ne' l'altra:
   nel bundle installato (Elementor 4.2.4) `autoExpand:!0` e `hidePrevious:!0`
   sono default del JS e il widget NON espone un controllo per spegnerli —
   `default_state`/`all_collapsed` non esistono in quel bundle (cercati: zero
   riscontri; esistono per il *nested* accordion, che e' un altro widget).
   Il toggle ha gli stessi due default rovesciati. Vedi convert_faq() in
   tools/mockup2elementor.py.

   IL CSS DI ELEMENTOR DA BATTERE — letto in widget-toggle.min.css?ver=4.2.4,
   non supposto. Ogni regola qui sotto e' a +1 classe su quella che deve battere:
     .elementor-tab-title a                                          (0,1,1)
     .elementor-toggle                                               (0,1,0)
     .elementor-toggle .elementor-tab-title                          (0,2,0)
       -> border-block-end · outline:none · padding:15px · line-height:1
     .elementor-toggle .elementor-tab-title.elementor-active          (0,3,0)
     .elementor-toggle ... .elementor-toggle-icon                     (0,3,0)  width:1em
     .elementor-toggle ... .elementor-toggle-icon svg                 (0,3,1)  1em + margin-inline-start:-5px
     .elementor-toggle ... .elementor-toggle-icon.elementor-toggle-icon-right (0,4,0)  float:right
     .elementor-toggle .elementor-tab-content                         (0,2,0)  display:none · padding:15px
     @media(max-width:767px) le due gemelle                           (0,2,0)
   Le media query di Elementor NON aggiungono specificita': una regola (0,3,0)
   senza media query vince a tutte le larghezze contro una (0,2,0) dentro
   @media. Quindi qui non serve nessuna @media, e aggiungerla sarebbe rumore.
   Tutte le catene sono DISCENDENTI: reggono anche se «optimized markup» viene
   spento e ricompare .elementor-widget-container. */

/* il filetto in basso al blocco: era `.faq details:last-of-type{border-bottom}` */
.faq .elementor-toggle{border-bottom:1px solid var(--line)}

/* la riga cliccabile: era <summary>. Il filetto va SOPRA, non sotto. */
.faq .elementor-toggle .elementor-tab-title{
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:17px 0;margin:0;border:0;border-top:1px solid var(--line);
  background:transparent;cursor:pointer;
  font:700 16.5px 'Manrope',sans-serif;line-height:normal;color:var(--ink)}
/* Elementor toglie il filetto alla voce APERTA (`.elementor-active{
   border-block-end:none}`, 0,3,0). Qui il filetto e' in alto e deve restare in
   entrambi gli stati, altrimenti aprendo una voce la riga perde il suo bordo. */
.faq .elementor-toggle .elementor-tab-title.elementor-active{
  border-top:1px solid var(--line);border-bottom:0}
/* Famiglia e colore con !important: sono i due punti fermi del gruppo (blu
   #1C4184 intoccabile, solo sans-serif) e sono anche le due cose che i Global
   Fonts/Colors si riprendono — su questa installazione valgono ancora i default
   di Elementor (Roboto 600, #6EC1E4). Il !important li mette fuori portata
   anche della scheda Stile del widget, che esce a (0,4,0). Stessa pezza delle
   regole di .nc-h1/.nc-h2 piu' sopra. */
.faq .elementor-toggle .elementor-tab-title,
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-title,
.faq .elementor-toggle .elementor-tab-title a{
  font-family:'Manrope',sans-serif !important;font-weight:700 !important;
  color:var(--ink) !important;text-decoration:none}
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-title,
.faq .elementor-toggle .elementor-tab-title a{
  order:1;flex:1 1 auto;min-width:0;font-size:16.5px;line-height:normal}
/* era `.faq summary:hover{color:var(--blue)}`. Il colore va ripetuto sul figlio:
   con il !important qui sopra l'ereditarieta' non basta piu'. */
.faq .elementor-toggle .elementor-tab-title:hover,
.faq .elementor-toggle .elementor-tab-title:hover .elementor-toggle-title,
.faq .elementor-toggle .elementor-tab-title:hover a{color:var(--blue) !important}
/* ⚠️ ACCESSIBILITA': `.elementor-toggle .elementor-tab-title{outline:none}` e'
   nel CSS di Elementor (letto, non supposto) e cancella l'anello di fuoco che
   <summary> aveva di serie. Senza questa riga 35 comandi del sito diventano
   non raggiungibili a vista da tastiera — WCAG 2.1 SC 2.4.7. */
.faq .elementor-toggle .elementor-tab-title:focus-visible{
  outline:2px solid var(--blue);outline-offset:2px}

/* il cerchio col «+» che diventa «−» da aperto (Giuseppe, 16/10/2026: niente
   rotazione a ×, e niente «++»). Era <span class="fx">.
   ⚠️ `order:2` non e' cosmetico: nel DOM l'icona sta PRIMA del titolo e
   Elementor la porta a destra con `float:right`, che su un flex item e' inerte.
   `justify-content:space-between` sulla riga e' la seconda cintura. */
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-icon{
  order:2;float:none;width:26px;height:26px;flex:0 0 26px;
  border-radius:50%;border:1px solid var(--line);background:transparent;
  display:grid;place-items:center;color:var(--blue);text-align:center;
  transition:transform .35s var(--ease),background .35s var(--ease)}
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-icon>span{
  place-items:center;line-height:0}
/* ⛔ `display` NON si dichiara sul `>span` nudo: (0,4,1) batte il `display:none`
   di Elementor su `-opened` (0,4,0) e i due glifi restano visibili insieme, in
   una griglia da 26px — «++» e il segno 3px sopra il centro (misurato sul sito
   il 16/10/2026). Si dichiara solo sullo span DELLO STATO in corso. */
.faq .elementor-toggle .elementor-tab-title:not(.elementor-active) .elementor-toggle-icon-closed,
.faq .elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{
  display:grid}
/* 13x13 come nel mockup. La regola di Elementor e' `height:1em;width:1em`, e 1em
   qui sono i 16.5px del titolo: senza questa riga l'icona sarebbe 16.5px. E il
   suo `margin-inline-start:-5px` va azzerato, o il «+» esce dal cerchio. */
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-icon svg,
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-icon i{
  width:13px;height:13px;font-size:13px;margin-inline-start:0;fill:currentColor}
/* Da aperto: «−», senza rotazione. I due slot hanno ancora lo stesso glifo
   (`fa-plus`) e il «−» e' la sua sola barra orizzontale (y 208-304 su 512 =
   40,6%-59,4%): si ritaglia. Il selettore si ferma da solo se un giorno lo slot
   passera' a `fa-minus` (classe `e-fas-minus`, nessun ritaglio). */
.faq .elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon{
  background:var(--blue-tint)}
.faq .elementor-toggle .elementor-tab-title .elementor-toggle-icon-opened svg.e-fas-plus{
  clip-path:inset(40.6% 0 40.6% 0)}

/* il pannello: era <div class="fa"> */
.faq .elementor-toggle .elementor-tab-content{
  border:0;padding:0 40px 18px 0;color:var(--ink-2);
  font-size:15px;line-height:1.65;max-width:68ch}
/* ⛔ QUI NON SI DICHIARA `display`, PER NESSUN MOTIVO — ne' `height`, ne'
   `overflow`. Nel bundle installato showTabFn/hideTabFn sono slideDown/slideUp
   di jQuery: scrivono display, height, overflow e i padding verticali INLINE
   durante l'animazione, e il `display:none` di Elementor E' lo stato chiuso.
   Una regola di ponte che forzasse display terrebbe aperte tutte e 35 le voci.

   ⛔ E l'elenco dentro il pannello NON ha bisogno di ponte: il widget resta un
   DISCENDENTE di container.prose, quindi `.prose ul` e `.prose ul li` del kit
   fanno ancora match. Per la stessa ragione il widget DEVE stare dentro
   .prose: fuori, l'elenco perde flex, gap, padding e colore e non da' nessun
   errore. La sola differenza e' la spunta, che era un <svg> inline: nei campi
   WYSIWYG non sopravvive, e la disegna la maschera `.nc-lista-check li::before`
   del blocco qui sotto. La classe la mette convert_faq(), nell'HTML del campo. */

/* >>> ICONE-CSS-MASK: generato da tools/genera-icone-css.py — non modificare a mano */
/* Perche' esistono: un SVG inline dentro un campo di testo di Elementor
   sparisce al salvataggio (heading: sanitizzazione WP; WYSIWYG: TinyMCE 4.9.11,
   che non ha `svg` nello schema). Il ricettario prescrive «icone come CSS mask
   con data-URI»; il glifo sta in tools/genera-icone-css.py, copiato dal mockup. */
/* nc-check: la spunta delle liste di prosa: 134 voci nei mockup, tutte con la spunta e nessuna senza, quindi si puo' disegnare in modo uniforme. Il kit la dava con `.prose ul li svg{width:16px;color:var(--blue);margin-top:4px}`. ⚠️ NON si aggancia a `.prose ul li`: dentro .prose vivono anche le liste ancora in widget html (l'SVG ce l'hanno ancora) e gli icon-list di .benefit-list (spunta Font Awesome) — si vedrebbero DUE spunte, misurato in linea il 09/09. La classe la mette il convertitore quando ripulisce la lista. */
.elementor .nc-lista-check li::before{content:"";display:inline-block;width:16px;height:16px;flex:0 0 16px;background:var(--blue);margin-top:4px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M5%2013l4%204L19%207%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-info: l'icona informativa delle note [DA VERIFICARE]. La classe `.dyn-note` resta sul <p> (TinyMCE conserva le classi: verificato) ed e' inline-flex con gap 8px, quindi ::before entra come primo elemento flex dove stava l'SVG. Le 7 note avevano 4 varianti dello stesso glifo (stroke 1.7 e 2): qui la piu' frequente. */
.elementor .dyn-note::before{content:"";display:inline-block;width:14px;height:14px;flex:0 0 14px;background:currentColor;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%3E%3C%2Fcircle%3E%3Cpath%20d%3D%22M12%208h.01M12%2011v5%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-freccia: la freccia in coda a un link nella prosa. La classe la mette il convertitore (sicuro_wysiwyg) quando toglie l'SVG. L'originale portava lo stile inline width:13px;height:13px;vertical-align:-1px: si riproduce identico. */
.elementor a.nc-freccia::after{content:"";display:inline-block;width:13px;height:13px;flex:0 0 13px;background:currentColor;margin-left:6px;vertical-align:-1px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M5%2012h14M13%206l6%206-6%206%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-telefono: chip dell'hero. Impronta del glifo: 4c2a2957 */
.elementor .nc-ic-telefono::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M22%2016.9v3a2%202%200%200%201-2.2%202%2019.8%2019.8%200%200%201-8.6-3%2019.5%2019.5%200%200%201-6-6%2019.8%2019.8%200%200%201-3-8.7A2%202%200%200%201%204.1%202h3a2%202%200%200%201%202%201.7c.1.9.3%201.8.6%202.7a2%202%200%200%201-.4%202.1L8%209.8a16%2016%200%200%200%206%206l1.3-1.3a2%202%200%200%201%202.1-.4c.9.3%201.8.5%202.7.6a2%202%200%200%201%201.9%202.2Z%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-luogo-pieno: chip dell'hero. Impronta del glifo: b298e936 */
.elementor .nc-ic-luogo-pieno::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M12%2021s-7-5.5-7-11a7%207%200%200%201%2014%200c0%205.5-7%2011-7%2011Z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210%22%20r%3D%222.5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-orario: chip dell'hero. Impronta del glifo: 924af99b */
.elementor .nc-ic-orario::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M12%207v5l3.5%202%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-conferma: chip dell'hero. Impronta del glifo: 165229d3 */
.elementor .nc-ic-conferma::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%222%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M8.5%2012.5l2.5%202.5%204.5-5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-branche: chip dell'hero. Impronta del glifo: 2c0deae9 */
.elementor .nc-ic-branche::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M5%203v6a4%204%200%200%200%208%200V3M9%2013v3a5%205%200%200%200%2010%200v-2%22%2F%3E%3Ccircle%20cx%3D%2219%22%20cy%3D%2211%22%20r%3D%222%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-luogo: chip dell'hero. Impronta del glifo: fcdbc34c */
.elementor .nc-ic-luogo::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M12%2021s-7-5.5-7-11a7%207%200%200%201%2014%200c0%205.5-7%2011-7%2011Z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2210%22%20r%3D%222.5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-calendario: chip dell'hero. Impronta del glifo: 0ae7eb21 */
.elementor .nc-ic-calendario::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2217%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M8%202v4M16%202v4M3%209h18%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-cartella: chip dell'hero. Impronta del glifo: 0e367b80 */
.elementor .nc-ic-cartella::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M9%205H7a2%202%200%200%200-2%202v12a2%202%200%200%200%202%202h10a2%202%200%200%200%202-2V7a2%202%200%200%200-2-2h-2%22%2F%3E%3Crect%20x%3D%229%22%20y%3D%223%22%20width%3D%226%22%20height%3D%224%22%20rx%3D%221%22%2F%3E%3Cpath%20d%3D%22M9%2012h6M9%2016h4%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-idoneita: chip dell'hero. Impronta del glifo: 26acf935 */
.elementor .nc-ic-idoneita::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Crect%20x%3D%225%22%20y%3D%223.5%22%20width%3D%2214%22%20height%3D%2217%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M9%203.5V6h6V3.5M9%2012.5l2%202%204-4%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-ecg: chip dell'hero. Impronta del glifo: 441af9f6 */
.elementor .nc-ic-ecg::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M3%2012h4l3-7%204%2014%203-7h4%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-scudo: chip dell'hero. Impronta del glifo: 56f49746 */
.elementor .nc-ic-scudo::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M12%203l7%203v5c0%205-3%208.5-7%2010-4-1.5-7-5-7-10V6l7-3Z%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-palestra: chip dell'hero. Impronta del glifo: 6dca1ee3 */
.elementor .nc-ic-palestra::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M3%2021h18M5%2021V7l7-4%207%204v14M9%2021v-4h6v4%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-referto: chip dell'hero. Impronta del glifo: 70948a6d */
.elementor .nc-ic-referto::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M14%203H7a2%202%200%200%200-2%202v14a2%202%200%200%200%202%202h10a2%202%200%200%200%202-2V8Z%22%2F%3E%3Cpath%20d%3D%22M14%203v5h5M9%2013h6M9%2017h4%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-pagamenti: chip dell'hero. Impronta del glifo: 769d28bb */
.elementor .nc-ic-pagamenti::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Crect%20x%3D%223%22%20y%3D%226%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-riabilitazione: chip dell'hero. Impronta del glifo: 7c8d36c8 */
.elementor .nc-ic-riabilitazione::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M4%2020c2-6%205-9%208-9s6%203%208%209M12%2011V4M9%206.5L12%204l3%202.5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-direzione: chip dell'hero. Impronta del glifo: 8db60264 */
.elementor .nc-ic-direzione::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M12%203l7%203v5c0%204.5-3%208-7%2010-4-2-7-5.5-7-10V6l7-3Z%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-domicilio: chip dell'hero. Impronta del glifo: ac423ade */
.elementor .nc-ic-domicilio::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M3%2011l9-7%209%207M5%209.5V20h14V9.5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-referto-rapido: chip dell'hero. Impronta del glifo: b64ee329 */
.elementor .nc-ic-referto-rapido::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Cpath%20d%3D%22M4%205h16v14H4z%22%2F%3E%3Cpath%20d%3D%22M8%209h8M8%2013h5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-segreteria: chip dell'hero. Impronta del glifo: dc16cc10 */
.elementor .nc-ic-segreteria::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Crect%20x%3D%224%22%20y%3D%224%22%20width%3D%2216%22%20height%3D%2216%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M8%209h8M8%2013h5%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* nc-ic-valigetta: chip dell'hero. Impronta del glifo: e29329c1 */
.elementor .nc-ic-valigetta::before{content:"";display:inline-block;width:15px;height:15px;flex:0 0 15px;background:var(--blue);flex:0 0 15px;--nc-m:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%3E%3Crect%20x%3D%223%22%20y%3D%228%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M8%208V5a2%202%200%200%201%202-2h4a2%202%200%200%201%202%202v3%22%2F%3E%3C%2Fsvg%3E');-webkit-mask:var(--nc-m) center/contain no-repeat;mask:var(--nc-m) center/contain no-repeat}
/* <<< ICONE-CSS-MASK */
