/*
Theme Name: 	I-Law
Description: 	Responsive WordPress Theme based on Boostrap and Font Awesome.
Version:     	1.0.0
Author:     	Ness Communication
Author URI:   http://www.nesscommunication.com
Site:         http://www.nesscommunication.com
Text Domain: 	ilaw
Domain Path: 	/languages
Tags:        	grid-layout, blog, custom-menu, featured-images, right-sidebar
License:    	GNU General Public License v3.0
License URI:	http://www.gnu.org/licenses/gpl-3.0.html
*/

/* Font del sito (gli stessi della hero della home): Inter Tight per testi e
   titoli, Instrument Serif corsivo per gli accenti. Caricati qui così valgono
   su tutte le pagine. */
@import url("https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter+Tight:wght@300..900&display=swap");


/* ######################################################################
   DESKTOP (stili base, schermi grandi) — le media query sono tutte in fondo
   ###################################################################### */


/* ==========================================================
   GENERALE
   ========================================================== */

body, html {font-family: "Inter Tight", sans-serif; font-size: 1em; color: #000;background-color: #fff; letter-spacing: 0;line-height: 1.5em; overflow-x: hidden; overflow-x: clip;}
/* clip: non crea un contenitore di scroll, così position:sticky funziona */
html {
  /* Scrollbar verticale SEMPRE presente, per evitare layout shift quando
     ScrollTrigger aggiunge il pin-spacer o quando sparisce is-loading. */
  overflow-y: scroll;
  scrollbar-gutter: stable;
}
* { box-sizing: border-box; }
hr{border:none; border-bottom: 1px solid;}
/* form  */
input{border: 1px solid;}
input, textarea, select, button {
	font-family: inherit;
	width : auto;
	margin: 0;
	-webkit-box-sizing: border-box; /* For legacy WebKit based browsers */
	-moz-box-sizing: border-box; /* For legacy (Firefox <29) Gecko based browsers */
	box-sizing: border-box;
	border: 0;
	outline: none;
    appearance: none;
    height: 45px;
}
pre{overflow: hidden}
/* Video Resposnive */
figure{margin:0;}
.video-container { position: relative; padding-bottom: 56.25%; /* 16:9 */ padding-top: 25px; height: 0;}
.video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%;}
a{color: #000;}
img{width: 100%;height: auto;}
h1,h2,h3,h4,h5{margin:0;color: #042913;line-height: 1.08em; font-weight: 400; letter-spacing: -.035em; text-transform: none;}
/* Come in home: una parola in corsivo nei titoli (es. in Gutenberg) diventa serif */
h1 em, h2 em, h3 em{ font-family: var(--hl-serif); font-style: italic; font-weight: 400; letter-spacing: -.02em; }
h1 { font-size: 4em;}
h2{font-size: 3.5em;}
h3{font-size: 2em;}
h4{font-size: 1.5em;}
h5{font-size: 1.25em;}
p{margin: 0;line-height: 1.5em;font-size: 1.25em;}
.p-0{padding: 0;}
.pl-0{padding-left:0;}
.pr-0{padding-right:0;}
.p-10{padding: 10px;}
.p-20{padding: 20px;}
.p-30{padding: 30px;}
.p-40{padding: 40px;}
.p-50{padding: 50px;}
.p-60{padding: 60px;}
.pb-0{padding-bottom: 0;}
.pb-10{padding-bottom: 10px;}
.pb-20{padding-bottom: 20px;}
.pb-30{padding-bottom: 30px;}
.pb-40{padding-bottom: 40px;}
.pb-60{padding-bottom: 60px;}
.pt-10{padding-top: 10px;}
.pt-20{padding-top: 20px;}
.pt-30{padding-top: 30px;}
.pt-40{padding-top: 40px;}
.pt-50{padding-top: 50px;}
.pt-60{padding-top: 60px;}
.m-0{margin: 0;}
.ml-0{margin-left:0;}
.mr-0{margin-right:0;}
.m-10{margin: 10px;}
.m-20{margin: 20px;}
.m-30{margin: 30px;}
.m-40{margin: 40px;}
.m-50{margin: 50px;}
.m-60{margin: 60px;}
.mb-0{margin-bottom: 0!important;}
.mb-10{margin-bottom: 10px;}
.mb-20{margin-bottom: 20px;}
.mb-30{margin-bottom: 30px;}
.mb-40{margin-bottom: 40px;}
.mb-60{margin-bottom: 60px;}
.mt-0{margin-top: 0!important;}
.mt-10{margin-top: 10px;}
.mt-20{margin-top: 20px;}
.mt-30{margin-top: 30px;}
.mt-40{margin-top: 40px;}
.mt-50{margin-top: 50px;}
.mt-60{margin-top: 60px;}
.d-f{display: flex;flex-wrap: wrap;}
.fd-c{flex-direction: column;}
.jc-c{justify-content: center;}
.jc-sb{justify-content: space-between;}
.jc-fs{justify-content: flex-start;}
.jc-fe{justify-content: flex-end;}
.ac-c{align-content: center;}
.ac-fs{align-content: flex-start;}
.ac-fe{align-content: flex-end;}
.ai-c{align-items: center;}
.ai-fs{align-items: flex-start;}
.ai-fe{align-items: flex-end;}
.ta-l{text-align: left;}
.ta-c{text-align: center;}
.ta-r{text-align: right;}
.fw-1{font-weight: 100;}
.fw-2{font-weight: 200;}
.fw-3{font-weight: 300;}
.fw-4{font-weight: 400;}
.fw-5{font-weight: 500;}
.fw-6{font-weight: 600;}
.fw-7{font-weight: 700;}
.fw-8{font-weight: 800;}
.fw-9{font-weight: 900;}
.fs-12{font-size: 0.75em;}
.fs-13{font-size: 0.8125em;}
.fs-14{font-size: 0.875em;}
.fs-15{font-size: 0.9375em;}
.fs-16{font-size: 1em;}
.fs-17{font-size: 1.0625em;}
.fs-18{font-size: 1.125em;}
.fs-19{font-size: 1.1875em;}
.fs-20{font-size: 1.25em;}
.fs-21{font-size: 1.312em;}
.fs-22{font-size: 1.375em;}
.fs-23{font-size: 1.4375em;}
.fs-24{font-size: 1.5em;}
.fs-25{font-size: 1.5em;}
.fs-26{font-size: 1.625em;}
.fs-27{font-size: 1.6875em;}
.fs-28{font-size: 1.75em;}
.fs-29{font-size: 1.8125em;}
.fs-30{font-size: 1.875em;}
.fs-31{font-size: 1.9375em;}
.fs-32{font-size: 2em;}
.fs-33{font-size: 2.0625em;}
.fs-34{font-size: 2.125em;}
.fs-35{font-size: 2.1875em;}
.fs-36{font-size: 2.25em;}
.fs-37{font-size: 2.3125em;}
.fs-38{font-size: 2.375em;}
.fs-39{font-size: 2.4375em;}
.fs-40{font-size: 2.5em;}
.fs-41{font-size: 2.5625em;}
.fs-42{font-size: 2.625em;}
.fs-100{font-size: 6.25em;}
.tt-u{text-transform: uppercase;}
.pos-rel{position: relative;}
.z-1{z-index: 1;}
.w-33{width: 33.33%;}
.w-50{width: 50%;}
.w-66{width: 66.66%;}
.w-100{width: 100%;}
.h-100{height: 100%}
/* Wrapper unico per tutto il sito (header, footer, sezioni, pagine interne):
   stesso margine laterale delle sezioni della home (--frame-x). */
.width-wrap{max-width: none;margin: 0 auto;width: 100%;padding: 0 var(--frame-x);}
.width-wrap-inner{max-width: none;margin: 0 auto;padding: 0 var(--frame-x);width: 100%;}
.button { display: inline-flex; align-items: center; justify-content: center; gap: 12px; width: auto; padding: 15px 26px; border: 0; border-radius: 0; text-align: center; text-decoration: none; background-color: #042913; color: #fff; font-size: .8125rem; line-height: 1.2; text-transform: uppercase; font-weight: 500; letter-spacing: .14em; transition: background-color .3s, color .3s; }
.button:hover{ background-color: #a7d550; color: #042913; }
.button svg, .button i{ transition: transform .3s; }
.button:hover svg{ transform: translate(2px, -2px); }
.lime{color: #a7d550;}
.show-menu{opacity: 1; visibility: visible;}
.form { opacity: 0; visibility: hidden; transition: all .3s ease-out; position: fixed; top: 50%; transform: translateY(-50%); z-index: 9; margin: 0; text-align: center; left: 0; right: 0; max-width: 800px; margin: 0 auto; padding: 60px; }
.show-form{visibility: visible;opacity: 1;}
.form .close { position: absolute; top: 0px; right: 0px; color: #fff; width: 60px; height: 60px; cursor: pointer; }
.form .close:before, .form .close:after{content: "";position:absolute; left:10px; right:10px; top:50%; height:1px; background:#fff; transform-origin:center; transition:transform .3s ease-out; }
.form .close:before{ transform: translateY(0) rotate(45deg); }
.form .close:after{ transform: translateY(0) rotate(-45deg); }
:root{
  --slotDur: 2.25s;
  --stagger: .40s;
  --logoDelayExtra: .25s;
  --fadeDur: 1s;
  --gap: 14px;
  --bg: #042913;
  --fg: #fff;
  --easeSmooth: cubic-bezier(.22, 1, .36, 1);
  --peek: 22%; /* percentuale della larghezza del preloader (coincide con xPercent GSAP) */
}
.pin-spacer{width: 100%!important;}
:root{
  --hl-lime:   #a7d550;                     /* lime di brand (il riferimento usa un neon più acceso, es. #c8ee0a) */
  --hl-ink:    #f3f4ee;                     /* bianco caldo del titolo */
  --hl-muted:  rgba(220,228,216,.62);       /* testo secondario */
  --hl-faint:  rgba(220,228,216,.30);       /* micro-testi */
  --hl-sans:   "Inter Tight", "Lato", sans-serif;
  --hl-serif:  "Instrument Serif", Georgia, "Times New Roman", serif;
  --frame-x:   clamp(20px, 9vw, 190px);     /* margine laterale condiviso da testi e linea */
}
.cta{display: flex;gap: 20px;}
/* A tutta pagina: titolo a sinistra, testo e link a destra, livelli sotto */
#professionisti .prof-frame, #faq .prof-frame{ grid-template-columns: 1fr; gap: clamp(48px, 7vh, 80px); }
#professionisti .prof-head, #faq .prof-head{ display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 32px 64px; }
.content{width: 100%;}
.content__title{font-size: 42px;}
.post img{max-width: 100%; height: auto;}
.content .tag {margin-top:40px;}
.content .tag a{background: #666; color:#fff; padding:5px 10px; text-decoration: none; display: inline-block;;margin-top:5px;font-size: 12px;}
/* Comments */
.comments{margin: 40px 0; border-top: 1px solid #eee}
.commentlist,
	.commentlist .children{list-style-type: none}
.comment-body{margin: 40px 0}
.comment-author.vcard img{border-radius: 100%;}
.comment-form-comment textarea{background: #eee; width:100%;border: 1px solid #ddd;margin-top:5px;}
.comment-form-author input,
	.comment-form-email input,
	.comment-form-url input{background: #eee; width:200px; max-width:300px;border: 1px solid #ddd;padding:5px}
.comment-form-author label,
	.comment-form-email label,
	.comment-form-url label{ width:100px;display: inline-block;}
.form-submit input{background: #333; color:#fff; border:none;font-size: 16px;padding: 10px 15px;width: auto;}
/* Caption Images */
.wp-caption { margin-bottom: 20px; padding: 10px; max-width: 97%; border: 1px solid #ddd; text-align: center; }
.wp-caption img { margin: 0; padding: 0; width: 100%!important; height: auto; border: 0 none; }
.wp-caption p.wp-caption-text { margin: 0; padding: 8px; font-size: 1em; line-height: 17px; }
/* Gallery */
.gallery { padding: 40px 0 40px 0; width: 100%; }
.gallery-item {  width: 33.333333%; text-align: center; }
.gallery img { margin: 0 5% 0 5%; width: 90%; height: auto; border: none!important; }
.gallery-caption { width: 90%;margin:10px 0 0 0;}
.sidebar{width:30%;}
.widget{padding:40px;}
.widget ul{padding: 0;list-style-type: none;}
.widget ul li a{text-decoration: none;display: block;border-bottom: 1px solid #eee;padding:10px 15px}
.widget_search label{display: none;}
p.copyright { padding: 20px;}
body{ --header-h: 110px; }
.inner-head{ padding: clamp(40px, 7vh, 90px) 0 0; }
.inner-head__title{ color:#042913; font-size: clamp(2.2em, 5vw, 3.5em); }
.right-attivita { margin: 0; }
/* Ancore: la sezione di destinazione non finisce sotto l'header fisso */
#studio, #attivita, #professionisti, #pubblicazioni, #faq{ scroll-margin-top: var(--header-h); }
.inner-head__desc{ margin-top:16px; max-width:900px; }
.video-embed{ position:relative; padding-bottom:56.25%; height:0; border-radius:25px; overflow:hidden; }
.video-embed iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.no-match-criteria{ font-size:1.25em; padding:40px 0; color:#042913; }
.sede{ display: flex; flex-direction: column; gap: clamp(16px, 1.6vw, 28px); scroll-margin-top: calc(var(--header-h) + 20px); }

/* ==========================================================
   HEADER E MENU
   ========================================================== */

.header { width: 100%; display: flex; flex-wrap: wrap; justify-content: space-between; align-content: center; align-items: center; padding: 0; width: 100%; padding: 20px 0!important; position: relative; z-index: 99; transform: translateY(-110px); transition: all .5s; position: fixed; top: 0; left: 0; right: 0;box-shadow: 0 0 6px 3px rgba(0, 0, 0, 0.1);}
.header.show-header{transform: translateY(0);}
.logo{ width: auto; height: auto; display: block; }
.logo img { width: auto; height: 70px; display: block; }
.header__menu { width: 100%; margin: 0; padding: 0; display: flex; flex-wrap: nowrap; gap: clamp(2px, .6vw, 14px); z-index: 99;}
.header__menu .menu-item{display: inline-block; }
.header__menu .menu-item a {text-decoration: none; color: #0b0b0b; transition: all .3s; text-transform: uppercase; font-weight: 500; letter-spacing: .1em; white-space: nowrap; font-size: clamp(.6875rem, .74vw, .9375rem); padding: 5px clamp(4px, .45vw, 9px);border: 2px solid transparent; border-radius: 10px;color: #fff;display: inline-block;}
.header__menu .menu-item.current-menu-item a{border-color: #000;}
.header { background: rgb(4, 41, 19); }
/* Valori iniziali: il JS sovrascrive al caricamento.
   --light-left-hero: 0px → in hero-mode il layer DARK è completamente clippato
   via (inset(0 100% 0 0)), quindi si vede solo il layer LIGHT (bianco). Coerente
   con la hero nuova che è tutta verde scura (nessuna zona chiara a sinistra). */
.nav-wrapper,


/* Wrapper nav: contiene i due layer sovrapposti */
.nav-wrapper {
  position: relative;
  display: inline-block;
}
/* Logo: due img sovrapposte */
.logo {
  position: relative;
  display: inline-block;
}
.logo img {
  display: block;
  width: auto;
  height: 70px;
}
.top-bar { width: 100%; background: #fff; letter-spacing: 1px;}
.top-bar ul { list-style-type: none; padding: 20px; display: flex; flex-wrap: wrap; justify-content: space-between; text-transform: uppercase; }
.top-bar a{text-decoration: none;}
.header-fix { display: flex; flex-wrap: wrap; align-items: center; align-content: center; gap: 20px; width: 100%; justify-content: flex-end; padding: 20px; position: relative; z-index: 9; }
.header-fix i{font-size: 2em; color: #fff;}
.header__icon-bar{ display:none; width:70px; height:44px; cursor:pointer; position:relative; }
.header__icon-bar .icon-left,
.header__icon-bar .icon-right{
  position:absolute; left:10px; right:10px; top:50%; height:1px; background:#fff; transform-origin:center; transition:transform .3s ease-out; }
/* stato hamburger */
.header__icon-bar .icon-left{ transform: translateY(-6px); }
.header__icon-bar .icon-right{ transform: translateY(6px); }
/* stato X */
.header__icon-bar.open .icon-left{ transform: translateY(0) rotate(45deg); }
.header__icon-bar.open .icon-right{ transform: translateY(0) rotate(-45deg); }
.header__icon-bar:hover { cursor: pointer;}
.header__menu .menu-item{ position: relative; }
/* indicatore freccia sui voci con figli */
.header__menu .menu-item-has-children > a::after{
  content:""; display:inline-block; margin-left:8px; width:7px; height:7px;
  border-right:2px solid currentColor; border-bottom:2px solid currentColor;
  transform: translateY(-2px) rotate(45deg); transition: transform .3s;
}
.header__menu .sub-menu{
  list-style:none; margin:0; padding:8px;
  position:absolute; top:100%; left:0; min-width:230px;
  background:#042913; border:1px solid rgba(167,213,80,.28); border-radius:12px;
  box-shadow:0 18px 40px rgba(4,41,19,.28);
  display:flex; flex-direction:column; gap:4px;
  opacity:0; visibility:hidden; transform:translateY(8px);
  transition: opacity .25s, transform .25s, visibility .25s; z-index:120;
}
.header__menu .sub-menu li{ display:block; margin:0; }
.header__menu .sub-menu a{ width:100%; white-space:nowrap; border-radius:8px; }
/* Touch/mobile: apertura via classe .is-open (JS) */
.header__menu .menu-item-has-children.is-open > .sub-menu{ opacity:1; visibility:visible; transform:translateY(0); }
.header__menu .menu-item-has-children.is-open > a::after{ transform: translateY(0) rotate(225deg); }
/* Voci di 2° livello che hanno figli: freccia verso destra, allineata a fine riga */
.header__menu .sub-menu .menu-item-has-children > a{ display:flex; align-items:center; justify-content:space-between; }
.header__menu .sub-menu .menu-item-has-children > a::after{
  transform: translateY(-1px) rotate(-45deg); margin-left:10px;
}
/* Il 3° livello esce di lato (a destra) del suo genitore, non sotto */
.header__menu .sub-menu .sub-menu{
  top:-9px; left:100%; margin-left:6px;
}
/* Hamburger nascosto su desktop */
.header__icon-bar{ display:none; }
.hb-line{ display:block; width:26px; height:2px; background:#fff; border-radius:2px;
  transition: transform .3s ease, opacity .3s ease; }

/* --- Voce LinkedIn nel menu ---
   In Aspetto → Menu: link personalizzato all'URL LinkedIn dello studio,
   etichetta "LinkedIn", classe CSS "menu-linkedin" (Opzioni schermata →
   Classi CSS). Su desktop diventa un'icona tonda separata dal menu da un
   filetto; all'hover si riempie di lime. Su mobile è una riga con icona. */
.header__menu .menu-linkedin{ display: flex; align-items: center; margin-left: clamp(4px, .7vw, 14px); padding-left: clamp(6px, .9vw, 18px); border-left: 1px solid rgba(167,213,80,.35); }
.header__menu .menu-linkedin > a{
  position: relative; display: inline-flex !important; align-items: center; justify-content: center;
  width: 36px; height: 36px; padding: 0 !important; border-radius: 50% !important;
  border: 1px solid rgba(167,213,80,.6) !important; font-size: 0 !important; letter-spacing: 0 !important;
  transition: background-color .3s, border-color .3s, transform .35s cubic-bezier(.22,1,.36,1), box-shadow .3s;
}
.header__menu .menu-linkedin > a::before{
  content: ""; width: 15px; height: 15px; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4v11.25H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.83-2.05 3.77-2.05 4.03 0 4.77 2.65 4.77 6.1V21h-4v-5.1c0-1.22-.02-2.78-1.7-2.78-1.7 0-1.96 1.33-1.96 2.7V21h-4z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4v11.25H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.83-2.05 3.77-2.05 4.03 0 4.77 2.65 4.77 6.1V21h-4v-5.1c0-1.22-.02-2.78-1.7-2.78-1.7 0-1.96 1.33-1.96 2.7V21h-4z'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: background-color .3s;
}
.header__menu .menu-linkedin > a:hover,
.header__menu .menu-linkedin > a:focus-visible{
  background: #a7d550; border-color: #a7d550 !important; transform: translateY(-2px);
  box-shadow: 0 0 0 6px rgba(167,213,80,.15);
}
.header__menu .menu-linkedin > a:hover::before,
.header__menu .menu-linkedin > a:focus-visible::before{ background: #042913; }

/* ==========================================================
   PRELOADER
   ========================================================== */

/* Scroll lock durante il preload.
   Uso position:fixed sul body (NON overflow:hidden sull'html, che rimuoverebbe
   la scrollbar e causerebbe layout shift). In questo modo lo scroll è bloccato
   ma la scrollbar verticale resta visibile e lo spazio riservato è costante. */
body.is-loading{
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  overflow: hidden;
  width: 100%;
}
.hero-stage #preloader{
  --lines: 3;
--logoDelay: 0s;
--textStart: calc(var(--slotDur) + var(--logoDelayExtra));
--fadeDelay: calc(var(--textStart) + (var(--lines) - 1) * var(--stagger) + var(--slotDur));
 
  position: absolute;
  inset: 0;
  /* z-index 20: SOPRA i pannelli .hero / #studio (z-index: 10), altrimenti
     il loro background opaco copre il preloader e testi/logo non si vedono.
     Dopo la preFade, il JS aggiunge .is-under (z-index 5) e nasconde il
     preloader con autoAlpha: 0, quindi tornano visibili i pannelli sotto. */
  z-index: 99999;
  display: grid;
  place-content: center;
  gap: var(--gap);
  background: var(--bg);
  color: var(--fg);
  text-align: center;
  height: 100dvh;
}
/* resta sotto ai pannelli ma visibile */
#preloader.is-under{ z-index: 5; pointer-events: none; background:linear-gradient( 90deg, rgba(4, 41, 19, 1) 50%, rgba(4, 41, 19, 0.9) 65%, rgba(4, 41, 19, 0.75) 80%, rgba(4, 41, 19, 0.6) 95%, rgba(4, 41, 19, 0.5) 100% )}
/* is-static: fallback di sicurezza — il logo esce già da logoIn */
#preloader.is-static span,
#preloader.is-static img{
  animation: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
}
/* maschere */
#preloader .mask{ overflow: hidden; line-height: 2em; height: 2em; }
#preloader .mask.logo-mask{ height: 70px; position: absolute; top: 50%; left: 0; right: 0; transform: translateY(-50%); z-index: 9999;}
/* animazioni testi — proprietà SEPARATE perché var() non funziona nella shorthand animation */
#preloader span, #preloader img{
  display: inline-block;
  font-weight: 600;
  font-size: 2em;
  transform: translateY(120%);
  opacity: 0;
  animation-name: slotInOut;
  animation-duration: var(--slotDur);
  animation-timing-function: cubic-bezier(.22, 1, .36, 1);
  animation-fill-mode: forwards;
  animation-iteration-count: 1;
  will-change: transform, opacity;
}
/* stagger testi */
#preloader .mask:nth-of-type(1) span{ animation-delay: calc(var(--textStart) + 0 * var(--stagger)); }
#preloader .mask:nth-of-type(2) span{ animation-delay: calc(var(--textStart) + 1 * var(--stagger)); }
#preloader .mask:nth-of-type(3) span{ animation-delay: calc(var(--textStart) + 2 * var(--stagger)); }
/* logo */
#preloader img{
  height: 70px;
  margin-inline: auto;
  animation-name: logoIn;
  animation-duration: var(--slotDur);
  animation-timing-function: cubic-bezier(.22, 1, .36, 1);
  animation-fill-mode: forwards;
  animation-delay: var(--logoDelay);
}
@keyframes logoIn{
  0%   { transform: translateY(120%); opacity: 0; }
  30%  { transform: translateY(0%);   opacity: 1; }
  70%  { transform: translateY(0%);   opacity: 1; }
  100% { transform: translateY(-120%); opacity: 0; }
}
/* slide container preloader — sfuma sul posto, proprietà separate */
#preloader.is-done{
  animation-name: preFade;
  animation-duration: var(--fadeDur);
  animation-timing-function: cubic-bezier(.22, 1, .36, 1);
  animation-fill-mode: forwards;
  animation-delay: var(--fadeDelay);
  opacity: 1;
  pointer-events: none;
}
/* keyframes */
@keyframes preFade{
  from { opacity: 1; }
  to   { opacity: 0; }
}
@keyframes slotInOut{
  0%   { transform: translateY(120%); opacity: 0; }
  25%  { transform: translateY(0%);   opacity: 1; }
  75%  { transform: translateY(0%);   opacity: 1; }
  100% { transform: translateY(-120%); opacity: 0; }
}

/* ==========================================================
   HOME — HERO E PANNELLO "IL DIRITTO…"
   ========================================================== */

.hero-pin{ position: relative; }
.hero-stage{ position: relative; height: 100vh; overflow: hidden; background: #042913; }
.hero, #studio{ position: absolute; inset: 0; z-index: 10; }
.hero-frame{ position: relative; width: 100%; height: 100%; padding: 0 var(--frame-x); }
/* Maschere per la salita del titolo. Il padding extra evita di tagliare
   discendenti/accenti del corsivo; il margine negativo lo compensa. */
/* Il padding extra (sopra per gli accenti, sotto per le discendenti g/p/q,
   a destra per l'inclinazione del corsivo) evita che la maschera tagli le
   lettere; i margini negativi lo compensano e l'impaginazione non cambia. */
.hero-mask{ display: block; overflow: hidden; padding: .12em .14em .24em .08em; margin: -.12em -.14em -.24em -.08em; }
.hero-mask--serif{ padding-bottom: .28em; margin-bottom: -.28em; }
/* HERO */
.hero{ background: transparent; color: var(--hl-ink); overflow: hidden; font-family: var(--hl-sans); letter-spacing: 0; }
/* Cerchi: nello stage, sotto ai pannelli (z-index 10) che sono trasparenti */
.hero-rings{ position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.hero-rings svg{ position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.ring-band{ fill: var(--hl-lime); }
.ring-line{ fill: none; stroke: var(--hl-lime); stroke-width: 1; opacity: .32; vector-effect: non-scaling-stroke; }
.ring-line--faint{ opacity: .14; }
.ring-drift{ animation: ringDrift 16s ease-in-out infinite alternate; }
.ring-drift--b{ animation-duration: 11s; animation-direction: alternate-reverse; }
@keyframes ringDrift{
  from{ transform: translate(0, 0); }
  to  { transform: translate(-18px, 12px); }
}
.hero-inner{
  z-index: 1;
  display: flex; flex-direction: column; justify-content: center; align-items: flex-start;
  padding-top: var(--header-h); padding-bottom: 9vh;
}
.hero-kicker{
  display: flex; align-items: center; gap: 22px;
  margin: 0 0 clamp(28px, 6.5vh, 72px);
  font-size: .8125rem; line-height: 1; letter-spacing: .24em; text-transform: uppercase;
  color: var(--hl-faint);
}
.hero-kicker-rule{ width: 60px; height: 1px; background: currentColor; transform-origin: left center; }
.hero-kicker-dot{ width: 5px; height: 5px; border-radius: 50%; background: var(--hl-lime); }
.hero-eyebrow{
  margin: 0 0 clamp(16px, 3vh, 34px);
  font-size: clamp(.8125rem, .85vw, 1rem); line-height: 1.3;
  font-weight: 500; letter-spacing: .22em; text-transform: uppercase;
  color: var(--hl-lime);
}
.hero-title{ margin: 0; color: var(--hl-ink); font-weight: 400; text-transform: none; line-height: 1; }
.hero-title-line1{
  display: block;
  font-family: var(--hl-sans); font-weight: 400;
  font-size: clamp(3rem, min(8.4vw, 15.5vh), 11rem);
  line-height: .95; letter-spacing: -.065em;
}
.hero-title-line2{
  display: block;
  font-family: var(--hl-serif); font-style: italic; font-weight: 400;
  font-size: clamp(3.2rem, min(8.9vw, 16.5vh), 11.75rem);
  line-height: .95; letter-spacing: -.035em;
  color: var(--hl-lime);
}
.hero-claim{
  margin: clamp(18px, 4.5vh, 50px) 0 0;
  font-size: clamp(1.3rem, 1.9vw, 2.4rem); line-height: 1.2; letter-spacing: -.01em;
  color: var(--hl-lime);
}
.hero-desc{
  margin: clamp(18px, 4vh, 44px) 0 0; max-width: 37ch;
  font-size: clamp(1rem, 1.12vw, 1.375rem); line-height: 1.6; letter-spacing: -.01em;
  color: var(--hl-muted);
}
.hero-scroll{
  position: absolute; left: var(--frame-x); bottom: clamp(28px, 5vh, 56px);
  display: inline-flex; align-items: flex-start; gap: 28px;
  font-size: .8125rem; line-height: 1; letter-spacing: .24em; text-transform: uppercase;
  color: var(--hl-ink); text-decoration: none;
}
.hero-scroll span{ padding-bottom: 14px; border-bottom: 1px solid rgba(243,244,238,.35); transition: border-color .3s; }
.hero-scroll svg{ margin-top: 2px; animation: scrollNudge 2.4s ease-in-out infinite; }
.hero-scroll:hover span{ border-color: var(--hl-lime); }
.hero-scroll:focus-visible{ outline: 1px solid var(--hl-lime); outline-offset: 8px; }
@keyframes scrollNudge{ 0%, 100%{ transform: translate(0, 0); } 50%{ transform: translate(3px, 3px); } }
/* LINEA DI COLLEGAMENTO (fissa nello stage)
   Dal punto di "è possibile." (--x1/--y1) al punto di "risposta standard."
   (--x2/--y2): tratto orizzontale, curva, salita fino al punto. Coordinate e
   tracciato SVG sono calcolati dal JS; il disegno segue lo scroll. */
.hero-track{ position: absolute; inset: 0; z-index: 11; pointer-events: none; }
.hero-track__svg{ position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.hero-track__path{
  fill: none; stroke: var(--hl-lime); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round;
  filter: drop-shadow(0 0 6px rgba(167,213,80,.55));
}
.hero-track__dot{ position: absolute; border-radius: 50%; opacity: 0; }
/* arrivo: solo un bagliore morbido dietro al punto di "standard." (niente
   cerchio: non deve coprire le lettere vicine) */
.hero-track__dot--end{
  left: calc(var(--x2, 0px) - var(--d2, 14px) * 1.2); top: calc(var(--y2, 0px) - var(--d2, 14px) * 1.2);
  width: calc(var(--d2, 14px) * 2.4); height: calc(var(--d2, 14px) * 2.4);
  background: radial-gradient(circle, rgba(167,213,80,.55) 0%, rgba(167,213,80,.18) 45%, rgba(167,213,80,0) 70%);
  z-index: -1;
}
.hero-track__dot--end::after{
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  background: inherit; animation: dotGlow 2.4s ease-in-out infinite;
}
@keyframes dotGlow{ 0%, 100%{ opacity: .2; transform: scale(.85); } 50%{ opacity: .9; transform: scale(1.15); } }
@keyframes nodePulse{
  0%  { transform: scale(1); opacity: .7; }
  100%{ transform: scale(3); opacity: 0; }
}
/* MANIFESTO (#studio, pannello 2) */
#studio{ background: transparent; color: var(--hl-ink); overflow: hidden; font-family: var(--hl-sans); letter-spacing: 0; }
.manifesto-title{
  /* poggia sopra la linea (top 54%): il bordo inferiore sta 56px sopra */
  /* il punto di 'standard.' sta 72px sopra il tratto orizzontale della linea */
  position: absolute; bottom: calc(100% - var(--y1, 54%) + 72px); right: var(--frame-x);
  width: max-content; max-width: calc(100% - 2 * var(--frame-x));
  margin: 0; color: var(--hl-ink); font-weight: 400; text-transform: none; line-height: 1;
}
.manifesto-line1{
  display: block; white-space: nowrap;
  font-family: var(--hl-sans); font-weight: 400;
  font-size: clamp(2.6rem, min(6.6vw, 12.5vh), 9rem);
  line-height: .95; letter-spacing: -.065em;
}
.manifesto-line2{
  display: block; white-space: nowrap;
  font-family: var(--hl-serif); font-weight: 400;
  font-size: clamp(2.8rem, min(7.1vw, 13.5vh), 9.75rem);
  line-height: .95; letter-spacing: -.035em;
  color: var(--hl-lime);
}
.manifesto-rule{ display: none; }

/* ==========================================================
   HOME — ATTIVITÀ
   ========================================================== */

#attivita{
  position: relative; background: #042913; color: var(--hl-ink);
  font-family: var(--hl-sans); letter-spacing: 0; text-align: left;
  padding: clamp(110px, 14vh, 170px) 0 clamp(90px, 12vh, 150px);
}
.att-frame{ padding: 0 var(--frame-x); }
.att-head{ display: flex; align-items: flex-end; justify-content: space-between; gap: 40px 64px; flex-wrap: wrap; margin-bottom: clamp(44px, 7vh, 80px); }
.att-kicker{
  display: flex; align-items: center; gap: 22px; margin: 0 0 clamp(20px, 3.5vh, 40px);
  font-size: .8125rem; line-height: 1; letter-spacing: .24em; text-transform: uppercase;
  color: var(--hl-faint);
}
.att-kicker-rule{ width: 60px; height: 1px; background: currentColor; }
.att-title{ margin: 0; color: var(--hl-ink); font-weight: 400; text-transform: none; line-height: 1; }
.att-title-line1{
  display: block; font-family: var(--hl-sans); font-weight: 400;
  font-size: clamp(2.8rem, min(6.8vw, 13vh), 9rem); line-height: .95; letter-spacing: -.065em;
}
.att-title-line2{
  display: block; font-family: var(--hl-serif); font-style: italic; font-weight: 400;
  font-size: clamp(3rem, min(7.3vw, 14vh), 9.75rem); line-height: .95; letter-spacing: -.035em;
  color: var(--hl-lime);
}
.att-intro{
  max-width: 36ch; margin: 0 0 .6em;
  font-size: clamp(1rem, 1.05vw, 1.25rem); line-height: 1.6; letter-spacing: -.01em;
  color: var(--hl-muted);
}
/* Card */
.att-cards{ display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: clamp(12px, 1vw, 20px); align-items: stretch; }
.att-card{ position: relative; }
.att-card a{
  position: relative; overflow: hidden; height: 100%;
  display: flex; flex-direction: column; justify-content: space-between; gap: 48px;
  min-height: clamp(400px, 50vh, 500px); padding: 30px clamp(20px, 1.6vw, 34px) 34px;
  border: 1px solid rgba(167,213,80,.16); border-radius: 22px;
  background: rgba(255,255,255,.012); color: var(--hl-ink); text-decoration: none;
  transition: background-color .45s cubic-bezier(.22,1,.36,1), border-color .45s, transform .45s cubic-bezier(.22,1,.36,1), box-shadow .45s;
}
/* arco decorativo in basso a destra */
.att-card a::after{
  content: ""; position: absolute; right: -150px; bottom: -150px; width: 300px; height: 300px;
  border-radius: 50%; border: 1px solid rgba(167,213,80,.14); pointer-events: none;
  transition: transform .6s cubic-bezier(.22,1,.36,1), border-color .45s;
}
.att-card__num{
  align-self: center; display: inline-flex; align-items: center; gap: 8px;
  font-size: .8125rem; line-height: 1; letter-spacing: .16em; color: var(--hl-lime);
  transition: color .45s;
}
.att-card__num svg{ color: var(--hl-muted); transition: color .45s, transform .45s; }
.att-card__body{ display: block; position: relative; z-index: 1; }
.att-card h3{
  margin: 0 0 18px; color: inherit; text-transform: none; font-family: var(--hl-sans); font-weight: 400;
  font-size: clamp(1.35rem, 1.55vw, 2rem); line-height: 1.08; letter-spacing: -.04em;
  transition: color .45s;
}
.att-card p{
  margin: 0; font-size: clamp(.875rem, .82vw, 1rem); line-height: 1.6; letter-spacing: -.005em;
  color: var(--hl-muted); transition: color .45s;
}
/* Stato attivo (lime) */
.att-card.is-active a{
  background: var(--hl-lime); border-color: var(--hl-lime); color: #042913;
  transform: translateY(-10px); box-shadow: 0 24px 60px rgba(0,0,0,.28);
}
.att-card.is-active a::after{ border-color: rgba(4,41,19,.2); transform: scale(1.35); }
.att-card.is-active .att-card__num,
.att-card.is-active .att-card__num svg{ color: #042913; }
.att-card.is-active .att-card__num svg{ transform: translate(2px, -2px); }
.att-card.is-active p{ color: rgba(4,41,19,.78); }
.att-card a:focus-visible{ outline: 2px solid var(--hl-ink); outline-offset: 4px; }
/* Titoli tutti alla stessa altezza: con subgrid le card di una stessa riga
   condividono le righe interne (numero / titolo / testo), quindi i titoli
   partono tutti dallo stesso punto e i testi pure, qualunque sia la loro
   lunghezza. Senza supporto subgrid resta la disposizione precedente. */
@supports (grid-template-rows: subgrid){
  .att-cards{ grid-auto-rows: auto; }
  .att-card{ display: grid; grid-row: span 3; grid-template-rows: subgrid; }
  .att-card a{ grid-row: span 3; display: grid; grid-template-rows: subgrid; row-gap: 0; height: auto; min-height: 0; }
  .att-card__body{ display: contents; }
  .att-card__num{ justify-self: center; align-self: start; margin-bottom: clamp(110px, 17vh, 210px); }
  .att-card h3, .att-card p{ position: relative; z-index: 1; align-self: start; }
}

/* ==========================================================
   HOME — PROFESSIONISTI
   ========================================================== */

/* Professionisti in home: intestazione come Pubblicazioni (colonna sinistra,
   resta ferma mentre scorrono i livelli), livelli a destra. Stili .pub-* condivisi. */
#professionisti{
  --pub-ink: #042913; --pub-muted: #5f6f63; --pub-line: rgba(4,41,19,.14); --pub-accent: #5f8a1e;
  background: #fff; color: var(--pub-ink); text-align: left; letter-spacing: 0;
  padding: clamp(100px, 13vh, 160px) 0; height: auto;
}
#professionisti .prof-head__side{ max-width: 40ch; }
.professionisti-wrap{ margin-top: 0; }
.professionisti-wrap > div { background-color: #dce4d8; border: 4px solid; padding: 28px 40px; display: flex; align-content: center; align-items: center; justify-content: space-between; text-align: left; border-color: #fff; border-bottom: 0; text-align: left; transition: all .3s;}
.professionisti-wrap > div:first-of-type { border-top-left-radius: 50px; border-top-right-radius: 50px; }
.professionisti-wrap > div:last-of-type{border-bottom: 4px solid #fff; border-bottom-left-radius: 50px; border-bottom-right-radius: 50px; }
.professionisti-wrap h3 { font-size: 2em; color: #a2b4a3; width: 100%;  flex: 3;transition: all .3s;}
.professionisti-wrap p { font-size: 1.125em; font-weight: 800; color: #a2b4a3;transition: all .3s;}
.professionisti-wrap > div:hover { background: #a2b4a3; }
.professionisti-wrap>div:hover h3{color: #a7d550;}
.professionisti-wrap>div:hover p{color: #000;}
.professionisti-testo { display: flex; gap: 20px; align-items: flex-end; align-content: center; width: 50%; justify-content: center; flex-direction: column;  flex: 1;}

/* ==========================================================
   HOME — PUBBLICAZIONI
   ========================================================== */

#professionisti .prof-head__side .pub-intro{ margin-top: 0; }
#pubblicazioni{
  --pub-ink: #042913; --pub-muted: #5f6f63; --pub-line: rgba(4,41,19,.14); --pub-accent: #5f8a1e;
  background: #f4f4f0; color: var(--pub-ink); text-align: left; letter-spacing: 0;
  font-family: var(--hl-sans);
  padding: clamp(100px, 13vh, 160px) 0;
}
.pub-frame{
  padding: 0 var(--frame-x);
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(40px, 6vw, 120px); align-items: start;
}
.pub-kicker{
  display: flex; align-items: center; gap: 22px; margin: 0 0 clamp(28px, 5vh, 56px);
  font-size: .8125rem; line-height: 1; letter-spacing: .24em; text-transform: uppercase; color: var(--pub-ink);
}
.pub-kicker-rule{ width: 60px; height: 1px; background: currentColor; }
.pub-title{ margin: 0; color: var(--pub-ink); font-weight: 400; text-transform: none; line-height: 1; }
.pub-title-line1{
  display: block; font-family: var(--hl-sans); font-weight: 400;
  font-size: clamp(2.8rem, min(6vw, 12vh), 8rem); line-height: .98; letter-spacing: -.065em;
}
.pub-title-line2{
  display: block; font-family: var(--hl-serif); font-style: italic; font-weight: 400;
  font-size: clamp(3rem, min(6.5vw, 13vh), 8.6rem); line-height: .95; letter-spacing: -.035em;
}
.pub-intro{
  max-width: 34ch; margin: clamp(32px, 6vh, 64px) 0 0;
  font-size: clamp(1rem, 1.12vw, 1.375rem) !important; line-height: 1.55; letter-spacing: -.01em; color: var(--pub-muted);
}
.pub-all{
  display: inline-flex; align-items: center; gap: 28px; margin-top: 28px; padding-bottom: 14px;
  border-bottom: 2px solid #a7d550; color: var(--pub-accent); text-decoration: none;
  font-size: .875rem; letter-spacing: .2em; text-transform: uppercase;
  transition: color .3s, gap .4s cubic-bezier(.22,1,.36,1);
}
.pub-all:hover{ color: var(--pub-ink); gap: 36px; }
.pub-all:focus-visible{ outline: 2px solid var(--pub-ink); outline-offset: 6px; }
.pub-list{ list-style: none; margin: 0; padding: 0 !important; border-top: 1px solid var(--pub-line); }
.pub-list li{ margin: 0; border-bottom: 1px solid var(--pub-line); }
.pub-row{
  position: relative; display: grid; grid-template-columns: 72px minmax(0, 1fr) 24px; align-items: center; gap: 16px 24px;
  padding: clamp(30px, 4.5vh, 48px) 0; color: var(--pub-ink); text-decoration: none;
}
/* filetto lime che si allunga all'hover */
.pub-row::after{
  content: ""; position: absolute; left: 0; bottom: -1px; height: 2px; width: 100%;
  background: #a7d550; transform: scaleX(0); transform-origin: left center;
  transition: transform .6s cubic-bezier(.22,1,.36,1);
}
.pub-row__num{ font-size: .875rem; letter-spacing: .16em; color: var(--pub-muted); }
.pub-row__title{
  display: block; font-size: clamp(1.75rem, 2.3vw, 2.75rem); line-height: 1.1; letter-spacing: -.04em;
  transition: transform .5s cubic-bezier(.22,1,.36,1);
}
.pub-row__desc{
  display: block; margin-top: 10px; max-width: 46ch;
  font-size: clamp(.9375rem, .95vw, 1.0625rem); line-height: 1.55; color: var(--pub-muted);
  transition: transform .5s cubic-bezier(.22,1,.36,1);
}
.pub-row__arrow{ justify-self: end; transition: transform .5s cubic-bezier(.22,1,.36,1), color .3s; }
.pub-row:hover::after, .pub-row:focus-visible::after{ transform: scaleX(1); }
.pub-row:hover .pub-row__title, .pub-row:hover .pub-row__desc{ transform: translateX(8px); }
.pub-row:hover .pub-row__arrow{ transform: translate(3px, -3px); color: var(--pub-accent); }
.pub-row:focus-visible{ outline: 2px solid var(--pub-ink); outline-offset: 4px; }
.pub-section{ padding: 50px 0 100px; }

/* ==========================================================
   HOME — FAQ
   ========================================================== */

details summary{ font-size: 1.5em; padding: 10px 0; }
#faq{
  --pub-ink: #042913; --pub-muted: #5f6f63; --pub-line: rgba(4,41,19,.14); --pub-accent: #5f8a1e;
  background: #fff; color: var(--pub-ink); text-align: left; letter-spacing: 0;
  padding: clamp(100px, 13vh, 160px) 0;
}
.faq-container{ margin: 0; border-top: 1px solid var(--pub-line); counter-reset: faq; }
.faq-item{ position: relative; border-bottom: 1px solid var(--pub-line); counter-increment: faq; }
.faq-item::after{
  content: ""; position: absolute; left: 0; bottom: -1px; width: 100%; height: 2px; background: #a7d550;
  transform: scaleX(0); transform-origin: left center; transition: transform .6s cubic-bezier(.22,1,.36,1);
}
.faq-item:hover::after, .faq-item[open]::after{ transform: scaleX(1); }
.faq-item summary{
  list-style: none; cursor: pointer; position: relative;
  display: grid; grid-template-columns: 72px minmax(0, 1fr) 24px; align-items: center; gap: 16px 24px;
  padding: clamp(26px, 4vh, 40px) 0; font-size: inherit; color: var(--pub-ink);
}
.faq-item summary::-webkit-details-marker{ display: none; }
.faq-item summary::before{ content: counter(faq, decimal-leading-zero); font-size: .875rem; letter-spacing: .16em; color: var(--pub-muted); }
.faq-item summary strong{
  font-weight: 400; font-size: clamp(1.375rem, 2vw, 2.25rem); line-height: 1.15; letter-spacing: -.035em;
  transition: transform .5s cubic-bezier(.22,1,.36,1);
}
.faq-item summary:hover strong{ transform: translateX(8px); }
.faq-item summary:focus-visible{ outline: 2px solid var(--pub-ink); outline-offset: 4px; }
/* "+" che diventa "×" all'apertura */
.faq-item .arrow{
  position: relative; width: 18px; height: 18px; margin: 0; border: 0; transform: none; justify-self: end;
  transition: transform .45s cubic-bezier(.22,1,.36,1);
}
.faq-item .arrow::before, .faq-item .arrow::after{
  content: ""; position: absolute; left: 50%; top: 50%; background: currentColor;
}
.faq-item .arrow::before{ width: 18px; height: 1.5px; margin: -.75px 0 0 -9px; }
.faq-item .arrow::after{ width: 1.5px; height: 18px; margin: -9px 0 0 -.75px; }
.faq-item[open] .arrow{ transform: rotate(45deg); color: var(--pub-accent); }
.faq-content{ padding: 0 48px clamp(28px, 4vh, 40px) 96px; animation: fadeIn .3s ease; }
.faq-content p{ max-width: 70ch; font-size: clamp(1rem, 1.1vw, 1.25rem); line-height: 1.6; color: var(--pub-muted); }
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ==========================================================
   FOOTER
   ========================================================== */

.wpcf7 p { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start; align-content: center; gap: 20px; }
.wpcf7 p .wpcf7-form-control-wrap[data-name="acceptance"] { margin: 0; font-size: .875em; line-height: 18px; width: 100%; margin-right: auto; padding: 0; text-align: center; }
.wpcf7 p .wpcf7-form-control-wrap input[type="checkbox"] { width: auto; margin: 0; height: auto; padding: 0; appearance: auto; }
.wpcf7 p .wpcf7-form-control-wrap input, .wpcf7 p .wpcf7-form-control-wrap select { width: 100%; padding: 5px 10px; background-color: #fff; color: #000; border-radius: 10px; }
.wpcf7 p .wpcf7-form-control-wrap input[data-name="your-subject"]{width: 100%;}
.wpcf7 p .wpcf7-form-control-wrap { width: calc(50% - 10px); }
.wpcf7 p .wpcf7-form-control-wrap[data-name="your-subject"] { width: 100%; }
.wpcf7 p .wpcf7-form-control-wrap[data-name="your-message"] { width: 100%; }
.wpcf7 p .wpcf7-form-control-wrap textarea { width: 100%; height: 120px; padding: 5px 10px; margin-bottom: 0; background-color: #fff; border-radius: 10px; display: block;}
.wpcf7 p .wpcf7-form-control-wrap[data-name="acceptance"] a{display: inline-block; margin: 0; font-weight: 400;padding: 0;}
.wpcf7-list-item{margin: 0;}
.wpcf7 p input[type="submit"] { padding: 10px 40px; width: auto; text-align: center; display: inline-block; border-radius: 10px; text-decoration: none; background-color: #a2b4a3; color: #042913; text-transform: uppercase; font-weight: 500; letter-spacing: .14em; transition: all .5s; }
.wpcf7 p input[type="submit"]:hover{background-color: #a7d550;}
span.wpcf7-spinner{position: absolute;bottom: 40px;}
footer { font-size: 1em; text-align: center; }
footer p{font-size: 1em;}
.footer-top { background: #042913; color: #fff; padding: 100px 0;}
.footer-top h3 { width: 100%; margin-bottom: 20px;     color: #a7d550;}
/* Titoli del footer come quelli delle sezioni: filetto lime sopra, sans bianco
   stretto (Inter Tight 400). Il markup resta quello di footer.php. */
.footer-top h3{
  color: var(--hl-ink); font-weight: 400; text-transform: none;
  font-size: clamp(2rem, 2.6vw, 3rem); line-height: 1; letter-spacing: -.05em;
  margin-bottom: 28px;
}
.footer-top h3::before{
  content: ""; display: block; width: 60px; height: 1px; margin: 0 auto 15px;
  background: var(--hl-lime);
}
.footer-top h4{ font-weight: 400; letter-spacing: -.03em; }
.footer-top address{ font-style: normal; color: var(--hl-muted); }
/* LinkedIn nel footer: icona tonda come nel menu + testo */
.footer-top .footer-social{ margin-top: 22px; }
.footer-linkedin{ display: inline-flex; align-items: center; gap: 12px; color: var(--hl-ink); text-decoration: none !important; }
.footer-linkedin__icon{
  width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(167,213,80,.6); color: var(--hl-ink); font-size: 1rem;
  transition: background-color .3s, border-color .3s, color .3s, transform .35s cubic-bezier(.22,1,.36,1), box-shadow .3s;
}
.footer-linkedin__text{ font-size: .8125rem; letter-spacing: .16em; text-transform: uppercase; }
.footer-linkedin:hover .footer-linkedin__icon,
.footer-linkedin:focus-visible .footer-linkedin__icon{ background: #a7d550; border-color: #a7d550; color: #042913; transform: translateY(-2px); box-shadow: 0 0 0 6px rgba(167,213,80,.15); }
.footer-linkedin:hover .footer-linkedin__text{ color: #a7d550; }
.left-footer, .right-footer{width: 50%;}
.footer-top a, .footer-top h4{color: #fff;}
.footer-top img{height: 70px;}
.footer-top .contatti { margin-bottom: 60px; }
.footer-top .contatti, .footer-top .sedi { width: 100%; }
.footer-top .contatti h3 { margin-bottom: 20px; }
.footer-top .sedi { display: flex; justify-content: center; flex-wrap: wrap; }
/* Footer senza modulo (tutte le pagine tranne Le sedi): contatti e sedi
   affiancati su tutta la larghezza */
.footer-top--compact .right-footer{ width: 100%; display: flex; justify-content: space-between; align-items: flex-start; gap: 40px 80px; }
.footer-top--compact .contatti, .footer-top--compact .sedi{ width: auto; flex: 1 1 0; margin-bottom: 0; }
.sede-left, .sede-right { padding: 0 20px; }
.sede-left address, .sede-right address, .footer-top h4 { margin-top: 5px; }

/* ==========================================================
   PAGINE INTERNE — CONTENUTI
   ========================================================== */

.elenco-custom { list-style-type: none; padding: 0!important; display: flex; gap: 40px; justify-content: center; margin: 60px 0; flex-wrap: wrap;}
.elenco-custom li { width: calc(33.33% - 30px); background: #dce4d8; border-radius: 25px; text-align: center; will-change: transform, opacity; transform-origin: center center; position: relative; z-index: 1; transition: box-shadow 0.3s; padding: 40px 20px; font-size: 1.125em; color: #042913; text-transform: uppercase; font-weight: 900; display: flex; justify-content: center; align-items: center; }
.elenco-custom.quattro-col li{width: calc(25% - 30px);}
/* Elenco custom con lo stesso effetto hover dei cubotti "Attività" */
.elenco-custom{
  list-style:none; position:relative;
  display:flex; flex-wrap:wrap; justify-content:center; gap:40px;
}
.elenco-custom li{
  width:calc(33.33% - 30px);
  background:#dce4d8; border-radius:25px; text-align:center; padding:40px 20px;
  cursor:pointer; transition:box-shadow .3s;
  position:relative; z-index:1;             /* indispensabile per venire in primo piano */
  transform-origin:center center; will-change:transform,opacity;
}
.elenco-custom li.is-active{ z-index:10; box-shadow:0 20px 60px rgba(4,41,19,.18); }
.elenco-custom.has-hover li:not(.is-active){ pointer-events:none; }
/* Lo spazio sotto l'header fisso (alto ~110px). Le interne partono qui sotto. */
.inner-page{ padding-top: var(--header-h); }
.inner-body{ padding: 60px 0; }
.entry-content > * + *{ margin-top: 24px; }
.entry-content h2{ margin-top: 56px; font-size: clamp(1.75rem, 2.6vw, 2.5rem); line-height: 1.1; letter-spacing: -.04em; color: #042913; }
.entry-content h3{ margin-top: 40px; font-size: clamp(1.375rem, 1.8vw, 1.75rem); line-height: 1.15; letter-spacing: -.03em; color: #042913; }
.entry-content h4{ margin-top: 32px; font-size: 1.125rem; letter-spacing: -.01em; }
.entry-content h2:first-child,
.entry-content h3:first-child{ margin-top:0; }
.entry-content p{ font-size: clamp(1.0625rem, 1.12vw, 1.25rem); line-height: 1.7; color: #1c2a21; }
.entry-content a:not(.button){ color:#042913; text-decoration:underline; text-decoration-color: #a7d550; text-decoration-thickness: 2px; text-underline-offset:4px; }
.entry-content a:not(.button):hover{ color:#5f8a1e; }
.entry-content ul, .entry-content ol{ padding-left:1.25em; }
.entry-content li{ font-size: clamp(1.0625rem, 1.12vw, 1.25rem); line-height: 1.7; color: #1c2a21; }
.entry-content li + li{ margin-top: 6px; }
.entry-content li::marker{ color: #5f8a1e; }
.entry-content img{ border-radius: 0; }
.entry-content blockquote{ margin: 40px 0; padding: 4px 0 4px 28px; border-left: 2px solid #a7d550; color:#042913; }
.entry-content blockquote p{ font-family: var(--hl-serif); font-style: italic; font-size: clamp(1.5rem, 2.2vw, 2.125rem); line-height: 1.25; letter-spacing: -.01em; color: #042913; }
/* contenuti editor: niente overflow su mobile */
.entry-content img{ max-width:100%; height:auto; }
.entry-content table{ display:block; width:100%; overflow-x:auto; }

/* --- Pagine generiche (page.php: privacy, cookie, note legali…) ---
       colonna di lettura + indice laterale fermo se ci sono almeno 3 H2 */
.page-body{ --pub-ink: #042913; --pub-accent: #5f8a1e; padding: clamp(56px, 8vh, 100px) 0 clamp(80px, 12vh, 140px); }
.page-layout{ display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(32px, 5vw, 110px); align-items: start; }
.page-layout.has-toc{ grid-template-columns: minmax(200px, 3fr) minmax(0, 9fr); }
.page-content{ max-width: 78ch; min-width: 0; }
.page-content h2{ scroll-margin-top: calc(var(--header-h) + 24px); }
.page-content > h2:first-child{ margin-top: 0; }
.page-content table{ border-collapse: collapse; font-size: .9375rem; }
.page-content th, .page-content td{ padding: 10px 12px; border-bottom: 1px solid rgba(4,41,19,.14); text-align: left; vertical-align: top; }
.page-content th{ font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; color: #5f6f63; font-weight: 500; }

.page-toc{ position: sticky; top: calc(var(--header-h) + 32px); max-height: calc(100vh - var(--header-h) - 64px); overflow: auto; }
.page-toc .pub-kicker{ margin-bottom: 18px; font-size: .75rem; }
.page-toc ol{ list-style: none; margin: 0; padding: 0 !important; border-top: 1px solid rgba(4,41,19,.14); counter-reset: toc; }
.page-toc li{ counter-increment: toc; border-bottom: 1px solid rgba(4,41,19,.14); }
.page-toc a{
  display: grid; grid-template-columns: 28px 1fr; gap: 6px; padding: 11px 0;
  color: #042913; text-decoration: none; font-size: .9375rem; line-height: 1.35; transition: color .25s, padding-left .3s;
}
.page-toc a::before{ content: counter(toc, decimal-leading-zero); font-size: .75rem; letter-spacing: .12em; color: #5f6f63; padding-top: 2px; }
.page-toc a:hover{ color: #5f8a1e; padding-left: 4px; }
.page-toc a.is-current{ color: #5f8a1e; }
.page-toc__updated{ margin-top: 18px; font-size: .8125rem !important; color: #5f6f63; }

/* ==========================================================
   PAGINE INTERNE — HERO
   ========================================================== */

.page-hero{
  position: relative; overflow: hidden; isolation: isolate;
  background: #042913; color: var(--hl-ink);
  min-height: clamp(380px, 56vh, 640px);
  display: flex; align-items: flex-end;
}
.page-hero__rings{ position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.page-hero__rings svg{ position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.page-hero__frame{ position: relative; width: 100%; padding: clamp(56px, 9vh, 110px) var(--frame-x) clamp(56px, 9vh, 96px); }
.page-hero__kicker{
  display: flex; align-items: center; gap: 22px; margin: 0 0 clamp(22px, 4vh, 40px);
  font-size: .8125rem !important; line-height: 1.2; letter-spacing: .24em; text-transform: uppercase; color: var(--hl-faint);
  opacity: 0; animation: phFade .7s ease .15s forwards;
}
.page-hero__kicker-rule{ width: 60px; height: 1px; flex: none; background: currentColor; transform-origin: left center; transform: scaleX(0); animation: phRule .7s cubic-bezier(.45,0,.2,1) .1s forwards; }
.page-hero__eyebrow{ color: inherit; }
.page-hero__title{ margin: 0; color: var(--hl-ink); font-weight: 400; text-transform: none; line-height: 1; letter-spacing: 0; max-width: 100%; }
/* La larghezza massima va sulle righe (in ch del LORO font, non dell'h1):
   prima il limite era sull'h1 e la maschera tagliava le parole lunghe.
   Le parole più larghe dello schermo vanno a capo con il trattino. */
.page-hero__line1, .page-hero__line2{ max-width: 18ch; overflow-wrap: break-word; -webkit-hyphens: auto; hyphens: auto; }
.page-hero__line1{
  display: block; font-family: var(--hl-sans); font-weight: 400;
  font-size: clamp(2.6rem, min(6.4vw, 12vh), 8rem); line-height: .98; letter-spacing: -.06em;
  transform: translateY(110%); animation: phRise 1.1s cubic-bezier(.16,1,.3,1) .25s forwards;
}
.page-hero__line2{
  display: block; font-family: var(--hl-serif); font-style: italic; font-weight: 400;
  font-size: clamp(2.8rem, min(6.9vw, 13vh), 8.6rem); line-height: .95; letter-spacing: -.035em;
  color: var(--hl-lime);
  transform: translateY(110%); animation: phRise 1.1s cubic-bezier(.16,1,.3,1) .4s forwards;
}
.page-hero__intro{ margin-top: clamp(20px, 4vh, 40px); max-width: 52ch; opacity: 0; animation: phFade .8s ease .7s forwards; }
.page-hero__intro p{ color: var(--hl-muted); font-size: clamp(1rem, 1.12vw, 1.375rem); line-height: 1.6; letter-spacing: -.01em; }
.page-hero__intro p + p{ margin-top: .8em; }
/* Linea luminosa: si disegna da sinistra, poi compare il nodo che pulsa */
.page-hero__track{ position: relative; display: block; margin-top: clamp(36px, 6vh, 64px); width: min(56%, 760px); height: 24px; }
.page-hero__track-bar{
  position: absolute; left: 0; right: 0; top: 50%; height: 3px; margin-top: -1.5px; border-radius: 3px;
  background: linear-gradient(90deg, rgba(167,213,80,.18) 0%, var(--hl-lime) 40%, var(--hl-lime) 72%, rgba(167,213,80,.3) 100%);
  box-shadow: 0 0 14px rgba(167,213,80,.45);
  transform: scaleX(0); transform-origin: left center; animation: phRule 1.2s cubic-bezier(.45,0,.2,1) .55s forwards;
}
.page-hero__track-node{ position: absolute; top: 50%; border-radius: 50%; background: #042913; opacity: 0; }
.page-hero__track-node--start{ left: -8px; width: 16px; height: 16px; margin-top: -8px; border: 2px solid var(--hl-lime); animation: phFade .3s ease .5s forwards; }
.page-hero__track-node--end{
  right: -11px; width: 22px; height: 22px; margin-top: -11px; border: 3px solid var(--hl-lime);
  box-shadow: 0 0 0 8px rgba(167,213,80,.13), 0 0 0 18px rgba(167,213,80,.06), 0 0 30px 5px rgba(167,213,80,.3);
  animation: phFade .35s ease 1.7s forwards;
}
.page-hero__track-node--end::after{
  content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 1px solid var(--hl-lime);
  opacity: 0; animation: nodePulse 2.6s cubic-bezier(.22,1,.36,1) 2s infinite;
}
@keyframes phRise{ to{ transform: translateY(0); } }
@keyframes phFade{ to{ opacity: 1; } }
@keyframes phRule{ to{ transform: scaleX(1); } }

/* ==========================================================
   PAGINE INTERNE — MENU DI SEZIONE
   ========================================================== */

.section-nav{ position: sticky; top: var(--header-h); z-index:50; background:#dce4d8; }
.section-nav__inner{ display:flex; align-items:center; gap:24px; padding-top:14px; padding-bottom:14px; justify-content: center;}
.section-nav__label{ text-transform:uppercase; font-weight:900; color:#042913; font-size:.9em; letter-spacing:1px; white-space:nowrap; }
.section-nav__toggle{ display:none; }
.section-nav__menu{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.section-nav__menu li{ margin:0; }
.section-nav__menu a{ display:inline-block; text-decoration:none; text-transform:uppercase; font-weight:700; font-size:.875em; letter-spacing:.5px; color:#042913; padding:8px 16px; border-radius:10px; border:2px solid transparent; transition: all .3s; white-space:nowrap; }
.section-nav__menu a:hover{ border-color:#a7d550; }
.section-nav__menu .current-menu-item a,
.section-nav__menu .current_page_item a{ background:#042913; color:#a7d550; }

/* ==========================================================
   LO STUDIO (PAGINA)
   ========================================================== */

.studio-links { padding: 0 0 60px; }
.studio-links__grid{ display:flex; flex-wrap:wrap; gap:0; }
.studio-link { background-color: #dce4d8; border: 4px solid; padding: 28px 40px; display: flex; align-content: center; align-items: center; justify-content: space-between; text-align: left; border-color: #fff; border-bottom: 0; text-align: left; transition: all .3s; text-decoration: none;width: 100%;}
.studio-link:first-of-type {
    border-top-left-radius: 50px;
    border-top-right-radius: 50px;
}
.studio-link:last-of-type {
    border-bottom: 4px solid #fff;
    border-bottom-left-radius: 50px;
    border-bottom-right-radius: 50px;
}
.studio-link__label { font-size: 2em; color: #a2b4a3; width: 100%; flex: 3; transition: all .3s; font-weight: 400; text-transform: none; letter-spacing: -.035em; line-height: 1.1em; }
/* come i livelli Professionisti in home */
.studio-link__arrow{ flex-shrink:0; width:52px; height:52px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:#042913; color:#a7d550; transition: transform .3s, background .3s; }
.studio-link:hover{ transform:translateY(-6px); background:#a2b4a3; }
.studio-link:hover .studio-link__label{color: #a7d550; }
.studio-link:hover .studio-link__arrow{ transform: translateX(6px); background:#042913; }

/* ==========================================================
   PROFESSIONISTI (PAGINA INTERNA)
   ========================================================== */

.team-groups{ padding: 60px 0 120px; }
.team-group{ margin-bottom: clamp(56px, 7vw, 96px); scroll-margin-top: calc(var(--header-h) + 90px); }
.team-group:last-child{ margin-bottom: 0; }
.team-group__label{
  margin: 0 0 18px; color: #5f6f63; text-transform: uppercase;
  font-size: .8125rem; font-weight: 700; letter-spacing: .2em; line-height: 1.3;
}
.team-grid{ list-style: none; margin: 0; padding: 0 !important; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.team-grid__item{ margin: 0; }
.prof-card{
  appearance: none; -webkit-appearance: none; border: 0; margin: 0; font: inherit; text-align: left; cursor: pointer;
  position: relative; overflow: hidden; isolation: isolate;
  display: flex; flex-direction: column; justify-content: space-between; gap: 36px;
  width: 100%; height: 100%; min-height: 220px; padding: 26px 64px 28px 26px;
  background: #e9ebe4; color: #042913; border-radius: 6px;
  transition: color .45s, background-color .45s, box-shadow .45s;
}
.prof-card__photo{
  /* all'hover: foto a colori sulla metà destra, card su fondo bianco
     (le foto sono scontornate / su fondo bianco) */
  position: absolute; top: 0; right: 0; bottom: 0; left: auto; z-index: -1;
  width: 48%; height: 100%;
  object-fit: cover; object-position: center 12%;
  opacity: 0; transform: translateX(12px);
  transition: opacity .5s ease, transform .8s cubic-bezier(.22,1,.36,1);
}
.prof-card__text{ max-width: 52%; }
.prof-card__initials{
  width: 50px; height: 50px; border-radius: 50%; border: 1px solid currentColor;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .8125rem; letter-spacing: .06em; line-height: 1;
}
.prof-card__text{ display: block; }
.prof-card__initials, .prof-card__text{ position: relative; z-index: 1; }
.prof-card__name{ display: block; font-size: clamp(1.25rem, 1.5vw, 1.625rem); font-weight: 400; line-height: 1.15; letter-spacing: -.01em; }
.prof-card__role{ display: block; margin-top: 8px; font-size: .9375rem; line-height: 1.45; color: #5f6f63; transition: color .45s; }
.prof-card__plus{ position: absolute; right: 26px; bottom: 28px; line-height: 0; color: #5f6f63; transition: transform .45s cubic-bezier(.22,1,.36,1), color .45s; }
.prof-card:focus-visible{ outline: 2px solid #a7d550; outline-offset: 3px; background: #fff; }
.prof-card:focus-visible .prof-card__photo{ opacity: 1; transform: none; }
/* senza foto: all'hover diventa verde scuro pieno */
/* Popup */
html.prof-dialog-open{ overflow: hidden; }
.prof-dialog{
  padding: 0; border: 0; margin: auto;
  width: min(1040px, calc(100vw - 32px)); max-height: calc(100vh - 48px); max-height: calc(100dvh - 48px);
  background: #f4f4f0; color: #042913; border-radius: 8px; overflow: auto;
  box-shadow: 0 40px 120px rgba(0,0,0,.4);
}
.prof-dialog::backdrop{ background: rgba(4,41,19,.72); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.prof-dialog[open]{ animation: profIn .45s cubic-bezier(.22,1,.36,1); }
.prof-dialog[open]::backdrop{ animation: profFade .3s ease; }
@keyframes profIn{ from{ opacity: 0; transform: translateY(24px) scale(.98); } to{ opacity: 1; transform: none; } }
@keyframes profFade{ from{ opacity: 0; } to{ opacity: 1; } }
.prof-dialog__inner{ position: relative; min-height: 100%; }
.prof-dialog__close{
  appearance: none; position: absolute; top: 14px; right: 14px; z-index: 3;
  width: 46px; height: 46px; padding: 0; border: 0; border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  background: #042913; color: #fff; transition: background .3s, color .3s, transform .3s;
}
.prof-dialog__close:hover{ background: #a7d550; color: #042913; transform: rotate(90deg); }
.prof-dialog__close:focus-visible{ outline: 2px solid #a7d550; outline-offset: 3px; }
.prof-detail{ display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); min-height: 540px; }
/* foto a colori: lo sfondo è già nell'immagine (realizzato ad hoc) */
.prof-detail__media{ position: relative; background: #f4f4f0; min-height: 320px; }
.prof-detail__media img{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 15%; }
.prof-detail__initials{
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  color: #042913; font-size: clamp(3rem, 6vw, 5rem); letter-spacing: .06em;
}
.prof-dialog, .prof-card{ letter-spacing: normal; }
.prof-detail__body{ padding: clamp(32px, 4.5vw, 60px); padding-right: clamp(32px, 6vw, 80px); }
.prof-detail__name{
  margin: 0; color: #042913; text-transform: none; font-weight: 300;
  font-size: clamp(2rem, 3.4vw, 3rem); line-height: 1.05; letter-spacing: -.02em;
}
.prof-detail__name strong{ font-weight: 900; }
.prof-detail__role{ margin: 14px 0 0; font-size: 1.125rem !important; line-height: 1.45; font-weight: 700; }
.prof-detail__info{
  margin: 32px 0 0; padding-top: 28px; border-top: 1px solid rgba(4,41,19,.12);
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px;
}
.prof-detail__info .is-wide{ grid-column: 1 / -1; }
.prof-detail__info dt{ margin: 0 0 6px; font-size: .75rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: #5f6f63; }
.prof-detail__info dd{ margin: 0; font-size: 1rem; line-height: 1.55; }
.prof-detail__info dd p{ margin: 0 0 .5em; font-size: 1rem; line-height: 1.55; }
.prof-detail__info dd p:last-child{ margin-bottom: 0; }
.prof-detail__contacts{ margin-top: 32px; display: flex; flex-wrap: wrap; gap: 12px; }
.prof-detail__contacts a{
  display: inline-flex; align-items: center; gap: 10px; padding: 12px 18px;
  border: 1px solid #042913; color: #042913; text-decoration: none; word-break: break-all;
  font-size: .875rem; letter-spacing: .04em; transition: background .3s, color .3s;
}
.prof-detail__contacts a:hover{ background: #042913; color: #a7d550; }

/* ==========================================================
   SEDI (PAGINA)
   ========================================================== */

.sedi-page{ background: #031f10; }
.sedi-frame{ padding: 0 var(--frame-x); }
.sedi-head{ position: relative; overflow: hidden; isolation: isolate; background: #031f10; color: var(--hl-ink); }
.sedi-head .page-hero__rings{ opacity: .6; }
.sedi-head__inner{
  display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 32px 64px;
  padding-top: clamp(56px, 9vh, 100px); padding-bottom: clamp(48px, 7vh, 80px);
}
.sedi-head__title{ max-width: none; }
.sedi-head__intro{ max-width: 34ch; margin: 0 0 .4em; }
.sedi-page .sedi{ background: #031f10; padding: 0 0 clamp(80px, 12vh, 140px); color: var(--hl-ink); }
.sedi-grid{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 1.6vw, 28px); align-items: start; }
/* Card */
.sede-card{
  --s-bg: #143a2a; --s-line: rgba(167,213,80,.24); --s-accent: #8cb31f; --s-glow: rgba(167,213,80,.35);
  position: relative; overflow: hidden; background: var(--s-bg); color: var(--hl-ink);
}
.sede--roma .sede-card{ --s-bg: #3e3229; --s-line: rgba(201,140,96,.24); --s-accent: #c08a62; --s-glow: rgba(214,150,100,.3); }
.sede-card__visual{
  position: relative; aspect-ratio: 16 / 7.6; overflow: hidden;
  background-image:
    repeating-linear-gradient( 45deg, transparent 0 94px, var(--s-line) 94px 96px),
    repeating-linear-gradient(-45deg, transparent 0 94px, var(--s-line) 94px 96px);
  background-position: center;
}
/* Segnaposto al centro + ombra */
.sede-card__pin{ position: absolute; left: 50%; top: 50%; width: 0; height: 0; }
.sede-card__mark{
  position: absolute; left: -38px; top: -38px; width: 76px; height: 76px;
  animation: sedeFloat 4s ease-in-out infinite;
}
.sede--milano .sede-card__mark::before{
  content: ""; position: absolute; inset: 16px; background: var(--s-accent);
  transform: rotate(45deg); box-shadow: 0 0 40px 8px var(--s-glow);
}
.sede--roma .sede-card__mark::before{
  content: ""; position: absolute; inset: 0; border-radius: 50%;
  border: 5px solid var(--s-accent); box-shadow: 0 0 34px 4px var(--s-glow);
}
.sede--roma .sede-card__mark::after{
  content: ""; position: absolute; inset: 14px; border-radius: 50%; background: var(--s-accent); opacity: .85;
}
.sede-card__shadow{
  position: absolute; left: -15px; top: 98px; width: 30px; height: 18px; border-radius: 50%;
  background: var(--s-accent); opacity: .8; animation: sedeShadow 4s ease-in-out infinite;
}
@keyframes sedeFloat{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(-8px); } }
@keyframes sedeShadow{ 0%,100%{ transform: scale(1); opacity: .8; } 50%{ transform: scale(.8); opacity: .55; } }
/* Pulsante mappa e iframe */
.sede-card__maptoggle{
  position: absolute; right: 20px; bottom: 18px; z-index: 2; height: auto;
  padding: 10px 16px; border: 1px solid rgba(243,244,238,.35); border-radius: 0; cursor: pointer;
  background: rgba(3,31,16,.35); color: var(--hl-ink);
  font-size: .75rem; letter-spacing: .18em; text-transform: uppercase;
  opacity: 0; transform: translateY(6px); transition: opacity .35s, transform .35s, background .3s, border-color .3s, color .3s;
}
.sede-card:hover .sede-card__maptoggle,
.sede-card__maptoggle:focus-visible{ opacity: 1; transform: none; }
.sede-card__maptoggle:hover{ background: var(--hl-lime); border-color: var(--hl-lime); color: #042913; }
.sede-card__maptoggle:focus-visible{ outline: 2px solid var(--hl-lime); outline-offset: 3px; }
.sede-card__visual iframe{
  position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; border: 0;
  filter: grayscale(1) contrast(1.05); opacity: 0; animation: phFade .5s ease forwards;
}
.sede-card__visual.has-map .sede-card__maptoggle{ display: none; }
/* mappa visibile da subito */
.sede-card__visual--map iframe{ opacity: 1; animation: none; }
/* Info */
.sede-card__info{ position: relative; padding: clamp(22px, 2.2vw, 40px); padding-right: 80px; }
.sede-card__tag{ margin: 0 0 18px; font-size: .75rem !important; line-height: 1; letter-spacing: .2em; text-transform: uppercase; color: var(--hl-lime); }
.sede-card__city{ margin: 0; color: var(--hl-ink); font-size: clamp(2rem, 2.6vw, 3rem); line-height: 1; letter-spacing: -.05em; font-weight: 400; }
.sede-card__addr{ margin-top: 14px; font-style: normal; font-size: 1rem; line-height: 1.5; color: var(--hl-muted); }
.sede-card__go{
  position: absolute; right: clamp(22px, 2.2vw, 40px); top: clamp(52px, 4.4vw, 72px);
  width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center;
  color: var(--hl-ink); border: 1px solid transparent; transition: transform .4s cubic-bezier(.22,1,.36,1), border-color .3s, color .3s;
}
.sede-card__go:hover{ transform: translate(3px, -3px); border-color: rgba(243,244,238,.35); color: var(--hl-lime); }
.sede-card__go:focus-visible{ outline: 2px solid var(--hl-lime); outline-offset: 2px; }
/* Galleria foto */
.sede-swiper{ overflow: hidden; background: #0a2a19; }
.sede-swiper .swiper-slide{ overflow: hidden; }
.sede-swiper .swiper-slide img{ width: 100%; height: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; }
.sede-swiper .swiper-button-next,
.sede-swiper .swiper-button-prev{ color: #fff; width: 44px; height: 44px; background: rgba(4,41,19,.55); border-radius: 50%; transition: background .25s; }
.sede-swiper .swiper-button-next:hover,
.sede-swiper .swiper-button-prev:hover{ background: rgba(4,41,19,.85); }
.sede-swiper .swiper-button-next:after,
.sede-swiper .swiper-button-prev:after{ font-size: 16px; font-weight: 700; }
.sede-swiper .swiper-pagination-bullet{ background: #fff; opacity: .7; }
.sede-swiper .swiper-pagination-bullet-active{ background: #a7d550; opacity: 1; }
.sedi-content{ margin-top: clamp(56px, 8vh, 96px); }
.sedi-content, .sedi-content p{ color: var(--hl-muted); }

/* ==========================================================
   LAVORA CON NOI (PAGINA)
   ========================================================== */
.lcn{
  --pub-ink: #042913; --pub-muted: #5f6f63; --pub-line: rgba(4,41,19,.14); --pub-accent: #5f8a1e;
  padding: clamp(64px, 10vh, 120px) 0 clamp(80px, 12vh, 140px); color: var(--pub-ink);
}
.lcn__grid{ display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: clamp(40px, 6vw, 120px); align-items: start; }
.lcn__main > p:first-child{ font-size: clamp(1.125rem, 1.3vw, 1.5rem); line-height: 1.55; color: var(--pub-muted); max-width: 52ch; margin-bottom: clamp(28px, 4vh, 44px); }
.lcn__aside{ position: sticky; top: calc(var(--header-h) + 40px); padding: clamp(28px, 2.6vw, 44px); background: #f4f4f0; }
.lcn__aside .pub-kicker{ margin-bottom: 20px; }
.lcn__kicker2{ margin-top: 36px; }
.lcn__contacts{ list-style: none; margin: 0; padding: 0 !important; }
.lcn__contacts li{ display: flex; flex-direction: column; gap: 2px; padding: 12px 0; border-bottom: 1px solid var(--pub-line); }
.lcn__contacts span{ font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--pub-muted); }
.lcn__contacts a{ color: var(--pub-ink); text-decoration: none; font-size: 1.0625rem; word-break: break-word; }
.lcn__contacts a:hover{ color: var(--pub-accent); }
.lcn__sedi{ display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 28px; }
.lcn__sedi h3{ font-size: 1.5rem; margin: 0 0 6px; }
.lcn__sedi address{ font-style: normal; color: var(--pub-muted); line-height: 1.5; }

/* Modulo Contact Form 7 su fondo chiaro.
   I selettori includono .wpcf7-form-control-wrap per battere le regole
   generali del modulo del footer (.wpcf7 p ..., campi al 50%, centrati). */
.lcn .wpcf7 form{ display: grid; grid-template-columns: 1fr 1fr; gap: 22px 20px; }
.lcn .wpcf7 form > p, .lcn .wpcf7 .lcn-full,
.lcn .wpcf7 .wpcf7-response-output, .lcn .wpcf7 .wpcf7-spinner{ grid-column: 1 / -1; }
.lcn .wpcf7 .lcn-half, .lcn .wpcf7 .lcn-full{ margin: 0; min-width: 0; }
.lcn .wpcf7 form p{ display: block; margin: 0; text-align: left; }
.lcn .wpcf7 label{ display: block; width: 100%; font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--pub-muted); text-align: left; }
.lcn .wpcf7 label br{ display: none; }
.lcn .wpcf7 .wpcf7-form-control-wrap{ display: block; width: 100%; margin: 8px 0 0; text-align: left; }

.lcn .wpcf7 .wpcf7-form-control-wrap input[type="text"],
.lcn .wpcf7 .wpcf7-form-control-wrap input[type="email"],
.lcn .wpcf7 .wpcf7-form-control-wrap input[type="tel"],
.lcn .wpcf7 .wpcf7-form-control-wrap select,
.lcn .wpcf7 .wpcf7-form-control-wrap textarea{
  display: block; width: 100%; height: auto; margin: 0; padding: 14px 16px;
  border: 1px solid rgba(4,41,19,.22); border-radius: 0; background: #fff; color: var(--pub-ink);
  font-size: 1rem; line-height: 1.4; letter-spacing: 0; text-transform: none;
  transition: border-color .25s, box-shadow .25s;
}
.lcn .wpcf7 .wpcf7-form-control-wrap select{
  appearance: none; -webkit-appearance: none; padding-right: 44px; cursor: pointer;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 5 5-5' fill='none' stroke='%23042913' stroke-width='1.6'/%3E%3C/svg%3E") right 16px center / 14px no-repeat;
}
.lcn .wpcf7 .wpcf7-form-control-wrap textarea{ min-height: 160px; resize: vertical; }
.lcn .wpcf7 .wpcf7-form-control-wrap input:focus,
.lcn .wpcf7 .wpcf7-form-control-wrap select:focus,
.lcn .wpcf7 .wpcf7-form-control-wrap textarea:focus{ outline: none; border-color: #042913; box-shadow: 0 0 0 3px rgba(167,213,80,.35); }

.lcn .wpcf7 .wpcf7-form-control-wrap input[type="file"]{
  display: block; width: 100%; height: auto; margin: 0; padding: 16px; border: 1px dashed rgba(4,41,19,.35); border-radius: 0;
  background: #f4f4f0; color: var(--pub-ink); font-size: .9375rem; line-height: 1.4; letter-spacing: 0; text-transform: none; cursor: pointer;
}
.lcn .wpcf7 .wpcf7-form-control-wrap input[type="file"]::file-selector-button{
  margin-right: 14px; padding: 10px 16px; border: 0; background: #042913; color: #fff;
  font: inherit; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; transition: background .3s, color .3s;
}
.lcn .wpcf7 .wpcf7-form-control-wrap input[type="file"]:hover::file-selector-button{ background: #a7d550; color: #042913; }

/* privacy */
.lcn .wpcf7 .wpcf7-acceptance, .lcn .wpcf7 .wpcf7-acceptance label{ text-align: left; }
.lcn .wpcf7 .lcn-full .wpcf7-form-control-wrap[data-name="privacy"]{ display: inline; margin: 0; }
.lcn .wpcf7 .wpcf7-list-item-label, .lcn .wpcf7 .lcn-full:has(.wpcf7-acceptance){ font-size: .9375rem; line-height: 1.6; color: var(--pub-muted); letter-spacing: 0; text-transform: none; }
.lcn .wpcf7 .wpcf7-form-control-wrap input[type="checkbox"]{ width: 16px; height: 16px; margin: 0 8px 0 0; vertical-align: -2px; accent-color: #042913; }
.lcn .wpcf7 .lcn-full a{ color: var(--pub-ink); }

.lcn .wpcf7 .lcn-full input[type="submit"]{
  /* altezza e line-height espliciti: il testo resta centrato anche se altri
     stili (tema / CF7) impongono padding o altezze diverse agli input */
  display: inline-flex; align-items: center; justify-content: center;
  width: auto; height: 52px; min-height: 0; margin: 6px 0 0; padding: 0 34px !important; border: 0; border-radius: 0;
  background: #042913; color: #fff; font-size: .875rem; line-height: 52px !important; letter-spacing: .14em; text-transform: uppercase; cursor: pointer;
  vertical-align: middle; -webkit-appearance: none; appearance: none;
  transition: background .3s, color .3s;
}
.lcn .wpcf7 .lcn-full input[type="submit"]:hover:not(:disabled){ background: #a7d550; color: #042913; }
.lcn .wpcf7 .lcn-full input[type="submit"]:focus-visible{ outline: 2px solid #a7d550; outline-offset: 3px; }
/* CF7 disattiva il pulsante finché non si spunta la privacy: lo rendiamo
   visibilmente "spento", così si capisce perché non risponde al clic. */
.lcn .wpcf7 .lcn-full input[type="submit"]:disabled{ background: #c9d1c6; color: #5f6f63; cursor: not-allowed; }
.lcn .wpcf7 .wpcf7-not-valid-tip{ margin-top: 6px; font-size: .8125rem; letter-spacing: 0; text-transform: none; }
.lcn .wpcf7 .wpcf7-response-output{ margin: 0 !important; padding: 14px 16px !important; border-width: 1px !important; }
.lcn span.wpcf7-spinner{ position: static; }

/* ==========================================================
   PUBBLICAZIONI — ELENCHI, RICERCA, PAGINAZIONE
   ========================================================== */

/* Pagination */
.pagination a,
  .pagination span{padding: 10px 15px; border: 1px solid #ddd; text-decoration: none;}
.pagination a:hover{background: #eee}
.pub-article{ display:flex; gap:clamp(20px, 3vw, 44px); align-items:center; padding:clamp(24px, 3.5vh, 36px) 0; border-bottom:1px solid rgba(4,41,19,.14); }
.pub-article:first-child{ border-top:1px solid rgba(4,41,19,.14); }
.pub-article__media{ width:220px; flex-shrink:0; display:block; border-radius:0; overflow:hidden; }
.pub-article__media img{ width:100%; height:100%; object-fit:cover; aspect-ratio:16/10; display:block; }
.pub-article__body{ flex:1; min-width:0; }
.pub-article__meta{ text-transform:uppercase; letter-spacing:.18em; font-size:.75rem; font-weight:400; color:#5f6f63; margin-bottom:10px; }
.pub-article__title{ font-size: clamp(1.5rem, 2.2vw, 2.25rem); line-height: 1.12; letter-spacing: -.04em; font-weight: 400; margin-bottom:16px; }
.pub-article__title a{ color:#042913; text-decoration:none; }
.pub-article__title a:hover{ color:#5f8a1e; }
.pub-article__actions{ display:flex; flex-wrap:wrap; align-items:center; gap:20px; }
.pub-link{ display:inline-flex; align-items:center; gap:10px; padding-bottom:6px; border-bottom:1px solid #a7d550; text-decoration:none; text-transform:uppercase; font-weight:500; font-size:.75rem; letter-spacing:.18em; color:#042913; }
.pub-link:hover{ color:#5f8a1e; }
.pub-article__share{ display:inline-flex; gap:12px; margin-left:auto; }
.pub-article__share a{ width:38px; height:38px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; border:1px solid rgba(4,41,19,.25); color:#042913; transition: background .3s, border-color .3s, transform .3s; text-decoration: none;}
.pub-article__share a:hover{ background:#a7d550; border-color:#a7d550; color:#042913; transform:translateY(-2px); }
.entry-excerpt{ color:#042913; }
.entry-excerpt p{ font-size:1.1em; }
.pagination{ margin-top:50px; }
.pagination .nav-links{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
.pagination .page-numbers{ display:inline-block; padding:10px 16px; border-radius:10px; border:2px solid #042913; text-decoration:none; color:#042913; font-weight:700; transition: all .3s; }
.pagination a.page-numbers:hover{ background:#a7d550; border-color:#a7d550; }
.pagination .page-numbers.current{ background:#042913; color:#a7d550; }
section#form {
    background: #a2b4a3;
    padding: 40px 0;
}
.pub-search{
  display:flex; align-items:stretch; width:100%;
  background:#fff; border-radius:999px; overflow:hidden;
  box-shadow:0 6px 24px rgba(0,0,0,.15);
}
.pub-search input[type="search"]{
  flex:1 1 auto; min-width:0; border:0; background:transparent;
  padding:14px 22px; font-size:1em; color:#042913; font-family:inherit;
}
.pub-search input[type="search"]::placeholder{ color:#5b6b5e; }
.pub-search input[type="search"]:focus{ outline:none; }
.pub-search button{
  flex:0 0 auto; border:0; cursor:pointer; background:#a7d550; color:#042913;
  padding:0 24px; font-size:1.1em; display:flex; align-items:center; transition:background .25s;
}
.pub-search button:hover{ background:#042913; color:#a7d550; }

/* ==========================================================
   ARTICOLO SINGOLO
   ========================================================== */

/* Testata articolo: stesso linguaggio della hero (cerchi via SVG di sfondo,
   titolo sans bianco, meta come kicker). Il markup resta quello di single.php. */
.single-article__head{
  position: relative; overflow: hidden;
  background: #042913 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1920 1080' preserveAspectRatio='xMaxYMid slice'%3E%3Cg fill='%23a7d550'%3E%3Ccircle cx='1715' cy='800' r='900' opacity='.035'/%3E%3Ccircle cx='1715' cy='800' r='760' opacity='.035'/%3E%3C/g%3E%3Cg fill='none' stroke='%23a7d550'%3E%3Ccircle cx='1540' cy='664' r='410' opacity='.32'/%3E%3Ccircle cx='1295' cy='590' r='180' opacity='.32'/%3E%3Ccircle cx='1715' cy='800' r='615' opacity='.14'/%3E%3C/g%3E%3C/svg%3E") right center / cover no-repeat;
  padding: var(--header-h) 0 clamp(40px, 7vh, 72px);
}
.single-article__head .width-wrap-inner{ padding-top: clamp(30px,6vh,70px); }
.single-article__meta{ color: var(--hl-faint); text-transform:uppercase; letter-spacing:.24em; font-weight:400; font-size:.8125rem; margin-bottom:22px; }
.single-article__title{ color: var(--hl-ink); font-size: clamp(2.2rem, 4.6vw, 4.6rem); line-height:1; letter-spacing:-.05em; font-weight:400; }
.single-article__title em{ color: var(--hl-lime); }
.single-article__cover{ padding-top:40px; }
.single-article__cover img{ border-radius:25px; display:block; }
.single-article .inner-page{ padding-top:0; }
.single-article__share{ display:flex; gap:12px; margin-top:48px; }
.single-article__share a{ width:42px; height:42px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; background:#042913; color:#a7d550; transition: background .3s; }
.single-article__share a:hover{ background:#a7d550; color:#042913; }
/* l'articolo singolo non usa il padding-top dell'inner-page (c'è la testata scura) */
.single-article{ display:block; }
.content.inner-page > .single-article{ margin-top: calc(-1 * var(--header-h)); }

/* --- Articolo / evento singolo: hero delle pagine interne + layout a due
       colonne (dati e azioni a sinistra, ferme durante lo scroll; immagine e
       testo a destra). Template: single.php, single-eventi.php --- */
.post-single .page-hero__line1, .post-single .page-hero__line2{ max-width: 26ch; }
.post-single .page-hero__line1{ font-size: clamp(2.2rem, min(4.4vw, 9vh), 5.25rem); line-height: 1.02; letter-spacing: -.05em; }
.post-single .page-hero__line2{ font-size: clamp(2.4rem, min(4.8vw, 9.6vh), 5.75rem); }

.post-layout{
  display: grid; grid-template-columns: minmax(200px, 3fr) minmax(0, 9fr); gap: clamp(32px, 5vw, 110px);
  align-items: start; padding-top: clamp(56px, 8vh, 100px); padding-bottom: clamp(80px, 12vh, 140px);
}
.post-aside{ position: sticky; top: calc(var(--header-h) + 32px); color: #042913; --pub-ink: #042913; --pub-accent: #5f8a1e; }
.post-facts{ margin: 0; border-top: 1px solid rgba(4,41,19,.14); }
.post-facts > div{ padding: 14px 0; border-bottom: 1px solid rgba(4,41,19,.14); }
.post-facts dt{ font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: #5f6f63; }
.post-facts dd{ margin: 4px 0 0; font-size: 1.0625rem; line-height: 1.4; }
.post-facts a{ color: #042913; text-decoration: none; border-bottom: 1px solid #a7d550; }
.post-facts a:hover{ color: #5f8a1e; }
.post-actions{ display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-top: 28px; }
.post-share{ display: flex; align-items: center; gap: 10px; margin-top: 28px; }
.post-share__label{ margin-right: 6px; font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: #5f6f63; }
.post-share a{
  width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(4,41,19,.25); color: #042913; text-decoration: none; transition: background .3s, border-color .3s, color .3s, transform .3s;
}
.post-share a:hover{ background: #a7d550; border-color: #a7d550; transform: translateY(-2px); }
.post-back{ margin-top: 32px; }
.post-main{ min-width: 0; }
.post-cover{ margin: 0 0 clamp(32px, 5vh, 56px); }
.post-cover img{ display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 0; }
.post-main .entry-content{ max-width: 74ch; }
.post-main .testo-finale{ padding-top: 24px; border-top: 1px solid rgba(4,41,19,.14); color: #5f6f63; }

/* ==========================================================
   EVENTI
   ========================================================== */

.eventi-section{ padding: 60px 0 100px; }
.eventi-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:30px; }
.evento-card{ background:#f4f4f0; border-radius:0; overflow:hidden; display:flex; flex-direction:column; transition: transform .4s cubic-bezier(.22,1,.36,1), box-shadow .4s; }
.evento-card:hover{ transform:translateY(-6px); box-shadow:0 24px 50px rgba(4,41,19,.12); }
.evento-card__media{ display:block; aspect-ratio:4/3; overflow:hidden; }
.evento-card__media img{ width:100%; height:100%; object-fit:cover; display:block; }
.evento-card__body{ padding:28px; display:flex; flex-direction:column; gap:18px; align-items:flex-start; flex:1; }
.evento-card__title{ font-size: clamp(1.375rem, 1.7vw, 1.75rem); line-height:1.12; letter-spacing:-.035em; font-weight:400; color:#042913; }
.evento-card .button{ margin-top:auto; }
.evento-video{ margin-top:32px; }
.evento-rassegna-pulsanti{ display:flex; flex-wrap:wrap; gap:16px; margin-top:32px; align-items:center; }
.testo-finale{ width:100%; }
.millenium-video{ padding: 0 0 60px; }

/* ==========================================================
   DIVISORIO GUTENBERG
   ========================================================== */

.ilaw-divider{ display:block; width:100%; aspect-ratio: 1200 / 60; margin:60px 0; }
.ilaw-divider::before{
  content:""; display:block; width:100%; height:100%;
  background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%2060%22%20fill%3D%22none%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20d%3D%22M0%2044%20L586%2044%20Q600%2044%20600%2032%20L600%2032%20Q600%2020%20614%2020%20L1200%2020%22%20stroke%3D%22%23a7d550%22%20stroke-width%3D%222.5%22%20fill%3D%22none%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20vector-effect%3D%22non-scaling-stroke%22%2F%3E%3C%2Fsvg%3E") no-repeat center center; background-size:100% 100%;
  clip-path: inset(0 100% 0 0);
  animation: ilawDividerLine 1.4s cubic-bezier(.45,0,.2,1) .1s forwards;
}
.ilaw-divider--lg{ aspect-ratio: 1200 / 80; }
@keyframes ilawDividerLine{ to { clip-path: inset(0 0 0 0); } }
@supports (animation-timeline: view()){
  .ilaw-divider::before{ animation: ilawDividerLine linear both; animation-timeline: view(); animation-range: entry 5% cover 30%; }
}

/* ==========================================================
   LIGHTBOX GALLERIA
   ========================================================== */

.ilaw-lightbox{ position:fixed; inset:0; z-index:99999; display:none; align-items:center; justify-content:center; background:rgba(4,41,19,.93); padding:40px; }
.ilaw-lightbox.is-open{ display:flex; }
.ilaw-lightbox__img{ max-width:90vw; max-height:86vh; width:auto; height:auto; border-radius:10px; box-shadow:0 30px 90px rgba(0,0,0,.55); }
.ilaw-lightbox__btn{ position:absolute; background:rgba(255,255,255,.12); color:#fff; border:0; cursor:pointer; border-radius:50%; width:52px; height:52px; font-size:26px; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .25s, color .25s; }
.ilaw-lightbox__btn:hover{ background:#a7d550; color:#042913; }
.ilaw-lightbox__close{ top:24px; right:24px; }
.ilaw-lightbox__prev{ left:24px; top:50%; transform:translateY(-50%); }
.ilaw-lightbox__next{ right:24px; top:50%; transform:translateY(-50%); }
.ilaw-lightbox__count{ position:absolute; bottom:24px; left:50%; transform:translateX(-50%); color:#fff; font-size:.95em; letter-spacing:.04em; opacity:.85; }


/* ######################################################################
   <= 1600px  —  LAPTOP GRANDI (1600)
   ###################################################################### */
@media (max-width: 1600px) {

  /* --- Generale --- */
  h2 { font-size: 3em; }

  /* --- Home — professionisti --- */
  .professionisti-wrap > div { padding: 24px 30px; }
  .professionisti-wrap h3 { font-size: 1.75em; }

  /* --- Lo Studio (pagina) --- */
  .studio-link__label { font-size: 1.75em; }
}


/* ######################################################################
   <= 1440px  —  LAPTOP (1440 / 1400 / 1366)
   ###################################################################### */
@media (max-width: 1440px) {

  /* --- Generale: margine laterale e menu per laptop 1440/1366 --- */
  :root{ --frame-x: 7vw; }
  .header__menu .menu-item a{ letter-spacing: .07em; padding-left: 6px; padding-right: 6px; }

  /* --- Generale --- */
  p { font-size: 1.125em; }
  h2 { font-size: 2em; }
  body { --header-h: 90px; }

  /* --- Header e menu --- */
  .logo img { height: 50px; }
  .header__menu .sub-menu { min-width: 200px; }

  /* --- Home — professionisti --- */
  .professionisti-wrap h3 { font-size: 1.5em; }
  .professionisti-wrap p { font-size: 1em; }

  /* --- Footer --- */
  .footer-top { padding: 60px 0; }

  /* --- Lo Studio (pagina) --- */
  .studio-link__label { font-size: 1.5em; }
}


/* ######################################################################
   <= 1280px  —  LAPTOP PICCOLI (1280)
   ###################################################################### */
@media (max-width: 1280px) {

  /* --- Generale --- */
  /* margine laterale un po' più stretto sui laptop piccoli: lascia spazio al menu */
  :root { --frame-x: 6vw; }

  /* --- Header e menu --- */
  .logo img { height: 42px; }
  .header__menu { gap: 0; }
  .header__menu .menu-item a { letter-spacing: .03em; padding: 5px 3px; }
  .header__menu .menu-linkedin { margin-left: 4px; padding-left: 6px; }
  .header__menu .menu-linkedin > a { width: 32px; height: 32px; }
}


/* ######################################################################
   999px – 1280px  —  SOLO LAPTOP PICCOLI (non tablet)
   ###################################################################### */
@media (min-width: 999px) and (max-width: 1280px) {

  /* --- Header e menu --- */
  .header__menu .menu-item a{ font-size: .65rem; }

  /* --- Home — attività --- */
  .att-cards { grid-template-columns: repeat(6, minmax(0,1fr)); }
  .att-card { grid-column: span 2; }
  .att-card:nth-child(4) { grid-column: 2 / span 2; }
  .att-card a { min-height: 360px; }
}


/* ######################################################################
   <= 998px  —  TABLET (menu mobile da qui in giù)
   ###################################################################### */
@media (max-width: 998px) {

  /* --- Pagine generiche: indice sopra il testo --- */
  .page-layout.has-toc{ grid-template-columns: 1fr; }
  .page-toc{ position: static; max-height: none; }

  /* --- Articolo / evento singolo --- */
  .post-layout{ grid-template-columns: 1fr; }
  .post-aside{ position: static; order: 2; }
  .post-main{ order: 1; }

  /* --- Header e menu: LinkedIn nel menu mobile --- */
  .header__menu .menu-linkedin{ margin: 0; padding: 0; border-left: 0; }
  .header__menu .menu-linkedin > a{
    width: 100%; height: auto; justify-content: flex-start !important; gap: 14px;
    padding: 15px 0 !important; border: 0 !important; border-bottom: 1px solid rgba(167,213,80,.18) !important;
    border-radius: 0 !important; font-size: 1.45rem !important; color: #fff;
  }
  .header__menu .menu-linkedin > a::before{ width: 20px; height: 20px; }
  .header__menu .menu-linkedin > a:hover{ background: transparent; transform: none; box-shadow: none; color: #a7d550; }
  .header__menu .menu-linkedin > a:hover::before{ background: #a7d550; }

  /* --- Lavora con noi (pagina) --- */
  .lcn__grid{ grid-template-columns: 1fr; }
  .lcn__aside{ position: static; }

  /* --- Generale --- */
  #professionisti .prof-head, #faq .prof-head { display: block; }

  /* --- Header e menu --- */
  .header__menu .sub-menu { left: auto; right: 0; }
  /* L'header non deve creare contesto per i fixed (sennò il pannello si
       aggancia all'header invece che al viewport) */
  .header { transform: none !important; will-change: auto !important; filter: none !important; position: fixed; top: 0; left: 0; width: 100%; z-index: 100; }
  .header .logo { position: relative; z-index: 6; }
  .header__icon-bar { display: flex; flex-direction: column; justify-content: center; gap: 6px; width: 26px; height: 26px; padding: 0; margin: 0; border: 0; background: transparent; cursor: pointer; position: relative; z-index: 6; }
  .nav-wrapper { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100vh; height: 100dvh; display: block; background: #042913; padding: calc(var(--header-h) + 24px) 28px 48px; transform: translateX(100%); visibility: hidden; transition: transform .4s cubic-bezier(.4,0,.2,1), visibility .4s; overflow-y: auto; -webkit-overflow-scrolling: touch; z-index: 4; }
  body.menu-open .nav-wrapper { transform: translateX(0); visibility: visible; }
  body.menu-open { overflow: hidden; }
  .nav-wrapper .nav-layer { position: static; }
  .header__menu { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
  .header__menu .menu-item { width: 100%; position: static; }
  .header__menu .menu-item > a { display: flex; align-items: center; justify-content: space-between; padding: 15px 0; font-size: 1.45rem; line-height: 1.2; color: #fff; border-bottom: 1px solid rgba(167,213,80,.18); }
  .header__menu .menu-item-has-children > a::after { margin-left: auto; }
  /* sotto-menu = accordion in-flow */
  .header__menu .sub-menu { position: static; display: none; opacity: 1; visibility: visible; transform: none; background: transparent; border: 0; box-shadow: none; border-radius: 0; min-width: 0; margin: 0; padding: 0 0 6px 16px; }
  .header__menu .menu-item-has-children.is-open > .sub-menu { display: block; }
  .header__menu .sub-menu a { font-size: 1.1rem; padding: 12px 0; color: #dce4d8; border-bottom: 1px solid rgba(167,213,80,.12); }
  .header__menu .sub-menu .sub-menu { left: auto; right: auto; top: auto; margin: 0 0 0 14px; }
  .header__menu .menu-item.current-menu-item a { color: #a7d550; border: 0; border-bottom: 1px solid rgba(167, 213, 80, .18); }
  /* hamburger -> X */
  body.menu-open .hb-line:nth-child(1) { transform: translateY(8px) rotate(45deg); }
  body.menu-open .hb-line:nth-child(2) { opacity: 0; }
  body.menu-open .hb-line:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

  /* --- Home — hero e pannello "Il diritto…" --- */
  /* HERO: da pinned/absolute (100vh) a sezioni normali in flusso.
       Su mobile niente scroll orizzontale: hero e manifesto impilati,
       la linea è quella statica .manifesto-rule. */
  .hero-pin { height: auto; }
  .hero-stage { position: relative; height: auto; min-height: 0; overflow: visible; }
  .hero, #studio { position: relative; inset: auto; transform: none !important; }
  .hero-frame { height: auto; }
  .hero-track { display: none; }
  .hero-inner { min-height: 100vh; min-height: 100svh; padding-top: calc(var(--header-h) + 40px); padding-bottom: 120px; }
  .ring-band { display: none; }
  /* le fasce piene coprirebbero tutto lo schermo in verticale */
  .hero-kicker { flex-wrap: wrap; gap: 8px 10px; font-size: .625rem; letter-spacing: .14em; margin-bottom: 32px; }
  .hero-kicker-rule { display: none; }
  .hero-eyebrow { font-size: .75rem; letter-spacing: .18em; }
  .hero-title-line1 { font-size: clamp(2.6rem, 13vw, 4.75rem); }
  .hero-title-line2 { font-size: clamp(2.8rem, 14vw, 5.1rem); }
  .hero-claim { font-size: 1.25rem; }
  .hero-desc { font-size: 1rem; }
  .hero-scroll { bottom: 40px; font-size: .75rem; }
  .manifesto-inner { padding-top: 72px; padding-bottom: 88px; }
  .manifesto-title { position: static; width: auto; max-width: none; }
  .manifesto-line1, .manifesto-line2 { white-space: normal; }
  .manifesto-line1 { font-size: clamp(2.2rem, 10.5vw, 4rem); }
  .manifesto-line2 { font-size: clamp(2.4rem, 11.5vw, 4.4rem); }
  .manifesto-rule { display: block; position: relative; height: 3px; margin: 40px 12px 0 9px; border-radius: 3px; background: linear-gradient(90deg, rgba(167,213,80,.18), #a7d550 45%, #a7d550 75%, rgba(167,213,80,.3)); box-shadow: 0 0 12px rgba(167,213,80,.4); }
  .manifesto-rule::before, .manifesto-rule::after { content: ""; position: absolute; top: 50%; border-radius: 50%; border: 2px solid #a7d550; background: #042913; }
  .manifesto-rule::before { left: -9px; width: 18px; height: 18px; margin-top: -9px; }
  .manifesto-rule::after { right: -12px; width: 24px; height: 24px; margin-top: -12px; border-width: 3px; box-shadow: 0 0 0 9px rgba(167,213,80,.13), 0 0 28px 4px rgba(167,213,80,.3); }

  /* --- Home — attività --- */
  /* ATTIVITÀ: 2 colonne, l'ultima card a tutta larghezza */
  .att-head { display: block; }
  .att-kicker { font-size: .6875rem; letter-spacing: .18em; gap: 14px; }
  .att-kicker-rule { width: 32px; }
  .att-title-line1 { font-size: clamp(2.6rem, 12vw, 4.75rem); }
  .att-title-line2 { font-size: clamp(2.8rem, 13vw, 5.1rem); }
  .att-intro { margin-top: 28px; font-size: 1rem; }
  .att-cards { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
  .att-cards .att-card:last-child { grid-column: 1 / -1; }
  .att-card a { min-height: 340px; }
  .att-card.is-active a { transform: none; }

  /* --- Home — professionisti --- */
  /* PROFESSIONISTI (righe home): impilate */
  #professionisti { padding: 72px 0 80px; }
  #professionisti .prof-head__side { margin-top: 32px; }
  .professionisti-wrap > div { flex-direction: column; align-items: flex-start; gap: 6px; padding: 24px; }
  .professionisti-wrap > div:first-of-type { border-top-left-radius: 28px; border-top-right-radius: 28px; }
  .professionisti-wrap > div:last-of-type { border-bottom-left-radius: 28px; border-bottom-right-radius: 28px; }
  .professionisti-wrap h3 { font-size: 1.375em; }
  .professionisti-wrap p { font-size: 1em; }
  .professionisti-testo { width: 100%; align-items: flex-start; }

  /* --- Home — pubblicazioni --- */
  .pub-frame { grid-template-columns: 1fr; }
  .pub-kicker { font-size: .6875rem; letter-spacing: .18em; gap: 14px; }
  .pub-kicker-rule { width: 32px; }
  .pub-title-line1 { font-size: clamp(2.6rem, 12vw, 4.75rem); }
  .pub-title-line2 { font-size: clamp(2.8rem, 13vw, 5.1rem); }
  .pub-intro { font-size: 1rem !important; }
  .pub-all { gap: 16px; font-size: .75rem; letter-spacing: .12em; }
  .pub-row { grid-template-columns: 40px minmax(0, 1fr) 20px; gap: 12px 14px; padding: 28px 0; }
  .pub-row__title { font-size: 1.625rem; }
  /* PUBBLICAZIONI */
  #pubblicazioni { padding: 72px 0 80px; }

  /* --- Home — FAQ --- */
  .faq-item summary { grid-template-columns: 40px minmax(0, 1fr) 20px; gap: 12px 14px; padding: 24px 0; }
  .faq-item summary strong { font-size: 1.25rem; }
  .faq-content { padding: 0 0 26px 54px; }
  .faq-content p { font-size: 1rem; }

  /* --- Footer --- */
  h2, .footer-top h3 { font-size: 1.8rem; }
  /* FOOTER */
  .footer-top { padding: 60px 0; }
  .footer-top .width-wrap { flex-direction: column; gap: 40px; }
  .left-footer, .right-footer { width: 100%; }
  .footer-top .sedi { justify-content: center; gap: 24px; }
  .footer-top--compact .right-footer { flex-direction: column; align-items: stretch; }
  .sede-left, .sede-right { padding: 0; }
  .wpcf7 p .wpcf7-form-control-wrap { width: 100%; }

  /* --- Pagine interne — contenuti --- */
  .elenco-custom { gap: 16px; }
  .elenco-custom li { width: calc(50% - 8px) !important; }
  .elenco-custom.has-hover li:not(.is-active) { pointer-events: auto; }
  .inner-body { padding: 40px 0; }

  /* --- Pagine interne — hero --- */
  .page-hero { min-height: 0; }
  .page-hero__kicker { gap: 14px; font-size: .6875rem !important; letter-spacing: .18em; }
  .page-hero__kicker-rule { width: 32px; }
  .page-hero__line1 { font-size: clamp(2.4rem, 11vw, 4.25rem); }
  .page-hero__line2 { font-size: clamp(2.6rem, 12vw, 4.6rem); }
  .page-hero__intro p { font-size: 1rem; }
  .page-hero__track { width: calc(100% - 12px); }
  .page-hero__rings .ring-band { display: none; }

  /* --- Pagine interne — menu di sezione --- */
  .section-nav__inner { gap: 14px; }
  .section-nav__menu { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .section-nav__menu::-webkit-scrollbar { display: none; }
  /* barre di sezione scorrevoli in orizzontale */
  .section-nav__inner { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .section-nav__inner::-webkit-scrollbar { display: none; }
  .section-nav__label { display: none; }
  .section-nav__inner { justify-content: flex-start; }

  /* --- Lo Studio (pagina) --- */
  .studio-links__grid { flex-direction: column; }
  .studio-link { min-width: 0; padding: 20px; }
  .studio-link__label { font-size: 1.375em; }

  /* --- Professionisti (pagina interna) --- */
  .team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .prof-detail { grid-template-columns: 1fr; min-height: 0; }
  .prof-detail__media { min-height: 0; height: min(56vh, 420px); }

  /* --- Sedi (pagina) --- */
  .sedi-head__inner { display: block; }
  .sedi-head__intro { margin-top: 24px; }
  .sedi-grid { grid-template-columns: 1fr; }
  .sede-card__visual { aspect-ratio: 16 / 9; background-image: repeating-linear-gradient( 45deg, transparent 0 62px, var(--s-line) 62px 64px),
    repeating-linear-gradient(-45deg, transparent 0 62px, var(--s-line) 62px 64px); }
  .sede-card__pin { transform: scale(.75); }

  /* --- Eventi --- */
  .eventi-grid { grid-template-columns: repeat(2,1fr); }
}


/* ######################################################################
   <= 768px  —  TELEFONO
   ###################################################################### */
@media (max-width: 768px) {

  /* --- Lavora con noi (pagina) --- */
  .lcn .wpcf7 form{ grid-template-columns: 1fr; }
  .lcn .wpcf7 .lcn-half{ grid-column: 1 / -1; }

  /* --- Generale --- */
  :root { --frame-x: 20px; }

  /* --- Home — attività --- */
  /* attività: 1 colonna sul telefono */
  .att-cards { grid-template-columns: 1fr; }
  .att-cards .att-card:last-child { grid-column: auto; }
  .att-card a { min-height: 0; gap: 40px; }

  /* --- Pagine interne — contenuti --- */
  .elenco-custom li { width: 100% !important; }

  /* --- Professionisti (pagina interna) --- */
  .team-groups { padding: 40px 0 80px; }
  .team-grid { grid-template-columns: 1fr; gap: 10px; }
  .prof-card { min-height: 0; gap: 24px; }
  .prof-dialog { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); }
  .prof-detail__info { grid-template-columns: 1fr; }

  /* --- Pubblicazioni — elenchi, ricerca, paginazione --- */
  .pub-article { flex-direction: column; align-items: flex-start; }
  .pub-article__media { width: 100%; }
  .pub-article__share { margin-left: 0; }
  .pub-search { max-width: 100%; }

  /* --- Articolo singolo --- */
  /* hero pagine interne più compatta */
  .single-article__title { font-size: clamp(1.8em, 8vw, 2.4em); }

  /* --- Eventi --- */
  .eventi-grid { grid-template-columns: 1fr; }

  /* --- Lightbox galleria --- */
  .ilaw-lightbox { padding: 16px; }
  .ilaw-lightbox__btn { width: 44px; height: 44px; font-size: 22px; }
  .ilaw-lightbox__prev { left: 10px; }
  .ilaw-lightbox__next { right: 10px; }
}


/* ######################################################################
   <= 480px  —  TELEFONI PICCOLI
   ###################################################################### */
@media (max-width: 480px) {

  /* --- Generale --- */
  :root { --frame-x: 16px; }

  /* --- Home — professionisti --- */
  .professionisti-wrap h3 { font-size: 1.25em; }

  /* --- Lo Studio (pagina) --- */
  .studio-link__label { font-size: 1.25em; }

  /* --- Pubblicazioni — elenchi, ricerca, paginazione --- */
  .pub-article__actions { width: 100%; gap: 14px; }
  .pub-article__share { margin-left: 0; }
}


/* ######################################################################
   >= 999px  —  SOLO DESKTOP (stati iniziali animazioni)
   ###################################################################### */
@media (min-width: 999px) {

  /* --- Home — hero e pannello "Il diritto…" --- */
  .hero-rings svg, .hero-kicker-text, .hero-kicker-dot, .hero-eyebrow, .hero-title-line1, .hero-title-line2, .hero-claim, .hero-desc, .hero-scroll, .manifesto-line1, .manifesto-line2 { visibility: hidden; }
  .hero-kicker-rule { transform: scaleX(0); }
  #studio { transform: translateX(100%); }
}


/* ######################################################################
   hover  —  DISPOSITIVI CON MOUSE
   ###################################################################### */
@media (hover: hover) {

  /* --- Header e menu --- */
  .header__menu .menu-item a:hover { border-color: #a7d550; }

  /* --- Professionisti (pagina interna) --- */
  .prof-card:hover { background: #fff; box-shadow: 0 18px 40px rgba(4,41,19,.08); }
  .prof-card:hover .prof-card__photo { opacity: 1; transform: none; }
  .prof-card:hover .prof-card__plus { color: #042913; transform: rotate(90deg); }
}


/* ######################################################################
   hover + desktop  —  DESKTOP CON MOUSE (sotto-menu a comparsa)
   ###################################################################### */
@media (hover: hover) and (min-width: 999px) {

  /* --- Header e menu --- */
  .header__menu .menu-item-has-children:hover > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
  .header__menu .menu-item-has-children:hover > a::after { transform: translateY(0) rotate(225deg); }
  /* Apertura del 3° livello in hover (la regola generale :hover già la copre) */
  .header__menu .sub-menu .menu-item-has-children:hover > a::after { transform: translateY(-1px) rotate(-45deg); }
  /* Per le ultime voci del menu (lato destro) il flyout esce a sinistra,
       così non finisce fuori dallo schermo */
  .header__menu .menu-item:nth-last-child(-n+2) .sub-menu .sub-menu { left: auto; right: 100%; margin-left: 0; margin-right: 6px; }
}


/* ######################################################################
   touch  —  DISPOSITIVI TOUCH
   ###################################################################### */
@media (hover: none) {

  /* --- Sedi (pagina) --- */
  .sede-card__maptoggle { opacity: 1; transform: none; }
}


/* ######################################################################
   reduced-motion  —  ANIMAZIONI RIDOTTE (accessibilità)
   ###################################################################### */
@media (prefers-reduced-motion: reduce) {

  /* --- Preloader --- */
  #preloader span, #preloader img, #preloader.is-done { animation: none !important; transform: none !important; opacity: 1 !important; }

  /* --- Home — hero e pannello "Il diritto…" --- */
  .ring-drift, .hero-scroll svg, .hero-track__dot--end::after { animation: none; }

  /* --- Home — attività --- */
  .att-card a, .att-card a::after { transition: none; }

  /* --- Home — pubblicazioni --- */
  .pub-row *, .pub-row::after, .pub-all { transition: none; }

  /* --- Pagine interne — hero --- */
  .page-hero__kicker, .page-hero__intro, .page-hero__track-node { animation: none; opacity: 1; }
  .page-hero__kicker-rule, .page-hero__track-bar { animation: none; transform: none; }
  .page-hero__line1, .page-hero__line2 { animation: none; transform: none; }
  .page-hero__track-node--end::after { animation: none; }

  /* --- Professionisti (pagina interna) --- */
  .prof-card, .prof-card *, .prof-dialog[open], .prof-dialog[open]::backdrop { transition: none; animation: none; }

  /* --- Sedi (pagina) --- */
  .sede-card__mark, .sede-card__shadow { animation: none; }

  /* --- Divisorio Gutenberg --- */
  .ilaw-divider::before { animation: none; clip-path: none; }
}