/* MAP — il sito è un aeroporto. */

:root {
	--rosso: #D62B1F;
	--ciano: #00F0FF;
	--crema: #F4F1EA;
	--nero: #0E0E0E;
	--bianco: #FFFFFF;
	--grigio: #63615C; /* testi piccoli su crema e bianco: contrasto AA */
	--rosso-t: #B3221A; /* rosso per testi piccoli su chiaro (il rosso pieno non arriva a 4.5:1) */
	--line: 2px solid var(--nero);
	--gut: clamp(16px, 4vw, 56px);
	--mh: 56px;
	--shadow: 6px 6px 0 var(--nero);
}

/* Su fondo scuro il grigio torna chiaro. */
.band--nero, .gate--nero, .mf, .wm-board, .board, .fids, .pboard, .retemap, .is-style-fascia-nera { --grigio: #A8A59E; }
/* …ma dentro le caselle chiare torna scuro. */
.cell--n, .cell--site, .wm-ticket, .mf__grid, .mf__strip { --grigio: #63615C; }

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--mh); }
body { margin: 0; background: var(--crema); color: var(--nero); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
body.board-open { overflow: hidden; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
:focus-visible { outline: 3px solid var(--ciano); outline-offset: 3px; }
/* Primo tasto Tab: salta l'header e il menu. */
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 100; padding: 12px 18px; background: var(--nero); color: var(--crema); font-weight: 700; text-decoration: none; transform: translateY(-200%); }
.skip-link:focus { transform: none; }
.wp-site-blocks { padding: 0; }
.wp-site-blocks > *, .map-home > *, .wp-site-blocks .wp-block-template-part { margin-block: 0 !important; }
.map-home { padding: 0 !important; margin: 0 !important; }

/* Comuni ------------------------------------------------------------ */

.band, :is(.is-style-fascia-crema, .is-style-fascia-rossa, .is-style-fascia-nera, .is-style-fascia-ciano) { position: relative; padding: clamp(56px, 9vw, 140px) var(--gut); border-bottom: var(--line); overflow: hidden; }
.band--crema, .is-style-fascia-crema { background: var(--crema); color: var(--nero); }
.band--rosso, .is-style-fascia-rossa { background: var(--rosso); color: var(--bianco); }
.band--nero, .is-style-fascia-nera { background: var(--nero); color: var(--crema); }
.band--ciano, .is-style-fascia-ciano { background: var(--ciano); color: var(--nero); }
.band h2, :is(.is-style-fascia-crema, .is-style-fascia-rossa, .is-style-fascia-nera, .is-style-fascia-ciano) h2 { margin: 0; font-weight: 700; text-transform: uppercase; letter-spacing: -0.04em; line-height: 0.86; }

.kicker, .is-style-occhiello { margin: 0 0 1rem; font-size: 0.8125rem; letter-spacing: 0.18em; text-transform: uppercase; }
.kicker::before, .is-style-occhiello::before { content: "● "; color: var(--rosso); }
.band--rosso .kicker::before, .is-style-fascia-rossa .is-style-occhiello::before { color: var(--ciano); }

.btn, .wp-block-button__link {
	display: inline-flex; align-items: center; gap: .5em;
	padding: .85em 1.3em; border: var(--line); box-shadow: 4px 4px 0 var(--nero);
	font-family: inherit; font-weight: 700; font-size: 0.9375rem; line-height: 1; letter-spacing: .08em; text-transform: uppercase; text-decoration: none;
	transition: transform .15s, box-shadow .15s;
}
.btn:hover, .wp-block-button__link:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--nero); }
.btn:active, .wp-block-button__link:active { transform: translate(3px, 3px); box-shadow: 1px 1px 0 var(--nero); }
/* Bottoni: sempre rossi con l'ombra nera; su fondo rosso diventano ciano (e su ciano restano rossi). */
.btn, .btn--nero, .btn--rosso, .btn--ciano, .btn--crema, .wp-block-button__link { background: var(--rosso); color: var(--bianco); }
.band--rosso .btn, .gate--rosso .btn, .checkin .btn, .protagonisti .btn, .is-style-fascia-rossa .wp-block-button__link, .gate--rosso .wp-block-button__link, .checkin .wp-block-button__link, .protagonisti .wp-block-button__link { background: var(--ciano); color: var(--nero); }
.band--nero .btn, .passport .btn, .pboard .btn, .is-style-fascia-nera .wp-block-button__link, .passport .wp-block-button__link, .pboard .wp-block-button__link { box-shadow: 4px 4px 0 var(--crema); border-color: var(--crema); }
.band--nero .btn:hover, .passport .btn:hover, .is-style-fascia-nera .wp-block-button__link:hover, .passport .wp-block-button__link:hover { box-shadow: 6px 6px 0 var(--crema); }
.btn--xl, .btn--xl > .wp-block-button__link { font-size: clamp(1rem, 1.6vw, 1.375rem); padding: 1em 1.6em; }

.hl, mark.has-inline-color { padding: 0 .12em; color: inherit; }
.hl--ciano, mark.has-ciano-background-color { background: var(--ciano); }
.hl--rosso, mark.has-rosso-background-color { background: var(--rosso); color: var(--bianco); }
.hl--nero, mark.has-nero-background-color { background: var(--nero); color: var(--crema); }

.flap { display: inline; white-space: pre-wrap; text-transform: uppercase; }
.flap.is-flipping span { animation: flap-tick .06s steps(1) infinite; }
@keyframes flap-tick { 50% { opacity: .55; } }

/* Header: striscia a caselle, come un biglietto ---------------------- */

.mh {
	position: fixed; inset: 0 0 auto; z-index: 50; height: var(--mh);
	display: flex; align-items: stretch;
	background: var(--crema); border-bottom: var(--line);
}
.mh__cell {
	display: flex; flex-direction: column; justify-content: center; gap: 2px;
	margin: 0; padding: 0 clamp(10px, 1.4vw, 18px); border-right: var(--line);
	text-decoration: none; white-space: nowrap;
}
.mh__k { font-size: .625rem; letter-spacing: .2em; text-transform: uppercase; color: var(--grigio); }
.mh__v { font-size: .8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.mh__v time { font-variant-numeric: tabular-nums; }
.mh__logo {
	align-items: center; padding: 0 clamp(14px, 2vw, 24px);
	background: var(--rosso); color: var(--bianco);
	font-size: 1.5rem; font-weight: 700; letter-spacing: .02em; line-height: 1;
	transition: background .15s, color .15s;
}
.mh__logo:hover { background: var(--nero); }
.mh__name { background: var(--bianco); }
.mh__info--gate { background: var(--ciano); }
.mh__info--gate .mh__k { color: var(--nero); }
.mh__fill {
	flex: 1; min-width: 12px; border-right: var(--line);
	background: repeating-linear-gradient(-45deg, var(--nero) 0 2px, transparent 2px 9px);
	opacity: .9;
}
.mh__lang { display: flex; }
.mh__lang .mh__cell { align-items: center; min-width: 48px; font-size: .8125rem; font-weight: 700; letter-spacing: .1em; }
.mh__lang .mh__cell:hover { background: var(--bianco); }
.mh__lang [aria-current] { background: var(--nero); color: var(--crema); }
.mh__menu {
	flex-direction: row; align-items: center; gap: 10px; border: 0; cursor: pointer;
	padding: 0 clamp(16px, 2.4vw, 32px); background: var(--nero); color: var(--crema);
	font-family: inherit; font-weight: 700; font-size: .875rem; line-height: 1; letter-spacing: .18em; text-transform: uppercase;
	transition: background .15s, color .15s;
}
.mh__menu:hover { background: var(--rosso); color: var(--bianco); }
.mh__menu-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--ciano); animation: blink 1.2s steps(2) infinite; }
@keyframes blink { 50% { opacity: .2; } }

/* Menu = tabellone partenze ---------------------------------------- */

.board {
	position: fixed; inset: 0; z-index: 60; overflow: auto;
	display: flex; flex-direction: column; gap: 0;
	padding: 0 var(--gut) 32px; background: var(--nero); color: var(--crema);
}
.board[hidden] { display: none; }
.board__top {
	position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
	min-height: var(--mh); padding: 10px 0; background: var(--nero); border-bottom: 2px solid #3A3A3A;
}
.board__logo { display: none; }
.board__close:focus-visible { outline: 3px solid var(--ciano); outline-offset: -3px; }
.board__close:focus:not(:focus-visible) { outline: 0; }
.board__title { margin: 0; font-size: 1rem; letter-spacing: .2em; text-transform: uppercase; color: #FFD43B; }
.board__title-en { color: var(--grigio); }
.board__clock { margin: 0 0 0 auto; font-size: 1rem; letter-spacing: .12em; text-transform: uppercase; }
.board__clock time { color: #FFD43B; font-variant-numeric: tabular-nums; }
.board__close { padding: 8px 14px; background: var(--rosso); color: var(--bianco); border: 0; cursor: pointer; font-family: inherit; font-weight: 700; font-size: .875rem; line-height: 1; letter-spacing: .16em; text-transform: uppercase; }
.board__head, .board__row a {
	display: grid; grid-template-columns: 5.5ch 7ch minmax(0, 1fr) 4ch 16ch; gap: 18px; align-items: center;
}
.board__head { padding: 14px 0 8px; text-transform: uppercase; color: var(--grigio); border-bottom: 1px solid #3A3A3A; }
.board__head span { font-size: .75rem; letter-spacing: .2em; } /* colonne in ch uguali a quelle delle righe */
.board__rows { list-style: none; margin: 0; padding: 0; }
.board__row a { padding: clamp(10px, 1.6vw, 18px) 0; border-bottom: 1px solid #2A2A2A; text-decoration: none; color: var(--crema); transition: background .15s, color .15s; }
.board__row a:hover, .board__row a:focus-visible { background: var(--crema); color: var(--nero); outline: 0; box-shadow: -12px 0 0 var(--crema), 12px 0 0 var(--crema); }
.board__time, .board__code, .board__gate { font-size: clamp(.875rem, 1.2vw, 1.125rem); color: #FFD43B; font-variant-numeric: tabular-nums; }
.board__row a:hover .board__time, .board__row a:hover .board__code, .board__row a:hover .board__gate { color: var(--nero); }
.board__dest { font-size: clamp(1.75rem, 5.4vw, 5rem); font-weight: 700; line-height: 1; letter-spacing: -.02em; overflow: hidden; text-overflow: clip; }
.board__dest .flap span, .fids .flap span { display: inline; }
.board__status { font-size: clamp(.75rem, 1vw, 1rem); letter-spacing: .1em; text-transform: uppercase; }
.board__row.is-check-in-aperto .board__status, .board__row.is-check-in-open .board__status { color: var(--ciano); animation: blink 1s steps(2) infinite; }
.board__row.is-imbarco .board__status, .board__row.is-boarding .board__status { color: #FFD43B; }
.board__row.is-atterrato .board__status, .board__row.is-landed .board__status { color: var(--grigio); }
.board__foot { margin: 28px 0 0; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; color: var(--grigio); }

/* Hero: poster a tutto schermo, collage sotto ---------------------- */

/* Tutto l'hero sta nello schermo: il poster prende lo spazio che resta, il titolo sale sopra la fascia rossa. */
.hero { position: relative; display: flex; flex-direction: column; height: 100svh; min-height: 600px; max-height: 1200px; padding-top: var(--mh); background: var(--crema); border-bottom: var(--line); overflow: hidden; }
.hero__poster {
	position: relative; flex: 1 1 auto; min-height: 220px;
	background: var(--rosso); color: var(--bianco); border-bottom: var(--line);
}
.hero__letters { position: absolute; inset: 0; width: 100%; height: 100%; touch-action: pan-y; }
.hero__fallback { position: absolute; inset: 0; margin: 0; display: grid; place-items: center; font-size: clamp(6rem, 34vw, 40rem); font-weight: 700; line-height: 1; letter-spacing: -.04em; }
.hero.has-canvas .hero__fallback { visibility: hidden; }
.hero__label, .hero__hint { position: absolute; z-index: 1; margin: 0; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; }
.hero__label { top: 16px; left: var(--gut); }
.hero__label--r { left: auto; right: var(--gut); }
.hero__hint { left: 50%; top: 16px; transform: translateX(-50%); }
.hero__sticker { position: absolute; right: var(--gut); bottom: clamp(-64px, -5vw, -40px); z-index: 3; width: clamp(120px, 12vw, 170px); margin: 0; }
.hero__sticker svg { display: block; width: 100%; height: auto; overflow: visible; }
/* Il dondolio è sul gruppo dentro l'SVG, non sul blocco: il browser ridisegna i vettori a ogni passo
   invece di ruotare un'immagine, quindi le scritte restano nitide. */
.hero__sticker-g { transform: rotate(12deg); transform-origin: 100px 100px; animation: sticker-wobble 6s ease-in-out infinite; }
.hero__sticker-disc { fill: var(--ciano); stroke: var(--nero); stroke-width: 3; }
.hero__sticker-ring { fill: none; stroke: var(--nero); stroke-width: 1; stroke-dasharray: 2 4; }
.hero__sticker-arc { fill: var(--nero); font-family: inherit; font-size: 13px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.hero__sticker-year { fill: var(--nero); font-family: inherit; font-size: 46px; font-weight: 700; letter-spacing: -.02em; }
.hero__sticker circle:not([class]) { fill: var(--rosso); }
@keyframes sticker-wobble { 50% { transform: rotate(-6deg); } }

.hero__deck { position: relative; flex: none; padding: 0 var(--gut) clamp(20px, 3vh, 40px); }
.hero__collage {
	position: absolute; inset: 0; display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: 90px; grid-auto-flow: dense;
	pointer-events: none;
}
.tile { grid-column: span var(--w); grid-row: span var(--h); border: 1px solid var(--nero); transition: transform .6s cubic-bezier(.2,.8,.2,1); }
.tile--rosso { background: var(--rosso); }
.tile--ciano { background: var(--ciano); }
.tile--nero { background: var(--nero); }
.tile--crema { background: var(--crema); }
.tile--bianco { background: var(--bianco); }
.tile--dots-rosso { background: radial-gradient(var(--rosso) 28%, transparent 30%) 0 0 / 10px 10px, var(--crema); }
.tile--dots-ciano { background: radial-gradient(var(--nero) 22%, transparent 24%) 0 0 / 9px 9px, var(--ciano); }
.tile--dots-nero { background: radial-gradient(var(--nero) 30%, transparent 32%) 0 0 / 8px 8px, var(--bianco); }
.tile--stripes { background: repeating-linear-gradient(-45deg, var(--nero) 0 6px, var(--crema) 6px 14px); }
.tile--grid { background: linear-gradient(var(--nero) 1px, transparent 1px) 0 0 / 14px 14px, linear-gradient(90deg, var(--nero) 1px, transparent 1px) 0 0 / 14px 14px, var(--ciano); }

.hero__text { position: relative; z-index: 2; margin-top: calc(-1 * clamp(56px, 7.5vw, 120px)); }
.hero__title { margin: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; font-size: clamp(2.25rem, min(5.6vw, 8.5vh), 6rem); line-height: 1; letter-spacing: -.035em; }
.hero__title span { padding: .04em .18em .08em; background: var(--nero); color: var(--crema); }
.hero__title span:nth-child(2) { background: var(--crema); color: var(--nero); border: var(--line); margin-left: clamp(16px, 4vw, 64px); }
.hero__intro { max-width: 46ch; margin: clamp(10px, 1.6vh, 18px) 0 0; padding: 12px 14px; background: var(--bianco); border: var(--line); font-size: clamp(.9375rem, 1.2vw, 1.0625rem); }
.hero__ctas { display: flex; flex-wrap: wrap; gap: 12px; margin: clamp(10px, 1.6vh, 18px) 0 0; }

/* Manifesto --------------------------------------------------------- */

.manifesto__title { max-width: 18ch; font-size: clamp(2rem, 5.4vw, 5.75rem) !important; line-height: 1.08 !important; letter-spacing: -.03em !important; }
.manifesto { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); column-gap: clamp(32px, 5vw, 80px); align-items: end; }
.manifesto > .kicker, .manifesto > .mapact, .manifesto > p:last-child, .manifesto > .is-style-occhiello { grid-column: 1 / -1; }
.manifesto__lead { max-width: 40ch; margin: 28px 0 0; padding-left: 16px; border-left: 6px solid var(--rosso); font-size: clamp(1rem, 1.4vw, 1.25rem); }
.mapact { list-style: none; margin: clamp(40px, 6vw, 80px) calc(-1 * var(--gut)) clamp(32px, 4vw, 56px); padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: var(--line); border-bottom: var(--line); }
.mapact__item { position: relative; padding: clamp(20px, 3vw, 40px) var(--gut); border-right: var(--line); overflow: hidden; transition: background .25s, color .25s; }
.mapact__item:last-child { border-right: 0; }
.mapact__item:hover { background: var(--nero); color: var(--crema); }
.mapact__item:nth-child(1):hover .mapact__letter { color: var(--rosso); }
.mapact__item:nth-child(2):hover .mapact__letter { color: var(--ciano); }
.mapact__item:nth-child(3):hover .mapact__letter { color: var(--crema); }
.mapact__n { font-size: .75rem; letter-spacing: .2em; }
.mapact__letter { display: block; margin: 8px 0 -10px; font-size: clamp(6rem, 14vw, 13rem); font-weight: 700; line-height: .85; letter-spacing: -.06em; transition: color .25s; }
.mapact__word { margin: 16px 0 8px; font-size: clamp(1.25rem, 2.2vw, 2rem); }
.mapact__claim { margin: 0 0 8px; font-weight: 700; }
.mapact__text { margin: 0; font-size: .9375rem; max-width: 36ch; }

/* Partenze: la sezione è il tabellone ------------------------------ */

.partenze { position: relative; background: var(--nero); color: var(--crema); border-bottom: var(--line); padding-bottom: clamp(32px, 5vw, 72px); }
.fids__top { display: flex; justify-content: space-between; gap: 16px; padding: 14px var(--gut); border-bottom: 2px solid #3A3A3A; font-size: .8125rem; letter-spacing: .2em; text-transform: uppercase; color: #FFD43B; }
.fids__top-mid { color: var(--grigio); }
.fids__top time { font-variant-numeric: tabular-nums; }
.partenze__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 40px; padding: clamp(28px, 4vw, 56px) var(--gut) clamp(20px, 3vw, 40px); border-bottom: 2px solid #3A3A3A; }
.partenze__title { margin: 0; color: #FFD43B; font-size: clamp(4rem, 17.5vw, 19rem) !important; line-height: .8 !important; letter-spacing: -.05em !important; }
.partenze__sub { max-width: 30ch; margin: 0; color: var(--crema); font-size: clamp(.9375rem, 1.2vw, 1.0625rem); }
.fids__head, .fids__row a { display: grid; grid-template-columns: 14ch minmax(0, 1fr) 14ch 17ch; gap: 18px; align-items: center; padding: 0 var(--gut); }
.fids__head { padding-block: 10px; text-transform: uppercase; color: var(--grigio); }
/* Corpo piccolo solo sulle etichette: le colonne in ch restano uguali a quelle delle righe. */
.fids__head span { font-size: .6875rem; letter-spacing: .2em; }
.fids__rows { list-style: none; margin: 0; padding: 0; }
.fids__row a { padding-block: clamp(12px, 1.6vw, 20px); border-top: 1px solid #2A2A2A; text-decoration: none; transition: background .15s, color .15s; }
.fids__row a:hover, .fids__row a:focus-visible { background: var(--crema); color: var(--nero); outline: 0; }
.fids__date, .fids__gate { font-size: clamp(.8125rem, 1.1vw, 1rem); color: #FFD43B; font-variant-numeric: tabular-nums; }
.fids__row a:hover .fids__date, .fids__row a:hover .fids__gate { color: var(--nero); }
.fids__name { font-size: clamp(1.375rem, 3.6vw, 3.5rem); font-weight: 700; line-height: 1; letter-spacing: -.02em; overflow: hidden; }
.fids__status { font-size: clamp(.75rem, 1vw, .9375rem); letter-spacing: .1em; text-transform: uppercase; }
.fids__row.is-check-in-aperto .fids__status, .fids__row.is-check-in-open .fids__status { color: var(--ciano); animation: blink 1s steps(2) infinite; }
.fids__row.is-imbarco .fids__status, .fids__row.is-boarding .fids__status { color: #FFD43B; }
.fids__row.is-atterrato .fids__status, .fids__row.is-landed .fids__status { color: var(--grigio); }
.fids__row.is-check-in-aperto a, .fids__row.is-imbarco a, .fids__row.is-check-in-open a, .fids__row.is-boarding a { background: #161616; }
.fids__row.is-check-in-aperto a:hover, .fids__row.is-imbarco a:hover, .fids__row.is-check-in-open a:hover, .fids__row.is-boarding a:hover { background: var(--crema); }

/* Rete -------------------------------------------------------------- */

.rete__head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 36ch); gap: 16px 40px; align-items: end; }
.rete__head .kicker, .rete__head .is-style-occhiello { grid-column: 1 / -1; margin: 0; }
.rete__title { font-size: clamp(2.75rem, 8vw, 8rem) !important; }
.rete__count { color: var(--ciano); }
.rete__sub { margin: 0; }
.rete__map { margin: clamp(28px, 4vw, 48px) calc(-1 * var(--gut)) 0; border-top: 2px solid #3A3A3A; border-bottom: 2px solid #3A3A3A; color: var(--crema); background: linear-gradient(rgba(244,241,234,.12) 1px, transparent 1px) 0 0 / 40px 40px, linear-gradient(90deg, rgba(244,241,234,.12) 1px, transparent 1px) 0 0 / 40px 40px; }
.rete__map svg { display: block; width: 100%; height: auto; max-height: 78vh; }
.rete__route { fill: none; stroke: var(--crema); stroke-opacity: .35; stroke-width: 1.5; stroke-dasharray: 6 8; animation: route-run 1.6s linear infinite; animation-delay: calc(var(--d) * -.23s); transition: stroke .2s, stroke-opacity .2s, stroke-width .2s; }
@keyframes route-run { to { stroke-dashoffset: -28; } }
.rete__route.is-on { stroke: var(--ciano); stroke-opacity: 1; stroke-width: 3; }
.rete__rings circle { fill: none; stroke: var(--crema); stroke-opacity: .16; stroke-dasharray: 2 6; }
.rete__rings text, .rete__compass text { fill: var(--grigio); font: 400 11px var(--wp--preset--font-family--kode, monospace); letter-spacing: .12em; text-transform: uppercase; }
.rete__plane { fill: var(--rosso); stroke: var(--crema); stroke-width: 2; }
.rete__hub rect { fill: var(--rosso); stroke: var(--crema); stroke-width: 2; }
.rete__hub text { fill: var(--bianco); font: 700 26px var(--wp--preset--font-family--kode, monospace); }
.rete__node circle { fill: var(--ciano); stroke: var(--nero); stroke-width: 3; transition: r .2s, fill .2s; }
.rete__node text { fill: var(--crema); font: 400 13px var(--wp--preset--font-family--kode, monospace); letter-spacing: .06em; opacity: .75; transition: opacity .2s; paint-order: stroke; stroke: var(--nero); stroke-width: 4px; }
.rete__node:hover circle, .rete__node:focus circle, .rete__node.is-on circle { r: 14; fill: var(--rosso); }
.rete__node:hover text, .rete__node:focus text, .rete__node.is-on text { opacity: 1; font-weight: 700; }
.rete__num { fill: var(--ciano); }
.rete__name { display: none; }
.rete__node:hover .rete__name, .rete__node:focus .rete__name, .rete__node.is-on .rete__name { display: inline; }
.rete__node:hover, .rete__node:focus, .rete__node.is-on { position: relative; z-index: 2; }
.rete__list { list-style: none; margin: clamp(24px, 3vw, 40px) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.rete__list a { display: inline-flex; gap: 8px; padding: 6px 10px; border: 1px solid #3A3A3A; font-size: .8125rem; text-decoration: none; text-transform: uppercase; letter-spacing: .06em; transition: background .15s, color .15s, border-color .15s; }
.rete__list a span { color: var(--ciano); }
.rete__list a:hover, .rete__list a.is-on { background: var(--ciano); color: var(--nero); border-color: var(--ciano); }
.rete__list a:hover span, .rete__list a.is-on span { color: var(--nero); }
.rete__ctas { display: flex; flex-wrap: wrap; gap: 12px; margin: clamp(28px, 4vw, 44px) 0 0; }

/* Team = carte d'imbarco ------------------------------------------- */

.team__head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 32px; margin-bottom: clamp(28px, 4vw, 48px); }
.team__head .kicker, .team__head .is-style-occhiello { flex-basis: 100%; margin: 0; }
.team__title { font-size: clamp(3rem, 10vw, 10rem) !important; }
.team__sub { margin: 0 0 .6em; }
.passes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 520px), 1fr)); gap: clamp(16px, 2vw, 28px); }
.pass {
	display: grid; grid-template-columns: minmax(0, 1fr) 128px;
	background: var(--bianco); border: var(--line); box-shadow: var(--shadow);
	transform: rotate(calc((var(--i) - 2) * .6deg)); transition: transform .25s, box-shadow .25s;
}
.pass:hover { transform: rotate(0) translate(-3px, -3px); box-shadow: 10px 10px 0 var(--nero); }
.pass__main { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 14px 18px; padding: 16px 18px; }
.pass__brand { grid-column: 1 / -1; display: flex; justify-content: space-between; margin: 0 0 4px; padding-bottom: 8px; border-bottom: 1px dashed var(--nero); font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: var(--rosso); }
.pass__photo { display: grid; place-items: center; aspect-ratio: 3 / 4; border: var(--line); background: radial-gradient(var(--rosso) 30%, transparent 32%) 0 0 / 7px 7px, var(--crema); font-weight: 700; font-size: 1.5rem; }
.pass__photo span { padding: 2px 6px; background: var(--crema); border: var(--line); }
.pass__data { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; margin: 0; align-content: start; }
.pass__data div { min-width: 0; }
.pass__data dt { font-size: .625rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.pass__data dd { margin: 2px 0 0; font-size: .9375rem; text-transform: uppercase; }
.pass__data dd a { color: inherit; text-decoration-thickness: 2px; text-underline-offset: 3px; }
.pass__data dd a:hover { color: var(--rosso); }
.pass__name { grid-column: 1 / -1; }
.pass__name dd { font-size: clamp(1.125rem, 1.8vw, 1.5rem); font-weight: 700; line-height: 1.05; }
.pass__stub { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 16px 14px; background: var(--ciano); border-left: 2px dashed var(--nero); }
.pass__stub::before, .pass__stub::after { content: ""; position: absolute; left: -11px; width: 20px; height: 20px; border-radius: 50%; background: var(--crema); border: var(--line); }
.pass__stub::before { top: -11px; }
.pass__stub::after { bottom: -11px; }
.pass__seat-l { font-size: .625rem; letter-spacing: .16em; text-transform: uppercase; }
.pass__seat { font-size: 2.25rem; font-weight: 700; line-height: 1; color: var(--rosso); }
.pass__code { font-size: .75rem; letter-spacing: .1em; }
.pass__barcode, .ticket__barcode { display: block; margin-top: auto; height: 44px; background: repeating-linear-gradient(90deg, var(--nero) 0 2px, transparent 2px 4px, var(--nero) 4px 7px, transparent 7px 8px, var(--nero) 8px 9px, transparent 9px 12px); }

/* Partner: pagina di passaporto, loghi ufficiali dritti ------------ */

.passport-page {
	background-color: var(--ciano);
	background-image: url("img/guilloche.svg"), radial-gradient(circle at 85% 20%, rgba(255,255,255,.35), transparent 45%);
	background-size: 480px 240px, auto;
}
.passport-page::after {
	content: "MAP"; position: absolute; right: -2vw; top: 50%; transform: translateY(-50%) rotate(-90deg); transform-origin: center;
	font-size: clamp(8rem, 22vw, 22rem); font-weight: 700; letter-spacing: -.05em; color: rgba(255,255,255,.28); pointer-events: none;
}
.passport-page__bar {
	display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px;
	margin: calc(-1 * clamp(56px, 9vw, 140px) + 20px) 0 clamp(40px, 6vw, 88px); padding-bottom: 12px; border-bottom: 1px solid var(--nero);
	font-size: .6875rem; letter-spacing: .2em; text-transform: uppercase;
}
.partner__head { position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 32px; margin-bottom: clamp(28px, 4vw, 48px); }
.partner__title { font-size: clamp(3rem, 10vw, 10rem) !important; }
.partner__sub { max-width: 40ch; margin: 0 0 .6em; }
.visas { position: relative; z-index: 1; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); gap: clamp(12px, 1.6vw, 20px); }
.visa {
	display: flex; flex-direction: column; justify-content: space-between; gap: 10px; min-height: 170px;
	padding: 12px; background: var(--bianco); border: 2px dashed var(--rosso); outline: 2px solid var(--bianco);
	transition: transform .2s, box-shadow .2s;
}
.visa:hover { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--nero); }
.visa--wide { grid-column: span 2; }
.visa__label { font-size: .5625rem; letter-spacing: .2em; text-transform: uppercase; color: var(--rosso); }
.visa__logo { flex: 1; display: grid; place-items: center; padding: 6px 4px; }
.visa__logo img { max-width: 100%; max-height: 84px; width: auto; object-fit: contain; }
.partner__note { position: relative; z-index: 1; margin: clamp(32px, 4vw, 48px) 0 0; font-size: .8125rem; }
.passport-page__mrz {
	position: relative; z-index: 1; margin: clamp(32px, 4vw, 56px) 0 24px; padding-top: 16px; border-top: 1px solid var(--nero);
	font-size: clamp(.75rem, 1.55vw, 1.375rem); letter-spacing: .12em; line-height: 1.5; white-space: nowrap; overflow: hidden;
}
.partner__more { position: relative; z-index: 1; }

/* Check-in ---------------------------------------------------------- */

.checkin { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.checkin__title { font-size: clamp(3.25rem, 10vw, 10rem) !important; }
.checkin__lead { max-width: 44ch; margin: 24px 0; font-size: clamp(1rem, 1.4vw, 1.25rem); }
.checkin__offer { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 28px; padding: 0; }
.checkin__offer li { padding: 6px 10px; border: 2px solid var(--bianco); font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; }
.ticket { position: relative; display: flex; flex-direction: column; gap: 16px; padding: 22px; background: var(--crema); color: var(--nero); border: var(--line); box-shadow: 12px 12px 0 var(--nero); transform: rotate(3deg); transition: transform .3s; }
.ticket:hover { transform: rotate(0); }
.ticket__top { display: flex; justify-content: space-between; margin: 0; padding-bottom: 10px; border-bottom: 1px dashed var(--nero); font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; }
.ticket__top span:first-child { padding: 2px 6px; background: var(--rosso); color: var(--bianco); font-weight: 700; }
.ticket__route { display: flex; align-items: center; justify-content: space-between; margin: 0; font-size: clamp(2rem, 4vw, 3.5rem); font-weight: 700; }
.ticket__plane { color: var(--rosso); animation: fly 2.4s ease-in-out infinite; }
@keyframes fly { 50% { transform: translateX(12px) rotate(-8deg); } }
.ticket__data { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; margin: 0; }
.ticket__data dt { font-size: .625rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.ticket__data dd { margin: 2px 0 0; text-transform: uppercase; }

/* Footer ------------------------------------------------------------ */

.mf { background: var(--nero); color: var(--crema); overflow: hidden; }
.mf__big { margin: 0; padding: clamp(40px, 6vw, 80px) var(--gut) clamp(16px, 2vw, 24px); font-size: clamp(6rem, 30vw, 28rem); font-weight: 700; line-height: .8; letter-spacing: -.06em; color: transparent; -webkit-text-stroke: 2px var(--crema); }
.mf__l { position: relative; z-index: 1; display: inline-block; cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; transition: color .2s, -webkit-text-stroke-color .2s; }
.mf__l:hover { -webkit-text-stroke-color: var(--ciano); }
.mf__l.is-drag { cursor: grabbing; color: var(--rosso); -webkit-text-stroke-color: var(--rosso); }
.mf__big.is-reset .mf__l { transition: transform .7s cubic-bezier(.2, .9, .2, 1.2), color .2s; }
.mf__list { margin: 0; padding: 0; list-style: none; font-size: .9375rem; line-height: 1.35; }
.mf__list li { border-bottom: 1px solid #2E2E2E; }
.mf__list a { display: flex; gap: 10px; align-items: baseline; min-height: 40px; padding: 9px 0; text-decoration: none; }
.mf__list a:hover, .mf__list a:focus-visible, .mf__more:hover { color: var(--ciano); }
.mf__list a[aria-current="page"] { color: var(--ciano); }
.mf__list--rete { columns: 2; column-gap: 24px; }
.mf__list--rete li { break-inside: avoid; }
.mf__list--ext a span[aria-hidden] { margin-left: 4px; }
/* Caselle come l'header: bordi neri, fondi pieni, poche voci. */
.mf__grid, .mf__strip { position: relative; z-index: 2; background: var(--crema); color: var(--nero); }
.mf__grid { display: grid; grid-template-columns: 1.1fr 1fr 1fr 1fr; border-top: var(--line); }
.mf__box { padding: clamp(20px, 2.4vw, 32px); border-right: var(--line); }
.mf__box:last-child { border-right: 0; }
.mf__box--id { background: var(--rosso); color: var(--bianco); }
.mf__box--check { background: var(--ciano); }
.mf__logo { display: inline-block; margin-bottom: 18px; font-size: clamp(2.5rem, 5vw, 4rem); font-weight: 700; line-height: .9; letter-spacing: -.02em; text-decoration: none; }
.mf__logo:hover { color: var(--nero); }
.mf__k { margin: 0 0 14px; font-size: .75rem; font-weight: 400; letter-spacing: .2em; text-transform: uppercase; }
.mf__box--id .mf__k { margin: 0; }
.mf__v { margin: 2px 0 18px; font-size: .9375rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.mf__text { max-width: 32ch; margin: 0 0 20px; font-size: .875rem; line-height: 1.5; }
.mf__list { margin: 0; padding: 0; list-style: none; border-top: var(--line); }
.mf__list li { border-bottom: 1px solid var(--nero); }
.mf__list a { display: flex; align-items: baseline; gap: 10px; min-height: 40px; padding: 10px 6px; font-size: .875rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; text-decoration: none; transition: background .15s, color .15s; }
.mf__list a:hover, .mf__list a:focus-visible { background: var(--nero); color: var(--crema); }
.mf__list a[aria-current="page"] { background: var(--ciano); }
.mf__gate { flex: none; width: 2.6em; color: var(--rosso-t); }
.mf__list a:hover .mf__gate { color: var(--ciano); }
.mf__note { margin-left: auto; padding-left: 8px; font-size: .6875rem; font-weight: 400; letter-spacing: .1em; white-space: nowrap; }
.mf__sub a { padding-left: 2.2em; font-weight: 400; }
.mf__strip { display: flex; flex-wrap: wrap; align-items: stretch; min-height: var(--mh); border-top: var(--line); font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }
.mf__cell { display: flex; align-items: center; gap: 6px; margin: 0; padding: 10px clamp(12px, 1.4vw, 18px); border-right: var(--line); text-decoration: none; white-space: nowrap; }
.mf__cell--wide { white-space: normal; }
.mf__fill { flex: 1; min-width: 24px; border-right: var(--line); background: repeating-linear-gradient(-45deg, var(--nero) 0 2px, transparent 2px 9px); opacity: .9; }
a.mf__cell:hover, .mf__reset:hover { background: var(--bianco); }
.mf__cell--lang { justify-content: center; min-width: 48px; font-weight: 700; }
.mf__cell--lang[aria-current] { background: var(--nero); color: var(--crema); }
.mf__reset { background: none; border-top: 0; border-bottom: 0; border-left: 0; color: inherit; font: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; }
.mf__reset[hidden] { display: none; }
.mf__top { background: var(--nero); color: var(--crema); border-right: 0; font-weight: 700; }
a.mf__top:hover { background: var(--rosso); color: var(--bianco); }
@media (max-width: 1100px) { .mf__grid { grid-template-columns: 1fr 1fr; } .mf__box:nth-child(2) { border-right: 0; } .mf__box:nth-child(-n+2) { border-bottom: var(--line); } }
@media (max-width: 600px) { .mf__grid { grid-template-columns: 1fr; } .mf__box { border-right: 0; border-bottom: var(--line); } .mf__box:last-child { border-bottom: 0; } .mf__fill { display: none; } .mf__cell { flex: 1 1 auto; border-bottom: var(--line); } }

/* Pagine interne (provvisorio) -------------------------------------- */

.map-page { padding-top: calc(var(--mh) + 48px); padding-bottom: 80px; }
.map-page__title { font-size: var(--wp--preset--font-size--xl); }

/* Responsive -------------------------------------------------------- */

@media (max-width: 900px) {
	.mh__info--gate { display: none; }
	.manifesto { grid-template-columns: 1fr; }
	.mapact { grid-template-columns: 1fr; }
	.mapact__item { border-right: 0; border-bottom: var(--line); }
	.mapact__item:last-child { border-bottom: 0; }
	.checkin { grid-template-columns: 1fr; }
	.rete__head { grid-template-columns: 1fr; }
	.fids__head { display: none; }
	.fids__top-mid { display: none; }
	.fids__row a { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; }
	.fids__name { grid-column: 1 / -1; order: -1; }
	.fids__gate { text-align: right; }
	.fids__status { grid-column: 1 / -1; }
}

@media (max-width: 700px) {
	.visa--wide { grid-column: auto; }
	:root { --mh: 52px; }
	.mh__name, .mh__info--gate { display: none; }
	.mh__lang .mh__cell { min-width: 40px; padding: 0 8px; }
	.hero__poster { min-height: 180px; }
	.hero__text { margin-top: -40px; }
	.hero__label--r, .hero__hint { display: none; }
	.hero__collage { grid-template-columns: repeat(6, 1fr); grid-auto-rows: 64px; }
	.hero__label--r { display: none; }
	.board__head { display: none; }
	/* Tabellone su mobile: in alto la stessa striscia a caselle dell'header. */
	.board { padding: 0 0 24px; }
	.board__top { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: stretch; gap: 0; padding: 0; min-height: var(--mh); border-bottom: 2px solid var(--crema); flex-wrap: nowrap; }
	.board__logo { display: flex; align-items: center; padding: 0 16px; background: var(--rosso); color: var(--bianco); font-size: 1.375rem; font-weight: 700; text-decoration: none; border-right: 2px solid var(--crema); }
	.board__title { display: flex; align-items: center; padding: 0 14px; font-size: .8125rem; border-right: 2px solid var(--crema); }
	.board__title-en, .board__clock { display: none; }
	.board__close { height: 100%; padding: 0 18px; }
	.board__rows, .board__foot { padding: 0 16px; }
	.board__row a { grid-template-columns: 6ch 4ch minmax(0, 1fr); gap: 4px 12px; padding: 14px 0; }
	.board__dest { font-size: clamp(1.75rem, 9vw, 2.5rem); }
	.board__code { display: none; }
	.board__dest { grid-column: 1 / -1; order: -1; }
	.board__time { order: 1; }
	.board__gate { order: 2; }
	.board__status { order: 3; text-align: right; }
	.pass { grid-template-columns: minmax(0, 1fr) 76px; transform: none; }
	.pass__main { grid-template-columns: 1fr; padding: 14px; }
	.pass__photo { display: none; }
	.pass__brand span:last-child { display: none; }
	.pass__stub { padding: 14px 10px; }
	.pass__seat { font-size: 1.5rem; }
	.rete__node circle { r: 14; }
	.rete__map svg { max-height: none; }
	.ticket { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
	.rete__planes { display: none; }
}

/* Pagina Partner: passaporto da sfogliare -------------------------- */

.passport { padding: calc(var(--mh) + clamp(32px, 5vw, 72px)) var(--gut) clamp(56px, 8vw, 120px); background: var(--nero); color: var(--crema); border-bottom: var(--line); overflow: hidden; }
.passport__head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 36ch); gap: 12px 40px; align-items: end; margin-bottom: clamp(32px, 5vw, 64px); }
.passport__head .kicker, .passport__head .is-style-occhiello { grid-column: 1 / -1; margin: 0; }
.passport__title { margin: 0; font-size: clamp(2.5rem, 8vw, 8rem); line-height: .9; letter-spacing: -.04em; text-transform: uppercase; }
.passport__sub { margin: 0; }

.book {
	--pw: min(40vw, 440px); --ph: calc(var(--pw) * 1.42);
	position: relative; width: calc(var(--pw) * 2); height: var(--ph); margin: 0 auto;
	perspective: 2400px; transition: transform .9s cubic-bezier(.3,.7,.2,1);
	transform: translateX(calc(var(--pw) * -.5));
}
.book.is-open { transform: none; }
.book.is-end { transform: translateX(calc(var(--pw) * .5)); }
.leaf {
	position: absolute; top: 0; left: 50%; width: 50%; height: 100%;
	transform-origin: left center; transform-style: preserve-3d; cursor: pointer;
	transition: transform .9s cubic-bezier(.3,.7,.2,1);
	z-index: calc(var(--n) * 2 - var(--i));
}
.leaf.is-flipped { transform: rotateY(-180deg); }
.leaf__face { position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.leaf__back { transform: rotateY(180deg); }
.leaf__front .ppage { border-radius: 0 10px 10px 0; box-shadow: inset 18px 0 24px -18px rgba(0,0,0,.35); }
.leaf__back .ppage { border-radius: 10px 0 0 10px; box-shadow: inset -18px 0 24px -18px rgba(0,0,0,.35); }

.ppage {
	position: relative; display: flex; flex-direction: column; gap: 14px; height: 100%; padding: clamp(16px, 2vw, 26px);
	background: url("img/guilloche-ciano.svg") center / 360px 180px, var(--crema); color: var(--nero);
	border: 1px solid #cfc9bb; overflow: hidden;
}
.ppage__head { display: flex; justify-content: space-between; margin: 0; padding-bottom: 8px; border-bottom: 1px solid var(--nero); font-size: .625rem; letter-spacing: .2em; text-transform: uppercase; }
.ppage__stamps { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: clamp(14px, 2vw, 24px); }
.ppage__text { margin: 0; font-size: .875rem; }
.ppage__mrz { margin: auto 0 0; padding-top: 10px; border-top: 1px solid var(--nero); font-size: clamp(.5rem, .9vw, .75rem); letter-spacing: .1em; line-height: 1.5; white-space: nowrap; overflow: hidden; }

.ppage--cover {
	justify-content: space-between; align-items: center; text-align: center;
	background: radial-gradient(circle at 50% 42%, #e0372a, var(--rosso) 60%, #a81f15); color: #F5D88A; border-color: #8f1a12;
}
.pcover__country { margin: 0; font-size: .6875rem; letter-spacing: .24em; text-transform: uppercase; }
.pcover__emblem { display: grid; place-items: center; width: 52%; aspect-ratio: 1; border: 3px double #F5D88A; border-radius: 50%; font-size: clamp(2rem, 4.4vw, 4rem); font-weight: 700; letter-spacing: -.04em; }
.pcover__title { margin: 0; font-size: clamp(1.25rem, 2.4vw, 2rem); font-weight: 700; letter-spacing: .2em; text-transform: uppercase; line-height: 1.2; }
.pcover__title span { font-size: .45em; letter-spacing: .3em; font-weight: 400; }
.pcover__chip { width: 34px; height: 22px; border: 2px solid #F5D88A; border-radius: 4px; }
.ppage--back { justify-content: center; gap: 24px; }

.pid { display: grid; grid-template-columns: 34% minmax(0, 1fr); gap: 14px; }
.pid__photo { display: grid; place-items: center; aspect-ratio: 3 / 4; background: var(--rosso); color: var(--bianco); border: var(--line); font-weight: 700; font-size: clamp(1rem, 2vw, 1.75rem); }
.pid__data { display: grid; gap: 8px; margin: 0; }
.pid__data dt { font-size: .5rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.pid__data dd { margin: 1px 0 0; font-size: clamp(.6875rem, 1vw, .875rem); font-weight: 700; text-transform: uppercase; }

.pstamp { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 10px; background: var(--bianco); border: 3px double currentColor; text-decoration: none; }
.pstamp--rosso { color: var(--rosso); }
.pstamp--nero { color: var(--nero); }
.pstamp__top, .pstamp__bottom { display: flex; justify-content: space-between; gap: 8px; font-size: .5625rem; letter-spacing: .18em; text-transform: uppercase; }
.pstamp__logo { display: grid; place-items: center; min-height: clamp(70px, 9vw, 120px); padding: 6px; }
.pstamp__logo img { max-width: 100%; max-height: clamp(60px, 8vw, 110px); width: auto; object-fit: contain; }
.pstamp--empty { flex: 1; color: var(--grigio); border-style: dashed; border-width: 2px; background: transparent; }
.pstamp--empty .pstamp__logo { flex: 1; font-size: clamp(1rem, 1.6vw, 1.375rem); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--nero); }
.pstamp--empty:hover { color: var(--rosso); border-color: var(--rosso); background: var(--bianco); }

.passport__nav { display: flex; align-items: center; justify-content: center; gap: 20px; margin-top: clamp(28px, 4vw, 48px); }
.passport__nav .btn:disabled, .passport__nav .wp-block-button__link:disabled { opacity: .35; pointer-events: none; }
.passport__count { min-width: 14ch; margin: 0; text-align: center; font-size: .8125rem; letter-spacing: .16em; text-transform: uppercase; color: #FFD43B; }
.passport__pages { display: none; }

@media (max-width: 760px) {
	.passport__head { grid-template-columns: 1fr; }
	.book, .passport__nav { display: none; }
	.passport__pages {
		display: flex; gap: 14px; list-style: none; margin: 0 calc(-1 * var(--gut)); padding: 0 var(--gut) 12px;
		overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
	}
	.passport__pages li { flex: 0 0 82%; aspect-ratio: 1 / 1.42; scroll-snap-align: center; }
	.passport__pages .ppage { border-radius: 10px; }
}

/* Pagine interne: testata "gate" ---------------------------------- */

.gate { position: relative; padding: calc(var(--mh) + 0px) 0 0; border-bottom: var(--line); }
.gate--crema { background: var(--crema); color: var(--nero); }
.gate--nero { background: var(--nero); color: var(--crema); }
.gate--rosso { background: var(--rosso); color: var(--bianco); }
.gate--ciano { background: var(--ciano); color: var(--nero); }
.gate__strip { display: flex; justify-content: space-between; gap: 16px; padding: 12px var(--gut); border-bottom: 2px solid currentColor; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; }
.gate__strip time { font-variant-numeric: tabular-nums; }
.gate__title { margin: 0; padding: clamp(24px, 4vw, 56px) var(--gut) 0; font-size: clamp(3.5rem, 15vw, 16rem); line-height: .82; letter-spacing: -.05em; text-transform: uppercase; overflow-wrap: anywhere; }
.gate--nero .gate__title { color: #FFD43B; }
.gate__sub { max-width: 60ch; margin: 0; padding: clamp(16px, 2vw, 28px) var(--gut) clamp(28px, 4vw, 56px); font-size: clamp(1rem, 1.4vw, 1.25rem); }

/* Rete: mappa reale ---------------------------------------------- */

.retemap { position: relative; background: var(--nero); color: var(--crema); border-bottom: var(--line); }
.retemap__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 12px var(--gut); border-bottom: 2px solid #3A3A3A; }
.retemap__label { font-size: .6875rem; letter-spacing: .2em; text-transform: uppercase; color: var(--grigio); margin-right: 4px; }
.retemap__btn { padding: 8px 12px; background: transparent; color: var(--crema); border: 1px solid #3A3A3A; cursor: pointer; font-family: inherit; font-size: .8125rem; letter-spacing: .08em; text-transform: uppercase; }
.retemap__btn:hover { border-color: var(--crema); }
.retemap__btn.is-on { background: var(--ciano); color: var(--nero); border-color: var(--ciano); }
.retemap__hint { margin-left: auto; font-size: .75rem; color: var(--grigio); letter-spacing: .06em; }
.retemap__map { height: min(78vh, 820px); min-height: 420px; background: #111; }
.retemap--full { padding-top: var(--mh); }
.retemap--full .retemap__map { height: calc(100svh - var(--mh) - 58px); min-height: 460px; max-height: none; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.retemap__noscript { padding: 24px var(--gut); }
.maplibregl-map { font-family: inherit; background: #0E0E0E; }
.rm-hub { display: grid; place-items: center; width: 64px; height: 30px; background: var(--rosso); color: var(--bianco); border: 2px solid var(--crema); font-weight: 700; font-size: 16px; }
.rm-pin { display: grid; place-items: center; width: 30px; height: 30px; background: var(--ciano); color: var(--nero); border: 3px solid var(--nero); border-radius: 50%; font-weight: 700; font-size: 11px; box-shadow: 0 0 0 2px var(--ciano); cursor: pointer; transition: background .15s, box-shadow .15s; }
.rm-pin:hover, .rm-pin.is-active { background: var(--rosso); color: var(--bianco); box-shadow: 0 0 0 2px var(--rosso); }
.rm-pin.is-active { z-index: 2; }
.rm-pop .maplibregl-popup-content { padding: 14px 16px; border-radius: 0; background: var(--crema); color: var(--nero); border: var(--line); box-shadow: 6px 6px 0 var(--nero); font-family: 'Kode Mono', monospace; }
.rm-pop .maplibregl-popup-tip { border-top-color: var(--nero) !important; border-bottom-color: var(--nero) !important; }
.rm-pop .maplibregl-popup-close-button { font-size: 18px; padding: 0 6px; }
.rm-pop__n { margin: 0 0 4px; font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--rosso); }
.rm-pop__t { margin: 0 0 4px; font-size: 18px; font-weight: 700; text-transform: uppercase; line-height: 1.05; }
.rm-pop__a { margin: 0 0 10px; font-size: 12px; }
.rm-pop__l { font-weight: 700; color: var(--nero); }
.maplibregl-ctrl-group { border-radius: 0 !important; background: var(--crema) !important; }
.maplibregl-ctrl-attrib { background: rgba(14,14,14,.85) !important; color: var(--grigio); font-size: 11px; }
.maplibregl-ctrl-attrib a { color: var(--crema) !important; }
.maplibregl-cooperative-gesture-screen { font-family: inherit; background: rgba(14,14,14,.7); }

.retelist__title { font-size: clamp(2.5rem, 7vw, 6rem) !important; margin-bottom: clamp(24px, 3vw, 40px) !important; }
.tags { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 14px; }
.tag { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 18px 18px 16px 52px; background: var(--bianco); border: var(--line); transition: transform .15s, box-shadow .15s; }
.tag:hover, .tag:focus-within { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--nero); background: var(--ciano); }
.tag__link::after { content: ""; position: absolute; inset: 0; }
.tag__link:focus-visible { outline: 0; }
.tag__hole { position: absolute; left: 16px; top: 20px; width: 16px; height: 16px; border-radius: 50%; border: var(--line); background: var(--crema); }
.tag__hole::after { content: ""; position: absolute; left: 6px; top: -22px; width: 2px; height: 22px; background: var(--nero); }
.tag__n { font-size: .75rem; letter-spacing: .16em; color: var(--rosso); }
.tag__name { margin: 0; font-size: 1.25rem; line-height: 1.05; text-transform: uppercase; letter-spacing: -.01em; }
.tag__name a { text-decoration: none; }
.tag__addr { margin: 0; font-size: .8125rem; }
.tag__fly { align-self: flex-start; margin-top: 6px; padding: 0; background: none; border: 0; cursor: pointer; font-family: inherit; font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; text-decoration: underline; }
.retelist__cta { margin: clamp(32px, 4vw, 56px) 0 0; }

/* Foto a retino / duotone (a colori al passaggio) ----------------- */

.duo { position: relative; margin: 0; overflow: hidden; background: var(--ciano); border: var(--line); }
.duo img { display: block; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2); mix-blend-mode: multiply; transition: filter .3s; }
.duo::after { content: ""; position: absolute; inset: 0; background: radial-gradient(rgba(14,14,14,.4) 28%, transparent 31%) 0 0 / 4px 4px; pointer-events: none; transition: opacity .3s; }
.duo:nth-of-type(even), li:nth-child(even) > .duo { background: var(--rosso); }
.duo:hover img { filter: none; mix-blend-mode: normal; }
.duo:hover::after { opacity: 0; }
.duo--full img { height: auto; object-fit: contain; }

/* Progetti --------------------------------------------------------- */

.voli__title, .tratte__title, .protagonisti__title, .sgab__title { font-size: clamp(2.75rem, 8vw, 8rem) !important; margin-bottom: clamp(24px, 3vw, 44px) !important; }
.voli__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 16px; }
.volo a { position: relative; display: flex; flex-direction: column; gap: 6px; min-height: 220px; padding: 18px; background: var(--bianco); border: var(--line); text-decoration: none; overflow: hidden; transition: transform .15s, box-shadow .15s; }
.volo a:hover { transform: translate(-3px, -3px); box-shadow: 6px 6px 0 var(--nero); }
.volo--main a { background: var(--rosso); color: var(--bianco); }
.volo__code { font-size: .75rem; letter-spacing: .16em; }
.volo__type { font-size: .6875rem; letter-spacing: .2em; text-transform: uppercase; }
.volo__name { margin-top: auto; font-size: clamp(1.5rem, 2.6vw, 2.25rem); font-weight: 700; line-height: 1; text-transform: uppercase; }
.volo__meta { font-size: .8125rem; }
.volo__stamp { position: absolute; right: 14px; top: 14px; padding: 4px 8px; border: 2px solid currentColor; font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; transform: rotate(-8deg); }

/* MAP Firenze 2025 ------------------------------------------------- */

.evento { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.evento__pass { display: flex; flex-direction: column; gap: 16px; padding: 22px; background: var(--bianco); border: var(--line); box-shadow: 12px 12px 0 var(--nero); transform: rotate(-2deg); }
.evento__brand { display: flex; justify-content: space-between; margin: 0; padding-bottom: 10px; border-bottom: 1px dashed var(--nero); font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; }
.evento__brand span:first-child { padding: 2px 6px; background: var(--rosso); color: var(--bianco); font-weight: 700; }
.evento__route { display: flex; justify-content: space-between; align-items: center; margin: 0; font-size: clamp(2.5rem, 5vw, 4.5rem); font-weight: 700; }
.evento__data { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0; }
.evento__data dt { font-size: .625rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.evento__data dd { margin: 2px 0 0; font-weight: 700; text-transform: uppercase; }
.evento__lead { margin: 0 0 16px; font-size: clamp(1.5rem, 3vw, 2.75rem); font-weight: 700; line-height: 1.05; text-transform: uppercase; letter-spacing: -.02em; }
.evento__text p { max-width: 56ch; }

.pboard--page { padding-top: var(--mh); }
.pboard { background: var(--nero); color: var(--crema); border-bottom: var(--line); padding-bottom: clamp(24px, 4vw, 56px); }
.pboard__head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 40px; padding: clamp(28px, 4vw, 56px) var(--gut) clamp(20px, 3vw, 32px); border-bottom: 2px solid #3A3A3A; }
.pboard__title { margin: 0; color: #FFD43B; font-size: clamp(3.5rem, 13vw, 14rem); line-height: .8; letter-spacing: -.05em; text-transform: uppercase; }
.pboard__days { display: flex; gap: 8px; }
.pboard__day { display: flex; flex-direction: column; gap: 4px; padding: 10px 14px; background: transparent; color: var(--crema); border: 2px solid #3A3A3A; cursor: pointer; font-family: inherit; text-align: left; }
.pboard__day span { font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.pboard__day strong { font-size: clamp(1.25rem, 2.4vw, 2rem); }
.pboard__day[aria-selected="true"] { background: var(--crema); color: var(--nero); border-color: var(--crema); }
.pboard__day[aria-selected="true"] span { color: var(--nero); }
.pboard__cols, .pboard__link { grid-template-columns: 14ch minmax(0, 1fr) 22ch 10ch !important; }
.pboard__link { display: grid; gap: 18px; align-items: center; padding: clamp(12px, 1.6vw, 20px) var(--gut); border-top: 1px solid #2A2A2A; color: inherit; text-decoration: none; }
a.pboard__link:hover { background: var(--crema); color: var(--nero); }
.pboard__ev { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pboard__type { font-size: .6875rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ciano); }
a.pboard__link:hover .pboard__type { color: var(--rosso); }
.pboard__ev .fids__name { font-size: clamp(1.125rem, 2.4vw, 2.25rem); }
.pboard__sala { font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase; }

.tratte__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); border: var(--line); }
.tratta a { display: flex; flex-direction: column; gap: 10px; height: 100%; min-height: 300px; padding: clamp(20px, 2.4vw, 32px); border-right: var(--line); text-decoration: none; transition: background .2s, color .2s; }
.tratta:last-child a { border-right: 0; }
.tratta--0 a:hover { background: var(--nero); color: var(--crema); }
.tratta--1 a:hover { background: var(--rosso); color: var(--bianco); }
.tratta--2 a:hover { background: var(--ciano); }
.tratta__type { font-size: .6875rem; letter-spacing: .2em; text-transform: uppercase; }
.tratta__name { font-size: clamp(2rem, 4vw, 3.5rem); font-weight: 700; line-height: .95; text-transform: uppercase; letter-spacing: -.03em; }
.tratta__text { max-width: 34ch; }
.tratta__place { margin-top: auto; font-size: .8125rem; letter-spacing: .1em; text-transform: uppercase; }
.tratte__more { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }
.protagonisti__sub { margin: -16px 0 clamp(24px, 3vw, 40px); }
.protagonisti .pass { color: var(--nero); }
.pass__photo--img { padding: 0; overflow: hidden; background: var(--crema); }
.pass__photo--img img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.1); }
.pass:hover .pass__photo--img img { filter: none; }

/* Post Global Village: un progetto alla volta, immagine intera ------ */

.pgv { padding: clamp(48px, 7vw, 112px) var(--gut); background: var(--crema); border-bottom: var(--line); }
.pgv__head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 46ch); gap: 16px 40px; align-items: end; padding-bottom: clamp(24px, 3vw, 40px); border-bottom: var(--line); }
.pgv__title { margin: 0; font-size: clamp(2.5rem, 7vw, 7rem); line-height: .9; letter-spacing: -.04em; text-transform: uppercase; }
.pgv__intro { margin: 0; }
.pgv-item { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: center; padding: clamp(40px, 6vw, 96px) 0; border-bottom: 1px solid var(--nero); }
.pgv-item:nth-child(odd of .pgv-item) .pgv-item__img { order: 2; }
.pgv-item__text { max-width: 52ch; }
.pgv-item__n { margin: 0 0 8px; font-size: .75rem; letter-spacing: .2em; color: var(--grigio); }
.pgv-item__key { margin: 0 0 10px; font-size: clamp(2rem, 4.4vw, 4.25rem); line-height: .95; letter-spacing: -.03em; text-transform: uppercase; overflow-wrap: anywhere; }
.pgv-item__authors { margin: 0 0 18px; font-size: .875rem; letter-spacing: .1em; text-transform: uppercase; color: var(--rosso-t); }
.pgv-item__body { margin: 0; }

/* Crepe ------------------------------------------------------------ */

.crepe { position: relative; padding: var(--mh) 0 clamp(40px, 6vw, 80px); background: var(--bianco); border-bottom: var(--line); overflow: hidden; cursor: crosshair; }
.crepe__cracks { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.crepe__cracks path { fill: none; stroke: var(--nero); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 600; stroke-dashoffset: 600; animation: crack .5s ease-out forwards; }
@keyframes crack { to { stroke-dashoffset: 0; } }
.crepe__strip { position: relative; }
.crepe__title { position: relative; margin: 0; padding: clamp(16px, 3vw, 40px) var(--gut) 0; font-size: clamp(6rem, 26vw, 28rem); line-height: .78; letter-spacing: -.07em; color: var(--rosso); pointer-events: none; }
.crepe__sub { position: relative; margin: 8px var(--gut) clamp(28px, 4vw, 56px); font-size: clamp(1.25rem, 2.6vw, 2.5rem); font-weight: 700; text-transform: uppercase; pointer-events: none; }
.crepe__cards { position: relative; display: grid; grid-template-columns: 1.2fr 1fr; gap: clamp(16px, 2vw, 28px); padding: 0 var(--gut); align-items: start; }
.crepe__card { padding: 20px; background: var(--crema); border: var(--line); box-shadow: var(--shadow); cursor: auto; }
.crepe__card--ciano { background: var(--ciano); }
.crepe__k { margin: 0 0 8px; font-size: .6875rem; letter-spacing: .2em; text-transform: uppercase; color: var(--rosso-t); }
.crepe__card--ciano .crepe__k { color: var(--nero); }
.crepe__h { margin: 0 0 10px; font-size: clamp(1.25rem, 2vw, 1.75rem); line-height: 1.05; text-transform: uppercase; }
.crepe__big { margin: 0; font-size: clamp(3rem, 7vw, 6rem); font-weight: 700; line-height: .9; color: var(--rosso); }
.crepe__when { margin: 12px 0; padding-left: 18px; font-size: .875rem; }
.crepe__img { grid-column: 1 / -1; cursor: auto; }
.crepe__hint { position: relative; margin: clamp(24px, 3vw, 40px) var(--gut) 0; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; }

/* Manifesto -------------------------------------------------------- */

.manif__title { max-width: 20ch; margin: 0; font-size: clamp(2rem, 5.6vw, 6rem); font-weight: 700; line-height: 1.06; letter-spacing: -.03em; text-transform: uppercase; }
.manif__cols { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(20px, 4vw, 64px); margin-top: clamp(28px, 4vw, 56px); font-size: clamp(1rem, 1.4vw, 1.25rem); }
.manif__cols p { margin: 0; }
.manif__close { max-width: 34ch; margin: 0 0 28px; font-size: clamp(1.5rem, 3vw, 2.75rem); font-weight: 700; line-height: 1.1; text-transform: uppercase; letter-spacing: -.02em; }
.act { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(20px, 4vw, 64px); align-items: center; min-height: 80vh; }
.act__letter { font-size: clamp(14rem, 42vw, 46rem); font-weight: 700; line-height: .75; letter-spacing: -.08em; }
.act__n { margin: 0 0 8px; font-size: .75rem; letter-spacing: .2em; }
.act__word { font-size: clamp(2.5rem, 6vw, 6rem) !important; }
.act__claim { margin: 16px 0; font-size: clamp(1.25rem, 2.2vw, 2rem); font-weight: 700; }
.act__body { margin: 0; max-width: 48ch; font-size: clamp(1rem, 1.3vw, 1.1875rem); }

/* Team ------------------------------------------------------------- */

.passes--big { grid-template-columns: repeat(auto-fill, minmax(min(100%, 600px), 1fr)); }
.passes--big .pass__main { grid-template-columns: 140px minmax(0, 1fr); padding: 22px 24px; }
.passes--big .pass__name dd { font-size: clamp(1.5rem, 2.6vw, 2.25rem); }
.passes--big .pass__photo { font-size: 2.25rem; }
.pass__bio { font-size: .875rem !important; text-transform: none !important; font-weight: 400 !important; }

/* Partecipa / modulo ---------------------------------------------- */

.checkpage { overflow: visible; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.checkpage__side { position: sticky; top: calc(var(--mh) + 24px); }
.steps { list-style: none; margin: 0 0 24px; padding: 0; border-top: var(--line); }
.step { display: grid; grid-template-columns: 3.5ch 1fr; gap: 2px 14px; padding: 14px 0; border-bottom: var(--line); }
.step__n { grid-row: span 2; font-size: 1.5rem; font-weight: 700; color: var(--rosso); }
.step__t { font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.step__d { font-size: .875rem; }
.checkpage__note { font-size: .875rem; }
.checkpage__form { background: var(--bianco); border: var(--line); box-shadow: 12px 12px 0 var(--nero); }
.checkpage__formhead { display: flex; justify-content: space-between; margin: 0; padding: 12px 20px; background: var(--nero); color: var(--crema); font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; }
.ci { padding: clamp(16px, 2.4vw, 32px); }
.ci-form { display: flex; flex-direction: column; gap: 20px; }
.ci-sec { margin: 0; padding: 0 0 18px; border: 0; border-bottom: 1px dashed var(--nero); display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; }
.ci-sec legend { grid-column: 1 / -1; margin-bottom: 12px; padding: 4px 8px; background: var(--rosso); color: var(--bianco); font-size: .75rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.ci-sec > label { display: flex; flex-direction: column; gap: 6px; font-size: .6875rem; letter-spacing: .14em; text-transform: uppercase; color: var(--grigio); }
.ci-sec > label:has(textarea) { grid-column: 1 / -1; }
.ci-sec > .wpcf7-form-control-wrap, .ci-sec > p { grid-column: 1 / -1; margin: 0; }
.ci input[type="text"], .ci input[type="email"], .ci input[type="tel"], .ci textarea {
	width: 100%; padding: 12px; background: var(--crema); color: var(--nero); border: var(--line); border-radius: 0;
	font-family: inherit; font-size: 1rem; text-transform: none; letter-spacing: 0;
}
.ci input:focus, .ci textarea:focus { outline: 3px solid var(--ciano); outline-offset: 0; background: var(--bianco); }
.ci .wpcf7-list-item { display: inline-block; margin: 0 8px 8px 0; }
.ci .wpcf7-list-item label { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border: var(--line); cursor: pointer; font-size: .8125rem; text-transform: uppercase; letter-spacing: .06em; transition: background .15s; }
.ci .wpcf7-list-item input { accent-color: var(--rosso); }
.ci .wpcf7-list-item label:has(input:checked) { background: var(--nero); color: var(--crema); }
.ci-end { display: flex; flex-direction: column; gap: 18px; font-size: .875rem; }
.ci input[type="submit"] { align-self: flex-start; padding: 1em 1.6em; background: var(--rosso); color: var(--bianco); border: var(--line); box-shadow: 4px 4px 0 var(--nero); font-family: inherit; font-size: 1.125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.ci input[type="submit"]:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--nero); }
.ci .wpcf7-not-valid-tip { font-size: .75rem; color: var(--rosso); text-transform: none; letter-spacing: 0; }
.ci .wpcf7-response-output { margin: 16px 0 0 !important; padding: 12px !important; border: var(--line) !important; font-weight: 700; }

/* Scheda partecipante ---------------------------------------------- */

.scheda-head__title { font-size: clamp(2.75rem, 10vw, 11rem) !important; padding-bottom: clamp(24px, 3vw, 48px) !important; }

/* Griglia a caselle (come l'header) */
.cells { border-top: 2px solid var(--crema); }
.cells__tags { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; border-bottom: 2px solid var(--crema); }
.cell--tag { display: flex; align-items: center; padding: 12px 18px; border-right: 2px solid var(--crema); font-size: .75rem; letter-spacing: .14em; text-transform: uppercase; }
.cells__tags .cell--tag:first-child { background: var(--rosso); color: var(--bianco); }
.cell--fill { flex: 1; min-width: 24px; background: repeating-linear-gradient(-45deg, var(--crema) 0 2px, transparent 2px 9px); opacity: .5; }
/* Tre blocchi in colonna (dati, contatti, mappa delle sinergie) e la mappa a destra. */
.cells__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); grid-template-rows: auto auto 1fr; }
.cells__info { grid-column: 1; display: grid; grid-template-columns: clamp(96px, 10vw, 150px) minmax(0, 1fr); }
.cells__info .cell--n { justify-content: flex-start; }
.cells__links { grid-column: 1; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.cells__links .cell__v { font-size: clamp(.8125rem, 1vw, .9375rem); overflow-wrap: break-word; }
.cell { position: relative; background-color: var(--nero); display: flex; flex-direction: column; justify-content: center; gap: 4px; min-height: 72px; margin: 0; padding: 14px 18px; border-right: 2px solid var(--crema); border-bottom: 2px solid var(--crema); color: var(--crema); text-decoration: none; }
.cell__k { font-size: .6875rem; letter-spacing: .2em; text-transform: uppercase; color: var(--grigio); }
.cell__v { font-size: clamp(.875rem, 1.1vw, 1.0625rem); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; overflow-wrap: anywhere; }
.cell--lower .cell__v { text-transform: none; }
.cell--n { background: var(--crema); color: var(--nero); }
.cell--n .cell__v { font-size: clamp(2.5rem, 5vw, 4.5rem); line-height: .9; }
.cell--link { padding-right: 44px; transition: background .15s, color .15s; }
.cell--link:hover, .cell--link:focus-visible { background: var(--ciano); color: var(--nero); outline: 0; }
.cell--link:hover .cell__k, .cell--link:focus-visible .cell__k { color: var(--nero); }
.cell__arrow { position: absolute; right: 16px; top: 50%; transform: translateY(-50%); font-size: 1.25rem; }
.cell--site { background: var(--bianco); color: var(--nero); }
.cell--site .cell__k { color: var(--rosso-t); }
.cell--cta { grid-column: 1; align-self: stretch; background: var(--rosso); color: var(--bianco); }
.cell--cta .cell__k, .cells__tags .cell--tag:first-child .cell__k, .cell--logo-nome .cell__k { color: var(--bianco); }
.cell--logo { grid-column: 2; grid-row: 1 / span 3; min-height: 320px; align-items: center; justify-content: center; padding: clamp(24px, 4vw, 64px); border-right: 0; }
.cell--logo img { width: auto; max-width: min(100%, 420px); max-height: 220px; object-fit: contain; }
.cell--logo img[src$=".svg"] { width: min(100%, 360px); height: auto; }
.cell--logo-chiaro { background: var(--bianco); }
.cell--logo-scuro { background: var(--nero); }
.cell--logo-nome { background: var(--rosso); color: var(--bianco); }
.cell--logo__name { font-size: clamp(2rem, 4vw, 4rem); font-weight: 700; line-height: .9; letter-spacing: -.03em; text-transform: uppercase; text-align: center; overflow-wrap: anywhere; }
@media (max-width: 900px) {
	.cells__grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
	.cell--logo { grid-column: 1; grid-row: auto; min-height: 200px; }
	.cells__info { grid-template-columns: 76px minmax(0, 1fr); }
	.cell--n .cell__v { font-size: 2rem; white-space: nowrap; }
	.cells__grid .cell--logo { min-height: 200px; }
	.cells__links { grid-template-columns: minmax(0, 1fr); }
	.cell { min-height: 60px; padding: 12px 16px; border-right: 0; }
	.cells__info .cell--n { border-right: 2px solid var(--crema); }
	/* Parole chiave su una riga che scorre, senza andare a capo. */
	.cells__tags { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
	.cell--tag { flex: none; white-space: nowrap; padding: 12px 14px; }
	.cell--fill { display: none; }
	.gate__strip span:nth-child(2) { display: none; }
}
.legacy { padding: clamp(32px, 5vw, 72px) var(--gut); background: var(--crema); border-bottom: var(--line); }
.legacy h1, .legacy h2, .legacy h3 { text-transform: uppercase; letter-spacing: -.02em; }
.legacy img { height: auto; }

@media (max-width: 900px) {
	.evento, .act, .pgv__head, .pgv-item, .checkpage, .manif__cols { grid-template-columns: 1fr; }
	.pgv-item:nth-child(odd of .pgv-item) .pgv-item__img { order: 0; }
	.checkpage__side { position: static; }
	.tratte__list { grid-template-columns: 1fr; }
	.tratta a { border-right: 0; border-bottom: var(--line); min-height: 0; }
	.crepe__cards { grid-template-columns: 1fr; }
	.act { min-height: 0; }
	.act__letter { font-size: 14rem; }
	.pboard__cols { display: none !important; }
	.pboard__link { grid-template-columns: auto minmax(0, 1fr) auto !important; gap: 6px 12px; }
	.pboard__ev .fids__name { order: 0; grid-column: auto; }
	.pboard__sala { font-size: .6875rem; }
	.pboard__ev { grid-column: 1 / -1; order: -1; }
	.ci-sec { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
	.passes--big .pass__main { grid-template-columns: 1fr; }
	.retemap__hint { display: none; }
}

/* Scheda partecipante: foto intere e testi ------------------------- */


/* Slide ferme + fumetti (come la versione originale) --------------- */

.scheda-cover { margin: 0; height: calc(100svh - var(--mh)); border-bottom: var(--line); background: var(--nero); }
.scheda-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.slides { position: relative; background: var(--nero); }
.slide { position: relative; z-index: var(--z); }
.slide__media {
	position: sticky; top: var(--mh); height: calc(100svh - var(--mh)); overflow: hidden;
	display: grid; place-items: center; border-bottom: var(--line);
	transform-origin: center top; will-change: transform, opacity;
}
.slide--rosso .slide__media { background: var(--rosso); color: var(--bianco); }
.slide--nero .slide__media { background: var(--nero); color: var(--crema); }
.slide--ciano .slide__media { background: var(--ciano); color: var(--nero); }
.slide__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.slide__video { position: relative; width: min(80%, 1100px); aspect-ratio: 16 / 9; border: 2px solid currentColor; background: var(--nero); }
.slide__video iframe, .slide__video video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.slide__n { position: absolute; left: var(--gut); top: 14px; padding: 4px 8px; background: var(--nero); color: var(--crema); font-size: .75rem; letter-spacing: .16em; }
/* Il fumetto sale sopra la slide ferma, poi arriva la slide dopo. */
.bubble-wrap { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: flex-start; margin-top: -42svh; padding: 0 var(--gut) 18svh; pointer-events: none; }
.slide:nth-child(even) .bubble-wrap { align-items: flex-end; }
.bubble {
	position: relative; width: min(100%, 720px); min-height: 160px; padding: clamp(20px, 2.4vw, 32px);
	background: var(--crema); color: var(--nero); border: var(--line); box-shadow: 10px 10px 0 var(--nero); pointer-events: auto;
}
.bubble::after {
	content: ""; position: absolute; left: 48px; bottom: -26px; width: 0; height: 0;
	border-left: 22px solid transparent; border-right: 22px solid transparent; border-top: 26px solid var(--nero);
}
.bubble::before {
	content: ""; position: absolute; left: 52px; bottom: -19px; z-index: 1; width: 0; height: 0;
	border-left: 18px solid transparent; border-right: 18px solid transparent; border-top: 21px solid var(--crema);
}
.slide:nth-child(even) .bubble::after { left: auto; right: 48px; }
.slide:nth-child(even) .bubble::before { left: auto; right: 52px; }
.bubble__text { margin: 0; font-size: clamp(1.0625rem, 1.6vw, 1.375rem); line-height: 1.45; min-height: 3em; white-space: pre-line; }
.bubble__caret { position: absolute; right: 14px; bottom: 10px; color: var(--rosso); animation: blink .7s steps(2) infinite; }

.punti__title { font-size: clamp(2.5rem, 7vw, 6rem) !important; margin-bottom: clamp(24px, 3vw, 40px) !important; }
.punti__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 16px; }
.punto { display: flex; flex-direction: column; gap: 8px; padding: 20px; background: var(--bianco); border: var(--line); }
.punto__n { font-size: .75rem; letter-spacing: .16em; color: var(--rosso); }
.punto__h { margin: 0; font-size: 1.25rem; line-height: 1.05; text-transform: uppercase; }
.punto__p { margin: 0; font-size: .9375rem; }
@media (max-width: 700px) {
	.bubble-wrap { margin-top: -36svh; }
	.bubble { box-shadow: 6px 6px 0 var(--nero); }
	.slide__video { width: calc(100% - 32px); }
}
}

/* World Map ---------------------------------------------------------- */


.wm-collab__grid { position: relative; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 24px clamp(32px, 5vw, 80px); align-items: end; }
.wm-collab__title { margin: 0; font-size: clamp(2.75rem, 7vw, 7rem); line-height: .9; letter-spacing: -.04em; text-transform: uppercase; }
.wm-collab__text { max-width: 44ch; margin: 0 0 24px; font-size: clamp(1rem, 1.4vw, 1.25rem); }
.wm-stamp { position: absolute; top: -48px; right: clamp(16px, 4vw, 48px); background: rgba(244, 241, 234, .9); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 150px; height: 150px; margin: 0; border: 4px double var(--rosso); border-radius: 50%; color: var(--rosso); transform: rotate(-14deg); font-size: .625rem; letter-spacing: .2em; text-transform: uppercase; text-align: center; }
.wm-stamp b { font-size: 2.5rem; line-height: 1; letter-spacing: 0; }

.wm-diary { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: start; background: var(--crema); border-bottom: var(--line); }
.wm-diary__map { position: sticky; top: var(--mh); z-index: 2; height: calc(100svh - var(--mh)); background: #111; border-right: var(--line); }
/* Selettore più forte: maplibre-gl.css (caricato dopo) mette position: relative. */
.wm-diary__map .wm-map { position: absolute; inset: 0; }
.wm-diary__list { padding: clamp(40px, 6vw, 96px) var(--gut) 30vh; }
.wm-diary__title { margin: 0 0 clamp(24px, 4vw, 48px); font-size: clamp(2.25rem, 5vw, 5rem); line-height: .92; letter-spacing: -.03em; text-transform: uppercase; }
.wm-day { padding: 24px 0 clamp(48px, 10vh, 112px); border-top: var(--line); transition: opacity .3s; }
.wm-diary.is-live .wm-day:not(.is-on) { color: var(--grigio); }
.wm-diary.is-live .wm-day:not(.is-on) img { opacity: .4; }
.wm-diary.is-live .wm-day:not(.is-on) .wm-day__n { color: var(--grigio); }
.wm-day__n { margin: 0 0 8px; font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; color: var(--rosso-t); }
.wm-day__title { margin: 0 0 16px; font-size: clamp(1.75rem, 3.4vw, 3rem); line-height: 1; text-transform: uppercase; }
.wm-day__photo { margin: 0 0 16px; background: var(--bianco); border: var(--line); box-shadow: var(--shadow); }
.wm-day__photo img { display: block; width: 100%; height: auto; }
.wm-day__photo--todo { display: grid; place-items: center; aspect-ratio: 4 / 3; background: repeating-linear-gradient(45deg, transparent 0 10px, rgba(14, 14, 14, .08) 10px 12px), var(--bianco); font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; color: var(--grigio); }
.wm-day__text { max-width: 46ch; margin: 0; }
.wm-plane { transition: opacity .6s .3s; width: 30px; height: 30px; color: var(--ciano); filter: drop-shadow(0 0 6px rgba(0, 240, 255, .6)); }
.wm-plane svg, .wm-route__plane svg { display: block; width: 100%; height: 100%; fill: currentColor; }

.wm-teaser { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px clamp(32px, 5vw, 80px); align-items: center; }
.wm-teaser__title { margin: 0; color: #FFD43B; font-size: clamp(2.75rem, 7vw, 7.5rem); line-height: .9; letter-spacing: -.04em; text-transform: uppercase; overflow-wrap: anywhere; }
.wm-teaser__title span { color: var(--ciano); }
.wm-teaser__lead { max-width: 44ch; margin: 24px 0 28px; font-size: clamp(1rem, 1.4vw, 1.25rem); }
.wm-route { display: grid; grid-template-columns: auto minmax(40px, 1fr) auto; align-items: center; gap: 16px; padding: clamp(20px, 3vw, 32px); border: 2px solid #3A3A3A; }
.wm-route__city { display: flex; flex-direction: column; gap: 4px; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.wm-route__city b { color: var(--crema); font-size: clamp(2.5rem, 6vw, 5.5rem); line-height: .9; letter-spacing: -.02em; }
.wm-route__city--to { align-items: flex-end; text-align: right; }
.wm-route__line { position: relative; height: 2px; background: repeating-linear-gradient(90deg, var(--crema) 0 8px, transparent 8px 14px); }
.wm-route__plane { position: absolute; top: 50%; left: 0; width: 30px; height: 30px; color: var(--ciano); transform: translate(-50%, -50%) rotate(90deg); animation: wm-fly 4s cubic-bezier(.45, 0, .55, 1) infinite; }
@keyframes wm-fly { 0% { left: 0; opacity: 0; } 12%, 88% { opacity: 1; } 100% { left: 100%; opacity: 0; } }
.wm-route__meta { grid-column: 1 / -1; margin: 8px 0 0; padding-top: 12px; border-top: 1px solid #3A3A3A; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }

@media (max-width: 900px) {
	.wm-collab__grid, .wm-teaser, .wm-diary { grid-template-columns: 1fr; }
	.wm-stamp { top: -40px; width: 100px; height: 100px; }
	.wm-stamp b { font-size: 1.75rem; }
	/* Su mobile la mappa resta in alto ma bassa: il diario sotto ha spazio per foto e testi. */
	.wm-diary__map { height: 28svh; min-height: 190px; border-right: 0; border-bottom: var(--line); }
}
@media (prefers-reduced-motion: reduce) {
	.wm-route__plane { left: 50%; animation: none; }
}
.wm-collab__temi { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 28px; padding: 0; list-style: none; }
.wm-collab__temi li { padding: 6px 10px; border: 2px solid var(--nero); font-size: .75rem; letter-spacing: .1em; text-transform: uppercase; }

/* Rassegna ----------------------------------------------------------- */

.rassegna__title { margin: 0 0 clamp(24px, 4vw, 40px); font-size: clamp(2.25rem, 5vw, 5rem); line-height: .92; letter-spacing: -.03em; text-transform: uppercase; }
.rassegna__list { margin: 0; padding: 0; list-style: none; border-top: 2px solid #3A3A3A; }
.rassegna__item { display: grid; grid-template-columns: 28ch minmax(0, 1fr) auto; gap: 8px 24px; align-items: baseline; padding: clamp(14px, 2vw, 22px) 0; border-bottom: 1px solid #2A2A2A; color: inherit; text-decoration: none; }
.rassegna__item:hover { color: var(--ciano); }
.rassegna__source, .rassegna__date { font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.rassegna__date { color: #FFD43B; white-space: nowrap; }
.rassegna__name { font-size: clamp(1.125rem, 2vw, 1.75rem); font-weight: 700; line-height: 1.1; text-transform: uppercase; }
@media (max-width: 760px) {
	.rassegna__item { grid-template-columns: minmax(0, 1fr) auto; }
	.rassegna__name { grid-column: 1 / -1; order: 1; }
}
.wm-collab__photo { position: relative; grid-column: 1 / -1; margin: clamp(16px, 3vw, 40px) 0 0; border: var(--line); box-shadow: 12px 12px 0 var(--nero); background: var(--bianco); }
.wm-collab__photo img, .wm-day__photo picture { display: block; width: 100%; height: auto; }
.wm-day__pts { display: flex; flex-wrap: wrap; gap: 6px; margin: 16px 0 0; padding: 0; list-style: none; }
.wm-day__pts li { padding: 4px 8px; border: 1px solid var(--nero); font-size: .6875rem; letter-spacing: .1em; text-transform: uppercase; }

/* Menu aperto: sempre tutto nello schermo, senza scroll. Le righe si dividono l'altezza
   rimasta e il nome della pagina scala con l'altezza (--n = numero di voci, da header.php). */
.board { height: 100dvh; }
.board__top { position: static; }
.board__rows { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }
.board__row { display: flex; flex: 1 1 0; min-height: 0; }
.board__row a { flex: 1; align-content: center; padding-block: 2px; }
.board__dest { font-size: clamp(.9375rem, min(5.4vw, calc((100dvh - 190px) / var(--n, 7) * .62)), 5rem); }
.board__foot { margin-top: 14px; }
@media (max-width: 700px) {
	.board { padding-bottom: 12px; }
	.board__row a { padding-block: 2px; }
	.board__dest { font-size: clamp(.9375rem, min(9vw, calc((100dvh - 110px) / var(--n, 7) * .45)), 2.5rem); }
}
@media (max-height: 520px) {
	.board__head, .board__foot { display: none; }
}

/* World Map: il volo come carta d'imbarco ---------------------------- */
.wm-board { padding-block: clamp(40px, 6vw, 88px); }
.wm-ticket { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) clamp(130px, 14vw, 190px); max-width: 1180px; margin: 0 auto; background: var(--crema); color: var(--nero); border: var(--line); box-shadow: 12px 12px 0 var(--rosso); transform: rotate(-.8deg); transition: transform .3s; }
.wm-ticket:hover { transform: rotate(0); }
.wm-ticket__main { position: relative; display: flex; flex-direction: column; gap: clamp(18px, 2.4vw, 28px); padding: clamp(18px, 2.6vw, 32px); overflow: hidden; }
.wm-ticket__brand { display: flex; justify-content: space-between; gap: 12px; margin: 0; padding-bottom: 10px; border-bottom: 1px dashed var(--nero); font-size: .75rem; letter-spacing: .18em; text-transform: uppercase; }
.wm-ticket__brand span:first-child { padding: 2px 6px; background: var(--rosso); color: var(--bianco); font-weight: 700; }
.wm-ticket__route { display: grid; grid-template-columns: auto minmax(60px, 1fr) auto; align-items: center; gap: clamp(12px, 2vw, 28px); }
.wm-ticket__city { display: flex; flex-direction: column; gap: 4px; margin: 0; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; }
.wm-ticket__city span:first-child { color: var(--grigio); }
.wm-ticket__city b { font-size: clamp(3.5rem, 10vw, 9rem); line-height: .85; letter-spacing: -.04em; }
.wm-ticket__city--to { align-items: flex-end; text-align: right; }
.wm-ticket__via { position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; margin: 0; padding-top: 6px; border-top: 2px dashed var(--nero); font-size: .6875rem; letter-spacing: .16em; text-transform: uppercase; text-align: center; color: var(--grigio); }
.wm-ticket__plane { width: clamp(28px, 3vw, 40px); height: clamp(28px, 3vw, 40px); margin-top: calc(-1 * clamp(20px, 2.1vw, 27px)); padding: 2px; background: var(--crema); color: var(--rosso); transform: rotate(90deg); }
.wm-ticket__plane svg { display: block; width: 100%; height: 100%; fill: currentColor; }
.wm-ticket__data { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px 20px; margin: 0; padding-top: 16px; border-top: 1px dashed var(--nero); }
.wm-ticket__data dt { font-size: .625rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.wm-ticket__data dd { margin: 4px 0 0; font-size: clamp(.875rem, 1.1vw, 1rem); font-weight: 700; text-transform: uppercase; }
.wm-ticket__pax { grid-column: 1 / -1; }
.wm-ticket__pax dd { font-size: clamp(1.125rem, 2vw, 1.75rem); line-height: 1.1; }
.wm-ticket__stamp { align-self: center; margin: auto 0 16px; padding: 5px 10px; border: 3px solid var(--rosso); color: var(--rosso-t); font-size: clamp(.875rem, 1.3vw, 1.125rem); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; transform: rotate(-12deg); }
.wm-ticket__stub { position: relative; display: flex; flex-direction: column; gap: 4px; padding: clamp(18px, 2.6vw, 32px) 16px; background: var(--ciano); border-left: 2px dashed var(--nero); }
.wm-ticket__stub::before, .wm-ticket__stub::after { content: ""; position: absolute; left: -13px; width: 24px; height: 24px; border-radius: 50%; background: var(--nero); border: var(--line); }
.wm-ticket__stub::before { top: -13px; }
.wm-ticket__stub::after { bottom: -13px; }
.wm-ticket__k { font-size: .625rem; letter-spacing: .16em; text-transform: uppercase; }
.wm-ticket__big { margin-bottom: 10px; color: var(--rosso); font-size: clamp(2.5rem, 4vw, 3.5rem); font-weight: 700; line-height: 1; }
.wm-ticket__mid { margin-bottom: 10px; font-size: 1.125rem; font-weight: 700; }
@media (max-width: 900px) {
	.wm-ticket__data { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
	.wm-ticket { grid-template-columns: 1fr; transform: none; box-shadow: 8px 8px 0 var(--rosso); }
	.wm-ticket__brand span:last-child { display: none; }
	.wm-ticket__city b { font-size: clamp(2.5rem, 15vw, 4rem); }
	.wm-ticket__stub { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 12px; border-left: 0; border-top: 2px dashed var(--nero); }
	.wm-ticket__stub::before, .wm-ticket__stub::after { top: -13px; bottom: auto; }
	.wm-ticket__stub::before { left: -13px; }
	.wm-ticket__stub::after { left: auto; right: -13px; }
	.wm-ticket__big, .wm-ticket__mid { margin: 0 8px 0 0; }
	.wm-ticket__stamp { margin: 0 0 0 auto; }
	.wm-ticket__stub .pass__barcode { flex-basis: 100%; height: 32px; }
}

/* MAP Firenze 2025: Unusual Ideas (dopo il progetto) ----------------- */
.unusual__head { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px clamp(32px, 5vw, 80px); align-items: end; margin-bottom: clamp(28px, 4vw, 56px); }
.unusual__title { margin: 0; font-size: clamp(2.75rem, 8vw, 8rem); line-height: .9; letter-spacing: -.04em; text-transform: uppercase; }
.unusual__meta { margin: 0 0 12px; font-size: .75rem; letter-spacing: .16em; text-transform: uppercase; color: var(--rosso-t); }
.unusual__text { max-width: 52ch; margin: 0; font-size: clamp(1rem, 1.3vw, 1.125rem); }
/* Righe orizzontale + verticale: colonne 16:9 così le foto 4:3 e 3:4 hanno la stessa altezza, senza tagli. */
.unusual__grid { display: grid; grid-template-columns: 16fr 9fr; gap: clamp(12px, 1.6vw, 20px); }
.unusual__photo { margin: 0; border: var(--line); box-shadow: var(--shadow); background: var(--bianco); }
.unusual__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 700px) {
	.unusual__head, .unusual__grid { grid-template-columns: 1fr; }
}

/* MiMap (tesi di Francesca Soldateschi) ------------------------------ */
.mm-intro__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 32px clamp(32px, 5vw, 80px); align-items: start; }
.mm-intro__title, .mm-video__title, .mm-mappe__title, .mm-biblio__title { font-size: clamp(2.5rem, 7vw, 6.5rem); }
.mm-intro__text p { max-width: 52ch; margin: 0 0 1.1em; font-size: clamp(1rem, 1.3vw, 1.2rem); line-height: 1.5; }
.mm-dati { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); margin: 0; border: var(--line); background: var(--bianco); box-shadow: var(--shadow); }
.mm-dati div { padding: 14px 16px; border-right: var(--line); border-bottom: var(--line); margin: 0 -2px -2px 0; }
.mm-dati dt { font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--grigio); }
.mm-dati dd { margin: 6px 0 0; font-weight: 600; }
.mm-video__title { margin-bottom: clamp(24px, 4vw, 48px) !important; }
.mm-video__frame { margin: 0; }
.mm-video__frame video { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; background: #000; border: 2px solid var(--crema); box-shadow: 12px 12px 0 var(--rosso); }
.mm-video__frame figcaption { max-width: 60ch; margin-top: 24px; font-size: .875rem; color: var(--grigio); }
.mm-mappe__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin: clamp(24px, 4vw, 48px) 0 24px; padding: 0; list-style: none; }
.mm-mappe__list li { padding: 20px; border: var(--line); background: var(--crema); box-shadow: var(--shadow); }
.mm-mappe__n { display: block; font-size: 2.5rem; font-weight: 700; color: var(--rosso); }
.mm-mappe__list h3 { margin: 8px 0 10px; font-size: 1.1rem; text-transform: uppercase; }
.mm-mappe__list p, .mm-mappe__note { margin: 0; max-width: 60ch; }
.mm-biblio__text { max-width: 44ch; margin: 20px 0 28px; font-size: clamp(1rem, 1.4vw, 1.25rem); }
@media (max-width: 760px) {
	.mm-intro__grid, .mm-mappe__list { grid-template-columns: 1fr; }
	.mm-video__frame video { box-shadow: 6px 6px 0 var(--rosso); }
}

/* Blocchi dell'editor ------------------------------------------------ */
/* Header e footer sono parti del modello fatte di paragrafi: le celle sono <p> con dentro link o <br><strong>. */
.wp-site-blocks > .wp-block-template-part, .wp-site-blocks > header, .wp-site-blocks > footer { margin: 0; }
.mh__cell { line-height: 1.15; }
.mh__logo a { display: flex; align-items: center; height: 100%; color: inherit; text-decoration: none; }
.mh__logo { padding: 0; }
.mh__logo a { padding: 0 clamp(14px, 2vw, 24px); }
.mh__name, .mh__info--gate { font-size: .625rem; letter-spacing: .2em; text-transform: uppercase; color: var(--grigio); }
.mh__info--gate { color: var(--nero); }
.mh__name strong, .mh__info--gate strong { display: block; margin-top: 2px; font-size: .8125rem; font-weight: 700; letter-spacing: .08em; color: var(--nero); }
.mh__fill { margin: 0; }
/* Contenuto delle pagine: le sezioni vanno da bordo a bordo, senza spazi tra una e l'altra. */
.map-main > .entry-content, .map-main .wp-block-post-content { margin: 0; }
.map-main > *, .wp-block-post-content > * { margin-block: 0; }
.manifesto > .wp-block-buttons { grid-column: 1 / -1; }
.wp-block-buttons { gap: 12px 16px; }
.wp-block-buttons > .wp-block-button { margin: 0; }
/* Footer a blocchi: date dei voli in corsivo nell'editor (<em>), a destra come prima. */
.mf__list em { margin-left: auto; padding-left: 8px; font-size: .6875rem; font-style: normal; font-weight: 400; letter-spacing: .1em; white-space: nowrap; }
.mf__logo { margin: 0 0 18px; font-size: clamp(2.5rem, 5vw, 4rem); font-weight: 700; line-height: .9; letter-spacing: -.02em; }
.mf__logo a { color: inherit; text-decoration: none; }
.mf__logo a:hover { color: var(--nero); }
.mf__k, .mf__v, .mf__text { margin-top: 0; }
.mf__cell a { color: inherit; text-decoration: none; }
.mf__cell a:hover { text-decoration: underline; }
.mf__credits a { text-decoration: underline; }
.mf__top { padding: 0; }
.mf__top a { display: flex; align-items: center; height: 100%; padding: 10px clamp(12px, 1.4vw, 18px); }
.mf__strip .mh__lang .mh__cell { min-width: 48px; justify-content: center; border-right: var(--line); font-weight: 700; text-decoration: none; }
.mf__strip .mh__lang [aria-current] { background: var(--nero); color: var(--crema); }
.mf__box .wp-block-buttons { margin: 0; }
/* Paragrafi che prima erano <span>: niente margini del browser. */
.act__letter, .mapact__n { margin: 0; }
.mf__list a[aria-current="page"] { background: var(--ciano); color: var(--nero); }
