/*
Theme Name:   TeamWorking Child
Theme URI:    https://www.teamworking.it
Description:  Tema figlio di GeneratePress per teamworking.it. Base clonabile per teambuilding-gulf.com e teambuildingincentive.ae.
Author:       TeamWorking
Version:      5.11.0
Template:     generatepress
Text Domain:  teamworking-child
*/

/* ------------------------------------------------------------------
   Colori, tipografia e spaziature stanno nel Customizer di
   GeneratePress, non qui: così restano esportabili e riapplicabili
   sui due siti Gulf con un solo file di impostazioni.

   Qui sta solo ciò che il Customizer non copre.
   ------------------------------------------------------------------ */

:root {
	/* Misura di lettura, condivisa da testo e titoli.

	   In rem, non in ch: `ch` si calcola sulla dimensione del carattere
	   dell'elemento, quindi lo stesso valore darebbe ~760px su un
	   paragrafo a 17px e ~1400px su un h2 a 32px — titoli e testo
	   finirebbero su due larghezze diverse e disallineate.

	   47.5rem = 760px con root a 16px, e scala con le preferenze
	   di dimensione del testo del browser. */
	--tw-misura: 47.5rem;
}

/* ------------------------------------------------------------------
   1. SISTEMA DELLE LARGHEZZE — due soli livelli

   Prima il vincolo stava sui singoli elementi: paragrafi e titoli a
   760px centrati, mentre griglie e immagini restavano a 1120px. Due
   larghezze centrate sullo stesso asse hanno bordi sinistri diversi,
   ed è per questo che i titoli sembravano rientrati e l'hero pareva
   avere padding enorme attorno al testo.

   Ora il vincolo sta sul CONTENITORE: il gruppo decide la sua
   larghezza e tutto ciò che contiene la riempie. Due livelli soli:
   colonna di lettura (760px) e piena larghezza (1120px).
   ------------------------------------------------------------------ */

:root { --tw-misura: 47.5rem; }

/* Un solo bordo sinistro per tutta la pagina.

   Prima c'erano due larghezze entrambe centrate: 1160px per hero e
   griglie, 760px per i testi. Centrate sullo stesso asse, hanno bordi
   sinistri diversi (200px di scarto), e le sezioni sembravano
   rientrare una sì e una no.

   Ora tutti i blocchi occupano il contenitore e partono dallo stesso
   punto. A essere limitata è solo la lunghezza della riga di testo,
   che si ferma a 760px invece di stendersi per 1160. */

.entry-content > .wp-block-group,
.entry-content > .wp-block-columns,
.entry-content > .wp-block-image,
.entry-content > h2,
.entry-content > h3 {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

/* Titoli: pieni, allineati al bordo del contenitore. */
.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4 {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

/* Testo corrente: riga limitata alla misura di lettura e CENTRATA
   nel contenitore, margini uguali a sinistra e a destra.
   Vale per ogni paragrafo di prosa del sito, non blocco per blocco. */
.entry-content > .wp-block-group p,
.entry-content > .wp-block-group ul,
.entry-content > .wp-block-group ol,
.entry-content > .wp-block-group blockquote,
.entry-content > p {
	max-width: var(--tw-misura);
	margin-left: auto;
	margin-right: auto;
}

/* I gruppi di sola prosa si centrano come blocco intero, così il
   titolo resta allineato al testo che introduce invece di staccarsi.
   Regola isolata di proposito: :has() non è supportato ovunque, e in
   una lista con virgole un selettore non valido farebbe cadere anche
   le regole accanto — errore già commesso una volta. */
.entry-content > .wp-block-group:not(.tw-hero):not(.tw-nota):not(.tw-sezione-larga):not(:has(.wp-block-columns)) {
	max-width: var(--tw-misura);
	margin-left: auto;
	margin-right: auto;
}

/* Dentro un gruppo già centrato il testo riempie: niente doppio vincolo. */
.entry-content > .wp-block-group:not(.tw-hero):not(.tw-nota):not(.tw-sezione-larga):not(:has(.wp-block-columns)) p,
.entry-content > .wp-block-group:not(.tw-hero):not(.tw-nota):not(.tw-sezione-larga):not(:has(.wp-block-columns)) ul,
.entry-content > .wp-block-group:not(.tw-hero):not(.tw-nota):not(.tw-sezione-larga):not(:has(.wp-block-columns)) ol {
	max-width: none;
}

/* Dentro colonne e card comanda la colonna. */
.entry-content .wp-block-column p,
.entry-content .wp-block-column ul,
.entry-content .wp-block-column ol {
	max-width: none;
}

/* ------------------------------------------------------------------
   2. RESPIRO VERTICALE FRA LE SEZIONI
   ------------------------------------------------------------------ */

/* Preset di spaziatura.
   I blocchi annidati richiamano var(--wp--preset--spacing--NN) inline.
   Ridefinendoli qui valgono su tutte le pagine, anche dentro i gruppi
   che non sono figli diretti di .entry-content. */
.entry-content {
	--wp--preset--spacing--40: 0.6rem;
	--wp--preset--spacing--50: 0.85rem;
	--wp--preset--spacing--60: 0.85rem;
	--wp--preset--spacing--70: 1.05rem;
	--wp--preset--spacing--80: 1.9rem;
	--wp--style--block-gap: 0.7rem;
}

/* Ritmo verticale: una regola sola per tutta la pagina.

   Il problema non era una sezione ma l'accumulo: ogni gruppo aveva
   padding sopra E sotto, quindi fra due sezioni i due padding si
   sommavano, e ad ognuno si aggiungevano i margini di heading e
   paragrafi. Sezione dopo sezione la pagina si allungava.

   Qui azzero il padding verticale dei gruppi senza sfondo e impongo
   un unico passo fra i blocchi di primo livello. I gruppi con sfondo
   (hero, box) tengono il loro padding interno, che lì serve. */

.entry-content > .wp-block-group:not([class*="background-color"]) {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

.entry-content > * + * {
	margin-top: 1.05rem;
}

.entry-content > .wp-block-columns + .wp-block-columns {
	margin-top: 0.7rem;
}

/* Gruppi con sfondo: padding interno contenuto. */
.entry-content > .wp-block-group[class*="background-color"] {
	padding: 1.2rem 1.3rem !important;
}

/* Hero: solo H1 e sottotitolo, nessuna riga di navigazione sopra. */
.entry-content > .wp-block-group.tw-hero {
	padding: 0 !important;
	background: none;
}

/* Gerarchia netta fra titolo e sottotitolo.
   L'H1 resta il peso della pagina; il sottotitolo scende a circa metà
   e passa dal serif dei titoli al sans del testo, così si legge come
   supporto e non come un secondo titolo. */
.tw-hero h1 {
	margin-bottom: 0.35rem;
}

.tw-hero h2 {
	font-family: Inter, sans-serif !important;
	font-size: 1.25rem !important;
	font-weight: 400 !important;
	line-height: 1.45 !important;
	letter-spacing: 0 !important;
	color: var(--contrast-2) !important;
	max-width: var(--tw-misura);
	margin-bottom: 0;
}

@media (max-width: 768px) {
	.tw-hero h2 { font-size: 1.1rem !important; }
}

/* Il contenitore interno dei gruppi ha un padding proprio (48px 20px)
   che non dipende dal gruppo esterno: sposta il testo di 20px verso
   destra rispetto alle immagini e aggiunge 48px di vuoto in fondo.
   Lo azzero: il padding lo decide il gruppo, non il suo interno. */
.entry-content .wp-block-group__inner-container {
	padding: 0 !important;
}

/* Titoli e paragrafi: margini più stretti, il respiro lo dà il passo
   fra le sezioni, non lo spazio attorno a ogni riga. */
.entry-content h2 { margin-top: 0; margin-bottom: 0.45rem; }

/* Un h2 che apre una sezione al primo livello ha bisogno di stacco
   sopra: senza, si incolla al paragrafo che chiude la sezione prima. */
.entry-content > h2 { margin-top: 2rem; }
.entry-content h3 { margin-top: 0.8rem; margin-bottom: 0.3rem; }
.entry-content h4 { margin-top: 0.9rem; margin-bottom: 0.25rem; }
.entry-content h1 { margin-bottom: 0.4rem; }
.entry-content p  { margin-bottom: 0.8rem; }
.entry-content p:last-child { margin-bottom: 0; }
.entry-content ul, .entry-content ol { margin-top: 0.35rem; margin-bottom: 0.8rem; }
.entry-content li { margin-bottom: 0.25rem; }

/* ------------------------------------------------------------------
   3. SEGNAPOSTO DI LAVORAZIONE
   Rende visibile a colpo d'occhio cosa manca ancora: immagini da
   caricare, pattern da inserire. Da rimuovere prima del go-live.
   ------------------------------------------------------------------ */

.tw-segnaposto {
	max-width: none !important;
	background: repeating-linear-gradient(
		45deg,
		var(--sfondo-alt), var(--sfondo-alt) 10px,
		#EDEFF3 10px, #EDEFF3 20px
	);
	border: 1px dashed var(--contrast-3);
	border-radius: 4px;
	padding: 1.25rem 1rem;
	text-align: center;
	font-size: 0.8rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--contrast-2);
}

/* ------------------------------------------------------------------
   4. CARD DEI FORMAT
   Altezza uniforme nella riga e titolo che non si spezza male.
   ------------------------------------------------------------------ */

.entry-content .wp-block-columns .wp-block-column.has-background {
	border-radius: 6px;
}

.entry-content .wp-block-column.has-background h3 {
	margin-top: 0.25rem;
}

/* ------------------------------------------------------------------
   5. MOBILE
   Sotto i 768px la misura di lettura non serve: comanda il viewport.
   ------------------------------------------------------------------ */

@media (max-width: 768px) {
	.entry-content p,
	.entry-content h1,
	.entry-content h2,
	.entry-content h3,
	.entry-content h4,
	.entry-content ul,
	.entry-content ol {
		max-width: none;
	}
}

/* ------------------------------------------------------------------
   6. HERO DI SEZIONE
   Fascia distinta in cima alla pagina. Resta dentro il contenitore:
   niente full-bleed, così il bordo sinistro continua ad allinearsi
   con il logo e con il testo sotto.
   ------------------------------------------------------------------ */




/* Fascia immagine dell'hero. Il segnaposto tiene 220px di altezza
   così la pagina non si riassesta quando arriva la foto; la foto vera
   riempie la fascia mantenendo le proporzioni del ritaglio. */
p.tw-hero-img {
	min-height: 170px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-top: 1.75rem;
}

figure.tw-hero-img {
	margin-top: 0.9rem !important;
	margin-bottom: 0;
	max-width: none;
}

/* 16:9 è lo standard degli hero, imposto dal CSS e non dal file.
   Qualunque immagine venga caricata in futuro viene resa in 16:9
   senza doverla ritagliare a mano: object-fit la adatta, e il fuoco
   leggermente alto tiene i volti invece dei piedi.
   Chi carica un file già a 16:9 non subisce nessun ritaglio. */
figure.tw-hero-img img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	object-position: center 35%;
	display: block;
	border-radius: 6px;
}

/* ------------------------------------------------------------------
   7. FASCIA VISIVA "COME SI VIVE"
   Ospita da 2 a 4 elementi affiancati: video, foto, gallerie, embed.
   Le colonne si adattano da sole, quindi aggiungerne una in futuro
   non richiede di rifare la sezione.
   ------------------------------------------------------------------ */

.tw-fascia-visiva {
	max-width: none;
	gap: 1.9rem;
}

/* La colonna di testo deve reggere il confronto visivo col video:
   corpo più grande e interlinea più stretta. */
.tw-fascia-visiva .wp-block-column > p {
	font-size: 1.12rem;
	line-height: 1.55;
}

/* Il testo nella colonna affiancata non usa la misura di lettura
   generale: la larghezza gliela dà già la colonna. */
.tw-fascia-visiva .wp-block-column > h2,
.tw-fascia-visiva .wp-block-column > p {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

.tw-fascia-visiva .wp-block-column > * {
	margin-top: 0;
	height: 100%;
}

.tw-fascia-visiva figure {
	margin: 0;
	border-radius: 6px;
	overflow: hidden;
}

.tw-fascia-visiva .tw-segnaposto {
	height: 100%;
	min-height: 200px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
}

@media (max-width: 768px) {
	.tw-fascia-visiva { gap: 1rem; }
	.tw-fascia-visiva .tw-segnaposto { min-height: 140px; }
}

/* ------------------------------------------------------------------
   8. NOTA DI SERVIZIO
   Informazione utile ma non prioritaria: peso da nota, non da sezione.
   ------------------------------------------------------------------ */

/* La nota resta più leggera delle sezioni, ma sta nella stessa
   colonna della prosa: prima era larga 1160 mentre il testo attorno
   era a 760 centrato, e il suo titolo partiva 180px più a sinistra.
   La barra verticale sporge a sinistra della colonna invece di
   spingere il testo verso destra, così i bordi coincidono. */
.entry-content > .wp-block-group.tw-nota,
.tw-nota {
	/* Caso particolare: non è prosa da leggere, è una nota di servizio.
	   Non segue la centratura degli altri blocchi: sta ancorata al
	   bordo sinistro del contenitore, come i titoli di sezione.
	   La barra verticale sporge a sinistra così il testo parte
	   esattamente sul bordo, senza rientro. */
	max-width: var(--tw-misura) !important;
	margin-left: -1.2rem !important;
	margin-right: auto !important;
	margin-top: 1.6rem !important;
	padding: 0.1rem 0 0.1rem 1rem;
	border-left: 3px solid var(--contrast-3);
	box-sizing: content-box;
}

.tw-nota h3,
.tw-nota p {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

.tw-nota h3 {
	font-family: Inter, sans-serif;
	font-size: 1.05rem !important;
	font-weight: 600;
	letter-spacing: 0;
	margin-top: 0 !important;
	margin-bottom: 0.3rem !important;
	color: var(--contrast-2);
}

.tw-nota p {
	font-size: 0.95rem;
	color: var(--contrast-2);
	margin-bottom: 0;
}

/* Immagini nelle card delle destinazioni: 8:5, piu' alte di quelle
   della griglia format perche' qui l'immagine deve far riconoscere il luogo. */
.tw-dest-img { margin: 0 0 0.8rem 0 !important; }
.tw-dest-img img {
	width: 100%; aspect-ratio: 8 / 5; height: auto; object-fit: cover;
	display: block; border-radius: 4px;
}

/* Immagini nelle card della griglia format. */
.tw-card-img { margin: 0 0 0.7rem 0 !important; }
.tw-card-img img {
	width: 100%; aspect-ratio: 16 / 9; height: auto; object-fit: cover;
	display: block; border-radius: 4px;
}

/* ------------------------------------------------------------------
   9. HEADER — distanza fra logo e menu

   Con il contenitore a 1200px il menu finiva sul bordo destro e fra
   logo e menu restavano 501px di vuoto. Non stringo il contenitore,
   perché sposterebbe il logo e romperebbe l'allineamento col
   contenuto: tiro dentro il menu di 250px, così il vuoto a sinistra
   del menu e il margine alla sua destra sono uguali.
   ------------------------------------------------------------------ */

@media (min-width: 1025px) {
	.inside-header .main-navigation {
		margin-right: 250px;
	}
}

/* ------------------------------------------------------------------
   10. CTA FINALE
   È l'elemento che deve convertire: fascia piena, bottone rosso con
   etichetta grande. Il rosso #FF3300 con testo bianco dà 3,67:1, che
   basta solo per il testo grande — per questo il bottone è a 1,25rem
   in 600, non un link di testo corrente.
   ------------------------------------------------------------------ */

.tw-cta {
	max-width: none !important;
	border-radius: 8px;
	margin-top: 2.5rem !important;
}

.tw-cta h2 {
	max-width: none !important;
	color: var(--sfondo);
	margin-bottom: 0.6rem;
}

.tw-cta p {
	max-width: 34rem !important;
	margin-left: auto !important;
	margin-right: auto !important;
	color: var(--sfondo);
}

.tw-cta .wp-block-buttons {
	margin: 1.6rem 0 1.2rem;
	display: flex;
	justify-content: center;
	max-width: none !important;
}

.tw-cta .wp-block-button__link {
	padding: 0.85rem 2.4rem;
	border-radius: 6px;
	text-decoration: none;
	transition: background-color .15s ease;
}

.tw-cta .wp-block-button__link:hover {
	background-color: var(--sfondo) !important;
	color: var(--primario) !important;
}

.tw-cta a { color: var(--sfondo); }
.tw-cta a:hover { color: var(--accento); }

@media (max-width: 768px) {
	.tw-cta .wp-block-button__link { padding: 0.75rem 1.6rem; font-size: 1.1rem !important; }
}

/* ==================================================================
   11. HOME — stili esclusivi della front page
   Tutto ciò che segue è confinato a .home: le pagine format non
   vengono toccate.
   ================================================================== */

:root {
	/* Terzo accento, solo home. Con il navy dà 9,49:1 in entrambi i
	   versi; su bianco è 2,01:1, quindi mai testo ocra su chiaro. */
	--accento-caldo: #F2A900;
}

/* --- 1. HERO SLIDER ------------------------------------------------ */

/* Cinque slide, un messaggio ciascuna, in dissolvenza incrociata.

   Niente JavaScript: le slide sono impilate una sopra l'altra e si
   alternano con @keyframes. La versione precedente animava scrollLeft
   a mano e non partiva mai; qui non c'è nulla che possa non partire,
   perché il ciclo è dichiarato nel CSS e non dipende da eventi.

   Tempi: 25s di giro, 5s a slide, 0,6s di dissolvenza. Erano 6s e
   0,9s: il cambio risultava così morbido da non accorgersene. Oltre
   ai tempi più stretti c'è un lentissimo zoom sempre attivo, così
   l'immagine è visibilmente viva anche a metà di una slide.
   Il ritardo negativo sulla prima evita il nero iniziale: all'istante
   zero la slide 1 è già dentro la sua finestra di visibilità. */

.tw-hero-slider {
	position: relative;
	max-width: none !important;
	border-radius: 10px;
	overflow: hidden;
	min-height: 620px;
	margin-top: 0 !important;
	background: var(--primario);
}

.tw-slider-track,
.tw-slider-track > .wp-block-group__inner-container {
	padding: 0 !important;
	margin: 0 !important;
	max-width: none !important;
}

/* La prima slide resta nel flusso e detta l'altezza del contenitore.
   Le altre le stanno sopra in assoluto. Così l'altezza è sempre quella
   del testo più lungo e non può più formarsi la fascia vuota in basso
   che si vedeva quando le immagini avevano un'altezza fissa di 620px
   e il testo, più alto, sbordava sul fondo del contenitore. */
.tw-slide {
	position: absolute;
	inset: 0;
	margin: 0 !important;
	padding: 0 !important;
	max-width: none !important;
	opacity: 0;
	animation: tw-dissolvenza 30s infinite;
}
.tw-slide:first-child { position: relative; }

.tw-slide-1, .tw-slide-1 .tw-slide-testo, .tw-slide-1 img { animation-delay: -0.6s; }
.tw-slide-2, .tw-slide-2 .tw-slide-testo, .tw-slide-2 img { animation-delay:  4.4s; }
.tw-slide-3, .tw-slide-3 .tw-slide-testo, .tw-slide-3 img { animation-delay:  9.4s; }
.tw-slide-4, .tw-slide-4 .tw-slide-testo, .tw-slide-4 img { animation-delay: 14.4s; }
.tw-slide-5, .tw-slide-5 .tw-slide-testo, .tw-slide-5 img { animation-delay: 19.4s; }
.tw-slide-6, .tw-slide-6 .tw-slide-testo, .tw-slide-6 img { animation-delay: 24.4s; }

@keyframes tw-frase {
	0%      { opacity: 0; transform: translateY(14px); }
	1.33%   { opacity: 1; transform: translateY(0); }
	15%     { opacity: 1; transform: translateY(0); }
	16.33%  { opacity: 0; transform: translateY(0); }
	100%    { opacity: 0; transform: translateY(0); }
}

@keyframes tw-dissolvenza {
	0%      { opacity: 0; }
	2%      { opacity: 1; }
	16.67%  { opacity: 1; }
	18.67%  { opacity: 0; }
	100%    { opacity: 0; }
}

/* Zoom lentissimo sempre in corso: 4% in cinque secondi. Impercettibile
   come movimento, ma toglie l'effetto fotografia ferma. */
@keyframes tw-zoom {
	0%      { transform: scale(1); }
	18.67%  { transform: scale(1.04); }
	100%    { transform: scale(1.04); }
}

/* Sei movimenti diversi invece di uno solo.

   Con lo stesso zoom su tutte e sei, dopo il secondo giro l'occhio lo riconosce
   e la sequenza sembra un carosello meccanico. Qui tre slide entrano
   avvicinandosi e tre allontanandosi, e ognuna ha il proprio centro di
   ingrandimento: la foto non si gonfia dal centro ma scivola verso il punto che
   conta — le persone, che nelle sei foto stanno in posti diversi.

   L'escursione resta minima, dal 4 al 5,5 per cento in cinque secondi: si deve
   sentire che l'immagine e' viva, non vedere che si muove. */
@keyframes tw-zoom-avanti {
	0%      { transform: scale(1); }
	18.67%  { transform: scale(1.055); }
	100%    { transform: scale(1.055); }
}
@keyframes tw-zoom-indietro {
	0%      { transform: scale(1.055); }
	18.67%  { transform: scale(1); }
	100%    { transform: scale(1); }
}

/* Pausa al passaggio del mouse e alla tastiera. */
.tw-hero-slider:hover .tw-slide,
.tw-hero-slider:focus-within .tw-slide,
.tw-hero-slider:hover .tw-slide-testo,
.tw-hero-slider:focus-within .tw-slide-testo,
.tw-hero-slider:hover .tw-slide img,
.tw-hero-slider:focus-within .tw-slide img,
.tw-hero-slider:hover .tw-slider-punti button::before,
.tw-hero-slider:focus-within .tw-slider-punti button::before {
	animation-play-state: paused;
}

/* La foto riempie la slide; il testo le passa sopra. */
.tw-slide figure.wp-block-image {
	position: absolute;
	inset: 0;
	margin: 0 !important;
	max-width: none !important;
}

.tw-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 38%;
	display: block;
	animation: tw-zoom 30s infinite;
	will-change: transform;
}

/* Velatura direzionale, non più il pannello uniforme al 62% che
   spegneva la foto su tutta la superficie.

   Qui il navy è denso solo dove sta la frase e si azzera del tutto
   prima del bordo destro: l'ultimo quarto dell'immagine è foto pulita,
   senza un velo sopra. Misurato sui pixel reali delle tre foto già
   caricate, il contrasto medio del bianco sul testo sta fra 8,6:1 e
   10,6:1. Restano piccole zone chiare (riflessi, magliette bianche)
   dove scende sotto 3:1: le copre l'ombra stretta sul testo, perché
   scurire l'intera velatura per inseguirle riporterebbe al problema
   di partenza. Le foto definitive vanno scelte guardando questo. */
.tw-slide::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(96deg,
			rgba(0, 0, 70, 0.64) 0%,
			rgba(0, 0, 70, 0.59) 30%,
			rgba(0, 0, 70, 0.46) 46%,
			rgba(0, 0, 70, 0.15) 60%,
			rgba(0, 0, 70, 0.00) 72%);
	pointer-events: none;
	z-index: 1;
}

/* Il testo esce prima della foto e rientra dopo.
   Con la sola dissolvenza dell'immagine, per 0,9s si leggevano due
   frasi grandi sovrapposte. Qui la frase uscente sparisce a 5,1s e
   quella entrante compare a 5,7s: in mezzo restano solo le due foto
   che si scambiano, che è esattamente ciò che deve vedersi. */
.tw-slide-testo {
	animation: tw-frase 30s infinite;
	opacity: 0;
	position: relative;
	z-index: 2;
	max-width: none !important;
	padding: 4.5rem 2.5rem 6.2rem !important;
	min-height: 620px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	align-items: flex-start;
}

/* WordPress centra il contenitore interno con margin:auto per via del
   layout "constrained". In flexbox i margini auto battono align-items,
   quindi align-items:flex-start non bastava: il testo restava spinto a
   destra di 252px rispetto al bordo della slide. Vanno azzerati i
   margini, non aggiunto un allineamento. */
.tw-slide-testo > .wp-block-group__inner-container {
	padding: 0 !important;
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

/* Una riga sola per slide, quindi può essere davvero grande.
   Il limite in ch tiene la frase su due righe al massimo. */
.tw-slide-testo h1,
.tw-slide-testo p.tw-slide-frase {
	color: #FFFFFF !important;
	font-family: "Source Serif 4", serif !important;
	font-size: clamp(2.0rem, 3.6vw, 3.2rem) !important;
	line-height: 1.12;
	font-weight: 600 !important;
	letter-spacing: -0.012em;
	margin: 0 !important;
	max-width: 17ch !important;
	/* Ombra corta e densa + alone largo: la prima stacca il bordo
	   delle lettere dai riflessi chiari, la seconda dà profondità
	   senza sporcare la foto. */
	text-shadow: 0 1px 3px rgba(0, 0, 35, 0.85), 0 3px 28px rgba(0, 0, 35, 0.55);
}

.tw-slide-testo p.tw-tag,
.tw-tag {
	display: inline-block;
	background: none;
	color: #FFFFFF !important;
	font-family: Inter, sans-serif !important;
	font-size: 0.78rem !important;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	padding: 0 0 0.5rem;
	border-bottom: 2px solid var(--accento);
	margin: 0 0 1.1rem !important;
	max-width: none !important;
	text-shadow: 0 1px 6px rgba(0, 0, 35, 0.9);
}

/* Indicatori: dicono solo "ce ne sono altre", non sono cliccabili. */
.tw-slider-punti {
	position: absolute;
	left: 2.5rem;
	bottom: 2.2rem;
	z-index: 3;
	display: flex;
	gap: 0.5rem;
}
/* Sono <button>, non <span>: cliccabili col mouse, raggiungibili col
   tabulatore, attivabili con Invio o barra spaziatrice.

   Il trattino visibile è lo ::before; il <button> che lo contiene è
   trasparente e più alto, così l'area sensibile è di 40x22px invece
   dei tre pixel del trattino.

   Le tre righe di azzeramento in cima non sono superflue: senza,
   GeneratePress colora ogni <button> col rosso accento e gli indicatori
   diventano cinque rettangoli rossi. Verificato sul reso. */
.tw-slider-punti button {
	appearance: none;
	-webkit-appearance: none;
	background: none !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 9px 0 !important;
	width: 40px;
	cursor: pointer;
	line-height: 0;
	border-radius: 0 !important;
}
.tw-slider-punti button::before {
	content: "";
	display: block;
	width: 100%;
	height: 3px;
	border-radius: 2px;
	background: rgba(255, 255, 255, 0.35);
	transition: background 0.2s ease, height 0.2s ease;
	animation: tw-punto 30s infinite;
	animation-delay: inherit;
}
.tw-slider-punti button:hover::before { background: rgba(255, 255, 255, 0.9); height: 5px; }
.tw-slider-punti button:focus-visible { outline: 2px solid var(--accento-caldo); outline-offset: 3px; }

.tw-slider-punti button:nth-child(1) { animation-delay: -0.6s; }
.tw-slider-punti button:nth-child(2) { animation-delay:  4.4s; }
.tw-slider-punti button:nth-child(3) { animation-delay:  9.4s; }
.tw-slider-punti button:nth-child(4) { animation-delay: 14.4s; }
.tw-slider-punti button:nth-child(5) { animation-delay: 19.4s; }
.tw-slider-punti button:nth-child(6) { animation-delay: 24.4s; }

/* Il verso e il centro dello zoom, slide per slide. I valori non sono a caso:
   ognuno punta dove sta il soggetto di quella foto. */
/* Il ritardo va ripetuto qui. Piu' su c'e' `animation: tw-zoom 30s infinite` in
   forma abbreviata su `.tw-slide img`, e una abbreviata azzera tutto quello che
   non nomina: azzerava l'animation-delay che le regole delle singole slide
   avevano appena impostato. Risultato: le sei foto zoomavano tutte insieme,
   sfasate rispetto alla dissolvenza, e il movimento si vedeva sulla slide
   sbagliata. */
.tw-slide-1 img { animation-name: tw-zoom-avanti;   transform-origin: 64% 46%; animation-delay: -0.6s; } /* vela: chi issa, a destra */
.tw-slide-2 img { animation-name: tw-zoom-indietro; transform-origin: 46% 52%; animation-delay:  4.4s; } /* piscina: lo spruzzo al centro */
.tw-slide-3 img { animation-name: tw-zoom-avanti;   transform-origin: 50% 40%; animation-delay:  9.4s; } /* orchestra: il cerchio dall'alto */
.tw-slide-4 img { animation-name: tw-zoom-indietro; transform-origin: 58% 58%; animation-delay: 14.4s; } /* pedane: le mani in basso */
.tw-slide-5 img { animation-name: tw-zoom-avanti;   transform-origin: 70% 44%; animation-delay: 19.4s; } /* spiaggia: la fila verso destra */
.tw-slide-6 img { animation-name: tw-zoom-indietro; transform-origin: 52% 38%; animation-delay: 24.4s; } /* attestati: le braccia alzate */

@keyframes tw-punto {
	0%      { background: rgba(255, 255, 255, 0.35); }
	2%      { background: #FFFFFF; }
	16.67%  { background: #FFFFFF; }
	18.67%  { background: rgba(255, 255, 255, 0.35); }
	100%    { background: rgba(255, 255, 255, 0.35); }
}

/* Chi ha chiesto meno animazioni resta sulla prima slide, che per
   costruzione contiene già la promessa completa. */
@media (prefers-reduced-motion: reduce) {
	.tw-slide,
	.tw-slide-testo,
	.tw-slide img,
	.tw-slider-punti button::before { animation: none; }
	.tw-slide { opacity: 0; }
	.tw-slide-1,
	.tw-slide-1 .tw-slide-testo { opacity: 1; }
	.tw-slider-punti { display: none; }
}

@media (max-width: 768px) {
	.tw-hero-slider { min-height: 500px; }
	.tw-slide-testo {
		min-height: 500px;
		padding: 2.5rem 1.3rem 4rem !important;
	}
	.tw-slide-testo h1,
	.tw-slide-testo p.tw-slide-frase {
		font-size: clamp(1.9rem, 7.4vw, 2.6rem) !important;
		max-width: 100% !important;
	}
	.tw-slider-punti { left: 1.3rem; bottom: 1.5rem; }
	.tw-slider-punti button { width: 30px; }
}

/* --- 2. FASCIA NUMERI ---------------------------------------------- */

/* Prova sociale: stessa grammatica della fascia numeri della home,
   ma è un pattern sincronizzato usato su più pagine, quindi le regole
   non possono stare sotto .home. Le due fasce condividono i selettori
   interni (.tw-cifra, .tw-etichetta): cambiando lo stile lì cambiano
   insieme, che è il comportamento voluto su tre siti gemelli. */
.tw-prova-sociale {
	max-width: none !important;
	background: var(--sfondo-alt);
	border-radius: 10px;
	padding: 1.8rem 2rem !important;
	margin-top: 2rem !important;
}

.tw-prova-sociale .wp-block-column { text-align: center; }

.tw-prova-sociale .tw-cifra {
	font-family: "Source Serif 4", serif;
	font-size: 2.6rem !important;
	font-weight: 600;
	line-height: 1;
	color: var(--primario);
	margin: 0 0 0.25rem !important;
	max-width: none !important;
}

.tw-prova-sociale .tw-etichetta {
	font-family: Inter, sans-serif;
	font-size: 0.92rem !important;
	color: var(--contrast-2);
	margin: 0 !important;
	max-width: none !important;
}

@media (max-width: 768px) {
	.tw-prova-sociale { padding: 1.4rem 1.2rem !important; }
	.tw-prova-sociale .tw-cifra { font-size: 2rem !important; }
}

.tw-numeri {
	max-width: none !important;
	background: var(--sfondo-alt);
	border-radius: 10px;
	padding: 2.4rem 2rem !important;
}

.tw-numeri .wp-block-column { text-align: center; }

.tw-numeri .tw-cifra {
	font-family: "Source Serif 4", serif;
	font-size: 3rem !important;
	font-weight: 600;
	line-height: 1;
	color: var(--primario);
	margin: 0 0 0.3rem !important;
	max-width: none !important;
}

.tw-numeri .tw-etichetta {
	font-family: Inter, sans-serif;
	font-size: 0.95rem !important;
	color: var(--contrast-2);
	margin: 0 !important;
	max-width: none !important;
}

.home .tw-badge-libro {
	max-width: none !important;
	text-align: center;
	font-size: 0.85rem !important;
	color: var(--contrast-2);
	margin-top: 1.8rem !important;
	padding-top: 1.1rem;
	border-top: 1px solid var(--contrast-3);
}
.home .tw-badge-libro a { color: var(--primario); }

/* --- 3. CARD FAMIGLIE ---------------------------------------------- */

/* Proporzione, non altezza fissa: con 165 px fissi le card in una riga da due
   (Music e Training) diventavano strisce larghe il doppio e alte uguali, 3,4:1
   contro il 2,2:1 delle sei famiglie in riga da tre. Con il rapporto 11/5 le
   sei restano identiche (364 x 165 a 1440 px) e le due si allungano. */
.tw-card-fam img {
	width: 100%; height: auto; aspect-ratio: 11 / 5; object-fit: cover;
	display: block; border-radius: 6px;
}
.tw-card-fam .tw-segnaposto { min-height: 165px; margin: 0 0 0.6rem !important; }
.tw-card-fam h3 { margin: 0.6rem 0 0.2rem !important; }
.tw-card-fam p { font-size: 0.9rem !important; color: var(--contrast-2); margin: 0 !important; }

/* --- 4. FASCIA VIDEO NAVY ------------------------------------------ */

.tw-fascia-navy {
	max-width: none !important;
	background: var(--primario);
	border-radius: 10px;
	padding: 2.6rem 2rem !important;
}
.tw-fascia-navy h2,
.tw-fascia-navy p { color: #FFFFFF !important; max-width: 40rem !important; }
.tw-fascia-navy p { color: rgba(255,255,255,0.82) !important; }
.tw-fascia-navy figure { margin: 0; border-radius: 6px; overflow: hidden; }
.tw-fascia-navy .wp-block-columns { max-width: none !important; margin-top: 1.6rem; }

/* --- 5. TEAM COACHING (tono sobrio) -------------------------------- */

.home .tw-coaching {
	max-width: none !important;
	border-top: 2px solid var(--contrast-3);
	border-bottom: 2px solid var(--contrast-3);
	padding: 2.4rem 0 !important;
}
.home .tw-coaching h2 { max-width: 40rem !important; }
.home .tw-coaching p { max-width: 40rem !important; font-size: 1.08rem; }

/* --- 3. IL NOSTRO PUNTO DI VISTA ----------------------------------- */

.home .tw-pensiero {
	max-width: none !important;
	border-top: 3px solid var(--accento-caldo);
	padding-top: 2rem !important;
	margin-top: 3rem !important;
}
.home .tw-pensiero h2 { max-width: 46rem !important; }
.home .tw-pensiero p  { max-width: 44rem !important; font-size: 1.06rem; }

.home .tw-concetti { max-width: none !important; margin-top: 1.4rem !important; }
.home .tw-concetto {
	display: inline-block;
	background: var(--sfondo-alt);
	color: var(--primario);
	font-family: Inter, sans-serif;
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: 0.03em;
	padding: 0.4rem 0.9rem;
	border-radius: 3px;
	margin: 0 0.4rem 0.5rem 0;
}

/* --- 4. LIBRO ------------------------------------------------------- */

.home .tw-libro {
	max-width: none !important;
	background: var(--sfondo-alt);
	border-radius: 10px;
	padding: 2rem !important;
	margin-top: 1.6rem !important;
}
.home .tw-libro h2 { max-width: none !important; font-size: 1.6rem !important; }
.home .tw-libro p  { max-width: none !important; }
/* Copertina: il file sorgente è 386x592, quindi non va oltre i ~290px
   di larghezza reale se deve restare pulito. L'ombra la stacca dal
   fondo chiaro della sezione. */
/* La copertina è più alta del testo che le sta accanto: senza
   centratura verticale il testo resta appeso in alto e sotto si apre
   un vuoto di duecento pixel. */
.home .tw-libro .wp-block-columns { align-items: center; }
.home .tw-libro figure.tw-copertina { margin: 0 !important; max-width: none !important; }
.home .tw-libro figure.tw-copertina img {
	width: 100%;
	max-width: 240px;
	height: auto;
	display: block;
	border-radius: 4px;
	box-shadow: 0 10px 30px rgba(0, 0, 75, 0.22);
}

/* Il badge Amazon è dentro l'immagine, ma un'immagine non si legge coi
   lettori di schermo e non si indicizza: il primato va scritto anche
   in testo. */
.home .tw-libro p.tw-bestseller {
	font-size: 0.95rem !important;
	color: var(--primario);
	border-left: 3px solid var(--accento-caldo);
	padding-left: 0.9rem;
	margin: 1rem 0 !important;
}

/* --- 5. TEDx -------------------------------------------------------- */

.home .tw-tedx {
	max-width: none !important;
	padding: 2rem 0 !important;
}
.home .tw-tedx h2 { max-width: 40rem !important; font-size: 1.6rem !important; }
.home .tw-tedx p  { max-width: 42rem !important; }

/* Video affiancato al testo, non sotto.

   Il video sta a destra e il testo a sinistra, così alterna col blocco
   del libro qui sopra che ha invece l'immagine a sinistra: due sezioni
   di seguito con lo stesso impianto sembrerebbero la stessa cosa.

   Le larghezze vanno anche nello style inline oltre che nell'attributo
   del blocco: è lì che WordPress le applica davvero, l'attributo da
   solo lascia le colonne al 50/50. */
.home .tw-tedx-riga {
	max-width: none !important;
	/* !important obbligatorio: il core di WordPress dichiara
	   .wp-block-columns { align-items: normal !important }, quindi senza
	   il testo resta appeso in alto accanto a un video alto 353px. */
	align-items: center !important;
	gap: 2.4rem;
	margin: 0 !important;
}
.home .tw-tedx-riga h2 { margin-top: 0 !important; max-width: none !important; }
.home .tw-tedx-riga p  { max-width: none !important; margin-bottom: 0 !important; }
.home .tw-tedx-riga figure {
	margin: 0 !important;
	border-radius: 6px;
	overflow: hidden;
	box-shadow: 0 8px 26px rgba(0, 0, 75, 0.16);
}

@media (max-width: 768px) {
	.home .tw-tedx-riga { gap: 1.2rem; }
	/* Il video prima del testo che lo descrive, come nelle altre righe. */
	.home .tw-tedx-riga .wp-block-column:has(figure) { order: -1; }
}

/* --- 8. LA SCALA DEL METODO ---------------------------------------- */

.home .tw-metodo { max-width: none !important; margin-top: 2.4rem !important; }
.home .tw-metodo > h2 { max-width: 40rem !important; }
.home .tw-metodo > p  { max-width: 42rem !important; }

.home .tw-scala {
	max-width: none !important;
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin-top: 1.8rem !important;
	counter-reset: passo;
}

.home .tw-scala > .wp-block-group__inner-container {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	width: 100%;
	padding: 0 !important;
}

.home .tw-passo {
	flex: 1 1 190px;
	max-width: none !important;
	background: var(--sfondo-alt);
	border-top: 3px solid var(--primario);
	border-radius: 0 0 6px 6px;
	padding: 1rem 1rem 1.1rem !important;
	position: relative;
}
.home .tw-passo:nth-child(4),
.home .tw-passo:nth-child(5) { border-top-color: var(--accento-caldo); }

.home .tw-passo-titolo {
	font-family: Inter, sans-serif;
	font-weight: 600;
	font-size: 0.98rem !important;
	color: var(--primario);
	margin: 0 0 0.25rem !important;
	max-width: none !important;
}
.home .tw-passo-testo {
	font-size: 0.88rem !important;
	color: var(--contrast-2);
	margin: 0 !important;
	max-width: none !important;
	line-height: 1.45;
}

/* --- 10. TESTIMONIANZA ---------------------------------------------- */

.home .tw-testimonianza { max-width: none !important; margin-top: 2.4rem !important; }
.home .tw-testimonianza blockquote {
	max-width: 48rem;
	margin: 0 auto;
	border-left: 4px solid var(--accento-caldo);
	padding: 0.4rem 0 0.4rem 1.5rem;
}
.home .tw-testimonianza blockquote p {
	font-family: "Source Serif 4", serif;
	font-size: 1.25rem !important;
	line-height: 1.5;
	color: var(--primario);
	max-width: none !important;
}
.home .tw-testimonianza cite {
	font-family: Inter, sans-serif;
	font-size: 0.85rem;
	font-style: normal;
	color: var(--contrast-2);
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

/* --- 11. CTA FINALE (specifica della home) -------------------------- */

.tw-cta {
	max-width: none !important;
	background: var(--primario);
	border-radius: 10px;
	padding: 2.8rem 2rem !important;
	margin-top: 2.6rem !important;
	text-align: center;
}
.tw-cta h2, .tw-cta p { color: #FFFFFF !important; max-width: 38rem !important; margin-left: auto !important; margin-right: auto !important; }
.tw-cta p { color: rgba(255,255,255,0.85) !important; }
.tw-cta .wp-block-buttons { display: flex; justify-content: center; margin: 1.6rem 0 1rem; max-width: none !important; }
.tw-cta .wp-block-button__link {
	background: var(--accento) !important; color: #FFFFFF !important;
	font-size: 1.2rem; font-weight: 600; padding: 0.85rem 2.4rem; border-radius: 6px; text-decoration: none;
}
.tw-cta .wp-block-button__link:hover { background: #FFFFFF !important; color: var(--primario) !important; }
.tw-cta-contatti { font-size: 0.9rem !important; }
.tw-cta a { color: #FFFFFF; }
.tw-cta-contatti a:hover { color: var(--accento-caldo); }

/* --- loghi clienti -------------------------------------------------- */
/* Fascia loghi clienti.

   I file arrivano dalla media library del vecchio sito: sono ritagli a
   120-200px, quindi vanno mostrati piccoli. A 34px di altezza reale la
   sorgente resta almeno 3x, cioè nitida anche su schermi retina; oltre
   i 50px comincerebbero a sgranare. Il tetto è messo apposta.

   Trattamento in grigio applicato qui e non cotto nei file: i PNG in
   media library restano a colori, così tornare al colore è una riga.
   Il grigio serve perché 24 palette diverse in fila litigano fra loro
   e con il navy del sito. Al passaggio del mouse torna il colore.

   NOTA 6.9.2026: queste regole erano scritte `.home .tw-loghi`, quindi
   valevano solo in home. Quando il muro dei loghi e' stato messo anche in
   /chi-siamo/ i 28 marchi sono usciti impilati uno per riga a piena
   larghezza, perche' senza la regola restano figure a blocco. Tolto il
   `.home`: il muro ora si comporta uguale ovunque lo si metta. */
.tw-loghi {
	max-width: none !important;
	margin-top: 2rem !important;
	padding: 1.6rem 0 0 !important;
	border-top: 1px solid rgba(0, 0, 75, 0.1);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.5rem 2.6rem;
}

.tw-loghi > .wp-block-group__inner-container {
	padding: 0 !important;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 1.5rem 2.6rem;
}

.tw-loghi figure.tw-logo { margin: 0 !important; max-width: none !important; }

.tw-loghi figure.tw-logo img {
	height: 34px;
	width: auto;
	max-width: 120px;
	object-fit: contain;
	display: block;
	filter: grayscale(1) opacity(0.55);
	transition: filter 0.25s ease;
}

.tw-loghi figure.tw-logo img:hover { filter: grayscale(0) opacity(1); }

.tw-loghi-nota {
	text-align: center;
	font-size: 0.82rem !important;
	color: rgba(0, 0, 75, 0.5) !important;
	margin: 1.4rem 0 0 !important;
	max-width: none !important;
}

@media (max-width: 768px) {
	.tw-loghi,
	.tw-loghi > .wp-block-group__inner-container { gap: 1.1rem 1.6rem; }
	.tw-loghi figure.tw-logo img { height: 26px; max-width: 92px; }
}

/* ------------------------------------------------------------------
   12. MODULO PREVENTIVO INCORPORATO (/contatti/)
   Il form vive su quote.teambuilding-gulf.com e la sua policy
   frame-ancestors autorizza www.teamworking.it: in produzione si
   incorpora. In locale il dominio non è nell'elenco, quindi resta
   bianco — per quello sotto c'è sempre il link di riserva.
   ------------------------------------------------------------------ */

.tw-form-embed { max-width: none !important; margin: 1.6rem 0 2rem; }

.tw-form-embed iframe {
	width: 100%;
	min-height: 1180px;
	border: 1px solid var(--contrast-3);
	border-radius: 8px;
	background: var(--sfondo-alt);
	display: block;
}

.tw-form-fallback {
	max-width: none !important;
	margin-top: 0.7rem !important;
	font-size: 0.9rem !important;
	color: var(--contrast-2);
}

@media (max-width: 768px) {
	.tw-form-embed iframe { min-height: 1450px; }
}

/* ------------------------------------------------------------------
   13. RIGHE VIDEO ALTERNATE (home)
   Video e testo affiancati, con il lato che si scambia riga dopo riga.
   ------------------------------------------------------------------ */

.tw-riga-video {
	max-width: none !important;
	align-items: center;
	gap: 2rem;
	margin-top: 1.6rem !important;
}

.tw-riga-video figure { margin: 0; border-radius: 6px; overflow: hidden; }

.tw-fascia-navy .tw-riga-video h3 {
	color: #FFFFFF !important;
	max-width: none !important;
	margin-top: 0 !important;
}

.tw-fascia-navy .tw-riga-video p {
	color: rgba(255,255,255,0.82) !important;
	max-width: none !important;
	font-size: 0.98rem;
}

@media (max-width: 781px) {
	.tw-riga-video { gap: 1rem; }
	/* su mobile il video viene sempre prima del testo, anche nelle
	   righe invertite: altrimenti si legge la descrizione di un video
	   che non si è ancora visto. */
	.tw-riga-video .wp-block-column:has(figure) { order: -1; }
}

/* --------------------------------------------------------------------------
   Banner consensi: la lista dei documenti

   Complianz stampa sempre tre voci — Cookie Policy, informativa privacy e
   impressum — e nasconde con .cmplz-hidden solo il link <a> di quelle che non
   esistono. La voce <li> resta, e con lei il suo pallino: sotto il pulsante
   «Accetta» comparivano due punti elenco vuoti.

   Il :has() fa sparire la voce intera, e quando l'informativa privacy verra'
   creata la sua voce ricomparira' da sola senza toccare niente.
   -------------------------------------------------------------------------- */
.cmplz-cookiebanner .cmplz-documents ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0 1em;
	justify-content: center;
}

.cmplz-cookiebanner .cmplz-documents li {
	margin: 0;
}

.cmplz-cookiebanner .cmplz-documents li:has(> a.cmplz-hidden),
.cmplz-cookiebanner .cmplz-documents li:has(> a[href="#"]) {
	display: none;
}

/* --------------------------------------------------------------------------
   Segnaposto dei video: rispettare il rapporto d'aspetto

   Complianz calcola l'altezza del segnaposto con il suo JavaScript e la scrive
   inline come `.cmplz-placeholder-N { height: Npx }`. Sui blocchi embed a
   piena larghezza sbaglia il conto: su /attivita/ produceva 760x570, cioe' 4:3,
   dove WordPress aveva dichiarato 16:9. Dentro una colonna stretta il conto
   tornava, quindi il difetto si vedeva solo a tutta larghezza.

   Qui riprendo il rapporto dalla classe che WordPress mette sulla figure.
   -------------------------------------------------------------------------- */
.wp-embed-aspect-16-9 .cmplz-blocked-content-container[class*="cmplz-placeholder-"] {
	height: auto !important;
	width: 100%;
	aspect-ratio: 16 / 9;
}

.wp-embed-aspect-4-3 .cmplz-blocked-content-container[class*="cmplz-placeholder-"] {
	height: auto !important;
	width: 100%;
	aspect-ratio: 4 / 3;
}

.cmplz-blocked-content-container[class*="cmplz-placeholder-"] iframe {
	height: 100% !important;
}

/* --------------------------------------------------------------------------
   Ritratti della squadra (/chi-siamo/)

   I sei scatti vengono dal vecchio sito: cinque in polo bianca su fondo
   bianco, uno in giacca. Il cerchio li uniforma piu' del quadrato, che su
   fondo bianco lascia vedere dove finisce il ritaglio, e li distingue dalle
   card dei format, che sono rettangolari.
   -------------------------------------------------------------------------- */
.tw-ritratto {
	margin: 0 0 1rem !important;
}

.tw-ritratto img {
	width: 132px;
	height: 132px;
	object-fit: cover;
	object-position: center top;
	border-radius: 50%;
	display: block;
	background: var(--wp--preset--color--base-3, #fff);
	box-shadow: 0 0 0 1px rgba(0, 0, 75, 0.08);
}

.tw-ruolo {
	color: var(--wp--preset--color--accento, #FF3300) !important;
	font-weight: 600;
	letter-spacing: 0.02em;
	margin: -0.5rem 0 0.6rem !important;
}

/* Le persone sono cinque, quindi la griglia esce 3 + 2. Senza questa regola le
   due card dell'ultima riga si allargano fino a 563px contro i 364px di quelle
   sopra, e la sezione sembra sbilanciata. Qui la larghezza della card resta
   quella di una riga da tre, e le ultime due si allineano a sinistra. */
.wp-block-columns:has(.tw-ritratto) {
	justify-content: flex-start;
}

.wp-block-columns:has(.tw-ritratto) > .wp-block-column {
	flex-grow: 0;
	flex-basis: calc((100% - 2 * 34px) / 3);
}

@media (max-width: 781px) {
	/* sotto questa soglia WordPress impila le colonne: la card torna piena */
	.wp-block-columns:has(.tw-ritratto) > .wp-block-column {
		flex-basis: 100%;
	}
}

/* --------------------------------------------------------------------------
   Navigazione di footer (aggiunta il 6.9.2026)

   Quattro colonne di link: Team Building, Attività, Team Coaching,
   TeamWorking. Servono a due cose insieme. Per chi legge, sono la mappa del
   sito in fondo a ogni pagina. Per i motori, sono l'unico collegamento
   interno che avesse la sezione /team-building/: prima di questo footer quelle
   nove pagine — proprio quelle che parlano del termine su cui vogliamo
   posizionarci — non erano linkate da nessuna parte del sito.

   Il fondo navy le unisce alla barra del copyright, che era gia' navy: senza,
   restava una fascia bianca appesa sopra una nera.
   -------------------------------------------------------------------------- */
.footer-widgets {
	background-color: var(--primario, #00004B) !important;
	color: rgba(255, 255, 255, 0.75);
	padding: 3rem 0 2.4rem;
}

.footer-widgets .widget-title {
	color: #FFFFFF;
	font-size: 0.82rem !important;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	margin-bottom: 1rem;
}

.footer-widgets .widget ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.footer-widgets .widget li {
	margin: 0 0 0.55rem;
	line-height: 1.35;
}

.footer-widgets .widget a {
	color: rgba(255, 255, 255, 0.75);
	text-decoration: none;
	font-size: 0.92rem;
	border-bottom: 1px solid transparent;
	transition: color 0.2s ease, border-color 0.2s ease;
}

.footer-widgets .widget a:hover,
.footer-widgets .widget a:focus-visible {
	color: #FFFFFF;
	border-bottom-color: var(--accento, #FF3300);
}

/* la voce della pagina che si sta guardando non deve sembrare cliccabile come le altre */
.footer-widgets .current-menu-item > a {
	color: #FFFFFF;
	font-weight: 600;
}

@media (max-width: 768px) {
	.footer-widgets { padding: 2.2rem 0 1.6rem; }
	.footer-widgets .widget { margin-bottom: 1.8rem; }
}

/* Briciole di navigazione: discrete, appena sopra il titolo della pagina.
   Stanno dentro .inside-article, quindi larghezza e allineamento arrivano
   dal contenuto e non da un contenitore mio. */
.tw-briciole {
	font-size: 0.82rem;
	color: var(--contrast-2, #4A4A6A);
	padding: 1.1rem 0 0;
}

/* Quando le briciole ci sono, sopra il titolo si sommavano TRE spazi: il
   padding delle briciole, il margine superiore di .entry-content che mette
   GeneratePress (34px), e il padding della testata. Risultato: le briciole
   galleggiavano in mezzo al bianco e il titolo sembrava staccato.
   Qui resta un solo respiro, quello della testata. */
.tw-briciole + .entry-content {
	margin-top: 0 !important;
}

.tw-briciole ~ .entry-content > .tw-hero {
	padding-top: 1.4rem !important;
}

.tw-briciole a {
	color: var(--contrast-2, #4A4A6A);
	text-decoration: none;
	border-bottom: 1px solid rgba(0, 0, 75, 0.18);
}

.tw-briciole a:hover { color: var(--accento, #FF3300); border-bottom-color: currentColor; }
.tw-briciole .separator { margin: 0 0.45rem; opacity: 0.5; }
.tw-briciole .last { color: var(--primario, #00004B); font-weight: 600; }

@media (max-width: 768px) { .tw-briciole { font-size: 0.76rem; padding-top: 0.7rem; } }

/* --------------------------------------------------------------------------
   Foto secondaria sugli hub di famiglia

   Sulle schede format la foto e' la testata e sta a piena larghezza (1160px):
   li' e' la prima cosa che si vede e deve esserlo. Sugli hub invece arriva
   dopo il video, che sta in una colonna da 587px: lasciata a 1160 diventava
   il doppio del video e ribaltava la gerarchia.
   -------------------------------------------------------------------------- */
.tw-foto-secondaria {
	max-width: 640px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

@media (max-width: 768px) {
	.tw-foto-secondaria { max-width: 100% !important; }
}

/* Video in testata sugli hub: sta al posto che sulle schede tiene la foto,
   quindi prende la stessa larghezza piena. Il video apre, il testo spiega,
   la foto chiude: e' l'ordine deciso con Nicole il 7.9.2026. */
.tw-video-testata {
	margin-top: 0.5rem;
	margin-bottom: 2rem;
}

/* --------------------------------------------------------------------------
   Compattare la parte alta della pagina

   Misurato il 7.9.2026: dalla cima al titolo c'erano 204px, di cui 108 di
   sola testata del sito — il logo e' alto 39px e ne aveva 24 sopra e 24
   sotto. Sommati al respiro delle briciole e a quello della testata di
   pagina, il contenuto cominciava molto in basso e le briciole sembravano
   galleggiare.

   Qui la testata del sito si stringe e il titolo sale sotto le briciole.
   -------------------------------------------------------------------------- */
.site-header .inside-header {
	padding-top: 14px !important;
	padding-bottom: 14px !important;
}

.tw-briciole {
	padding-top: 0.8rem !important;
}

.tw-briciole ~ .entry-content > .tw-hero {
	padding-top: 0.35rem !important;
}

/* Card delle destinazioni: tutta la card e' cliccabile.
   Il link vero e' uno solo, il titolo — cosi' il testo del collegamento e' il
   nome della citta' e non un generico «leggi tutto». Lo pseudo-elemento lo
   allarga su tutta la colonna: niente secondi link con cui confondersi. */
.tw-card-dest { position: relative; transition: box-shadow .18s ease, transform .18s ease; }
.tw-card-dest h3 a {
	text-decoration: none; color: inherit;
}
.tw-card-dest h3 a::after {
	content: ""; position: absolute; inset: 0; z-index: 1;
}
.tw-card-dest h3 a::before {
	content: "→"; float: right; opacity: .35; transition: opacity .18s ease, transform .18s ease;
}
.tw-card-dest:hover,
.tw-card-dest:focus-within {
	box-shadow: 0 6px 22px rgba(0, 0, 0, .13);
	transform: translateY(-2px);
}
.tw-card-dest:hover h3 a::before,
.tw-card-dest:focus-within h3 a::before { opacity: 1; transform: translateX(3px); }
.tw-card-dest:hover h3 a { text-decoration: underline; text-underline-offset: 3px; }
.tw-card-dest h3 a:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
/* la foto non deve intercettare il click al posto del link steso */
.tw-card-dest .tw-dest-img { position: relative; z-index: 0; }

/* Slider delle foto di squadra su «chi siamo».
   Niente libreria: e' una riga che scorre con scroll-snap. Senza JavaScript
   funziona lo stesso — si trascina col dito o con la rotella — e i pallini
   sotto restano ancore vere, quindi anche da tastiera si arriva a ogni foto. */
.tw-slider { position: relative; margin: 0 0 1.4rem; }
.tw-slider-pista {
	display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory;
	scroll-behavior: smooth; scrollbar-width: none; -webkit-overflow-scrolling: touch;
	border-radius: 6px;
}
.tw-slider-pista::-webkit-scrollbar { display: none; }
.tw-slider-pista > figure {
	flex: 0 0 100%; scroll-snap-align: center; margin: 0;
}
.tw-slider-pista > figure img {
	width: 100%; height: auto; display: block; border-radius: 6px;
}
.tw-slider-pista > figure figcaption {
	font-size: .82rem; opacity: .7; margin-top: .45rem; text-align: center;
}
/* frecce: compaiono solo dove c'e' un puntatore, sul telefono si scorre e basta */
.tw-slider-avanti, .tw-slider-indietro {
	position: absolute; top: calc(50% - 22px); width: 44px; height: 44px;
	border: 0; border-radius: 50%; cursor: pointer;
	background: rgba(255,255,255,.92); color: #12233f; font-size: 20px; line-height: 1;
	box-shadow: 0 2px 10px rgba(0,0,0,.22); display: none;
}
.tw-slider-indietro { left: 10px; } .tw-slider-avanti { right: 10px; }
@media (hover: hover) and (min-width: 700px) {
	.tw-slider-avanti, .tw-slider-indietro { display: block; }
}
.tw-slider-avanti:hover, .tw-slider-indietro:hover { background: #fff; }
.tw-slider-avanti:focus-visible, .tw-slider-indietro:focus-visible { outline: 2px solid #12233f; outline-offset: 2px; }
.tw-slider-pallini { display: flex; gap: 7px; justify-content: center; margin-top: .7rem; }
.tw-slider-pallini a {
	width: 9px; height: 9px; border-radius: 50%; background: #c9ced8; display: block;
	text-indent: -9999px; overflow: hidden; transition: background .15s ease, transform .15s ease;
}
.tw-slider-pallini a[aria-current="true"] { background: #12233f; transform: scale(1.25); }
.tw-slider-pallini a:focus-visible { outline: 2px solid #12233f; outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .tw-slider-pista { scroll-behavior: auto; } }

/* Fascia a due metà: «da remoto» e «grandi eventi». Non sono famiglie — sono
   due modi di lavorare — quindi non stanno nella griglia ma sotto, con una
   grafica diversa che dice proprio questo. Tutta la metà è cliccabile. */
.tw-due-vie { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; margin: 2rem 0 0; }
@media (max-width: 700px) { .tw-due-vie { grid-template-columns: 1fr; } }
.tw-due-vie > div {
	position: relative; background: #12233f; color: #fff;
	padding: 2rem 1.8rem; transition: background .18s ease;
}
.tw-due-vie > div:hover, .tw-due-vie > div:focus-within { background: #1b3358; }
.tw-due-vie h3 { color: #fff; margin: 0 0 .5rem; font-size: 1.35rem; }
.tw-due-vie h3 a { color: inherit; text-decoration: none; }
.tw-due-vie h3 a::after { content: ""; position: absolute; inset: 0; }
.tw-due-vie h3 a::before { content: "→"; float: right; opacity: .45; transition: opacity .18s ease, transform .18s ease; }
.tw-due-vie > div:hover h3 a::before { opacity: 1; transform: translateX(3px); }
.tw-due-vie > div:hover h3 a { text-decoration: underline; text-underline-offset: 3px; }
.tw-due-vie h3 a:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.tw-due-vie p { margin: 0; opacity: .88; font-size: .95rem; line-height: 1.5; }

/* --------------------------------------------------------------------------
   HERO DELLE PAGINE FAMIGLIA — il video comanda, la foto no

   La regola: il video sta nell'hero e la foto sotto non deve mai essere piu'
   grande di lui. Prima non era rispettata da nessuna delle otto pagine: il
   video stava in una colonna al 52% (587x330 sul reso a 1440) e la foto sotto
   era a tutta larghezza, 1160x653 — quasi quattro volte l'area.

   Il video e' stato tirato fuori dalla colonna e messo a tutta larghezza; qui
   la foto scende al 62%, cosi' resta chiaramente la seconda voce. Sotto i
   768px le due tornano entrambe piene, perche' a quella larghezza rimpicciolire
   ancora vorrebbe dire non far vedere niente.
   -------------------------------------------------------------------------- */
figure.tw-hero-img.tw-sotto-video {
	max-width: 62%;
	margin-left: auto !important;
	margin-right: auto !important;
}

@media (max-width: 768px) {
	figure.tw-hero-img.tw-sotto-video { max-width: 100%; }
}

/* «Leggi di più» nelle card: il testo in più resta nella pagina, ma chiuso.
   Blu e sottolineato come i link nel testo: il rosso era quasi unico nel sito.
   Serve alla card Social della home, che era lunga il doppio delle altre e
   allungava tutta la sua riga. È un <details>: niente JavaScript, e si apre
   anche da tastiera. */
.tw-leggi-di-piu > summary {
	list-style: none;
	cursor: pointer;
	display: inline-block;
	margin-top: 0.25em;
	color: var(--primario);
	text-decoration: underline;
}
.tw-leggi-di-piu > summary::-webkit-details-marker { display: none; }
.tw-leggi-di-piu > summary::after { content: " ↓"; }
.tw-leggi-di-piu[open] > summary { font-size: 0; }
.tw-leggi-di-piu[open] > summary::after { content: "Chiudi ↑"; font-size: 1rem; }
.tw-leggi-di-piu > p { margin-top: 0.5em; }

/* --- «Dove vogliamo arrivare»: tre colonne, due righe ----------------
   La griglia riempie per colonna (grid-auto-flow: column), cosi la
   dichiarazione e la sua spiegazione restano incolonnate; nel DOM le celle
   stanno a coppie, che e' anche l'ordine giusto per il telefono e per chi
   legge con uno screen reader. Sotto i 768 px basta tornare a una colonna.
   La griglia va sul contenitore interno: WordPress lo aggiunge dentro ogni
   gruppo, e senza quel dettaglio il CSS sembra non funzionare. */
.tw-griglia-visione > .wp-block-group__inner-container {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	grid-template-rows: auto auto;
	grid-auto-flow: column;
	column-gap: var(--wp--preset--spacing--80);
	row-gap: 0;
	align-items: stretch;
}
.tw-vm-sopra {
	background: var(--sfondo-alt);
	border-radius: 6px;
	padding: 1.4rem 1.3rem;
}
.tw-vm-sopra h3 {
	font-family: Inter, sans-serif;
	font-size: 0.8rem !important;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--contrast-2);
	margin: 0 0 0.6rem !important;
}
.tw-vm-dichiarazione {
	font-size: 1.25rem;
	line-height: 1.4;
	font-weight: 400;
	color: var(--primario);
	margin: 0 !important;
}
.tw-vm-schema {
	font-size: 1.02rem;
	line-height: 1.45;
	color: var(--primario);
	margin: 0 0 0.4rem !important;
}
.tw-vm-schema:last-child { margin-bottom: 0 !important; }
.tw-vm-sotto {
	margin-top: 1rem;
	padding-top: 0.9rem;
	border-top: 1px solid rgba(0, 0, 75, 0.15);
}
.tw-vm-sotto p { margin: 0 !important; }

@media (max-width: 768px) {
	.tw-griglia-visione > .wp-block-group__inner-container {
		grid-template-columns: 1fr;
		grid-auto-flow: row;
	}
	.tw-vm-sotto { margin-bottom: 1.6rem; }
	.tw-vm-sotto:last-child { margin-bottom: 0; }
}

/* Il selettore di lingua nel menu principale: si legge, ma non compete con le
   voci vere. Il bordo sta intorno alla scritta, non intorno alla voce di menu,
   che e' alta quanto tutta la barra. */
.main-navigation .tw-lingua > a {
	opacity: 0.75;
}
.main-navigation .tw-lingua > a:hover,
.main-navigation .tw-lingua > a:focus {
	opacity: 1;
}
.main-navigation .tw-lingua > a > span {
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.08em;
}
@media (min-width: 769px) {
	/* La barra e' larga quanto basta per le cinque voci: la sigla ci sta solo
	   con meno respiro ai lati, se no va a capo da sola. */
	.main-navigation .main-nav ul li.tw-lingua > a {
		padding-left: 0.55em;
		padding-right: 0.55em;
	}
	.main-navigation .tw-lingua > a > span {
		border: 1px solid rgba(0, 0, 75, 0.25);
		border-radius: 3px;
		padding: 0.3em 0.5em;
		line-height: 1;
		display: inline-block;
	}
}

/* Il pulsante WhatsApp: sta in basso a destra, dove sta su tutti i siti.
   Prima del consenso li' c'e' il banner dei cookie, che e' anche lui in basso
   a destra: finche' non e' stato chiuso il pulsante non si vede. */
.tw-whatsapp {
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 900;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	border-radius: 50%;
	background: #25d366;
	color: #fff;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.25);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.tw-whatsapp:hover,
.tw-whatsapp:focus {
	color: #fff;
	transform: scale(1.06);
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
}

.tw-whatsapp:focus-visible {
	outline: 3px solid var(--accento, #f30);
	outline-offset: 3px;
}

body:has(#cmplz-cookiebanner-container .cmplz-cookiebanner:not(.cmplz-dismissed)) .tw-whatsapp {
	opacity: 0;
	visibility: hidden;
}

@media (max-width: 768px) {
	.tw-whatsapp {
		right: 14px;
		bottom: 14px;
		width: 48px;
		height: 48px;
	}
	.tw-whatsapp svg {
		width: 25px;
		height: 25px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tw-whatsapp { transition: none; }
	.tw-whatsapp:hover, .tw-whatsapp:focus { transform: none; }
}

@media print {
	.tw-whatsapp { display: none; }
}
