@font-face{font-family:'Bodoni Moda';src:url('https://sartoria.milano.it/wp-content/uploads/wca-bridge-managed/fonts/bodoni-moda-latin-var.woff2') format('woff2');font-weight:400 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Rethink Sans';src:url('https://sartoria.milano.it/wp-content/uploads/wca-bridge-managed/fonts/rethink-sans-latin-var.woff2') format('woff2');font-weight:400 800;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Bodoni Moda fallback';src:local('Georgia'),local('Liberation Serif'),local('Times New Roman'),local('Noto Serif'),local('DejaVu Serif');size-adjust:100.81%;ascent-override:112.1%;descent-override:39.7%;line-gap-override:0.0%;font-display:swap}@font-face{font-family:'Rethink Sans fallback';src:local('Arial'),local('Liberation Sans'),local('Roboto'),local('Helvetica Neue'),local('Helvetica'),local('DejaVu Sans');size-adjust:104.68%;ascent-override:94.6%;descent-override:29.6%;line-gap-override:0.0%;font-display:swap}:root{
--carta:#F5F2ED; --superficie:#FCFAF7; --inchiostro:#241E21; --secondario:#5E5558;
--notte:#2F1119; --accento:#4A1C27; --accento-pieno:#4A1C27; --accento-notte:#A9C8E3;
--riga:rgba(36,30,33,.14);
}/* =================== base =================== */
/* body[class*="elementor-page"]: vale su pagine, articoli E archivi (body.page no, body.elementor-page no) */
body[class*="elementor-page"]{ background:var(--carta); color:var(--inchiostro);
font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-size:17px; line-height:1.625; -webkit-font-smoothing:antialiased; }
body[class*="elementor-page"] h1,body[class*="elementor-page"] h2,body[class*="elementor-page"] h3{
font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif; font-weight:600; letter-spacing:-0.025em; line-height:1.05; margin:0; text-transform:none; font-optical-sizing:auto; }
body[class*="elementor-page"] p{ margin:0; }
/* reset dei contenitori: elenca ANCHE a, details, summary (i contenitori-link si tenevano 10px di serie) */
section.e-con, header.e-con, div.e-con, ul.e-con, li.e-con, figure.e-con, article.e-con,
footer.e-con, nav.e-con, a.e-con, details.e-con, summary.e-con, main.e-con, ol.e-con, figcaption.e-con{ padding:0 !important; }
/* ol e figcaption nel reset dal 17 set 2026: gli elenchi numerati e le didascalie rientravano di 10px (guardia reset) */
ul.e-con, ol.e-con{ list-style:none !important; margin:0 !important; }
body[class*="elementor-page"] a{ text-decoration:none; }
/* il widget stili e' alto 0 ma ha il margine di serie: collassa e diventa vuoto SOPRA la pagina */
body[class*="elementor-page"] .elementor-widget-html{ margin:0 !important; }
/* il reset di Elementor mette overflow:clip sul body e nessuno scroll programmatico passa (ancore) */
body[class*="elementor-page"]{ overflow:visible !important; }/* =================== barra in testa =================== */
/* porta solo cio' che NON sta altrove: perimetro, orari, email (il telefono e' nell'header) */
.wca-topbar.e-con{ background:var(--superficie) !important;
padding:9px max(28px, calc((100% - 1200px) / 2)) !important;
display:flex !important; align-items:center !important; justify-content:space-between !important;
gap:20px !important; flex-wrap:wrap !important; border-bottom:1px solid var(--riga) !important; }
.wca-topbar span{ color:var(--secondario) !important; font-size:13px; letter-spacing:.08em;
text-transform:uppercase; font-weight:600; white-space:nowrap; }
.wca-topbar-dx.e-con{ display:flex !important; flex-direction:row !important; align-items:center !important;
gap:22px !important; width:auto !important; }
.wca-topbar-mail.e-con{ display:inline-flex !important; align-items:center !important; }
.wca-topbar-mail:hover span{ color:var(--accento) !important; }/* =================== header =================== */
.wca-header.e-con{ background:var(--carta) !important;
padding:18px max(40px, calc((100% - 1200px) / 2)) !important;
display:flex !important; align-items:center !important; justify-content:space-between !important;
gap:28px !important; position:relative !important; border-bottom:1px solid var(--riga) !important; }
.wca-header > *{ flex:0 0 auto !important; width:auto !important; min-width:0 !important; }
.wca-marchio.e-con{ display:flex !important; align-items:center !important; gap:12px !important; }
/* il marchio e' un widget e-svg: misura alla classe, niente .e-con nel selettore */
.wca-sigla{ width:44px !important; height:44px !important; flex:0 0 auto !important; display:block !important; line-height:0 !important; }
.wca-sigla svg{ display:block !important; width:100% !important; height:100% !important; }
.wca-nome.e-con{ display:flex !important; flex-direction:column !important; gap:1px !important; }
.wca-nome .n{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif; font-weight:600; font-size:23px; color:var(--inchiostro) !important;
letter-spacing:0; line-height:1.1; text-transform:none; font-optical-sizing:auto; }
.wca-nome .q{ font-size:10.5px; letter-spacing:.19em; text-transform:uppercase; color:var(--secondario) !important; }
/* il menu e' uno shortcode: il wrapper di Elementor nasce width:100% e sfonda l'header */
.wca-nav.e-con{ display:flex !important; align-items:center !important; width:auto !important; }
.wca-nav .elementor-widget-shortcode{ width:auto !important; }
.wca-nav ul.nav-ul{ display:flex !important; flex-direction:row !important; gap:28px !important;
list-style:none !important; margin:0 !important; padding:0 !important; align-items:center; }
.wca-nav ul.nav-ul li{ margin:0 !important; }
.wca-nav ul.nav-ul a{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif !important; font-size:15.5px; font-weight:600; letter-spacing:.03em;
color:var(--inchiostro) !important; border-bottom:2px solid transparent; padding-bottom:4px; display:inline-block;
transition:color 300ms ease-out, border-color 300ms ease-out; }
.wca-nav ul.nav-ul a:hover{ color:var(--accento) !important; border-bottom-color:var(--accento) !important; }
.wca-header-dx.e-con{ display:flex !important; flex-direction:row !important; align-items:center !important; gap:12px !important; }
/* il burger e' un widget html: il wrapper nasce width:0 e il bottone esce dal contenitore */
.wca-header-dx > *{ flex:0 0 auto !important; width:auto !important; display:flex !important; align-items:center !important; }
.wca-htel.e-con{ background:var(--inchiostro) !important; padding:12px 22px !important;
display:inline-flex !important; align-items:center !important; flex:0 0 auto !important;
transition:background 300ms ease-out, transform 300ms ease-out; }
.wca-htel span{ color:#FFFFFF !important; font-size:15px; font-weight:700; letter-spacing:.02em; }
.wca-htel:hover{ background:var(--accento-pieno) !important; transform:translateY(-2px); }
.wca-burger{ display:none; width:44px; height:44px; padding:0; border:0; cursor:pointer; background:transparent;
flex-direction:column; justify-content:center; gap:5px; align-items:center; }
.wca-burger span{ display:block; width:26px; height:2.5px; background:var(--accento-pieno);
transition:transform 300ms ease-out, opacity 300ms ease-out; }
.wca-burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.wca-burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.wca-burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }
/* il menu mobile vive DENTRO l'header ma FUORI dal flusso della riga (da flex item si apriva fuori schermo) */
.wca-mobile.e-con{ display:none !important; background:var(--superficie) !important;
padding:6px 22px 22px !important; flex-direction:column !important; gap:0 !important;
border-bottom:1px solid var(--riga) !important; position:absolute !important; top:100% !important;
left:0 !important; right:0 !important; width:100% !important; z-index:60 !important;
box-shadow:0 18px 40px -18px rgba(0,0,0,.28) !important; }
.wca-mobile.aperto{ display:flex !important; }
.wca-mobile ul.nav-ul{ display:flex !important; flex-direction:column !important; list-style:none !important;
margin:0 !important; padding:0 !important; width:100% !important; }
.wca-mobile ul.nav-ul li{ border-bottom:1px solid var(--riga); }
.wca-mobile ul.nav-ul li:last-child{ border-bottom:0; }
.wca-mobile .elementor-widget-shortcode, .wca-mobile .elementor-shortcode{ width:100% !important; display:block !important; }
.wca-mobile ul.nav-ul a{ display:block; padding:16px 2px; font-size:18px; font-weight:600;
color:var(--inchiostro) !important; text-align:center !important; }
.wca-mobile ul.nav-ul a:hover{ color:var(--accento) !important; }
.wca-mobile-tel.e-con{ margin-top:18px !important; background:var(--inchiostro) !important; padding:15px 20px !important;
display:flex !important; flex-direction:column !important; gap:2px !important; align-items:center !important; width:100% !important; }
/* il tema colora ogni ancora: si vince alzando la specificita' (tag + classe) */
a.wca-mobile-tel span.et{ color:#E3D5D8 !important; font-size:11.5px; letter-spacing:.16em; text-transform:uppercase; }
a.wca-mobile-tel span.nu{ color:#FFFFFF !important; font-size:23px; font-weight:700; font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-variant-numeric:tabular-nums; }/* =================== bottoni (pill o sharp, mai 6px di raggio) =================== */
.wca-btn.e-con{ background:var(--accento-pieno) !important; padding:16px 32px !important;
display:inline-flex !important; align-items:center !important; flex:0 0 auto !important; width:auto !important;
transition:background 300ms ease-out, transform 300ms ease-out; }
.wca-btn span{ color:#FFFFFF !important; font-size:14px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.wca-btn:hover{ transform:translateY(-2px); filter:brightness(.92); }
.wca-btn-tel.e-con{ background:transparent !important; border:2px solid var(--inchiostro) !important;
padding:12px 26px !important; display:inline-flex !important; flex-direction:column !important;
align-items:flex-start !important; flex:0 0 auto !important; width:auto !important;
transition:background 300ms ease-out, transform 300ms ease-out; }
.wca-btn-tel .et{ font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--secondario) !important; }
.wca-btn-tel .nu{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-variant-numeric:tabular-nums; font-size:22px; font-weight:700; color:var(--inchiostro) !important; }
.wca-btn-tel:hover{ background:var(--superficie) !important; transform:translateY(-2px); }
.wca-cta-riga.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important;
align-items:center !important; gap:16px !important; width:auto !important; }
.wca-cta-riga > *{ width:auto !important; flex:0 0 auto !important; }/* =================== testata lunga (18 set 2026, misurata sul sito) ===================
Sotto 1600 il sottotitolo del marchio lascia il posto, margini e voci si stringono; sotto
1200px la testata non ci sta comunque e si passa al burger, come a 900. */
@media (max-width:1600px){
.wca-nome .q{ display:none !important; }
.wca-header.e-con{ padding-left:max(40px, calc((100% - 1360px) / 2)) !important;
padding-right:max(40px, calc((100% - 1360px) / 2)) !important; }
.wca-nav ul.nav-ul{ gap:22px !important; }
}
@media (max-width:1200px){
.wca-nav.e-con{ display:none !important; }
.wca-burger{ display:flex; }
.wca-htel.e-con{ display:none !important; }
}
/* =================== 900: si passa al burger =================== */
@media (max-width:900px){
.wca-nav.e-con{ display:none !important; }
.wca-burger{ display:flex; }
.wca-header.e-con{ padding:14px 20px !important; }
.wca-htel.e-con{ display:none !important; }
}
/* =================== 600 =================== */
@media (max-width:600px){
.wca-topbar.e-con{ padding:9px 22px !important; justify-content:center !important; text-align:center !important; gap:0 !important; }
.wca-topbar .zona{ display:none !important; }
.wca-topbar-dx.e-con{ gap:16px !important; justify-content:center !important; flex-wrap:nowrap !important; }
.wca-topbar span{ font-size:12px; letter-spacing:.06em; }
.wca-header.e-con{ padding:14px 22px !important; }
/* a 375 i flex-row coi figli che non si restringono sforano: la CTA va in colonna */
.wca-cta-riga.e-con{ flex-direction:column !important; align-items:stretch !important; width:100% !important; gap:12px !important; }
.wca-cta-riga > *{ width:100% !important; }
.wca-btn.e-con, .wca-btn-tel.e-con{ width:100% !important; justify-content:center !important; align-items:center !important; }
body[class*="elementor-page"] a, body[class*="elementor-page"] p{ overflow-wrap:anywhere; }
}/* =================== sezioni (chiara / alta / scura) =================== */
.wca-sez.e-con{ display:block !important; }
/* ⚠️ IL RESPIRO DENTRO LA SEZIONE (9 set 2026, gate del responsabile su pellet.roma.it,
cinque pagine). Qui c'era `gap:0`, e ogni blocco nasceva ATTACCATO al successivo: il
pulsante appiccicato alla foto sotto, la tabella incollata alla scena, le righe del
conto senza aria prima del pulsante. Non era un difetto di una pagina, era la cornice.
Il respiro si dichiara UNA volta qui, e chi ha bisogno di meno lo stringe da se'. */
.wca-sez-wrap.e-con{ display:flex !important; flex-direction:column !important; max-width:1200px !important;
margin:0 auto !important; padding:104px 40px !important; gap:44px !important; }
.wca-sez.chiara.e-con{ background:var(--carta) !important; }
.wca-sez.alta.e-con{ background:var(--superficie) !important; }
.wca-sez.scura.e-con{ background:var(--notte) !important; }
.wca-testa.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important;
gap:0 !important; margin-bottom:0 !important; max-width:76ch !important; }
.wca-occhiello{ font-size:12.5px !important; letter-spacing:.22em !important; text-transform:uppercase !important;
color:var(--accento) !important; font-weight:600 !important; margin-bottom:18px !important; }
.wca-h2{ font-size:44px !important; color:var(--inchiostro) !important; margin-bottom:18px !important; }
.wca-intro{ font-size:19px; color:var(--secondario) !important; line-height:1.6; max-width:66ch; }
.wca-intro b{ color:var(--inchiostro); font-weight:600; }
/* una classe di testo deve reggere su ENTRAMBI i fondi: le varianti scure stanno qui una volta */
.wca-sez.scura .wca-h2{ color:#FFFFFF !important; }
.wca-sez.scura .wca-occhiello{ color:var(--accento-notte) !important; }
.wca-sez.scura .wca-intro{ color:#E3D5D8 !important; }
.wca-sez.scura .wca-intro b{ color:#FFFFFF; }
.wca-nota{ font-size:15.5px; line-height:1.55; }
.wca-sez.chiara .wca-nota, .wca-sez.alta .wca-nota{ color:#3A3234 !important; }
.wca-sez.scura .wca-nota{ color:#E3D5D8 !important; }/* =================== apertura delle pagine interne: la RISPOSTA, non la scena =================== */
.wca-apertura.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; max-width:74ch !important; }
.wca-h1{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif !important; font-size:56px !important; font-weight:600 !important; line-height:1.05 !important;
letter-spacing:-.02em; color:var(--inchiostro) !important; margin-bottom:22px !important; max-width:20ch; }
.wca-h1 .ris{ color:var(--accento) !important; display:block; }
.wca-risposta{ font-size:21px !important; line-height:1.55 !important; color:#2C2427 !important; max-width:62ch; margin-bottom:26px !important; }
.wca-risposta b{ color:var(--inchiostro) !important; font-weight:700; }/* =================== elenco con il segno =================== */
.wca-elenco.e-con{ display:flex !important; flex-direction:column !important; gap:9px !important; list-style:none !important;
width:100% !important; border-top:1px solid var(--riga) !important; padding-top:18px !important; }
/* per CLASSE, non solo per posizione: la guardia dei contenitori senza display
cerca `.wca-voce-el`, e `.wca-elenco > li` da solo non gliela nominava mai. */
.wca-elenco > li, .wca-voce-el.e-con{ display:flex !important; flex-direction:row !important; align-items:flex-start !important; gap:10px !important; }
/* La stessa cosa detta sulla CLASSE della voce: il contenitore atomic nasce flex-row
e qui la riga e' voluta (pallino + testo), ma va DICHIARATA, se no la guardia del
display non distingue una riga voluta da una colonna dimenticata. */
.wca-voce-el.e-con{ display:flex !important; flex-direction:row !important; }
.wca-elenco .seg{ color:var(--accento) !important; font-weight:700; flex:0 0 auto; }
.wca-elenco .vv{ font-size:15.5px; color:#3A3234 !important; line-height:1.5; }
.wca-sez.scura .wca-elenco .vv{ color:#E3D5D8 !important; }
.wca-sez.scura .wca-elenco .seg{ color:var(--accento-notte) !important; }
.wca-sez.scura .wca-elenco.e-con{ border-top-color:rgba(255,255,255,.18) !important; }/* =================== le scene: figura (con didascalia), scena-lato, fascia 21/9 =================== */
/* UNA fascia a tutta larghezza per pagina; la scena dentro la sezione si ferma a 900px */
.wca-figura.e-con{ display:flex !important; flex-direction:column !important; gap:10px !important; width:100% !important;
max-width:900px !important; margin:0 !important; }
.wca-figura .wca-foto{ width:100% !important; }
.wca-figura img.wca-foto{ width:100%; height:auto; aspect-ratio:3/2; object-fit:cover; display:block; }
.wca-figura.larga img.wca-foto{ aspect-ratio:16/9; }
.wca-didascalia{ font-size:14px; color:var(--secondario) !important; line-height:1.5; border-left:3px solid var(--accento);
padding-left:12px; max-width:60ch; }
.wca-scena-lato.e-con{ display:grid !important; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) !important;
gap:48px !important; align-items:start !important; width:100% !important; }
.wca-scena-lato > *{ min-width:0 !important; }
.wca-fascia.e-con{ display:block !important; width:100% !important; overflow:hidden !important; }
.wca-fascia img{ width:100%; height:auto; aspect-ratio:21/9; object-fit:cover; display:block; }/* =================== FAQ native: details/summary =================== */
.wca-faq.e-con{ display:flex !important; flex-direction:column !important; gap:0 !important; border-top:1px solid var(--riga) !important; }
.wca-domanda.e-con{ display:block !important; border-bottom:1px solid var(--riga) !important; padding:0 !important; }
.wca-domanda > summary{ display:flex !important; align-items:center !important; justify-content:space-between !important;
gap:20px !important; cursor:pointer; padding:22px 4px !important; list-style:none; }
.wca-domanda > summary::-webkit-details-marker{ display:none; }
.wca-domanda > summary::after{ content:"+"; font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-size:26px; color:var(--accento);
flex:0 0 auto; line-height:1; transition:transform 300ms ease-out; }
.wca-domanda[open] > summary::after{ transform:rotate(45deg); }
.wca-domanda .qq{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-size:18.5px; font-weight:600; color:var(--inchiostro) !important; line-height:1.25; }
.wca-domanda .rr{ font-size:16.5px; color:#3A3234 !important; line-height:1.65; padding:0 4px 24px !important; max-width:82ch; }/* =================== preventivo: recapiti + modulo (sezione SCURA) =================== */
.wca-prev.e-con{ display:grid !important; grid-template-columns:minmax(0,0.9fr) minmax(0,1.1fr) !important;
gap:56px !important; align-items:start !important; }
.wca-prev > *{ min-width:0 !important; }
.wca-prev-info.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:0 !important; }
.wca-prev-info.e-con > *, .wca-prev-info .e-con > *{ padding-left:0 !important; padding-right:0 !important; }
.wca-recapito.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:3px !important;
margin-top:22px !important; width:100% !important; padding:18px 0 0 0 !important; border-top:1px solid rgba(255,255,255,.16) !important; }
.wca-recapito > *{ padding-left:0 !important; margin-left:0 !important; }
.wca-recapito .et{ font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:#E3D5D8 !important; font-weight:600; }
.wca-recapito .vv{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-variant-numeric:tabular-nums; font-size:22px; color:#FFFFFF !important; font-weight:600; }
a.wca-recapito:hover .vv{ color:var(--accento-notte) !important; }
.wca-form.e-con{ background:var(--superficie) !important; padding:34px 32px 30px !important; display:block !important; }
.wca-form .elementor-widget-shortcode, .wca-form .elementor-shortcode{ width:100% !important; }/* =================== briciole (
, senza parallela prendono il padding delle sezioni) =================== */
.wca-briciole.e-con{ background:var(--superficie) !important; border-bottom:1px solid var(--riga) !important; display:block !important; }
.wca-briciole-wrap.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important; align-items:center !important;
gap:9px !important; max-width:1200px !important; margin:0 auto !important; padding:14px 40px !important; list-style:none !important; }
.wca-briciole-wrap > *{ width:auto !important; flex:0 0 auto !important; }
/* l'ultima voce (la pagina corrente) puo' andare a capo: il titolo lungo di un articolo, a flex:0 0 auto, portava
la pagina a 438px su 375 (sartoria.milano.it, 17 set 2026, 12 articoli su 16). */
.wca-briciole-wrap > *:last-child{ flex:0 1 auto !important; min-width:0 !important; }
/* le didascalie non si sbiadiscono: il tema porta le figcaption a opacity .75 e la dicitura in grigio scendeva a
contrasto 3,64 (Lighthouse, 29 pagine di sartoria.milano.it, 17 set 2026) */
body[class*="elementor-page"] figcaption{ opacity:1 !important; }
.wca-briciole-wrap > *:last-child span{ overflow-wrap:anywhere; }
.wca-briciole span{ font-size:13.5px; color:var(--secondario) !important; }
.wca-briciole a span{ color:var(--accento) !important; }
.wca-briciole .sep{ color:rgba(0,0,0,.35) !important; }/* =================== sorelle: schede che promettono la pagina che c'e' =================== */
.wca-sorelle.e-con{ display:grid !important; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)) !important;
gap:20px !important; list-style:none !important; }
.wca-sorella.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important;
background:var(--superficie) !important; border:1px solid var(--riga) !important; padding:24px 26px 26px !important;
gap:0 !important; width:auto !important; transition:transform 300ms ease-out, border-color 300ms ease-out; }
.wca-sorella:hover{ transform:translateY(-4px); border-color:var(--accento) !important; }
.wca-sorella .tt{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-size:18px; font-weight:600; color:var(--inchiostro) !important; margin-bottom:7px !important; }
.wca-sorella .dd{ font-size:15px; color:#3A3234 !important; line-height:1.5; }
.wca-sorella .vai{ margin-top:12px !important; font-size:13px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--accento) !important; }/* =================== tabella nativa: thead/tbody/tr/th/td sono CONTENITORI col tag =================== */
.wca-tab.e-con{ display:table !important; width:100% !important; table-layout:fixed !important; border-collapse:collapse !important;
background:var(--superficie) !important; border:1px solid var(--riga) !important; }
.wca-thead.e-con{ display:table-header-group !important; }
.wca-tbody.e-con{ display:table-row-group !important; }
.wca-tr.e-con{ display:table-row !important; }
.wca-th.e-con, .wca-td.e-con{ display:table-cell !important; padding:16px 20px !important; vertical-align:top !important;
border-bottom:1px solid var(--riga) !important; text-align:left !important; }
.wca-th.e-con{ background:var(--notte) !important; }
.wca-th span{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-size:12.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:#FFFFFF !important; }
.wca-td span{ font-size:16px; color:#3A3234 !important; line-height:1.5; }
.wca-tr:nth-child(even) .wca-td{ background:var(--carta) !important; }/* =================== piede: asimmetrico, P.IVA visibile, titoli di colonna h2 =================== */
.wca-piede.e-con{ background:var(--notte) !important; display:block !important; }
.wca-piede-wrap.e-con{ display:grid !important; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) !important;
gap:48px !important; max-width:1200px !important; margin:0 auto !important; padding:72px 40px 40px !important; }
.wca-piede-wrap > *{ min-width:0 !important; }
.wca-piede-col.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:0 !important; }
.wca-piede-col > *{ padding-left:0 !important; padding-right:0 !important; }
.wca-piede h2{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-size:13px !important; font-weight:600 !important; letter-spacing:.18em !important;
text-transform:uppercase; color:var(--accento-notte) !important; margin-bottom:18px !important; padding-top:4px !important; line-height:1.2 !important; }
.wca-piede .nome{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif; font-size:24px; font-weight:600; color:#FFFFFF !important; text-transform:none; letter-spacing:0; }
.wca-piede .paglia{ font-size:15.5px; color:#E3D5D8 !important; line-height:1.6; max-width:46ch; margin-bottom:20px !important; }
.wca-piede-editore.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important; align-items:baseline !important;
gap:6px 22px !important; width:100% !important; padding:16px 0 0 0 !important; margin:0 !important; border-top:1px solid rgba(255,255,255,.14) !important; }
.wca-piede-editore .et{ font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--accento-notte) !important; font-weight:600; }
.wca-piede-editore .dato{ font-size:14.5px; color:#EFE6E7 !important; }
.wca-piede-voci.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:9px !important;
list-style:none !important; width:100% !important; }
.wca-piede-voci > li{ display:flex !important; align-items:flex-start !important; justify-content:flex-start !important; width:100% !important; }
.wca-piede-voci a span, .wca-piede .dato{ font-size:15px; color:#EFE6E7 !important; text-align:left !important; }
.wca-piede-voci a:hover span{ color:var(--accento-notte) !important; }
.wca-piede-basso.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important; align-items:center !important;
gap:10px 26px !important; max-width:1200px !important; margin:0 auto !important; padding:22px 40px 40px !important;
border-top:1px solid rgba(255,255,255,.14) !important; }
.wca-piede-basso > *{ width:auto !important; flex:0 0 auto !important; display:flex !important; align-items:center !important; }
.wca-piede-basso span, .wca-piede-basso a span{ font-size:13.5px; color:#E3D5D8 !important; line-height:1.4 !important; }
.wca-piede-basso a:hover span{ color:#FFFFFF !important; }/* =================== 1024 / 600 =================== */
@media (max-width:1024px){
.wca-sez-wrap.e-con{ padding:72px 32px !important; }
.wca-h2{ font-size:38px !important; }
.wca-h1{ font-size:44px !important; }
.wca-scena-lato.e-con{ grid-template-columns:minmax(0,1fr) !important; gap:28px !important; }
.wca-prev.e-con{ grid-template-columns:minmax(0,1fr) !important; gap:32px !important; }
.wca-piede-wrap.e-con{ grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important; }
}
@media (max-width:600px){
.wca-sez-wrap.e-con{ padding:48px 22px 52px !important; gap:32px !important; }
.wca-h2{ font-size:31px !important; }
.wca-h1{ font-size:36px !important; max-width:none; }
.wca-risposta{ font-size:18px !important; }
.wca-piede-wrap.e-con{ grid-template-columns:minmax(0,1fr) !important; gap:32px !important; padding:56px 22px 28px !important; }
.wca-piede-basso.e-con{ padding:18px 22px 34px !important; }
.wca-briciole-wrap.e-con{ padding:12px 22px !important; }
/* le larghezze di colonna dichiarate con :nth-child(N) si resettano con la STESSA forma */
.wca-tab.e-con, .wca-thead.e-con, .wca-tbody.e-con, .wca-tr.e-con, .wca-th.e-con, .wca-td.e-con{ display:block !important; width:100% !important; }
.wca-tr > .wca-td:nth-child(n), .wca-tr > .wca-th:nth-child(n){ width:100% !important; }
.wca-thead.e-con{ display:none !important; }
.wca-tr.e-con{ border-bottom:2px solid var(--riga) !important; padding:10px 0 !important; }
}/* =================== sartoria.milano.it: cure di sito (17 set 2026) =================== */
/* D4 AI Act: dal 17 set 2026 niente dicitura visibile, solo il metadato IPTC nel file (guardia g_dicitura_ia) */
/* il segno di gesso sotto le parole e' stato TOLTO al gate dell'hero (17 set 2026): il responsabile
lo ha giudicato non conforme allo stile del sito. Non si rimette. */
/* ⚠️ IL CSS AGGIUNTIVO DEL VECCHIO SITO (Customizer, , 8.989 caratteri, letto il
17 set 2026 sulla lavorazione 189): body{font-family:Raleway !important}, h1-h6{Playfair Display !important},
e i bottoni `button:not(x):not(x):not(x):not(x)` (0,4,1) oro con !important. Vinceva sul guscio: testo
in Raleway e burger oro, misurato coi computed. Serve ancora al sito vivo, quindi qui si battono le sue
regole e il CSS aggiuntivo si SVUOTA al trasferimento (debito della tappa 6, insieme al suo @import di
Google Fonts). Specificita' contata contro il selettore da battere, non a occhio. */
body[class*="elementor-page"]{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif !important; line-height:1.625 !important; }
body[class*="elementor-page"] h1, body[class*="elementor-page"] h2, body[class*="elementor-page"] h3,
body[class*="elementor-page"] h4, body[class*="elementor-page"] h5, body[class*="elementor-page"] h6{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif !important; }
body[class*="elementor-page"] .wca-piede h2{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif !important; }
body[class*="elementor-page"] .wca-header-dx button.wca-burger.wca-burger.wca-burger{ background:transparent !important;
border:0 !important; padding:0 !important; font-size:0 !important; letter-spacing:0 !important; color:inherit !important; }
/* i contenitori-link non si sottolineano (il tema sottolinea i link e i figli span ereditano) */
body[class*="elementor-page"] a.e-con, body[class*="elementor-page"] a.e-con *{ text-decoration:none !important; }
/* il pulsante del modulo: il CSS aggiuntivo vecchio lo fa oro con `button:not(x)x4` (0,4,1) !important.
Qui 0,5,3 !important. Stesso trattamento per input[type=submit]. */
body[class*="elementor-page"] .wca-sez .wca-prev .wca-form form button,
body[class*="elementor-page"] .wca-sez .wca-prev .wca-form form input[type="submit"]{ background:var(--accento-pieno) !important;
border:2px solid var(--accento-pieno) !important; color:#FFFFFF !important; font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif !important; border-radius:0 !important;
letter-spacing:.1em !important; transition:filter 300ms ease-out, transform 300ms ease-out !important; }
body[class*="elementor-page"] .wca-sez .wca-prev .wca-form form button:hover,
body[class*="elementor-page"] .wca-sez .wca-prev .wca-form form input[type="submit"]:hover{ filter:brightness(1.25); transform:translateY(-2px); }
/* le cifre si leggono in colonna */
.wca-td span, .wca-recapito .vv, .wca-btn-tel .nu{ font-variant-numeric:tabular-nums; }/* =================== FORME DI SITO (mattoncini.py), salite dalla home il 17 set 2026 =================== */
/* Nate nella home, usate anche dalle money del gruppo 1: il CSS vive qui una volta sola. */
.wca-sm-nota-fonte{ font-size:14px !important; color:var(--secondario) !important; border-top:1px solid var(--riga); padding-top:16px !important; max-width:90ch; }
.wca-sez.scura .wca-sm-nota-fonte{ color:#E3D5D8 !important; border-top-color:rgba(255,255,255,.16); }
/* le forchette in Bodoni: il trattino nel carattere del testo (mattoncini.forbice) */
.wca-sm-tr{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif; font-style:normal; font-weight:500; padding:0 .06em; }
/* il tagliando: carta sagomata, non tabella */
.wca-sm-tagliandi.e-con{ display:grid !important; grid-template-columns:repeat(4, minmax(0,1fr)) !important; gap:22px !important; list-style:none !important; align-items:start !important; }
.wca-sm-tagliandi > *{ min-width:0 !important; }
.wca-sm-tagliando.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:6px !important;
background:var(--superficie) !important; border:1px solid var(--riga) !important; border-top:2px dashed var(--accento) !important;
padding:22px 22px 24px !important; position:relative !important; transition:transform 300ms ease-out, box-shadow 300ms ease-out; }
.wca-sm-tagliandi.sfalsati > .wca-sm-tagliando:nth-child(even).e-con{ margin-top:34px !important; }
.wca-sm-tagliando:hover{ transform:translateY(-4px); box-shadow:0 25px 50px -12px rgba(47,17,25,.22); }
.wca-sm-tagliando .num{ font-size:11.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--secondario) !important; font-weight:600; }
.wca-sm-tagliando .lav{ font-size:18px; font-weight:700; color:var(--inchiostro) !important; line-height:1.3; }
.wca-sm-tagliando .cifra{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif; font-size:34px; color:var(--accento) !important; line-height:1.1; margin-top:6px; font-variant-numeric:lining-nums; }
.wca-sm-tagliando .cosa{ font-size:14.5px; color:#3A3234 !important; line-height:1.5; }
.wca-sm-tagliando .vai{ margin-top:8px; font-size:12.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--accento) !important; }
/* le pillole: una riga che va a capo, i figli larghi quanto il loro testo (guardia «riga») */
.wca-sm-fattori.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important; gap:10px !important; list-style:none !important; }
.wca-sm-fattore.e-con{ display:block !important; width:auto !important; flex:0 0 auto !important; border:1px solid var(--riga) !important; padding:8px 14px !important; background:var(--superficie) !important; }
.wca-sm-fattore span{ font-size:14.5px; color:var(--inchiostro) !important; }
.wca-sm-link-riga.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important; gap:12px 28px !important; }
.wca-sm-link.e-con{ display:inline-flex !important; width:auto !important; }
.wca-sm-link span{ font-size:14px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--accento) !important; border-bottom:1px solid currentColor; }
/* il listino: righe con la cifra a destra */
.wca-sm-listino.e-con{ display:flex !important; flex-direction:column !important; gap:0 !important; list-style:none !important; width:100% !important; }
.wca-sm-riga.e-con{ display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; gap:24px !important; align-items:baseline !important;
padding:18px 0 !important; border-bottom:1px solid var(--riga) !important; }
.wca-sm-riga-txt.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:0 !important; }
.wca-sm-riga .cosa{ font-size:17.5px; font-weight:600; color:var(--inchiostro) !important; }
.wca-sm-riga .nota{ display:block; font-size:14px; font-weight:400; color:var(--secondario) !important; margin-top:2px; }
.wca-sm-riga .da{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif; font-size:30px; color:var(--accento) !important; white-space:nowrap; }
/* la scena con la didascalia sotto (figcaption) */
.wca-sm-fig.e-con{ display:flex !important; flex-direction:column !important; align-items:stretch !important; gap:10px !important; margin:0 !important; width:100% !important; }
.wca-sm-fig .wca-foto{ width:100% !important; overflow:hidden !important; }
.wca-sm-fig img.wca-foto{ width:100%; height:auto; object-fit:cover; display:block; transition:filter 500ms ease-out; }
.wca-sm-fig:hover img.wca-foto{ filter:saturate(1.06) brightness(1.03); }
.wca-sm-fig-cap.e-con{ display:flex !important; flex-direction:row !important; justify-content:space-between !important; align-items:baseline !important; gap:16px !important; width:100% !important; }
.wca-sm-fig-cap .tt{ font-family:"Bodoni Moda","Bodoni Moda fallback","Georgia",sans-serif; font-style:italic; font-size:16.5px; color:var(--inchiostro) !important; line-height:1.3; }
.wca-sez.scura .wca-sm-fig-cap .tt{ color:#FFFFFF !important; }
/* =================== le zone: Milano e i comuni del modulo (home, contatti) =================== */
.wca-sm-zone.e-con{ display:flex !important; flex-direction:row !important; flex-wrap:wrap !important; gap:10px 12px !important; list-style:none !important; }
.wca-sm-zona.e-con{ display:block !important; width:auto !important; flex:0 0 auto !important; padding:9px 16px !important; border:1px solid var(--riga) !important; background:var(--carta) !important; }
.wca-sm-zona.milano.e-con{ background:var(--accento) !important; border-color:var(--accento) !important; }
.wca-sm-zona span{ font-size:15px; color:var(--inchiostro) !important; }
.wca-sm-zona.milano span{ color:#FFFFFF !important; font-weight:700; }/* la fascia 21:9 */
.wca-sm-fascia.e-con{ display:block !important; position:relative !important; width:100% !important; overflow:hidden !important; }
.wca-sm-fascia img.wca-foto{ width:100%; height:auto; aspect-ratio:21/9; object-fit:cover; display:block; }
@media (max-width:1024px){
.wca-sm-tagliandi.e-con{ grid-template-columns:repeat(2, minmax(0,1fr)) !important; }
}
@media (max-width:600px){
.wca-sm-tagliandi.e-con{ grid-template-columns:minmax(0,1fr) !important; }
.wca-sm-tagliandi.sfalsati > .wca-sm-tagliando:nth-child(n).e-con{ margin-top:0 !important; }
.wca-sm-riga.e-con{ grid-template-columns:minmax(0,1fr) !important; gap:4px !important; }
.wca-sm-fascia img.wca-foto{ aspect-ratio:16/9; }
}/* =================== MAPPA DEL SITO =================== */
.wca-mp-testa.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:0 !important; }
.wca-mp-testa .wca-h1{ font-size:clamp(44px, 4.2vw, 60px) !important; margin-bottom:12px !important; }
.wca-mp-colonne.e-con{ display:grid !important; grid-template-columns:repeat(3, minmax(0,1fr)) !important; gap:48px !important; align-items:start !important; }
.wca-mp-colonne > *{ min-width:0 !important; }
.wca-mp-gruppo.e-con{ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:10px !important;
border-top:2px solid var(--inchiostro) !important; padding-top:16px !important; }
.wca-mp-gruppo h2{ font-size:26px !important; color:var(--inchiostro) !important; }
body[class*="elementor-page"] .wca-mp-gruppo h3{ font-family:"Rethink Sans","Rethink Sans fallback",system-ui,sans-serif !important; font-size:13px !important; letter-spacing:.16em !important;
text-transform:uppercase; font-weight:600 !important; color:var(--secondario) !important; margin-top:12px !important; }
.wca-mp-lista.e-con{ display:flex !important; flex-direction:column !important; gap:0 !important; list-style:none !important; width:100% !important; }
.wca-mp-voce.e-con{ display:block !important; border-bottom:1px solid var(--riga) !important; }
.wca-mp-a.e-con{ display:block !important; padding:10px 0 !important; width:100% !important; }
.wca-mp-a span{ font-size:16px; color:var(--inchiostro) !important; line-height:1.4; }
.wca-mp-a:hover span{ color:var(--accento) !important; }
@media (max-width:900px){ .wca-mp-colonne.e-con{ grid-template-columns:minmax(0,1fr) !important; } }/* ============ PREVENZIONE COMUNE (guscio_comune.py) ============
Difetti che il crawl gemello prende su OGNI pagina, e che si chiudono una volta
sola nella cornice. Ogni riga qui dentro ha un finding dietro, misurato. *//* --- TOCCABILI SOTTO 24x24 (WCAG 2.5.8, ed e' un finding del crawl).
Misurato il 2 set su affissioni: il link email era 158x20 e la briciola «Home»
34x22. La cura non e' ingrandire il testo, che sposterebbe il disegno: e' dare
AREA al bersaglio con padding verticale e min-height, lasciando il font com'e'.
Si esclude cio' che non e' nostro (il banner cookie ha le sue classi bc-*). */
a:not(.bc-privacy-readmore):not([class*="bc-"]),
button:not([class*="bc-"]),
summary{ min-height:24px; }
/* i link INLINE dentro un paragrafo non si toccano: allargarli spezzerebbe la riga.
Si allargano solo quelli che stanno per conto loro (blocco, flex o griglia). */
a:not([class*="bc-"]):where(.e-con, [class*="af-"], [class*="wca-"]){
display:flex; align-items:center; }
/* --- I LINK DENTRO LE LABEL DI UN MODULO.
`min-height` non li tocca, perche' su un elemento INLINE non ha effetto, e la regola
che mette `display:flex` sopra prende solo i link con le nostre classi. `inline-block`
piu' padding verticale da' l'area senza spezzare la riga della label, che con `flex`
andrebbe a capo.
⚠️ QUESTA REGOLA E' PREVENZIONE, NON LA CURA DI UN DIFETTO MISURATO, e lo scrivo
perche' quando l'ho aggiunta credevo il contrario. Il crawl di pellet.roma.it (9 set
2026) segnalava un bersaglio 97x16 su 12 pagine, «Leggi la privacy»: sono andato a
vedere il markup e quel link ha classe `bc-privacy-readmore`, cioe' e' del BANNER
COOKIE di automa-manager, ed e' escluso di proposito due righe sopra. Il difetto non
era nostro e questa regola non lo tocca: resta per il caso vero, un link dentro una
label nostra. */
label a:not([class*="bc-"]){ display:inline-block; padding-block:4px; }/* i bersagli piccoli e isolati (email, telefono, briciole, voci di piede) prendono
l'area con lo pseudo-elemento, che NON sposta il testo di una virgola */
.wca-tocc{ position:relative; }
.wca-tocc::after{ content:""; position:absolute; left:0; right:0; top:50%;
transform:translateY(-50%); height:24px; }/* --- LINK DENTRO IL TESTO: colore ereditato e area toccabile.
Misurato il 2 set: i link inline aggiunti nei paragrafi uscivano a 1,38 di
contrasto (il colore glielo dava il tema, su un fondo che non e' il suo) e alti
21px. `color:inherit` e' la cura che vale ovunque: il testo attorno ha gia' il
contrasto verificato, quindi il link ce l'ha per costruzione, su fondo chiaro
come su fondo scuro. La sottolineatura resta, o il link non si distingue piu'.
Il padding verticale non sposta la riga ma allarga il rettangolo del bersaglio. */
/* ⚠️ `!important` su padding e decorazione non e' esagerazione: senza, il reset di
piattaforma li azzera e il link resta alto 21px e senza sottolineatura (misurato
sul vivo il 2 set, prima con la regola debole e poi con questa). */
/* ⚠️ `label a` e `.campo a` sono qui dal 7 set 2026, e il perche' e' il buco del
foglio comune: la cura sopra esisteva gia' da cinque giorni, ma i link dentro le
spunte del modulo (l'informativa privacy e la policy) non stanno in un p, in uno
span, in un li ne' in un td: stanno dentro una , che nell'elenco non
c'era. Risultato misurato con Lighthouse mobile su affissioni.roma.it: magenta
#a8005e sul testo #17161b, 2,42:1 contro il 3:1 minimo, e nessuna sottolineatura
(axe link-in-text-block, uno dei due soli falliti di accessibilita').
La lezione vale piu' della riga: una cura in libreria non e' una cura applicata
finche' non si e' cercato il suo selettore nell'HTML SERVITO della pagina. */
/* ⚠️ `:not(.e-con)` su li e td (17 set 2026, elettricista.roma.it): un bottone o una scheda sono un che CONTIENE blocchi, non un link nel testo. Dentro una la regola li
sottolineava (i tre bottoni dei canali di Contatti): il banco di resa ora lo misura. */
p a, span a, li a:not(.e-con), td a:not(.e-con), label a, .campo a{ color:inherit !important;
text-decoration:underline !important; text-underline-offset:.18em;
text-decoration-thickness:.06em; padding-block:0.2em !important; }
p a:hover, span a:hover, li a:not(.e-con):hover, td a:not(.e-con):hover,
label a:hover, .campo a:hover{ text-decoration-thickness:.12em; }/* --- I LINK DI NAVIGAZIONE NON SONO LINK NEL TESTO (9 set 2026, misurato su
pellet.roma.it, primo sito della flotta su tema Neve).
La cura sopra prende anche le voci di menu, perche' stanno in un : il computed
del servito diceva `text-decoration: underline` su ogni voce della navigazione, e un
menu sottolineato non e' leggibilita', e' rumore. Non si abbassa la specificita' del
vincitore (i link nel testo devono restare sottolineati: axe link-in-text-block): si
ALZA quella del perdente, aggiungendo il contenitore di navigazione al selettore.
Il padding verticale NON si tocca: e' l'area di tocco da 44px sul mobile.
La sottolineatura torna all'hover, perche' tutto cio' che e' cliccabile deve reagire. */
nav li a, .wca-nav li a, .wca-mobile li a, .wca-piede li a, .wca-briciole li a,
.wca-sorelle li a, ul.nav-ul li a{ text-decoration:none !important; }
nav li a:hover, .wca-nav li a:hover, .wca-mobile li a:hover, .wca-piede li a:hover,
.wca-briciole li a:hover, .wca-sorelle li a:hover, ul.nav-ul li a:hover{
text-decoration:underline !important; text-underline-offset:.18em; }/* --- PAROLE LUNGHE CHE SFORANO A 390 (finding «sfora in larghezza su mobile»).
Un indirizzo email o un numero scritti in un font grande non si spezzano da soli:
a 390px il testo esce dal viewport e la pagina scorre in orizzontale. Misurato sui
contatti: l'email in Oswald 27px arrivava a 463px su 390.
`anywhere` e non `break-word`: break-word spezza solo se la parola e' l'unica cosa
nella riga, anywhere spezza sempre quando serve. */
main a, main span, main p, main td{ overflow-wrap:anywhere; }
main .e-con{ max-width:100% !important; }
/* un bottone con `flex:0 0 auto` non si restringe: se l'etichetta e' lunga esce dallo
schermo. Il tetto glielo mette il contenitore, non il contenuto. */
main a[class*="btn"]{ min-width:0 !important; max-width:100% !important; }/* --- il contenuto principale: il tag e' `main`, qui solo la forma neutra.
⚠️ `main.e-con` va nel reset dei contenitori del sito insieme a section/div/a:
senza, si tiene il padding di serie di Elementor (10px), che e' lo stesso difetto
gia' pagato sui contenitori-link (58px di altezza spuria nel piede). */
main.e-con{ padding:0 !important; }
main.wca-main{ display:block !important; } /* PESO E CARICAMENTO DELLE FOTO (guscio_comune.py).
Il crawler chiede `loading=lazy` su OGNI immagine tranne la prima, e senza
l'attributo il browser sceglie eager: sulla home due foto sotto la piega
restavano eager e finivano nel report (2 istanze nostre su 44).
La prima immagine resta eager con fetchpriority=high: e' la hero, ed e' la
prima cosa che si vede. */
(function(){
var foto = document.querySelectorAll('main img, .af-foto, .af-scheda-foto, .af-foto-zone');
for (var k = 0; k 0 && !i.sizes) { i.sizes = largo + 'px'; }
var sopra = i.getBoundingClientRect().top < window.innerHeight;
if (sopra && k === 0) { i.loading = 'eager'; i.setAttribute('fetchpriority', 'high'); }
else if (!i.getAttribute('loading')) { i.setAttribute('loading', 'lazy'); }
}
})();/* NOME ACCESSIBILE AI CAMPI DEL MODULO (guscio_comune.py, 7 set 2026).
Il form richieste-it nella variante compatta nasce con la classe `fr-no-label`:
il plugin NON stampa le etichette e ogni campo prende il nome accessibile dal
proprio placeholder. Un pero' il placeholder non ce l'ha, e resta
SENZA NOME. Prova del due: su asfalti.milano.it il campo e' `campo w-100` con
la sua e passa; su affissioni.roma.it e' `campo w-50
fr-no-label` e fallisce.
Quanto costa: axe lo boccia (select-name, uno dei due falliti di
accessibilita') e soprattutto e' l'UNICO item di `agent-accessibility-tree`,
cioe' da solo azzera l'Agentic Browsing di Lighthouse: 15 su 100 sulla home.
Per un agente che compila il modulo quel campo e' un menu a tendina anonimo.
La cura: il nome glielo da' il testo della prima option, che e' esattamente
quello che l'utente legge nel campo («Seleziona un comune»). Vale per ogni
select senza nome, quindi anche sui siti che non hanno ancora questo difetto.
⛔ Non tocca i campi che un nome ce l'hanno gia': label, aria-label e
aria-labelledby vincono, e il plugin resta padrone del suo markup. */
(function(){
function nomina(){
var sel = document.querySelectorAll('select');
for (var k = 0; k < sel.length; k++) {
var s = sel[k];
if (s.getAttribute('aria-label') || s.getAttribute('aria-labelledby')) { continue; }
if (s.closest && s.closest('label')) { continue; }
if (s.id && document.querySelector('label[for="' + s.id + '"]')) { continue; }
var voce = (s.options && s.options.length) ? (s.options[0].textContent || '').trim() : '';
if (voce) { s.setAttribute('aria-label', voce); }
}
}
/* ⚠️ stessa prudenza dello scambio dell'icona del banner: al parse il modulo
puo' non essere ancora montato. Si prova al DOM pronto, al load e una volta
dopo un secondo. Costa tre giri su una manciata di nodi. */
if (document.readyState !== 'loading') { nomina(); }
else { document.addEventListener('DOMContentLoaded', nomina); }
window.addEventListener('load', nomina);
setTimeout(nomina, 1000);
})();(function(){
function avvia(){
var b=document.querySelector('.wca-burger'), m=document.querySelector('.wca-mobile');
if(b&&m){
b.addEventListener('click',function(){
var ap=m.classList.toggle('aperto');
b.setAttribute('aria-expanded',ap?'true':'false');
});
m.addEventListener('click',function(e){
if(e.target.closest('a')){ m.classList.remove('aperto'); b.setAttribute('aria-expanded','false'); }
});
}
/* le ancore: gli attributi dei contenitori atomic non vengono stampati, la classe anchor- diventa l'id */
document.querySelectorAll('[class*="anchor-"]').forEach(function(el){
el.className.split(' ').forEach(function(c){
if(c.indexOf('anchor-')===0 && !el.id){ el.id=c.slice(7); }
});
});
/* chi arriva da fuori con #ancora: il browser la cerca PRIMA che gli id esistano */
if (location.hash.length > 1) {
var bersaglio = document.getElementById(location.hash.slice(1));
if (bersaglio) {
var salto = document.createElement('a');
salto.href = location.hash;
salto.style.cssText = 'position:absolute;width:0;height:0;opacity:0';
document.body.appendChild(salto); salto.click(); document.body.removeChild(salto);
}
}
}
if(document.readyState!=='loading'){ avvia(); }
else{ document.addEventListener('DOMContentLoaded',avvia); }
})();