/* FP Salient Theme — ritocchi minimi non esprimibili in theme.json. */

/* Il tema è solo chiaro: evita che Android/Chrome forzino il dark mode
   automatico (sfondi bianchi percepiti come neri) quando il sistema ha il
   tema scuro attivo. Vedi anche il meta "color-scheme" in wp_head. */
:root { color-scheme: light; }

/* Focus visibile coerente col brand. */
:where(a, button, input, select, textarea, .wp-block-button__link):focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* Template FP Canvas: contenuto edge-to-edge, nessun padding di root.
   I componenti FP Salient Kit gestiscono internamente full-bleed e nav/footer.
   Il <main> è già alignfull (rompe il root padding); qui azzeriamo anche il
   padding del wrapper per non lasciare margini su hosting che non applicano
   il meccanismo alignfull, e togliamo eventuale block-gap del main. */
.page-template-page-canvas .wp-site-blocks,
.page-canvas .wp-site-blocks {
	padding-left: 0;
	padding-right: 0;
}

.page-template-page-canvas main.alignfull,
.page-canvas main.alignfull {
	margin-top: 0;
	margin-bottom: 0;
}

/* Immagini fluide di default. */
img {
	max-width: 100%;
	height: auto;
}

/* Tabelle core allineate al look FP: intestazione su accent, bordi su line.
   (Le celle non sono pilotabili da theme.json → qui.) */
.wp-block-table table {
	border-collapse: collapse;
	width: 100%;
}

.wp-block-table th,
.wp-block-table td {
	border: 1px solid var(--wp--preset--color--line);
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	text-align: left;
}

.wp-block-table thead th {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--base);
	font-weight: 700;
}

.wp-block-table tbody tr:nth-child(even) td {
	background: var(--wp--preset--color--surface);
}

/* Citazione: l'attribuzione (cite) in muted, non corsivo. */
.wp-block-quote cite,
.wp-block-pullquote cite {
	display: block;
	margin-top: var(--wp--preset--spacing--20);
	font-style: normal;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* ==========================================================================
   Header — visiera "social · logo · hamburger", sticky (parità Salient).
   ========================================================================== */
.fpst-header {
	/* !important necessario: il blocco ha ancora l'attributo/classe
	   `has-base-background-color`, che WordPress genera con !important —
	   senza pareggiarlo qui la nostra regola perde a parità di specificità. */
	background: var(--wp--preset--color--accent) !important;
}

/* Auto-hide (headroom): l'header resta in cima, si nasconde scrollando giù e
   riappare scrollando su. Lo sticky va sul WRAPPER del template-part: il gruppo
   interno .fpst-header non ha spazio per "stickare" (il suo contenitore è alto
   quanto lui) — era il motivo per cui prima spariva e basta.
   La classe .fpst-header--hidden è gestita da reveal.js sullo scroll.
   GOTCHA overlay: un transform sull'header crea un containing-block per i
   discendenti position:fixed → l'overlay menu si ancorerebbe all'header invece
   che al viewport. Con menu aperto :has() forza transform:none così l'overlay
   torna full-screen. Niente will-change:transform (creerebbe lo stesso problema
   in modo permanente). */
.wp-site-blocks > header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 100;
	transition: transform 0.35s ease;
}
.wp-site-blocks > header.wp-block-template-part.fpst-header--hidden {
	transform: translateY(-100%);
}
.wp-site-blocks > header.wp-block-template-part:has(.fpst-nav-toggle:checked) {
	transform: none;
}

/* Griglia a 3 colonne: logo perfettamente centrato, social a sx, nav a dx. */
.fpst-header__bar {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: var(--wp--preset--spacing--40);
	width: 100%;
}

.fpst-header__social {
	justify-self: start;
	margin: 0;
	gap: 0.6rem;
}
.fpst-header__social .wp-social-link {
	color: var(--wp--preset--color--base);
	opacity: 0.85;
	transition: opacity 0.15s ease, color 0.15s ease;
}
.fpst-header__social .wp-social-link:hover {
	opacity: 1;
	color: var(--wp--preset--color--gold);
}

.fpst-header__logo {
	justify-self: center;
	margin: 0;
}
.fpst-header__logo a,
.fpst-header__logo img {
	display: block;
}
.fpst-header__logo img {
	max-height: 72px;
	width: auto;
}

/* === Azioni header (switcher lingua + hamburger), cella destra della griglia === */
.fpst-header__actions {
	justify-self: end;
	display: flex;
	align-items: center;
	gap: 1.1rem;
}
/* Switcher lingua FP-Multilanguage reso compatto e on-brand nell'header.
   Sovrascrive frontend.css del plugin (pill blu #2271b1) con selettori più specifici. */
.fpst-header__actions .fpml-switcher { font-family: inherit; font-size: 0.82rem; line-height: 1; }
.fpst-header__actions .fpml-switcher--inline { gap: 0.15rem; }
.fpst-header__actions .fpml-switcher__item {
	color: var(--wp--preset--color--base);
	opacity: 0.85;
	background: none;
	border: 0;
	border-radius: 0;
	padding: 0.15rem 0.35rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	transition: color 0.15s ease;
}
.fpst-header__actions .fpml-switcher__item:hover {
	background: none;
	color: var(--wp--preset--color--gold);
}
.fpst-header__actions .fpml-switcher__item--current,
.fpst-header__actions .fpml-switcher__item--current:hover {
	background: none;
	border: 0;
	color: var(--wp--preset--color--gold);
	opacity: 1;
	font-weight: 700;
}
.fpst-header__actions .fpml-switcher__separator { color: var(--wp--preset--color--line); opacity: 0.7; }
@media (max-width: 600px) {
	.fpst-header__actions { gap: 0.7rem; }
	.fpst-header__actions .fpml-switcher { font-size: 0.72rem; }
	.fpst-header__actions .fpml-switcher__item { padding: 0.15rem 0.25rem; }
}

/* === Hamburger + overlay CUSTOM (toggle CSS-only, niente blocco Navigation core) === */
.fpst-nav-toggle {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}
.fpst-burger {
	justify-self: end;
	display: inline-flex;
	flex-direction: column;
	justify-content: center;
	gap: 6px;
	width: 30px;
	height: 30px;
	cursor: pointer;
	z-index: 10001;
}
.fpst-burger span {
	display: block;
	width: 28px;
	height: 2px;
	background: var(--wp--preset--color--base);
	border-radius: 2px;
	transition: transform 0.25s ease, opacity 0.2s ease, background 0.2s ease;
}
.fpst-nav-toggle:checked ~ .fpst-burger span:nth-child(1) { transform: translateY(8px) rotate(45deg); background: var(--wp--preset--color--base); }
.fpst-nav-toggle:checked ~ .fpst-burger span:nth-child(2) { opacity: 0; }
.fpst-nav-toggle:checked ~ .fpst-burger span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); background: var(--wp--preset--color--base); }
.fpst-nav-toggle:focus-visible ~ .fpst-burger { outline: 2px solid var(--wp--preset--color--gold); outline-offset: 4px; }

.fpst-overlay {
	position: fixed;
	inset: 0; /* a tutto schermo: copre topbar, header e barra dei tasti */
	background: var(--wp--preset--color--accent, #2a2724);
	backdrop-filter: blur(3px);
	display: flex;
	align-items: center;
	justify-content: center;
	overflow-y: auto;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.3s ease, visibility 0.3s ease;
	z-index: 2000; /* copre topbar; la X e' l'hamburger dell'header (z-index 10001) */
}
/* Menu aperto = schermo intero: nascondi barra tasti e pallino privacy, che
   vivono in contesti d'impilamento propri e l'overlay non coprirebbe via
   z-index. `:has()` raggiunge elementi fuori dal sottoalbero dell'overlay. */
body:has(.fpst-nav-toggle:checked) .fpst-tabbar,
body:has(.fpst-nav-toggle:checked) .fp-privacy-reopen {
	display: none !important;
}
.fpst-nav-toggle:checked ~ .fpst-overlay {
	opacity: 1;
	visibility: visible;
}
.fpst-overlay__menu,
.fpst-overlay__menu ul {
	list-style: none;
	margin: 0;
	padding: 0;
	text-align: center;
}
.fpst-overlay__menu > li { margin: 0.35em 0; }
.fpst-overlay__menu > li > a,
.fpst-overlay__label {
	display: inline-block;
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--serif);
	font-size: clamp(1.6rem, 4vw, 2.4rem);
	font-weight: 600;
	text-decoration: none;
	line-height: 1.25;
}
/* Hover leggibile su fondo scuro con QUALSIASI palette: il gold puro sui brand
   monocromi (gold = accent = nero, es. agriavengers) diventava nero su nero.
   La miscela 40% gold / 60% base resta una tinta brand sui bicolori (TdC:
   salmone chiaro) e un grigio chiaro visibile sui monocromi. */
.fpst-overlay__menu > li > a:hover { color: color-mix(in srgb, var(--wp--preset--color--gold) 40%, var(--wp--preset--color--base)); }
.fpst-overlay__label { opacity: 0.65; font-style: italic; cursor: default; }
.fpst-overlay__group ul { margin-top: 0.2em; }
.fpst-overlay__group ul a {
	color: rgba(255, 255, 255, 0.8);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 1.05rem;
	text-decoration: none;
	display: inline-block;
	padding: 0.18em 0;
}
.fpst-overlay__group ul a:hover { color: var(--wp--preset--color--gold); }
/* «Le Tenute» come box con loghi (come il menu originale). */
.fpst-overlay__tenute {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 1.1rem 1.5rem;
	margin-top: 1.1rem;
}
.fpst-overlay__tenute > li { margin: 0; }
.fpst-overlay__tenute a {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.55rem;
	width: 104px;
	color: #fff;
	text-decoration: none;
}
.fpst-overlay__tenute img {
	width: 96px;
	height: 96px;
	object-fit: contain;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.06);
	padding: 10px;
	transition: transform 0.2s ease, background 0.2s ease;
}
.fpst-overlay__tenute a:hover img {
	transform: scale(1.07);
	background: rgba(255, 255, 255, 0.12);
}
.fpst-overlay__tenute span {
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.9rem;
	line-height: 1.2;
	color: rgba(255, 255, 255, 0.85);
}
.fpst-overlay__tenute a:hover span { color: var(--wp--preset--color--gold); }

/* Caption testuale sulle slide dello slider hero. */
.fp-salkit-slider .fp-salkit__slide { position: relative; }
.fpst-slide-cap {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 2;
	padding: clamp(1.4rem, 4vw, 3.2rem);
	/* Floor sul solo padding-bottom: la caption resta sempre sopra i dot
	   dello slider (.fp-salkit__slider-dots a bottom:18px), anche su mobile
	   dove il padding generale scende a 1.4rem e il testo li toccherebbe. */
	padding-bottom: max(3rem, clamp(1.4rem, 4vw, 3.2rem));
	background: linear-gradient(to top, rgba(0, 0, 0, 0.64) 0%, rgba(0, 0, 0, 0.26) 44%, transparent 100%);
	pointer-events: none;
	text-align: left;
}
/* Riga orizzontale oro sopra il testo (mantenuta, a sinistra). */
.fpst-slide-cap::before {
	content: ""; display: block;
	width: 58px; height: 3px; border-radius: 2px;
	background: var(--wp--preset--color--gold);
	margin-bottom: 0.7em;
}
/* Titolo della slide (serif). */
.fpst-slide-cap > span:not(.fpst-cap-s) {
	display: block;
	max-width: 24ch;
	color: #fff;
	font-family: var(--wp--preset--font-family--serif);
	font-weight: 600;
	font-size: clamp(1.5rem, 3.6vw, 2.9rem);
	line-height: 1.16;
	letter-spacing: 0.004em;
	text-shadow: 0 2px 24px rgba(0, 0, 0, 0.5);
}
/* Sottotitolo (riga di supporto, body font, sotto il titolo). */
.fpst-slide-cap .fpst-cap-s {
	display: block;
	margin-top: 0.55em;
	max-width: 46ch;
	font-weight: 400;
	font-size: clamp(0.95rem, 1.5vw, 1.15rem);
	line-height: 1.45;
	letter-spacing: 0.015em;
	color: rgba(255, 255, 255, 0.9);
	text-shadow: 0 1px 14px rgba(0, 0, 0, 0.5);
}

/* Mobile: logo un filo più piccolo, gap ridotto. */
@media (max-width: 600px) {
	.fpst-header__bar { gap: var(--wp--preset--spacing--30); }
	.fpst-header__logo img { max-height: 56px; }
}

/* Mobile: la caption dello slide hero (clamp min 1.5rem) risultava troppo
   minuta rispetto all'immagine a tutta altezza — più peso e presenza. */
@media (max-width: 600px) {
	.fpst-slide-cap::before { width: 44px; height: 4px; }
	.fpst-slide-cap > span:not(.fpst-cap-s) {
		font-size: 1.85rem;
		font-weight: 700;
		letter-spacing: -0.008em;
	}
}

/* =====================================================================
   POLISH GRAFICO — estetica «tenuta»: calda, editoriale, elegante.
   Scoped al tema (chrome .fpst-* + componenti Kit .fp-salkit-*); non tocca
   gli altri siti che usano il solo plugin Kit.
   ===================================================================== */

/* Sfondo pagina = token «shell» (crema caldo) definito in theme.json
   (styles.color.background) → sovrascrivibile per-sito via Global Styles.
   Header bianco e footer scuro mantengono il proprio sfondo. */

/* Overlay menu generico (default del tema): quando le voci arrivano dal blocco
   Navigation (siti senza override custom della chrome), eredita lo stile della
   versione hand-coded (.fpst-overlay__menu). */
.fpst-overlay .wp-block-navigation__container {
	flex-direction: column;
	align-items: center;
	gap: clamp(0.4rem, 2.2vw, 1rem);
}
.fpst-overlay .wp-block-navigation__container,
.fpst-overlay .wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--serif);
	font-size: clamp(1.5rem, 4.5vw, 2.4rem);
	color: #fff;
}
.fpst-overlay .wp-block-navigation-item__content { opacity: 0.92; }
.fpst-overlay .wp-block-navigation-item__content:hover { opacity: 1; }

/* === Barra di navigazione visibile su desktop (fpst-header__navbar) ===
   Il tema riusa lo stesso off-canvas hamburger+overlay a qualunque risoluzione,
   pensato per mobile. Per contenuti editoriali (blog/news), dove le sezioni
   vanno scoperte subito, aggiungiamo una riga di nav orizzontale sotto la
   barra logo, visibile solo da 782px in su; sotto quella soglia il
   comportamento hamburger resta invariato (nessuna regressione mobile). */
.fpst-header__navbar { display: none; }

@media (min-width: 782px) {
	.fpst-burger,
	.fpst-nav-toggle,
	.fpst-overlay {
		display: none !important;
	}

	.fpst-header__navbar {
		display: block;
		margin-top: var(--wp--preset--spacing--30);
		padding-top: var(--wp--preset--spacing--30);
		border-top: 1px solid rgba(255, 255, 255, 0.25);
	}
	.fpst-header__navbar-menu.wp-block-navigation {
		justify-content: center;
	}
	.fpst-header__navbar-menu .wp-block-navigation__container {
		gap: clamp(1.2rem, 2.5vw, 2.2rem);
	}
	.fpst-header__navbar-menu .wp-block-navigation-item__content {
		font-family: var(--wp--preset--font-family--sans);
		font-size: 0.95rem;
		font-weight: 600;
		letter-spacing: 0.02em;
		text-transform: uppercase;
		/* !important necessario: il core block ha una regola equivalente
		   (color: currentColor / inherit) di pari specificita' dichiarata dopo
		   la nostra nel foglio globale, quindi vince per ordine — vedi stesso
		   problema gia' risolto per .fpst-header sul background. */
		color: var(--wp--preset--color--base) !important;
	}
	.fpst-header__navbar-menu .wp-block-navigation-item__content:hover {
		/* Miscela gold/base: tinta brand sui bicolori, grigio chiaro leggibile
		   sui monocromi (gold puro = nero su navbar nera, es. agriavengers). */
		color: color-mix(in srgb, var(--wp--preset--color--gold) 40%, var(--wp--preset--color--base)) !important;
	}
	.fpst-header__navbar-menu .wp-block-navigation__submenu-container {
		background: var(--wp--preset--color--base);
		border: 1px solid var(--wp--preset--color--line);
		border-radius: 4px;
		box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
		padding: 0.4rem 0;
	}
	.fpst-header__navbar-menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		/* il dropdown ha sfondo chiaro (base): il testo deve tornare scuro,
		   altrimenti resta bianco su bianco (ereditato dalla regola sopra). */
		color: var(--wp--preset--color--ink) !important;
		text-transform: none;
		font-weight: 500;
		padding: 0.5rem 1.1rem;
	}
	.fpst-header__navbar-menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
		color: var(--wp--preset--color--accent) !important;
	}
}

/* Reveal on scroll (fade-up). La classe .fpst-reveal viene aggiunta dal JS solo
   se IntersectionObserver è disponibile e l'utente non ha prefers-reduced-motion:
   senza JS, o con motion ridotto, i contenuti restano pienamente visibili. */
.fpst-reveal { opacity: 0; transform: translateY(26px);
	transition: opacity .85s ease, transform .85s cubic-bezier(.22, .7, .2, 1); }
.fpst-reveal.is-in { opacity: 1; transform: none; }

/* Titoli display in serif (Playfair) per il tono da tenuta. */
.fp-salkit__split-title,
.fp-salkit__heading,
.fp-salkit__prose-title { font-family: var(--wp--preset--font-family--serif); letter-spacing: -0.01em; }

/* Kicker dei blocchi split: filetto-guida oro prima del testo (editoriale). */
.fp-salkit-split .fp-salkit__kicker { display: inline-flex; align-items: center; }
.fp-salkit-split .fp-salkit__kicker::before {
	content: ""; width: 30px; height: 2px; margin-right: 0.8em;
	background: var(--wp--preset--color--gold);
}

/* Immagini dei blocchi split: cornice morbida + zoom lento all'hover. */
.fp-salkit__split-media {
	border-radius: 14px;
	box-shadow: 0 30px 60px -34px rgba(42, 39, 36, 0.5), 0 6px 18px -10px rgba(42, 39, 36, 0.28);
}
.fp-salkit__split-media .fp-salkit__split-img { transition: transform 1.2s cubic-bezier(0.2, 0.7, 0.2, 1); }
.fp-salkit-split:hover .fp-salkit__split-media .fp-salkit__split-img { transform: scale(1.06); }

/* Bande con immagine di sfondo (storia / tradizione): filetto oro sotto il titolo. */
.fp-salkit-section.has-bg-image .fp-salkit__heading::after {
	content: ""; display: block; width: 64px; height: 3px; border-radius: 2px;
	background: var(--wp--preset--color--gold); margin: 0.7em auto 0;
}

/* === Animazione d'entrata della caption ===
   reveal.js spezza il TITOLO in parole (.fpst-cap-w con --i progressivo) e
   attiva .fpst-cap-anim solo se JS+motion ok. Sequenza ad ogni cambio slide:
   1) la riga oro si disegna da sinistra; 2) il titolo entra parola-per-parola
   (da sfocato a nitido, salendo); 3) il sottotitolo sale in dissolvenza dopo
   l'ultima parola (--wc = n. parole del titolo). Senza JS / reduced-motion
   tutto è subito visibile (titolo non spezzato). */
.fpst-cap-anim .fpst-slide-cap::before { transform: scaleX(0); transform-origin: left center; }
.fpst-cap-anim .fpst-slide-cap .fpst-cap-w {
	display: inline-block;
	opacity: 0;
	transform: translateY(0.6em);
	filter: blur(7px);
}
.fpst-cap-anim .fpst-slide-cap .fpst-cap-s { opacity: 0; transform: translateY(0.7em); }

.fpst-cap-anim .fpst-slide-cap.is-shown::before {
	animation: fpst-cap-line 0.6s cubic-bezier(0.2, 0.72, 0.2, 1) 0.05s both;
}
.fpst-cap-anim .fpst-slide-cap.is-shown .fpst-cap-w {
	animation: fpst-word-in 0.74s cubic-bezier(0.2, 0.72, 0.2, 1) both;
	animation-delay: calc(var(--i, 0) * 0.08s + 0.22s);
}
.fpst-cap-anim .fpst-slide-cap.is-shown .fpst-cap-s {
	animation: fpst-cap-sub 0.7s cubic-bezier(0.2, 0.72, 0.2, 1) both;
	animation-delay: calc(var(--wc, 4) * 0.08s + 0.34s);
}
@keyframes fpst-cap-line { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes fpst-word-in {
	0%   { opacity: 0; transform: translateY(0.6em); filter: blur(7px); }
	55%  { opacity: 1; }
	100% { opacity: 1; transform: none; filter: blur(0); }
}
@keyframes fpst-cap-sub { to { opacity: 1; transform: none; } }

/* Logo della tenuta sopra l'H1 introduttivo della home (richiesta utente).
   I crest del cluster sono bianchi (per header scuri) → invert(1) li rende
   scuri sul fondo chiaro, coerente con l'header. (La madre, logo a colori,
   sovrascrive con filter:none.) */
.fpst-intro-logo {
	height: clamp(120px, 16vw, 176px);
	margin: 0 auto 1.1rem;
	background-position: center;
	background-repeat: no-repeat;
	background-size: contain;
	filter: invert(1); /* crest bianchi → scuri su fondo chiaro (come l'header) */
}
/* Loghi GIÀ scuri/a colori (es. Sugarella, sito madre): niente invert. */
.fpst-intro-logo--noinvert { filter: none; }

@media (prefers-reduced-motion: reduce) {
	.fpst-reveal { opacity: 1 !important; transform: none !important; transition: none; }
	.fp-salkit-split:hover .fp-salkit__split-media .fp-salkit__split-img { transform: none; }
}

/* === Rifiniture home (riscontri review) === */

/* Bande full-bleed a FILO: rimuove il block-gap del flusso post-content tra le
   sezioni (ognuna ha già il proprio padding) e gli <p> vuoti lasciati da wpautop.
   Così non resta la fascia crema tra due bande scure consecutive. */
.entry-content.is-layout-flow > .fp-salkit-section,
.entry-content.is-layout-flow > section.fp-salkit-section { margin-block: 0; }
.entry-content.is-layout-flow > .fp-salkit-split { margin-block: clamp(52px, 7vw, 92px); }
/* wpautop lascia paragrafi spuri tra i blocchi top-level (il testo vero vive DENTRO
   le sezioni, non come figlio diretto): rimuovili → niente gap verticali incoerenti. */
.entry-content.is-layout-flow > p { display: none; }
.entry-content p:empty { display: none; margin: 0; }
.fp-salkit__section-inner > p:last-child:empty { display: none; }
/* Due sezioni CONTENUTE (senza sfondo) consecutive non raddoppiano il padding
   verticale: la prima dà già il respiro, la seconda parte a filo. Le bande full-bleed
   (has-bg-*) mantengono il proprio padding immersivo. */
.fp-salkit-section:not(.has-bg-image):not(.has-bg-color):not(.has-bg-video) + .fp-salkit-section:not(.has-bg-image):not(.has-bg-color):not(.has-bg-video) { padding-top: 0; }

/* Post-content "constrained" (template page.html/single.html): WordPress applica ai
   figli non-alignfull `margin-inline:auto !important`, che vince sulla formula full-bleed
   del Kit (`calc(50% - 50vw)`, senza !important) → le sezioni is-bleed partono dal bordo
   del container costretto e spingono il contenuto a destra. Ri-affermo la formula con
   !important (selettore più specifico). Tocca SOLO le sezioni is-bleed: gli articoli blog
   (single.html, <p> reali come figli diretti) non sono interessati. */
.entry-content.is-layout-constrained > .fp-salkit-section.is-bleed,
.wp-block-post-content.is-layout-constrained > .fp-salkit-section.is-bleed {
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	max-width: 100vw !important;
}
/* le rifiniture di flusso tra sezioni valgono anche sotto constrained (i post blog non
   hanno .fp-salkit-section, quindi non regrediscono) */
.entry-content.is-layout-constrained > .fp-salkit-section { margin-block: 0; }

/* Hero slider above the fold + responsive. Nello slider l'immagine è una
   <figure class="fp-salkit-image"> con <img class="fp-salkit__image-img">: vincolo
   l'altezza di track/slide/figure al viewport meno header (~89px) e un accenno della
   sezione successiva; la caption (overlay assoluto) resta sopra la piega. */
.fp-salkit-slider .fp-salkit__slider-track,
.fp-salkit-slider .fp-salkit__slide,
.fp-salkit-slider .fp-salkit-image {
	height: calc(100svh - 130px);
	min-height: 440px;
}
.fp-salkit-slider .fp-salkit-image {
	aspect-ratio: auto;
	margin: 0;
	max-width: none;
	border-radius: 0;
	box-shadow: none;
}
.fp-salkit-slider .fp-salkit__image-img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* wpautop lascia <br>/<p> spuri dentro lo slider: nascondili per non sballare l'altezza. */
.fp-salkit-slider br,
.fp-salkit-slider .fp-salkit__slide > p:empty { display: none; }
@media (max-width: 600px) {
	.fp-salkit-slider .fp-salkit__slider-track,
	.fp-salkit-slider .fp-salkit__slide,
	.fp-salkit-slider .fp-salkit-image { height: calc(100svh - 110px); min-height: 380px; }
}

/* Scacchiera: tutte le immagini split alla STESSA altezza (ratio uniforme), così
   le righe sono allineate invece di seguire l'altezza naturale di ogni foto. */
.fp-salkit-split .fp-salkit__split-media { aspect-ratio: 4 / 3; overflow: hidden; }
.fp-salkit-split .fp-salkit__split-media .fp-salkit__split-img { width: 100%; height: 100%; object-fit: cover; }

/* Stats: tipografia editoriale (numeri serif oro) al posto dei badge scuri «amatoriali». */
.fp-salkit-stats .fp-salkit__statc { gap: 0.55rem; }
.fp-salkit-stats .fp-salkit__statc-n {
	min-width: 0;
	min-height: 0;
	width: auto;
	height: auto;
	padding: 0;
	border-radius: 0;
	background: none;
	box-shadow: none;
	color: var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--serif);
	font-weight: 700;
	font-size: clamp(2.4rem, 5vw, 3.4rem);
	line-height: 1;
}
.fp-salkit-stats .fp-salkit__statc-t {
	text-transform: uppercase;
	letter-spacing: 0.12em;
	font-size: 12px;
	font-weight: 600;
	color: var(--wp--preset--color--muted);
	max-width: 20ch;
}

/* ==========================================================================
   Footer — pannello brand, colonne brand/naviga/tenute + barra inferiore.
   ========================================================================== */
.fpst-footer a {
	color: var(--wp--preset--color--base);
	text-decoration: none;
	opacity: 0.85;
	transition: opacity 0.15s ease, color 0.15s ease;
}
.fpst-footer a:hover {
	opacity: 1;
	color: var(--wp--preset--color--gold);
}
.fpst-footer__brand {
	margin: 0 0 var(--wp--preset--spacing--20);
	color: var(--wp--preset--color--base);
}
.fpst-footer__tagline {
	max-width: 34ch;
	opacity: 0.7;
	margin: 0 0 var(--wp--preset--spacing--40);
}
.fpst-footer__social .wp-social-link { color: var(--wp--preset--color--base); }

.fpst-footer__h {
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: #d8b98a;
	margin: 0 0 var(--wp--preset--spacing--40);
	opacity: 0.95;
}
ul.fpst-footer__nav {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}
ul.fpst-footer__nav li { margin: 0; }
ul.fpst-footer__nav a { opacity: 0.85; text-decoration: none; }
ul.fpst-footer__nav a:hover { opacity: 1; }

.fpst-footer__rule {
	width: 100%;
	max-width: none;
	margin: var(--wp--preset--spacing--60) 0 var(--wp--preset--spacing--40);
	opacity: 0.18;
}
.fpst-footer__bottom { opacity: 0.75; }
.fpst-footer__bottom p { margin: 0; }
.fpst-footer__legal a { text-decoration: none; }
.fpst-footer__legal a:hover { opacity: 1; }

@media (max-width: 781px) {
	.fpst-footer__cols { gap: var(--wp--preset--spacing--50); }
}

/* ==========================================================================
   Blog — griglia contenuto + sidebar, widget, schede articolo.
   ========================================================================== */
.fpst-content-grid { gap: var(--wp--preset--spacing--70); }
.fpst-content-grid > .wp-block-column { min-width: 0; }

.fpst-postcard img { width: 100%; height: auto; }

/* Categoria come badge/pillola colorata (taglio editoriale da giornale), al
   posto del semplice link testuale reso di default da core/post-terms.
   Condiviso da tutte le famiglie di card (lista, "in evidenza", griglia
   densa) per coerenza visiva. */
.fpst-postcard .wp-block-post-terms a,
.fpst-news-grid .wp-block-post-terms a,
.fpst-grid-dense .wp-block-post-terms a {
	display: inline-block;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 0.25em 0.75em;
	border-radius: 999px;
}
.fpst-postcard .wp-block-post-terms a:hover,
.fpst-news-grid .wp-block-post-terms a:hover,
.fpst-grid-dense .wp-block-post-terms a:hover { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--ink); }

/* Articoli correlati (shortcode [fpst_related_posts] in templates/single.html). */
.fpst-related { margin-top: var(--wp--preset--spacing--50); }
.fpst-related__heading {
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1.3rem;
	font-weight: 600;
	margin-bottom: var(--wp--preset--spacing--40);
	padding-bottom: 0.5em;
	border-bottom: 2px solid var(--wp--preset--color--line);
}
.fpst-related__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--40);
}
@media (max-width: 781px) {
	.fpst-related__grid { grid-template-columns: 1fr; }
}
.fpst-related__item {
	display: block;
	text-decoration: none;
	color: inherit;
}
.fpst-related__img {
	display: block;
	width: 100%;
	height: 140px;
	object-fit: cover;
	border-radius: 4px;
	margin-bottom: 0.6em;
}
.fpst-related__title {
	display: block;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.35;
	color: var(--wp--preset--color--ink);
}
.fpst-related__item:hover .fpst-related__title { color: var(--wp--preset--color--accent); }

/* Gallery shortcode classico `[gallery ids="..."]` dentro il corpo articolo
   (es. foto multiple incollate da contenuti Facebook): senza queste regole
   il markup nativo di WP resta senza stile — foto quadre 150×150 in colonna,
   nessun grid, nessun gap. Ritaglio landscape 4:3 (non quadrato) coerente col
   resto delle immagini del tema, hover zoom come .fpst-related__item. Il `br`
   di "clear" che WP inserisce va nascosto: dentro una grid diventerebbe un
   item fantasma che sfasa le colonne. */
.wp-block-post-content .gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: var(--wp--preset--spacing--30, 1rem);
	margin: 1.5em 0;
	list-style: none;
	padding: 0;
}
.wp-block-post-content .gallery br { display: none; }
.wp-block-post-content .gallery-item { margin: 0; }
.wp-block-post-content .gallery-icon {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-radius: 2px;
	background: var(--wp--preset--color--line, #e4e4e4);
}
.wp-block-post-content .gallery-icon a { display: block; height: 100%; }
.wp-block-post-content .gallery-icon img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	margin: 0;
	border-radius: 0;
	transition: transform 0.35s ease;
}
@media (prefers-reduced-motion: no-preference) {
	.wp-block-post-content .gallery-item:hover .gallery-icon img { transform: scale(1.04); }
}
.wp-block-post-content .gallery-caption {
	margin-top: 0.4em;
	font-size: var(--wp--preset--font-size--small, 0.85rem);
	color: var(--fpst-muted, #667085);
	text-align: left;
}

/* Tempo di lettura stimato (shortcode [fpst_reading_time] in templates/single.html),
   allineato visivamente a data/autore/categoria nella riga byline (stessa
   dimensione small del tema, colore muted per non competere col resto). */
.fpst-reading-time {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* Accedi con Google (shortcode [fpst_google_login], solo se non loggati e
   se il sito ha configurato le chiavi in Impostazioni → Discussione). */
.fpst-google-login__btn {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	margin-bottom: var(--wp--preset--spacing--40);
	padding: 0.6em 1.2em;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 4px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--ink);
	font-size: 0.9rem;
	font-weight: 600;
	text-decoration: none;
}
.fpst-google-login__btn:hover {
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
}

/* Badge "utente registrato" accanto al nome di chi ha commentato dopo
   essersi autenticato con Google (get_comment_author_link in inc/google-login.php). */
.fpst-verified-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.1em;
	height: 1.1em;
	margin-left: 0.3em;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--base);
	font-size: 0.7em;
	vertical-align: middle;
}

/* Stesso fix di contrasto per il kicker del Kit nell'hero home
   ([fp_salkit_hero]): il Kit rende il kicker in `gold` puro, corretto su
   sfondi scuri ma illeggibile sullo sfondo chiaro dell'hero di questo tema
   (~1,4:1). Scoped a `.fp-salkit-hero` per non toccare altri usi del kicker
   del Kit (es. su sfondi scuri altrove) dove il colore originale va bene. */
.fp-salkit-hero .fp-salkit__kicker {
	color: color-mix(in srgb, var(--wp--preset--color--gold) 50%, black);
}
/* Scelta estetica di Cronaca di Viterbo: nasconde la lineetta decorativa
   `::before` del kicker (di serie nel Kit) solo nell'hero di questo sito. */
.fp-salkit-hero .fp-salkit__kicker::before {
	display: none;
}

/* Griglia news UNIFICATA in home (un solo Query Loop, un solo grid — non piu'
   sezioni separate impilate): il primo post e' grande (grid-column: 1/-1),
   i successivi 3 medi, il resto compatto — stessa idea di viterbotoday.it
   (un'unica griglia con card di taglie diverse) ma con badge categoria e
   colori del nostro brand. */
/* ⚠️ core/post-template ha layout "flow": WordPress applica il block-gap come
   `margin-block-start` a ogni <li class="wp-block-post"> dopo il primo. Dentro
   una griglia quel margine si SOMMA al `gap`, spingendo giù di 24px tutte le
   card tranne la prima → la prima riga risultava disallineata (verificato:
   postTop 0 / 24 / 24). Azzerato su tutte le nostre griglie di card. */
.fpst-news-grid > .wp-block-post,
.fpst-grid-dense > .wp-block-post,
.fpst-cardlist > .wp-block-post {
	margin-block-start: 0;
}

.fpst-news-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--50);
}
.fpst-news-grid__item { display: block; text-decoration: none; color: inherit; }
.fpst-news-grid__img { display: block; margin: 0 0 var(--wp--preset--spacing--30); }
.fpst-news-grid__img img {
	display: block;
	width: 100%;
	height: 150px;
	object-fit: cover;
	border-radius: 4px;
}
.fpst-news-grid__title {
	display: block;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1.05rem;
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--ink);
}
.fpst-news-grid__item:hover .fpst-news-grid__title { color: var(--wp--preset--color--accent); }
.fpst-news-grid__excerpt { display: none; }

/* Post di apertura (1° elemento, il piu' recente): occupa tutta la larghezza
   della griglia, immagine ed estratto grandi.
   ⚠️ Il figlio DIRETTO della griglia non e' `.fpst-news-grid__item` (il mio
   wp:group), ma il `<li class="wp-block-post">` che core/post-template
   genera automaticamente per ogni post — grid-column/nth-child vanno
   applicati LI, non al gruppo annidato dentro, altrimenti lo span non ha
   alcun effetto sulla griglia reale (verificato: il gruppo restava largo
   quanto una singola colonna nonostante `grid-column:1/-1`). */
.fpst-news-grid > .wp-block-post:first-child {
	grid-column: 1 / -1;
}
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__item {
	display: grid;
	grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--50);
	align-items: center;
	padding-bottom: var(--wp--preset--spacing--60);
	margin-bottom: var(--wp--preset--spacing--20);
	border-bottom: 1px solid var(--wp--preset--color--line);
}
/* Immagine in colonna 2 a tutta altezza, testo (categoria/titolo/estratto) in
   colonna 1. ⚠️ L'auto-placement NON basta: con la sola immagine posizionata,
   i 3 figli di testo riempiono le celle libere riga per riga e l'estratto
   finiva in colonna 2 sotto l'immagine (verificato: left 452px). Vanno quindi
   ancorati esplicitamente alla colonna 1, e le righe dichiarate perché
   `grid-row: 1 / -1` sull'immagine si riferisca alle righe esplicite. */
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__item {
	grid-template-rows: auto auto auto;
	align-items: start;
}
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__item > * {
	grid-column: 1;
	/* Il layout "constrained" del gruppo dà `margin-inline:auto` ai figli, e
	   WordPress lo emette con `!important` → il badge categoria (largo quanto
	   il contenuto) restava centrato in colonna. Nota: i margini automatici
	   hanno la precedenza su `justify-self`, quindi non basta allinearlo —
	   vanno azzerati, e per pareggiare il core serve `!important`. */
	margin-inline: 0 !important;
}
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__img {
	grid-column: 2;
	grid-row: 1 / -1;
	align-self: center;
	margin-bottom: 0;
}
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__img img { height: 260px; }
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__title { font-size: 1.9rem; line-height: 1.15; margin-bottom: var(--wp--preset--spacing--30); }
.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__excerpt { display: block; font-size: 1.02rem; color: var(--wp--preset--color--muted); }

/* Fascia "secondaria" (2°-4° elemento): medi, immagine piu' piccola del hero
   ma piu' grande dei compatti, niente estratto. */
.fpst-news-grid > .wp-block-post:nth-child(n+2):nth-child(-n+4) .fpst-news-grid__img img { height: 190px; }
.fpst-news-grid > .wp-block-post:nth-child(n+2):nth-child(-n+4) .fpst-news-grid__title { font-size: 1.2rem; }

@media (max-width: 781px) {
	.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__item {
		grid-template-columns: 1fr;
	}
	.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__img {
		grid-column: 1;
		grid-row: auto;
	}
	.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__img img { height: 220px; }
	.fpst-news-grid > .wp-block-post:first-child .fpst-news-grid__title { font-size: 1.5rem; }
}

/* Griglia densa "portale news" (pagine categoria/archivio + blog-index): card
   compatte, tante affiancate, niente estratto — sostituisce la lista
   impilata a 1 colonna. Riusa lo stesso badge pillola categoria di
   .fpst-postcard .wp-block-post-terms a. */
.fpst-grid-dense {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--50);
}
.fpst-grid-dense__item { display: block; text-decoration: none; color: inherit; }
.fpst-grid-dense__img {
	display: block;
	margin: 0 0 var(--wp--preset--spacing--30);
}
.fpst-grid-dense__img img {
	display: block;
	width: 100%;
	height: 140px;
	object-fit: cover;
	border-radius: 4px;
}
.fpst-grid-dense__title {
	display: block;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--ink);
}
.fpst-grid-dense__item:hover .fpst-grid-dense__title { color: var(--wp--preset--color--accent); }
.fpst-grid-dense .wp-block-post-terms,
.fpst-news-grid .wp-block-post-terms { margin-bottom: 0.5em; display: block; }
@media (max-width: 781px) {
	.fpst-grid-dense { grid-template-columns: 1fr; }
}

.fpst-sidebar {
	position: sticky;
	top: 90px;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}
.fpst-widget {
	background: var(--wp--preset--color--surface);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius);
	padding: var(--wp--preset--spacing--50);
	/* `.fpst-sidebar` è un gruppo con layout "constrained": WordPress dà ai
	   figli `max-width: contentSize` + `margin-inline: auto`. In un flex a
	   colonna i margini automatici battono lo stretch, così ogni widget
	   prendeva la larghezza del proprio contenuto: la ricerca sbordava
	   (363px su 335) e "Categorie" si restringeva e centrava (251px).
	   Qui li riportiamo tutti alla larghezza della sidebar. */
	width: 100%;
	max-width: 100%;
	margin-inline: 0;
	min-width: 0;
}
/* La ricerca ha un input con min-width intrinseca che faceva sbordare il box. */
.fpst-widget__search .wp-block-search__input { min-width: 0; }
/* Widget la cui fonte dati è tornata vuota (es. [fpst_most_read] su sito senza
 * contatore letture): resta solo il titolo nel markup del template part →
 * nascondi l'intero box, com'era nell'intento dello shortcode. */
.fpst-widget:has(> .fpst-widget__title:only-child) { display: none; }
.fpst-widget__title {
	margin: 0 0 var(--wp--preset--spacing--40);
	padding-bottom: var(--wp--preset--spacing--30);
	border-bottom: 2px solid var(--wp--preset--color--gold);
	display: inline-block;
}
.fpst-widget ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.fpst-widget li {
	padding: var(--wp--preset--spacing--20) 0;
	border-bottom: 1px solid var(--wp--preset--color--line);
}
.fpst-widget li:last-child {
	border-bottom: 0;
}
.fpst-widget a {
	text-decoration: none;
}
.fpst-widget a:hover {
	color: var(--wp--preset--color--gold);
}
.fpst-widget__posts .wp-block-latest-posts__post-date {
	display: block;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* Widget "Più letti" (shortcode [fpst_most_read]): stessa <ul>/<li>/<a> degli
   altri widget sidebar (eredita .fpst-widget ul/li/a sopra), solo il numero
   di letture ha una regola dedicata. */
.fpst-most-read__count {
	display: block;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

@media (max-width: 781px) {
	.fpst-sidebar { position: static; }
	.fpst-content-grid { gap: var(--wp--preset--spacing--60); }
}

/* Menu overlay: hover ben visibile sul fondo rosso brand. Il token "gold" del
   tema è #c5281a — lo stesso rosso dell'overlay — quindi l'hover era invisibile. */
.fpst-overlay__menu > li > a:hover,
.fpst-overlay__group ul a:hover { color: #f3dcab; }

/* Nessuna striscia crema tra l'ultimo contenuto e il footer (block-gap della root). */
.wp-site-blocks > footer { margin-block-start: 0; }

/* «Le Tenute» nel menu: i loghi contengono già il nome della tenuta → l'etichetta
   testuale resta solo per gli screen reader (evita il doppione e l'a-capo). */
.fpst-overlay__tenute a span {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* ==========================================================================
   Componenti "testata": breadcrumb, condivisione, segnala errore, badge
   commenti sulle card. Tutti generati da shortcode (functions.php).
   ========================================================================== */

/* Breadcrumb sopra il titolo articolo ([fpst_breadcrumb]). */
.fpst-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4em;
	margin-bottom: var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}
.fpst-breadcrumb a {
	color: var(--wp--preset--color--muted);
	text-decoration: none;
}
.fpst-breadcrumb a:hover {
	color: var(--wp--preset--color--accent);
}
.fpst-breadcrumb__sep { color: var(--wp--preset--color--line); }
.fpst-breadcrumb__current { color: var(--wp--preset--color--ink); }

/* Pulsanti di condivisione ([fpst_share]). */
.fpst-share {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5em;
	margin: var(--wp--preset--spacing--40) 0;
}
.fpst-share__label {
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--muted);
	margin-right: 0.2em;
}
.fpst-share__btn {
	display: inline-flex;
	align-items: center;
	padding: 0.35em 0.9em;
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.82rem;
	font-weight: 600;
	color: #fff;
	text-decoration: none;
	line-height: 1.4;
	transition: opacity 0.15s ease, transform 0.15s ease;
}
.fpst-share__btn:hover { opacity: 0.88; transform: translateY(-1px); color: #fff; }
.fpst-share__btn--whatsapp { background: #25d366; }
.fpst-share__btn--facebook { background: #1877f2; }
.fpst-share__btn--x        { background: #000; }
.fpst-share__btn--telegram { background: #229ed9; }

/* "Segnala un errore" ([fpst_report_error]), in fondo all'articolo. */
.fpst-report-error {
	margin: var(--wp--preset--spacing--40) 0 0;
	font-size: var(--wp--preset--font-size--small);
}
.fpst-report-error a {
	color: var(--wp--preset--color--muted);
	text-decoration: none;
}
.fpst-report-error a:hover { color: var(--wp--preset--color--accent); }

/* Slide dello slider "in evidenza" in cima alla home ([fpst_featured_slider]):
   immagine a tutta larghezza con titolo e categoria sovrimpressi in basso su
   una sfumatura, così il testo resta leggibile su qualunque foto. */
.fpst-slide {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: var(--wp--custom--radius, 6px);
	text-decoration: none;
}
.fpst-slide__img {
	display: block;
	width: 100%;
	/* Più basso della storia di apertura: lo slider "in evidenza" è
	   secondario, non deve competere col lead. */
	height: clamp(200px, 22vw, 300px);
	object-fit: cover;
}
.fpst-slide__body {
	position: absolute;
	inset-inline: 0;
	bottom: 0;
	display: block;
	padding: clamp(1rem, 3vw, 2rem);
	/* Riserva spazio in basso per i dot dello slider (.fp-salkit__slider-dots a
	   bottom:18px): su mobile il titolo su 2 righe ci finiva sopra. */
	padding-bottom: max(2.6rem, clamp(1rem, 3vw, 2rem));
	/* Sfumatura dal basso: garantisce contrasto del testo bianco anche su
	   foto chiare (il solo testo bianco su immagine non è affidabile). */
	background: linear-gradient(to top, rgba(0, 0, 0, 0.82) 0%, rgba(0, 0, 0, 0.45) 55%, rgba(0, 0, 0, 0) 100%);
}
.fpst-slide__cat {
	display: inline-block;
	margin-bottom: 0.5em;
	padding: 0.25em 0.75em;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: #fff;
	font-family: var(--wp--preset--font-family--sans);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.fpst-slide__title {
	display: block;
	color: #fff;
	font-family: var(--wp--preset--font-family--serif);
	font-size: clamp(1.25rem, 2.6vw, 2.1rem);
	font-weight: 700;
	line-height: 1.2;
	text-wrap: balance;
}
.fpst-slide:hover .fpst-slide__title { opacity: 0.92; }
/* ⚠️ Il Kit riusa la stessa classe `.fp-salkit-slider` sia per l'hero
   full-viewport (con `.fp-salkit-image`) sia qui: la regola generica del tema
   forza `height: calc(100svh - 130px); min-height: 440px` su track/slide,
   allungandoli a ~725px mentre le nostre immagini sono alte 460px → 265px di
   vuoto sotto (con dot/frecce sospesi a metà). Qui, SOLO per il nostro slider
   "in evidenza", riportiamo track e slide all'altezza reale del contenuto. */
.fpst-featured-slider .fp-salkit-slider .fp-salkit__slider-track,
.fpst-featured-slider .fp-salkit-slider .fp-salkit__slide {
	height: auto;
	min-height: 0;
	align-items: stretch;
}

/* ==========================================================================
   Sezioni di categoria in home (modello portale-news): ogni categoria ha la
   sua intestazione + una lista compatta di 4 articoli, invece di una sola
   griglia cronologica piatta. `.fpst-cardlist` è la <ul> resa da
   core/post-template: i figli DIRETTI sono i <li class="wp-block-post">, non
   i nostri gruppi interni — la griglia va lì (stesso gotcha di .fpst-news-grid).
   ========================================================================== */
.fpst-section__head {
	align-items: baseline;
	gap: var(--wp--preset--spacing--40);
	margin-bottom: var(--wp--preset--spacing--40);
	padding-bottom: var(--wp--preset--spacing--20);
	border-bottom: 2px solid var(--wp--preset--color--accent);
}
.fpst-section__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--sans);
	font-weight: 800;
	letter-spacing: 0.01em;
	text-transform: uppercase;
}
.fpst-section__title a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.fpst-section__title a:hover { color: var(--wp--preset--color--accent); }
.fpst-section__more {
	margin: 0;
	flex-shrink: 0;
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}
.fpst-section__more a {
	color: var(--wp--preset--color--accent);
	text-decoration: none;
}
.fpst-section__more a::after { content: " ›"; }
.fpst-section__more a:hover { color: color-mix(in srgb, var(--wp--preset--color--accent) 75%, black); }

.fpst-cardlist {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px var(--wp--preset--spacing--50);
	list-style: none;
	margin: 0;
	padding: 0;
}
/* Card compatta: miniatura a sinistra, titolo+data a destra — impacchetta
   molti titoli in poco spazio verticale (come le card "inline" del modello). */
.fpst-cardlist__item {
	display: grid;
	grid-template-columns: 104px minmax(0, 1fr);
	gap: var(--wp--preset--spacing--30);
	align-items: start;
}
/* Articolo senza immagine in evidenza: il blocco featured-image non rende
   nulla e il corpo cadrebbe nella prima colonna da 104px (titolo schiacciato,
   verificato). Senza miniatura il testo prende tutta la larghezza. */
.fpst-cardlist__item:not(:has(.fpst-cardlist__img)) {
	grid-template-columns: minmax(0, 1fr);
}
.fpst-cardlist__img { margin: 0; }
.fpst-cardlist__img img {
	display: block;
	width: 104px;
	height: 74px;
	object-fit: cover;
	border-radius: 4px;
}
.fpst-cardlist__body { min-width: 0; }
.fpst-cardlist__title {
	margin: 0 0 0.25em;
	font-family: var(--wp--preset--font-family--serif);
	font-size: 0.98rem;
	font-weight: 600;
	line-height: 1.3;
}
.fpst-cardlist__title a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.fpst-cardlist__item:hover .fpst-cardlist__title a { color: var(--wp--preset--color--accent); }
.fpst-cardlist__date {
	margin: 0;
	color: var(--wp--preset--color--muted);
}
@media (max-width: 781px) {
	.fpst-cardlist { grid-template-columns: 1fr; }
}
@media (max-width: 400px) {
	.fpst-cardlist__item { grid-template-columns: 84px minmax(0, 1fr); }
	.fpst-cardlist__img img { width: 84px; height: 60px; }
}

/* Navigazione articolo precedente/successivo in fondo al pezzo (blocchi core
   `post-navigation-link`). Sul primo/ultimo articolo il blocco corrispondente
   rende un wrapper VUOTO (non "nulla"): lo nascondiamo con `:empty` così non
   partecipa al flex e non lascia un `gap` a vuoto. `space-between` continua a
   tenere il link superstite dalla parte giusta (prev a sinistra, next a
   destra) grazie al `margin-left:auto` sul next. */
.fpst-post-nav {
	gap: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--line);
}
.fpst-post-nav .wp-block-post-navigation-link {
	max-width: 48%;
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--small);
}
.fpst-post-nav .wp-block-post-navigation-link:empty { display: none; }
.fpst-post-nav .post-navigation-link-next {
	text-align: right;
	margin-left: auto;
}
.fpst-post-nav a {
	color: var(--wp--preset--color--muted);
	text-decoration: none;
}
.fpst-post-nav a:hover { color: var(--wp--preset--color--accent); }
.fpst-post-nav .post-navigation-link__label {
	display: block;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--ink);
}
@media (max-width: 600px) {
	.fpst-post-nav .wp-block-post-navigation-link { max-width: 100%; }
}

/* Badge "N commenti" sulle card ([fpst_comment_count]). Vuoto se 0 commenti,
   quindi invisibile finché non arrivano i primi. */
.fpst-comment-count {
	display: inline-block;
	margin-top: 0.35em;
	font-family: var(--wp--preset--font-family--sans);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--accent);
}

/* ==========================================================================
   LOOK "TESTATA MODERNA" (Cronaca di Viterbo)
   Restyle dei soli componenti news (.fpst-*) + barra data. Non tocca gli stili
   globali del tema: gli altri siti del cluster non usano queste classi, quindi
   restano invariati. UI/chrome in Inter (già nel tema), edge netti, gerarchia
   marcata; i titoli-articolo restano in Playfair (taglio editoriale).
   ========================================================================== */
@font-face { font-family: 'Inter'; font-weight: 400; font-style: normal; font-display: swap; src: url('../fonts/inter-400.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 600; font-style: normal; font-display: swap; src: url('../fonts/inter-600.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 700; font-style: normal; font-display: swap; src: url('../fonts/inter-700.woff2') format('woff2'); }
:root { --fpst-ui: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; }

/* Barra data in cima (opt-in `fpst_topbar`). */
.fpst-topbar {
	background: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--line);
}
.fpst-topbar__in {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	max-width: 1180px;
	margin-inline: auto;
	padding: 0.5rem clamp(16px, 5vw, 24px);
	font-family: var(--fpst-ui);
	font-size: 0.72rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.fpst-topbar__date { font-weight: 700; color: var(--wp--preset--color--ink); }
.fpst-topbar__tag { text-align: right; }
@media (max-width: 600px) { .fpst-topbar__tag { display: none; } }

/* Intestazioni di sezione più marcate: tab accent + Inter maiuscolo, hairline
   scuro pieno (non più il sottile filetto "blog"). */
.fpst-section__head {
	align-items: center;
	padding-bottom: 0.55rem;
	border-bottom: 2px solid var(--wp--preset--color--ink);
}
.fpst-section__title {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	font-family: var(--fpst-ui);
	font-weight: 700;
	font-size: clamp(1.05rem, 1.8vw, 1.4rem);
	letter-spacing: 0.02em;
	text-transform: uppercase;
}
.fpst-section__title::before {
	content: "";
	width: 6px;
	height: 1.05em;
	border-radius: 1px;
	background: var(--wp--preset--color--accent);
}
.fpst-section__more { font-family: var(--fpst-ui); font-weight: 600; }

/* Chrome/etichette in Inter: badge categoria, kicker slide, date, meta. */
.fpst-postcard .wp-block-post-terms a,
.fpst-news-grid .wp-block-post-terms a,
.fpst-grid-dense .wp-block-post-terms a,
.fpst-slide__cat,
.fpst-cardlist__date,
.fpst-comment-count,
.fpst-widget__title,
.fpst-breadcrumb,
.fpst-share__label,
.fpst-post-nav .post-navigation-link__label {
	font-family: var(--fpst-ui);
}

/* Titoli-articolo più incisivi: interlinea più stretta, quasi-nero. */
.fpst-news-grid__title,
.fpst-cardlist__title,
.fpst-grid-dense__title,
.fpst-hero-post__title,
.fpst-slide__title {
	line-height: 1.16;
	letter-spacing: -0.01em;
}

/* Edge netti (meno "soft blog"): immagini e riquadri a 2px, non 4. */
.fpst-news-grid__img img,
.fpst-grid-dense__img img,
.fpst-cardlist__img img,
.fpst-hero-post__img img,
.fpst-featured__img img,
.fpst-slide,
.fpst-related__img,
.fpst-widget {
	border-radius: 2px;
}

/* Card compatte come lista "rigata" (struttura da giornale, non card sparse).
   ⚠️ Il filetto va sui `.wp-block-post` (figli DIRETTI della griglia), NON su
   `.fpst-cardlist__item`: quest'ultimo è figlio unico del proprio <li>, quindi
   `:nth-child` lo matcherebbe sempre come 1° (stesso gotcha dell'allineamento).
   La prima riga (2 card) non prende il filetto: c'è già il bordo
   dell'intestazione di sezione sopra. */
.fpst-cardlist > .wp-block-post {
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--line);
}
.fpst-cardlist > .wp-block-post:nth-child(-n+2) {
	padding-top: 0;
	border-top: 0;
}

/* Frecce dello slider: spostate in alto a destra come coppia, così non
   cadono MAI sul titolo/badge in basso a sinistra (a qualunque altezza
   dell'immagine — con l'immagine più bassa le frecce a top:50% finivano
   sopra il titolo). Dots in basso, invariati. */
.fpst-featured-slider .fp-salkit__slider-arrow {
	top: 16px;
	bottom: auto;
	transform: none;
	width: 40px;
	height: 40px;
	font-size: 22px;
}
.fpst-featured-slider .fp-salkit__slider-arrow.prev { left: auto; right: 64px; }
.fpst-featured-slider .fp-salkit__slider-arrow.next { right: 16px; }

/* ==========================================================================
   RISTRUTTURAZIONE "prima pagina" (Cronaca) — v0.31
   Titoli-articolo in Fraunces (serif contemporaneo, già nel tema) al posto di
   Playfair per un taglio più editoriale/moderno. Blocco di apertura: storia
   grande + colonna titoli, come la prima pagina di un quotidiano.
   ========================================================================== */
@font-face { font-family: 'Fraunces'; font-weight: 600; font-style: normal; font-display: swap; src: url('../fonts/fraunces-600.woff2') format('woff2'); }
@font-face { font-family: 'Fraunces'; font-weight: 700; font-style: normal; font-display: swap; src: url('../fonts/fraunces-700.woff2') format('woff2'); }
:root { --fpst-serif: 'Fraunces', Georgia, 'Times New Roman', serif; }

/* H1 nascosto (accessibilità/SEO) — la home apre con le notizie, non con un titolo. */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* Titoli-articolo dei componenti news → Fraunces. */
.fpst-lead__title,
.fpst-lead__rail-title,
.fpst-news-grid__title,
.fpst-hero-post__title,
.fpst-cardlist__title,
.fpst-grid-dense__title,
.fpst-slide__title,
.fpst-featured__title,
.fpst-related__title {
	font-family: var(--fpst-serif);
}

/* --- Blocco di apertura "prima pagina" --- */
.fpst-lead__cols { gap: clamp(1.5rem, 3vw, 3rem); align-items: start; }

.fpst-lead__main-item { display: block; }
.fpst-lead__img { margin: 0 0 0.9rem; display: block; }
.fpst-lead__img img {
	display: block;
	width: 100%;
	height: clamp(240px, 26vw, 360px);
	object-fit: cover;
	border-radius: 2px;
}
.fpst-lead__title {
	font-weight: 700;
	font-size: clamp(1.5rem, 2.4vw, 2.15rem);
	line-height: 1.12;
	letter-spacing: -0.015em;
	margin: 0.35em 0 0.3em;
}
.fpst-lead__title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.fpst-lead__main-item:hover .fpst-lead__title a { color: var(--wp--preset--color--accent); }
.fpst-lead__excerpt {
	margin: 0;
	font-size: 1.05rem;
	line-height: 1.55;
	color: var(--wp--preset--color--muted);
}

/* Colonna titoli a lato: elenco rigato, senza immagini, denso. */
.fpst-lead__rail { display: block; }
.fpst-lead__rail > .wp-block-post {
	margin-block-start: 0;
	padding: 0.55rem 0;
	border-top: 1px solid var(--wp--preset--color--line);
}
.fpst-lead__rail > .wp-block-post:first-child { padding-top: 0; border-top: 0; }
.fpst-lead__rail-title {
	margin: 0.15em 0 0;
	font-weight: 600;
	font-size: 0.98rem;
	line-height: 1.25;
	letter-spacing: -0.01em;
}
.fpst-lead__rail-title a { color: var(--wp--preset--color--ink); text-decoration: none; }
.fpst-lead__rail-item:hover .fpst-lead__rail-title a { color: var(--wp--preset--color--accent); }

/* Separatore sotto tutto il blocco di apertura, come stacco dalla sezione dopo. */
.fpst-lead {
	padding-bottom: var(--wp--preset--spacing--60);
	border-bottom: 2px solid var(--wp--preset--color--ink);
}

/* ==========================================================================
   MODALITÀ TESTATA (.fpst-news, body class dal flag `fpst_topbar`) —
   restyle di articolo singolo e archivi sui template CONDIVISI col cluster:
   attivo SOLO dove la modalità news è accesa, i siti brand non cambiano.
   ========================================================================== */

/* Titolo articolo: Fraunces quasi-nero (il titolo BLU Playfair era il
   segnale "blog datato" più forte rimasto), interlinea serrata. */
.fpst-news h1.wp-block-post-title {
	font-family: var(--fpst-serif);
	color: var(--wp--preset--color--ink);
	font-size: clamp(2rem, 4.2vw, 3.4rem);
	line-height: 1.08;
	letter-spacing: -0.015em;
}

/* Riga byline (autore · data · categoria · lettura): Inter, compatta, con
   filetto sotto — da testata, non da blog. */
.fpst-news .wp-block-post-author-name,
.fpst-news .wp-block-post-date,
.fpst-news .wp-block-post-terms,
.fpst-news .fpst-reading-time {
	font-family: var(--fpst-ui);
}
.fpst-news .wp-block-post-author-name a {
	font-weight: 700;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.fpst-news .wp-block-post-author-name a:hover { color: var(--wp--preset--color--accent); }
.fpst-news .wp-block-post-date { color: var(--wp--preset--color--muted); }

/* Testata archivi ("Categoria: X", ricerca, ecc.): Fraunces quasi-nero con
   barra accent a sinistra — coerente con le sezioni della home. */
.fpst-news h1.wp-block-query-title {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	font-family: var(--fpst-serif);
	color: var(--wp--preset--color--ink);
	font-size: clamp(1.7rem, 3vw, 2.5rem);
	line-height: 1.1;
	letter-spacing: -0.015em;
}
.fpst-news h1.wp-block-query-title::before {
	content: "";
	align-self: stretch;
	width: 6px;
	border-radius: 1px;
	background: var(--wp--preset--color--accent);
}
.fpst-news .wp-block-term-description {
	font-family: var(--fpst-ui);
	color: var(--wp--preset--color--muted);
	max-width: 62ch;
}

/* Corpo articolo: primo paragrafo come "attacco" leggermente più grande
   (convenzione da quotidiano). Link riconoscibili dal solo colore accent +
   peso (niente sottolineato, per scelta editoriale). */
.fpst-news .wp-block-post-content > p:first-child {
	font-size: 1.14rem;
	line-height: 1.6;
	color: var(--wp--preset--color--ink);
}
.fpst-news .wp-block-post-content a {
	text-decoration: none;
	font-weight: 600;
}
.fpst-news .wp-block-post-content a:hover {
	color: color-mix(in srgb, var(--wp--preset--color--accent) 75%, black);
}

/* Titoli H2/H3 interni all'articolo: Fraunces coerente col titolo. */
.fpst-news .wp-block-post-content h2,
.fpst-news .wp-block-post-content h3 {
	font-family: var(--fpst-serif);
	color: var(--wp--preset--color--ink);
	letter-spacing: -0.01em;
}

/* "Articoli correlati" e widget: heading in Inter maiuscolo con tab, come le
   sezioni della home. */
.fpst-news .fpst-related__heading,
.fpst-news .fpst-widget__title {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	font-family: var(--fpst-ui);
	font-weight: 700;
	font-size: 0.95rem;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink);
	border-bottom: 0;
}
.fpst-news .fpst-related__heading::before,
.fpst-news .fpst-widget__title::before {
	content: "";
	width: 5px;
	height: 1.05em;
	border-radius: 1px;
	background: var(--wp--preset--color--accent);
}
.fpst-news .fpst-widget__title { padding-bottom: 0; }

/* Modalità testata — residui: card ricerca, footer, paginazione. */

/* Card dei risultati di ricerca (fpst-postcard senza immagine): titolo
   Fraunces ink, come tutto il resto — era rimasto blu Playfair. */
.fpst-news .fpst-postcard .wp-block-post-title,
.fpst-news .fpst-postcard .wp-block-post-title a {
	font-family: var(--fpst-serif);
	color: var(--wp--preset--color--ink);
	text-decoration: none;
	letter-spacing: -0.01em;
	line-height: 1.2;
}
.fpst-news .fpst-postcard .wp-block-post-title a:hover { color: var(--wp--preset--color--accent); }

/* Footer: nome testata in Fraunces (coerente coi titoli), colonne in Inter. */
.fpst-news footer .wp-block-site-title,
.fpst-news footer .wp-block-site-title a {
	font-family: var(--fpst-serif);
}
.fpst-news footer .wp-block-heading,
.fpst-news .fpst-footer__cols .wp-block-heading {
	font-family: var(--fpst-ui);
	text-transform: uppercase;
	font-size: 0.85rem;
	letter-spacing: 0.05em;
}

/* Paginazione archivi: numeri come riquadri Inter, pagina corrente piena in
   accent — la fila di numeri "nudi" era l'ultimo pezzo da blog. */
.fpst-news .wp-block-query-pagination {
	font-family: var(--fpst-ui);
	font-size: 0.9rem;
	align-items: center;
}
.fpst-news .wp-block-query-pagination-numbers .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 34px;
	height: 34px;
	padding: 0 0.4em;
	margin-right: 4px;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 2px;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
	font-weight: 600;
}
.fpst-news .wp-block-query-pagination-numbers .page-numbers:hover {
	border-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
}
.fpst-news .wp-block-query-pagination-numbers .page-numbers.current {
	background: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--accent);
	color: #fff;
}
.fpst-news .wp-block-query-pagination-numbers .page-numbers.dots {
	border: 0;
	min-width: auto;
}
.fpst-news .wp-block-query-pagination-previous,
.fpst-news .wp-block-query-pagination-next {
	font-weight: 700;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.fpst-news .wp-block-query-pagination-previous:hover,
.fpst-news .wp-block-query-pagination-next:hover { color: var(--wp--preset--color--accent); }

/* Niente sottolineati (scelta editoriale): il core WP li applica di default
   ai link di post-terms (categoria/tag nella byline) e al link del logo —
   qui li spegniamo. Lo skip-link resta com'è (visibile solo a focus, a11y). */
.fpst-news .wp-block-post-terms a,
.fpst-news a.custom-logo-link {
	text-decoration: none;
}

/* ==========================================================================
   CODICI COLORE PER SEZIONE (stile Guardian) + micro-interazioni + header
   compatto — modalità testata (.fpst-news) e componenti .fpst-*.
   ========================================================================== */
:root {
	--fpst-c-attualita: #0000fe;
	--fpst-c-politica: #c62828;
	--fpst-c-provincia: #00695c;
	--fpst-c-ambiente: #2e7d32;
	--fpst-c-economia: #b45309;
	--fpst-c-cultura: #7b1fa2;
	--fpst-c-mondo: #283593;
	--fpst-c-italia: #00838f;
	--fpst-c-idee: #d84315;
	--fpst-c-libri: #5d4037;
	--fpst-c-dossier: #01579b;
}

/* Badge categoria colorati per sezione: il link del badge punta all'archivio
   della categoria → si colora via attributo href (regge anche le categorie
   annidate tipo /category/viterbo/politica grazie a $= sul segmento finale). */
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/politica"]          { background: var(--fpst-c-politica); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/provincia"]         { background: var(--fpst-c-provincia); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/ambiente"]          { background: var(--fpst-c-ambiente); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/economia-e-lavoro"] { background: var(--fpst-c-economia); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/cultura"]           { background: var(--fpst-c-cultura); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/mondo"]             { background: var(--fpst-c-mondo); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/italia"]            { background: var(--fpst-c-italia); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/idee"]              { background: var(--fpst-c-idee); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/libri"]             { background: var(--fpst-c-libri); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/dossier-acqua-viterbo"] { background: var(--fpst-c-dossier); }
/* Hover dei badge in modalità news: stessa tinta scurita (il vecchio hover
   oro/ink stonerebbe con la palette per sezione). */
.fpst-news .taxonomy-category.wp-block-post-terms a:hover {
	background: initial;
	filter: brightness(0.85);
	color: #fff;
}
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/politica"]:hover          { background: var(--fpst-c-politica); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/provincia"]:hover         { background: var(--fpst-c-provincia); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/ambiente"]:hover          { background: var(--fpst-c-ambiente); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/economia-e-lavoro"]:hover { background: var(--fpst-c-economia); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/cultura"]:hover           { background: var(--fpst-c-cultura); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/mondo"]:hover             { background: var(--fpst-c-mondo); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/italia"]:hover            { background: var(--fpst-c-italia); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/idee"]:hover              { background: var(--fpst-c-idee); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/libri"]:hover             { background: var(--fpst-c-libri); }
.fpst-news .taxonomy-category.wp-block-post-terms a[href$="/dossier-acqua-viterbo"]:hover { background: var(--fpst-c-dossier); }
.fpst-news .taxonomy-category.wp-block-post-terms a:not([href$="/politica"]):not([href$="/provincia"]):not([href$="/ambiente"]):not([href$="/economia-e-lavoro"]):not([href$="/cultura"]):not([href$="/mondo"]):not([href$="/italia"]):not([href$="/idee"]):not([href$="/libri"]):not([href$="/dossier-acqua-viterbo"]):hover { background: var(--wp--preset--color--accent); }

/* Linguetta e "Tutte ›" delle sezioni home nel colore della sezione. */
.fpst-section:has(a[href$="/politica"]) .fpst-section__title::before          { background: var(--fpst-c-politica); }
.fpst-section:has(a[href$="/provincia"]) .fpst-section__title::before         { background: var(--fpst-c-provincia); }
.fpst-section:has(a[href$="/ambiente"]) .fpst-section__title::before          { background: var(--fpst-c-ambiente); }
.fpst-section:has(a[href$="/economia-e-lavoro"]) .fpst-section__title::before { background: var(--fpst-c-economia); }
.fpst-section:has(a[href$="/cultura"]) .fpst-section__title::before           { background: var(--fpst-c-cultura); }
.fpst-section:has(a[href$="/politica"]) .fpst-section__more a          { color: var(--fpst-c-politica); }
.fpst-section:has(a[href$="/provincia"]) .fpst-section__more a         { color: var(--fpst-c-provincia); }
.fpst-section:has(a[href$="/ambiente"]) .fpst-section__more a          { color: var(--fpst-c-ambiente); }
.fpst-section:has(a[href$="/economia-e-lavoro"]) .fpst-section__more a { color: var(--fpst-c-economia); }
.fpst-section:has(a[href$="/cultura"]) .fpst-section__more a           { color: var(--fpst-c-cultura); }

/* Kicker dello slider colorato per categoria (classe slug dal PHP). */
.fpst-slide__cat.fpst-cat--politica  { background: var(--fpst-c-politica); }
.fpst-slide__cat.fpst-cat--provincia { background: var(--fpst-c-provincia); }
.fpst-slide__cat.fpst-cat--ambiente  { background: var(--fpst-c-ambiente); }
.fpst-slide__cat.fpst-cat--economia-e-lavoro { background: var(--fpst-c-economia); }
.fpst-slide__cat.fpst-cat--cultura   { background: var(--fpst-c-cultura); }
.fpst-slide__cat.fpst-cat--mondo     { background: var(--fpst-c-mondo); }
.fpst-slide__cat.fpst-cat--italia    { background: var(--fpst-c-italia); }
.fpst-slide__cat.fpst-cat--idee      { background: var(--fpst-c-idee); }
.fpst-slide__cat.fpst-cat--libri     { background: var(--fpst-c-libri); }

/* Micro-interazione: zoom leggero dell'immagine all'hover della card
   (figure con overflow nascosto, transform sull'img). Reduced-motion safe. */
.fpst-news-grid__img,
.fpst-grid-dense__img,
.fpst-cardlist__img,
.fpst-lead__img,
.fpst-related__item { overflow: hidden; }
@media (prefers-reduced-motion: no-preference) {
	.fpst-news-grid__img img,
	.fpst-grid-dense__img img,
	.fpst-cardlist__img img,
	.fpst-lead__img img,
	.fpst-related__img {
		transition: transform 0.35s ease;
	}
	.fpst-news-grid__item:hover .fpst-news-grid__img img,
	.fpst-grid-dense__item:hover .fpst-grid-dense__img img,
	.fpst-cardlist__item:hover .fpst-cardlist__img img,
	.fpst-lead__main-item:hover .fpst-lead__img img,
	.fpst-related__item:hover .fpst-related__img {
		transform: scale(1.04);
	}
}

/* Header più compatto in modalità news (154px → ~120px): meno aria sopra e
   sotto il logo, logo leggermente più basso, navbar più attaccata.
   !important per battere il padding inline del template part. */
.fpst-news .fpst-header {
	padding-top: 10px !important;
	padding-bottom: 10px !important;
}
.fpst-news .fpst-header__logo img { max-height: 58px; }
@media (min-width: 782px) {
	.fpst-news .fpst-header__navbar {
		margin-top: 8px;
		padding-top: 8px;
	}
}

/* In modalità news OGNI badge categoria è una pillola (anche nel lead, nella
   rail e nella byline articolo — prima lo stile pillola valeva solo nelle
   card, e i badge fuori da quei contesti restavano testo su fondo
   trasparente). Solo taxonomy-category: i tag restano testo semplice. */
.fpst-news .taxonomy-category.wp-block-post-terms a {
	display: inline-block;
	background: var(--wp--preset--color--accent);
	color: #fff;
	font-family: var(--fpst-ui);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	text-decoration: none;
	padding: 0.25em 0.75em;
	border-radius: 999px;
}

/* Ticker "ULTIME" ([fpst_ticker]): striscia sotto l'header con gli ultimi
   titoli in scorrimento continuo. Marquee CSS-only. */
.fpst-ticker {
	display: flex;
	align-items: stretch;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 2px;
	background: var(--wp--preset--color--base);
	overflow: hidden;
}
.fpst-ticker__label {
	display: flex;
	align-items: center;
	flex-shrink: 0;
	padding: 0.45rem 0.9rem;
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--ink);
	font-family: var(--fpst-ui);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.fpst-ticker__viewport {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	display: flex;
	align-items: center;
	/* dissolvenza ai bordi: i titoli entrano/escono morbidi */
	-webkit-mask-image: linear-gradient(to right, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
	mask-image: linear-gradient(to right, transparent 0, #000 24px, #000 calc(100% - 24px), transparent 100%);
}
.fpst-ticker__track {
	display: inline-flex;
	align-items: center;
	white-space: nowrap;
	will-change: transform;
	animation: fpst-ticker-scroll 55s linear infinite;
}
.fpst-ticker__track > span[aria-hidden] { display: inline-flex; align-items: center; }
.fpst-ticker:hover .fpst-ticker__track { animation-play-state: paused; }
.fpst-ticker__item {
	font-family: var(--fpst-ui);
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
	padding: 0.45rem 0;
}
.fpst-ticker__item:hover { color: var(--wp--preset--color--accent); }
.fpst-ticker__sep {
	margin: 0 0.9rem;
	color: var(--wp--preset--color--gold);
	font-size: 0.6rem;
}
@keyframes fpst-ticker-scroll {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
	.fpst-ticker__track { animation: none; }
	.fpst-ticker__viewport { overflow-x: auto; mask-image: none; -webkit-mask-image: none; }
	.fpst-ticker__track > span[aria-hidden] { display: none; }
}

/* "Più letti" come classifica numerata: numeroni Fraunces in colonna. */
.fpst-most-read { counter-reset: fpst-rank; }
.fpst-most-read li {
	counter-increment: fpst-rank;
	display: grid;
	grid-template-columns: 34px minmax(0, 1fr);
	column-gap: 0.6rem;
	align-items: start;
}
.fpst-most-read li::before {
	content: counter(fpst-rank);
	grid-row: 1 / span 2;
	font-family: var(--fpst-serif);
	font-size: 1.9rem;
	font-weight: 700;
	line-height: 1;
	color: color-mix(in srgb, var(--wp--preset--color--accent) 55%, white);
}
.fpst-most-read li a { grid-column: 2; }
.fpst-most-read .fpst-most-read__count { grid-column: 2; }

/* Densità da quotidiano (visto lo screenshot: troppa aria = "blog").
   Estratto del lead limitato a 3 righe; conteggio letture nascosto al
   pubblico (con numeri piccoli "1 lettura" è controproducente — la
   classifica resta, ordinata dai conteggi reali); sezioni affiancabili a
   coppie con lista a colonna singola. */
.fpst-lead__excerpt {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 0.98rem;
}
.fpst-most-read__count { display: none; }

/* Coppie di sezioni affiancate: dentro .fpst-section-row ogni sezione usa la
   lista a colonna singola (4 titoli impilati stretti). */
.fpst-section-row { gap: clamp(1.5rem, 3vw, 2.5rem); }
.fpst-section-row .fpst-cardlist { grid-template-columns: 1fr; gap: 12px; }
.fpst-section-row .fpst-cardlist > .wp-block-post { padding-top: 12px; }
.fpst-section-row .fpst-cardlist > .wp-block-post:nth-child(-n+2) { padding-top: 12px; border-top: 1px solid var(--wp--preset--color--line); }
.fpst-section-row .fpst-cardlist > .wp-block-post:first-child { padding-top: 0; border-top: 0; }
.fpst-section-row .fpst-section { margin-bottom: var(--wp--preset--spacing--50); }
@media (max-width: 781px) {
	.fpst-section-row { gap: var(--wp--preset--spacing--50); }
}

/* Rifiniture guidate dallo screenshot (categoria + articolo). */

/* Titoli card della griglia densa: il colore ink era sul wrapper ma il LINK
   dentro prendeva il blu dei link di theme.json → titoli tutti blu (visto
   nello screenshot della categoria). */
.fpst-news .fpst-grid-dense__title a {
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.fpst-news .fpst-grid-dense__item:hover .fpst-grid-dense__title a { color: var(--wp--preset--color--accent); }

/* Badge sovrapposto all'angolo dell'immagine nella griglia densa (portale
   moderno) invece che appoggiato tra foto e titolo. Solo se la card ha
   l'immagine (:has), altrimenti resta in flusso. */
.fpst-grid-dense__item { position: relative; }
.fpst-grid-dense__item:has(.fpst-grid-dense__img) .wp-block-post-terms {
	position: absolute;
	top: 10px;
	left: 10px;
	margin: 0;
	z-index: 2;
}
.fpst-grid-dense__item:has(.fpst-grid-dense__img) .wp-block-post-terms a {
	box-shadow: 0 1px 6px rgba(0, 0, 0, 0.35);
}

/* Sidebar: link in ink (erano tutti blu → pagina pesante), hover accent. */
.fpst-news .fpst-widget a { color: var(--wp--preset--color--ink); }
.fpst-news .fpst-widget a:hover { color: var(--wp--preset--color--accent); }

/* Byline: "redazione" con l'iniziale maiuscola. */
.fpst-news .wp-block-post-author-name a { text-transform: capitalize; }

/* "Lascia un commento" / titolo commenti: Fraunces ink, non blu. */
.fpst-news .wp-block-post-comments-form .comment-reply-title,
.fpst-news .wp-block-comments-title {
	font-family: var(--fpst-serif);
	color: var(--wp--preset--color--ink);
}

/* Blocco di apertura: la colonna dei titoli (destra) riempie tutta l'altezza
   della storia grande (sinistra), così i due fondi coincidono e non resta il
   "buco" sotto l'ultimo titolo. I 6 titoli si distribuiscono uniformemente
   (space-between). Solo desktop: sotto 782px le colonne si impilano. */
@media (min-width: 782px) {
	.fpst-lead__cols > .wp-block-column:has(.fpst-lead__rail) {
		display: flex;
		flex-direction: column;
	}
	.fpst-lead__cols > .wp-block-column:has(.fpst-lead__rail) > .wp-block-query {
		flex: 1 1 auto;
		display: flex;
		flex-direction: column;
		min-height: 0;
	}
	.fpst-lead__rail {
		flex: 1 1 auto;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
	}
}

/* ==========================================================================
   Fascia "Approfondimenti" ([fpst_approfondimenti]) — pannello accent con i
   temi in profondità della redazione, subito dopo il blocco di apertura.
   ========================================================================== */
.fpst-appr {
	background: var(--wp--preset--color--accent);
	border-radius: 4px;
	margin: var(--wp--preset--spacing--60) 0;
	padding: clamp(1.5rem, 3vw, 2.6rem);
	color: #fff;
}
.fpst-appr__head { margin-bottom: 1.3rem; }
.fpst-appr__label {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	margin: 0;
	font-family: var(--fpst-ui);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-size: clamp(1.1rem, 2vw, 1.5rem);
	/* !important: l'h2 è dentro .wp-block-post-content (la home è una pagina)
	   e catturerebbe la regola scura dei titoli interni articolo. */
	color: #fff !important;
}
.fpst-appr__label::before {
	content: "";
	width: 8px;
	height: 1em;
	border-radius: 1px;
	background: var(--wp--preset--color--gold);
}
.fpst-appr__sub {
	margin: 0.35rem 0 0;
	font-family: var(--fpst-ui);
	font-size: 0.9rem;
	color: rgba(255, 255, 255, 0.82);
}
.fpst-appr__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: clamp(1rem, 2vw, 1.5rem);
}
@media (max-width: 900px) { .fpst-appr__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .fpst-appr__grid { grid-template-columns: 1fr; } }
.fpst-appr__card { display: block; text-decoration: none; color: #fff; }
.fpst-appr__imgwrap { display: block; overflow: hidden; border-radius: 3px; margin-bottom: 0.6rem; }
.fpst-appr__img { display: block; width: 100%; height: 140px; object-fit: cover; transition: transform 0.35s ease; }
.fpst-appr__card:hover .fpst-appr__img { transform: scale(1.05); }
.fpst-appr__title {
	display: block;
	font-family: var(--fpst-serif);
	font-size: 1.02rem;
	font-weight: 600;
	line-height: 1.25;
	color: #fff;
}
.fpst-appr__card:hover .fpst-appr__title { color: var(--wp--preset--color--gold); }
.fpst-appr__more {
	display: inline-block;
	margin-top: 1.3rem;
	font-family: var(--fpst-ui);
	font-weight: 700;
	color: #fff;
	text-decoration: none;
}
.fpst-appr__more:hover { color: var(--wp--preset--color--gold); }

/* Conteggio accanto alle categorie ([fpst_categories]). */
.fpst-widget__cats .fpst-cat-count {
	font-family: var(--fpst-ui);
	font-size: 0.82em;
	color: var(--wp--preset--color--muted);
}

/* ==========================================================================
   Pulsante toggle dark mode (iniettato nell'header da darkmode.js).
   ========================================================================== */
.fpst-darktoggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	font-size: 15px;
	line-height: 1;
	cursor: pointer;
	transition: background 0.15s ease;
}
.fpst-darktoggle:hover { background: rgba(255, 255, 255, 0.28); }
.fpst-darktoggle:focus-visible { outline: 2px solid var(--wp--preset--color--gold); outline-offset: 2px; }
.fpst-darktoggle__moon { display: none; }
:root[data-theme="dark"] .fpst-darktoggle__sun { display: none; }
:root[data-theme="dark"] .fpst-darktoggle__moon { display: inline; }

/* ==========================================================================
   TEMA SCURO (:root[data-theme="dark"]) — override dei token brand + ritocchi
   sui componenti con sfondo/bordi letterali.
   ========================================================================== */
:root[data-theme="dark"] {
	color-scheme: dark;
	--wp--preset--color--base: #16181c;
	--wp--preset--color--shell: #101114;
	--wp--preset--color--surface: #1e2127;
	--wp--preset--color--ink: #e9eaec;
	--wp--preset--color--muted: #9aa4ad;
	--wp--preset--color--line: #2c3038;
	--wp--preset--color--accent: #5566ff;
}
/* Il fondo pagina è impostato da theme.json con un colore letterale (shell
   chiaro): il solo override della variabile non basta, va forzato. */
:root[data-theme="dark"] body,
:root[data-theme="dark"] .wp-site-blocks {
	background-color: #101114 !important;
	color: var(--wp--preset--color--ink);
}
:root[data-theme="dark"] .fpst-topbar { background: #16181c; border-color: #2c3038; }
:root[data-theme="dark"] .fpst-topbar__date { color: #e9eaec; }
:root[data-theme="dark"] .fpst-ticker { background: #16181c; border-color: #2c3038; }
:root[data-theme="dark"] .fpst-widget { background: #1e2127; border-color: #2c3038; }
:root[data-theme="dark"] .fpst-news .wp-block-post-content,
:root[data-theme="dark"] .fpst-news .wp-block-post-content > p:first-child { color: #e9eaec; }
:root[data-theme="dark"] input,
:root[data-theme="dark"] textarea,
:root[data-theme="dark"] .wp-block-search__input {
	background: #1e2127;
	color: #e9eaec;
	border-color: #2c3038;
}
/* Card senza immagine (ricerca) e liste: il testo segue --ink, già chiaro. */

/* Data + tempo di lettura sotto i titoli della colonna del blocco di apertura:
   riempiono lo spazio verticale così i 6 titoli non restano troppo distanziati. */
.fpst-lead__rail-date {
	margin: 0.25rem 0 0;
	font-family: var(--fpst-ui);
	font-size: 0.78rem;
	color: var(--wp--preset--color--muted);
}
.fpst-rail-rt { color: var(--wp--preset--color--muted); }

/* Meteo Viterbo nella barra data (weather.js). */
.fpst-topbar__left { display: inline-flex; align-items: center; gap: 0.7rem; }
.fpst-topbar__weather {
	font-weight: 700;
	color: var(--wp--preset--color--ink);
	letter-spacing: 0.02em;
}
.fpst-topbar__weather[hidden] { display: none; }

/* ==========================================================================
   Footer ridisegnato (modalità testata): scuro/premium invece del blu piatto,
   filo accent in cima, intestazioni colonne in Inter, separatore corretto.
   Scoped .fpst-news → i siti brand del cluster tengono il footer accent+scudo.
   ========================================================================== */
.fpst-news .fpst-footer {
	background: #14161a !important;
	border-top: 3px solid var(--wp--preset--color--accent);
	color: #cfd3d9;
}
.fpst-news .fpst-footer__brand,
.fpst-news .fpst-footer__brand a {
	font-family: var(--fpst-serif);
	color: #fff;
}
.fpst-news .fpst-footer__tagline { color: #9aa4ad; }
.fpst-news .fpst-footer__h {
	font-family: var(--fpst-ui);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--gold);
	margin-bottom: 0.9rem;
}
.fpst-news .fpst-footer__nav a,
.fpst-news .fpst-footer__pages a {
	color: #cfd3d9;
	opacity: 1;
}
.fpst-news .fpst-footer__nav a:hover,
.fpst-news .fpst-footer__pages a:hover { color: #fff; }
.fpst-news .fpst-footer__pages { list-style: none; margin: 0; padding: 0; }
.fpst-news .fpst-footer__pages li { padding: 0.18rem 0; }
/* Separatore: WP rende i separator di default come lineetta corta centrata —
   forziamo la riga piena e discreta. */
.fpst-news .fpst-footer__rule {
	max-width: none !important;
	width: 100% !important;
	margin-inline: 0 !important;
	border: 0;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	background: none !important;
	opacity: 1;
	color: transparent;
}
.fpst-news .fpst-footer__bottom { color: #8a929b; }
.fpst-news .fpst-footer__bottom p { margin: 0; font-size: 0.82rem; }
.fpst-news .fpst-footer__social .wp-social-link { color: #cfd3d9; }
.fpst-news .fpst-footer__social .wp-social-link:hover { color: #fff; }

/* ==========================================================================
   Passata UI/UX: pagine statiche leggibili, 404 curato, meteo più visibile.
   ========================================================================== */

/* Pagine statiche (Contatti, Chi Siamo, Privacy…): colonna a misura di lettura
   invece che a tutta larghezza (righe troppo lunghe = affaticanti). */
.fpst-news .fpst-page-main {
	max-width: 46rem;
	margin-inline: auto;
}
.fpst-news .fpst-page-main .wp-block-post-content { font-size: 1.05rem; line-height: 1.65; }
.fpst-news .fpst-page-main h1.wp-block-post-title { margin-bottom: 0; }

/* 404: blocco centrato e ordinato invece di elementi sparsi a tutta larghezza. */
.fpst-news .fpst-404-main {
	max-width: 34rem;
	margin-inline: auto;
	text-align: center;
}
.fpst-news .fpst-404__code {
	font-family: var(--fpst-serif);
	font-size: clamp(4rem, 12vw, 7rem) !important;
	line-height: 1;
	color: var(--wp--preset--color--accent);
	margin: 0;
}
.fpst-news .fpst-404__title {
	font-family: var(--fpst-serif);
	color: var(--wp--preset--color--ink);
	margin: 0.2em 0 0.4em;
}
.fpst-news .fpst-404__text { color: var(--wp--preset--color--muted); margin: 0 auto; }
.fpst-news .fpst-404__search { max-width: 26rem; margin-inline: auto; }
.fpst-news .fpst-404-main .wp-block-buttons { justify-content: center; }

/* Meteo nella barra data: più leggibile, con separatore dalla data. */
.fpst-topbar__left { gap: 0.85rem; }
.fpst-topbar__weather {
	position: relative;
	padding-left: 0.85rem;
	font-size: 0.8rem;
}
.fpst-topbar__weather::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 1px;
	height: 0.9em;
	background: var(--wp--preset--color--line);
}

/* ==========================================================================
   Passata di innovazione grafica: barra lettura, capolettera, pallino "in
   diretta", sollevamento card, entrata sezioni allo scroll.
   ========================================================================== */

/* Barra di avanzamento lettura in cima all'articolo (innovate.js). */
.fpst-progress {
	position: fixed;
	inset: 0 0 auto 0;
	height: 3px;
	z-index: 200;
	pointer-events: none;
	background: transparent;
}
.fpst-progress__fill {
	display: block;
	height: 100%;
	transform: scaleX(0);
	transform-origin: left center;
	background: linear-gradient(90deg, var(--wp--preset--color--accent), var(--wp--preset--color--gold));
	transition: transform 0.08s linear;
}

/* Capolettera editoriale sul primo paragrafo dell'articolo.
   `first-of-type` e non `first-child`: davanti al testo può esserci il box
   "In breve", che altrimenti farebbe perdere il capolettera.
   `:not(.fpst-credit)`: esclude la riga di credito foto — se il corpo non ha
   `<p>` diretti (testo in `<span>`), il credito sarebbe l'unico `p:first-of-type`
   e prenderebbe il capolettera per errore. */
.fpst-news.single .wp-block-post-content > p:first-of-type:not(.fpst-credit)::first-letter {
	float: left;
	margin: 0.02em 0.12em 0 0;
	font-family: var(--fpst-serif);
	font-size: 3.6em;
	line-height: 0.78;
	font-weight: 700;
	color: var(--wp--preset--color--accent);
}

/* Riga di credito foto in coda all'articolo: didascalia piccola e tenue,
   mai capolettera. */
.fpst-news .fpst-credit {
	margin-top: 1.2em;
	font-size: 0.82em;
	color: var(--fpst-muted, #667085);
}
.fpst-news .fpst-credit::first-letter {
	float: none;
	font-size: inherit;
	font-weight: inherit;
	color: inherit;
}

/* Pallino "in diretta" pulsante accanto a "Ultime" nel ticker. */
.fpst-ticker__label::before {
	content: "";
	width: 7px;
	height: 7px;
	margin-right: 0.5em;
	border-radius: 50%;
	background: #e00;
	box-shadow: 0 0 0 0 rgba(238, 0, 0, 0.55);
	animation: fpst-live-pulse 1.7s ease-out infinite;
}
@keyframes fpst-live-pulse {
	0%   { box-shadow: 0 0 0 0 rgba(238, 0, 0, 0.55); }
	70%  { box-shadow: 0 0 0 7px rgba(238, 0, 0, 0); }
	100% { box-shadow: 0 0 0 0 rgba(238, 0, 0, 0); }
}

/* Sollevamento morbido delle card compatte all'hover (oltre allo zoom foto). */
@media (prefers-reduced-motion: no-preference) {
	.fpst-cardlist__item,
	.fpst-grid-dense__item {
		transition: transform 0.2s ease;
	}
	.fpst-cardlist__item:hover,
	.fpst-grid-dense__item:hover {
		transform: translateY(-3px);
	}
}

/* Entrata in dissolvenza delle sezioni categoria allo scroll (reveal.js le
   marca con .fpst-reveal; qui il fade-up è già definito sopra per .fpst-reveal). */

@media (prefers-reduced-motion: reduce) {
	.fpst-ticker__label::before { animation: none; }
	.fpst-progress { display: none; }
}

/* ==========================================================================
   Rifinitura editoriale: header archivio nel colore della sezione + corpo
   articolo "da rivista" (citazioni, didascalie, liste).
   ========================================================================== */

/* La barra accent della testata archivio prende il colore della categoria
   (WP aggiunge la body class `category-{slug}` sugli archivi di categoria). */
.fpst-news.category-politica h1.wp-block-query-title::before          { background: var(--fpst-c-politica); }
.fpst-news.category-provincia h1.wp-block-query-title::before         { background: var(--fpst-c-provincia); }
.fpst-news.category-ambiente h1.wp-block-query-title::before          { background: var(--fpst-c-ambiente); }
.fpst-news.category-economia-e-lavoro h1.wp-block-query-title::before { background: var(--fpst-c-economia); }
.fpst-news.category-cultura h1.wp-block-query-title::before           { background: var(--fpst-c-cultura); }
.fpst-news.category-mondo h1.wp-block-query-title::before             { background: var(--fpst-c-mondo); }
.fpst-news.category-italia h1.wp-block-query-title::before            { background: var(--fpst-c-italia); }
.fpst-news.category-idee h1.wp-block-query-title::before              { background: var(--fpst-c-idee); }
.fpst-news.category-libri h1.wp-block-query-title::before             { background: var(--fpst-c-libri); }

/* Citazione come "pull-quote" editoriale (Fraunces, filetto accent). */
.fpst-news .wp-block-post-content .wp-block-quote {
	margin: 1.8rem 0;
	padding: 0.2rem 0 0.2rem 1.4rem;
	border-left: 4px solid var(--wp--preset--color--accent);
	font-family: var(--fpst-serif);
	font-size: clamp(1.2rem, 2.4vw, 1.5rem);
	line-height: 1.35;
	color: var(--wp--preset--color--ink);
}
.fpst-news .wp-block-post-content .wp-block-quote p { margin: 0 0 0.4rem; }
.fpst-news .wp-block-post-content .wp-block-pullquote {
	border: 0;
	border-top: 3px solid var(--wp--preset--color--accent);
	border-bottom: 3px solid var(--wp--preset--color--accent);
	padding: 1.4rem 0;
	text-align: center;
}
.fpst-news .wp-block-post-content .wp-block-pullquote p {
	font-family: var(--fpst-serif);
	font-size: clamp(1.4rem, 3vw, 2rem);
	line-height: 1.25;
	color: var(--wp--preset--color--ink);
}

/* Didascalie immagini: piccole, muted, con filetto sopra. */
.fpst-news .wp-block-post-content figure figcaption,
.fpst-news .wp-block-post-content .wp-block-image figcaption {
	margin-top: 0.5rem;
	padding-top: 0.4rem;
	border-top: 1px solid var(--wp--preset--color--line);
	font-family: var(--fpst-ui);
	font-size: 0.82rem;
	color: var(--wp--preset--color--muted);
	text-align: left;
}

/* Immagini nel corpo: angoli coerenti + leggera ombra. */
.fpst-news .wp-block-post-content .wp-block-image img {
	border-radius: 3px;
}

/* Liste articolo: spaziatura respirata, marcatori accent. */
.fpst-news .wp-block-post-content ul,
.fpst-news .wp-block-post-content ol {
	padding-left: 1.3rem;
	line-height: 1.6;
}
.fpst-news .wp-block-post-content ul li::marker { color: var(--wp--preset--color--accent); }
.fpst-news .wp-block-post-content li { margin: 0.35rem 0; }

/* Prima notizia di ogni sezione più prominente (gerarchia editoriale): foto
   grande in cima + titolo più grande, invece di tutte le card uguali. */
.fpst-section-row .fpst-cardlist > .wp-block-post:first-child .fpst-cardlist__item {
	grid-template-columns: 1fr;
	gap: 0.5rem;
}
.fpst-section-row .fpst-cardlist > .wp-block-post:first-child .fpst-cardlist__img img {
	width: 100%;
	height: 190px;
}
.fpst-section-row .fpst-cardlist > .wp-block-post:first-child .fpst-cardlist__title {
	font-size: 1.18rem;
	line-height: 1.25;
}

/* Pulsante "torna su" (innovate.js). */
.fpst-totop {
	position: fixed;
	/* Safe-area: sui telefoni con angoli arrotondati / barra home il pulsante a
	   22px dal bordo finiva sotto quella zona e appariva tagliato. */
	bottom: calc(22px + env(safe-area-inset-bottom, 0px));
	right: calc(22px + env(safe-area-inset-right, 0px));
	z-index: 150;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	color: #fff;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.28);
	transition: opacity 0.2s ease, transform 0.2s ease, background 0.15s ease;
}
.fpst-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.fpst-totop:hover { background: color-mix(in srgb, var(--wp--preset--color--accent) 82%, black); }
.fpst-totop:focus-visible { outline: 2px solid var(--wp--preset--color--gold); outline-offset: 2px; }
@media (max-width: 600px) {
	.fpst-totop {
		bottom: calc(16px + env(safe-area-inset-bottom, 0px));
		right: calc(16px + env(safe-area-inset-right, 0px));
		width: 40px;
		height: 40px;
	}
}

/* ── Sondaggio civico ─────────────────────────────────────────────────────── */
.fpst-news .fpst-poll {
	border: 1px solid var(--fpst-line, #e2ddd3);
	border-top: 3px solid var(--fpst-accent, #0026ff);
	border-radius: 10px;
	padding: 1.1rem 1.15rem 1.25rem;
	background: #fff;
}
.fpst-news .fpst-poll__head { margin-bottom: 0.5rem; }
.fpst-news .fpst-poll__kicker {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--fpst-accent, #0026ff);
}
.fpst-news .fpst-poll__q {
	font-family: var(--fpst-serif, serif);
	font-size: 1.12rem;
	font-weight: 600;
	line-height: 1.3;
	margin: 0 0 0.85rem;
	color: var(--fpst-ink, #1a1a1a);
}
/* Testo di contesto sotto la domanda (facoltativo): spiega di cosa si tratta */
.fpst-news .fpst-poll__desc {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.9rem;
	line-height: 1.5;
	margin: -0.35rem 0 0.95rem;
	color: var(--fpst-muted, #6b6b6b);
}
:root[data-theme="dark"] .fpst-news .fpst-poll__desc { color: #a7abb3; }
.fpst-news .fpst-poll__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}
.fpst-news .fpst-poll__opt { position: relative; }
.fpst-news .fpst-poll__label {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.92rem;
	line-height: 1.3;
	cursor: pointer;
	padding: 0.5rem 0.65rem;
	border: 1px solid var(--fpst-line, #e2ddd3);
	border-radius: 7px;
	transition: border-color 0.15s ease, background 0.15s ease;
}
.fpst-news .fpst-poll__label:hover { border-color: var(--fpst-accent, #0026ff); }
.fpst-news .fpst-poll__label input { accent-color: var(--fpst-accent, #0026ff); flex: 0 0 auto; }
.fpst-news .fpst-poll__text { flex: 1 1 auto; }
.fpst-news .fpst-poll__pct { display: none; font-weight: 700; color: var(--fpst-accent, #0026ff); font-size: 0.85rem; }
/* Barra risultati: nascosta finché non si è votato */
.fpst-news .fpst-poll__bar { display: none; }

/* Stato "manca selezione" */
.fpst-news .fpst-poll.is-needsel .fpst-poll__label { border-color: color-mix(in srgb, var(--fpst-accent, #0026ff) 45%, #fff); }

/* Pulsante Vota */
.fpst-news .fpst-poll__vote {
	margin-top: 0.9rem;
	width: 100%;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.9rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	color: #fff;
	background: var(--fpst-accent, #0026ff);
	border: 0;
	border-radius: 7px;
	padding: 0.6rem 1rem;
	cursor: pointer;
	transition: background 0.15s ease;
}
.fpst-news .fpst-poll__vote:hover { background: color-mix(in srgb, var(--fpst-accent, #0026ff) 82%, #000); }
.fpst-news .fpst-poll__vote:disabled { opacity: 0.6; cursor: default; }
.fpst-news .fpst-poll__total {
	display: none;
	margin: 0.75rem 0 0;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.78rem;
	color: var(--fpst-muted, #6b6b6b);
	text-align: right;
}

/* ── Dopo il voto ─────────────────────────────────────────────────────────── */
.fpst-news .fpst-poll.is-voted .fpst-poll__vote { display: none; }
.fpst-news .fpst-poll.is-voted .fpst-poll__total { display: block; }
.fpst-news .fpst-poll.is-voted .fpst-poll__label {
	cursor: default;
	border-color: transparent;
	padding: 0.35rem 0.65rem 0.15rem;
	background: none;
}
.fpst-news .fpst-poll.is-voted .fpst-poll__label:hover { border-color: transparent; }
.fpst-news .fpst-poll.is-voted .fpst-poll__label input { display: none; }
.fpst-news .fpst-poll.is-voted .fpst-poll__pct { display: inline; }
.fpst-news .fpst-poll.is-voted .fpst-poll__bar {
	display: block;
	height: 8px;
	margin: 0 0.65rem;
	border-radius: 5px;
	background: color-mix(in srgb, var(--fpst-accent, #0026ff) 12%, #fff);
	overflow: hidden;
}
.fpst-news .fpst-poll.is-voted .fpst-poll__fill {
	display: block;
	height: 100%;
	border-radius: 5px;
	background: color-mix(in srgb, var(--fpst-accent, #0026ff) 45%, #fff);
	transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.fpst-news .fpst-poll.is-voted .fpst-poll__opt.is-top .fpst-poll__fill { background: var(--fpst-accent, #0026ff); }
.fpst-news .fpst-poll.is-voted .fpst-poll__opt.is-top .fpst-poll__text { font-weight: 700; }

/* Sondaggio — modalità scura */
:root[data-theme="dark"] .fpst-news .fpst-poll { background: #16181d; }
:root[data-theme="dark"] .fpst-news .fpst-poll__q { color: #e9eaec; }
:root[data-theme="dark"] .fpst-news .fpst-poll__label { border-color: #2a2d34; }
:root[data-theme="dark"] .fpst-news .fpst-poll.is-voted .fpst-poll__bar { background: color-mix(in srgb, var(--fpst-accent, #5566ff) 22%, #16181d); }

/* ── Eventi della Tuscia ─────────────────────────────────────────────────────── */
.fpst-news .fpst-eventi { max-width: 100%; }
.fpst-news .fpst-eventi__title {
	font-family: var(--fpst-serif, serif);
	font-size: clamp(1.5rem, 3vw, 2rem);
	margin: 0 0 1rem;
}
.fpst-news .fpst-eventi--empty p {
	font-family: var(--fpst-ui, sans-serif);
	color: var(--fpst-muted, #6b6b6b);
	padding: 1.5rem;
	border: 1px dashed var(--fpst-line, #e2ddd3);
	border-radius: 10px;
	text-align: center;
}
.fpst-news .fpst-eventi__day {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--fpst-accent, #0026ff);
	margin: 1.6rem 0 0.6rem;
	padding-bottom: 0.35rem;
	border-bottom: 2px solid var(--fpst-accent, #0026ff);
}
.fpst-news .fpst-eventi__daynote { font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--fpst-muted, #6b6b6b); }

/* Barra filtri per categoria (chip) */
.fpst-news .fpst-eventi__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 0.5rem;
}
.fpst-news .fpst-eventi__chip {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.82rem;
	font-weight: 700;
	line-height: 1;
	padding: 0.5rem 0.9rem;
	border: 1px solid var(--fpst-line, #e2ddd3);
	border-radius: 999px;
	background: #fff;
	color: var(--fpst-ink, #1a1a1a);
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.fpst-news .fpst-eventi__chip:hover { border-color: var(--fpst-accent, #0026ff); }
.fpst-news .fpst-eventi__chip.is-active {
	background: var(--fpst-accent, #0026ff);
	border-color: var(--fpst-accent, #0026ff);
	color: #fff;
}

.fpst-news .fpst-eventi__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.7rem; }
.fpst-news .fpst-evento {
	display: flex;
	gap: 0;
	overflow: hidden;
	border: 1px solid var(--fpst-line, #e2ddd3);
	border-left: 3px solid var(--fpst-gold, #ffcc00);
	border-radius: 10px;
	background: #fff;
}
.fpst-news .fpst-evento::before { content: none; }
.fpst-news .fpst-evento__media {
	flex: 0 0 128px;
	align-self: stretch;
	background: var(--fpst-surface, #f2f0ea);
}
.fpst-news .fpst-evento__media img {
	width: 100%;
	height: 100%;
	min-height: 128px;
	object-fit: cover;
	display: block;
}
.fpst-news .fpst-evento__body { flex: 1 1 auto; padding: 0.9rem 1rem; min-width: 0; }
.fpst-news .fpst-evento__badge {
	display: inline-block;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.66rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--fpst-accent, #0026ff);
	background: color-mix(in srgb, var(--fpst-accent, #0026ff) 10%, #fff);
	padding: 0.2rem 0.5rem;
	border-radius: 4px;
	margin-bottom: 0.35rem;
}
.fpst-news .fpst-evento__name {
	font-family: var(--fpst-serif, serif);
	font-size: 1.08rem;
	font-weight: 700;
	line-height: 1.3;
	margin: 0 0 0.25rem;
	color: var(--fpst-ink, #1a1a1a);
}
.fpst-news .fpst-evento__meta {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.82rem;
	font-weight: 600;
	color: var(--fpst-accent, #0026ff);
	margin: 0 0 0.35rem;
}
.fpst-news .fpst-evento__summary {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.9rem;
	line-height: 1.5;
	color: var(--fpst-ink, #2a2a2a);
	margin: 0 0 0.4rem;
}
.fpst-news .fpst-evento__source {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--fpst-accent, #0026ff);
	text-decoration: none;
}
.fpst-news .fpst-evento__source:hover { text-decoration: underline; }
@media (max-width: 520px) {
	.fpst-news .fpst-evento__media { flex-basis: 96px; }
	.fpst-news .fpst-evento__media img { min-height: 96px; }
}
:root[data-theme="dark"] .fpst-news .fpst-evento { background: #16181d; border-color: #2a2d34; }
:root[data-theme="dark"] .fpst-news .fpst-evento__name { color: #e9eaec; }
:root[data-theme="dark"] .fpst-news .fpst-evento__summary { color: #c7cad0; }
:root[data-theme="dark"] .fpst-news .fpst-eventi__chip { background: #16181d; border-color: #2a2d34; color: #e9eaec; }
:root[data-theme="dark"] .fpst-news .fpst-evento__media { background: #22252b; }

/* ── Mini-sondaggio a fine articolo (D'accordo / Non d'accordo) ─────────────── */
.fpst-news .fpst-micropoll {
	box-sizing: border-box;
	max-width: 100%;
	margin: 2rem 0 1.5rem;
	padding: 1.1rem 1.2rem 1.2rem;
	border: 1px solid var(--fpst-line, #e2ddd3);
	border-left: 3px solid var(--fpst-accent, #0026ff);
	border-radius: 10px;
	background: color-mix(in srgb, var(--fpst-accent, #0026ff) 4%, #fff);
}
.fpst-news .fpst-micropoll__label {
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--fpst-accent, #0026ff);
	margin: 0 0 0.35rem;
}
.fpst-news .fpst-micropoll__q {
	font-family: var(--fpst-serif, serif);
	font-size: 1.1rem;
	font-weight: 600;
	line-height: 1.35;
	margin: 0 0 0.95rem;
	color: var(--fpst-ink, #1a1a1a);
}
.fpst-news .fpst-micropoll__actions {
	display: flex;
	gap: 0.6rem;
}
.fpst-news .fpst-micropoll__btn {
	flex: 1 1 0;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.92rem;
	font-weight: 700;
	line-height: 1.2;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--fpst-accent, #0026ff);
	border-radius: 8px;
	background: #fff;
	color: var(--fpst-accent, #0026ff);
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.fpst-news .fpst-micropoll__btn:hover { background: var(--fpst-accent, #0026ff); color: #fff; }
.fpst-news .fpst-micropoll__btn:disabled { opacity: 0.55; cursor: default; }

/* Risultati: nascosti finché non si vota */
.fpst-news .fpst-micropoll__results { display: none; margin-top: 0.25rem; }
.fpst-news .fpst-micropoll__row {
	display: flex;
	align-items: center;
	gap: 0.65rem;
	padding: 0.4rem 0;
}
.fpst-news .fpst-micropoll__rowlabel {
	flex: 0 0 8.5rem;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.9rem;
	color: var(--fpst-ink, #1a1a1a);
}
.fpst-news .fpst-micropoll__bar {
	flex: 1 1 auto;
	height: 8px;
	border-radius: 5px;
	background: color-mix(in srgb, var(--fpst-accent, #0026ff) 12%, #fff);
	overflow: hidden;
}
.fpst-news .fpst-micropoll__fill {
	display: block;
	height: 100%;
	border-radius: 5px;
	background: color-mix(in srgb, var(--fpst-accent, #0026ff) 45%, #fff);
	transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.fpst-news .fpst-micropoll__row.is-top .fpst-micropoll__fill { background: var(--fpst-accent, #0026ff); }
.fpst-news .fpst-micropoll__row.is-top .fpst-micropoll__rowlabel { font-weight: 700; }
.fpst-news .fpst-micropoll__pct {
	flex: 0 0 auto;
	font-family: var(--fpst-ui, sans-serif);
	font-weight: 700;
	font-size: 0.85rem;
	color: var(--fpst-accent, #0026ff);
	min-width: 2.6rem;
	text-align: right;
}
.fpst-news .fpst-micropoll__total {
	display: none;
	margin: 0.6rem 0 0;
	font-family: var(--fpst-ui, sans-serif);
	font-size: 0.78rem;
	color: var(--fpst-muted, #6b6b6b);
	text-align: right;
}
.fpst-news .fpst-micropoll.is-voted .fpst-micropoll__actions { display: none; }
.fpst-news .fpst-micropoll.is-voted .fpst-micropoll__results { display: block; }
.fpst-news .fpst-micropoll.is-voted .fpst-micropoll__total { display: block; }

@media (max-width: 480px) {
	.fpst-news .fpst-micropoll__rowlabel { flex-basis: 7rem; }
}

/* Mini-sondaggio — modalità scura */
:root[data-theme="dark"] .fpst-news .fpst-micropoll {
	background: color-mix(in srgb, var(--fpst-accent, #5566ff) 10%, #16181d);
	border-color: #2a2d34;
}
:root[data-theme="dark"] .fpst-news .fpst-micropoll__q { color: #e9eaec; }
:root[data-theme="dark"] .fpst-news .fpst-micropoll__rowlabel { color: #e9eaec; }
:root[data-theme="dark"] .fpst-news .fpst-micropoll__btn { background: #16181d; }
:root[data-theme="dark"] .fpst-news .fpst-micropoll__bar { background: color-mix(in srgb, var(--fpst-accent, #5566ff) 22%, #16181d); }

/* Fascia Approfondimenti: n. colonne = n. card, così pochi articoli riempiono
   la fascia colorata invece di lasciare colonne vuote a destra. */
.fpst-appr__grid--1 { grid-template-columns: minmax(0, 420px); }
.fpst-appr__grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fpst-appr__grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.fpst-appr__grid--1 .fpst-appr__img,
.fpst-appr__grid--2 .fpst-appr__img { height: 210px; }
.fpst-appr__grid--1 .fpst-appr__title,
.fpst-appr__grid--2 .fpst-appr__title { font-size: 1.22rem; }
@media (max-width: 900px) {
	.fpst-appr__grid--2,
	.fpst-appr__grid--3,
	.fpst-appr__grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
	.fpst-appr__grid--1,
	.fpst-appr__grid--2,
	.fpst-appr__grid--3,
	.fpst-appr__grid--4 { grid-template-columns: 1fr; }
	.fpst-appr__grid--1 .fpst-appr__img,
	.fpst-appr__grid--2 .fpst-appr__img { height: 180px; }
}

/* ── Slider "in evidenza": full-bleed (edge-to-edge) e più alto ──────────────
   Il gruppo è reso `align:full` nel contenuto home, quindi arriva ai bordi
   viewport (root-padding-aware, niente scroll orizzontale). Qui: angoli vivi
   e altezza maggiore — quasi quadrato su mobile come richiesto. */
.fpst-featured-slider .fpst-slide { border-radius: 0; }
/* 38vw (non 42): con lo slider piu' alto il payoff sotto finiva fuori schermo
   su desktop. Cosi' resta above the fold senza sacrificare l'impatto. */
.fpst-featured-slider .fpst-slide__img { height: clamp(400px, 36vw, 580px); }
@media (max-width: 781px) {
	/* Quasi quadrato: la slide è larga 100vw, l'altezza la insegue (cap 600). */
	/* Altezza legata all'ALTEZZA dello schermo, non alla larghezza: cosi' lo
	   slider riempie da solo la prima schermata e la foto dell'articolo dopo
	   resta sotto la piega su ogni telefono. 355px = testata + ticker + payoff
	   + respiro. `svh` = viewport "piccolo" (con le barre del browser visibili). */
	.fpst-featured-slider .fpst-slide__img {
		/* -354px: 292 (testata+payoff+respiro) + 62 della barra fissa in fondo. */
		height: clamp(300px, calc(100svh - 354px), 640px);
	}
	/* Slider attaccato al ticker, senza stacco. */
	.fpst-featured-slider { margin-top: 0 !important; }
}

/* ── Ticker "ULTIME": full-bleed solo su mobile ──────────────────────────────
   Il gruppo è `align:full` come lo slider. Su desktop lo ri-conteniamo alla
   larghezza dei contenuti (aspetto invariato); su mobile resta edge-to-edge,
   come una fascia (via bordi/angoli laterali). */
@media (min-width: 782px) {
	.fpst-ticker-wrap.alignfull {
		max-width: var(--wp--style--global--content-size, 1180px);
		margin-left: auto;
		margin-right: auto;
	}
}
@media (max-width: 781px) {
	/* Fascia a tutta larghezza: via bordi e angoli laterali, resta la riga
	   sopra/sotto per staccare dal resto. */
	.fpst-ticker-wrap.alignfull .fpst-ticker {
		border-left: 0;
		border-right: 0;
		border-radius: 0;
	}
	/* Attaccato sopra (header) e sotto (slider): nessun margine verticale. */
	.fpst-ticker-wrap.alignfull { margin-top: 0 !important; margin-bottom: 0 !important; }
}

/* ── Blocco di apertura: etichetta "Altre notizie" + rail più leggibile ──────
   La lista laterale (rail) su mobile diventava un elenco fitto di titoli a 14px
   subito sotto la notizia grande, senza separazione → poco chiaro. Aggiunta
   un'etichetta di sezione e titoli più grandi/arieggiati su mobile. */
.fpst-news .fpst-lead__rail-label {
	margin: 0 0 0.9rem;
	padding-bottom: 0.4rem;
	font-family: var(--fpst-ui);
	font-weight: 800;
	font-size: 0.82rem;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink);
	border-bottom: 2px solid var(--wp--preset--color--accent);
}
@media (max-width: 781px) {
	/* Titoli rail: da 14px a ~16.5px, più respiro tra le voci. */
	.fpst-news .fpst-lead__rail-title { font-size: 1.03rem; line-height: 1.32; }
	.fpst-news .fpst-lead__rail-item { padding-block: 0.35rem 0.5rem; }
	.fpst-news .fpst-lead__rail-date { font-size: 0.84rem; }
	/* Un po' di stacco tra la notizia grande e "Altre notizie". */
	.fpst-news .fpst-lead__rail-label { margin-top: 0.6rem; }
}

/* ── Card compatte sezioni: testo allineato in alto con la miniatura ─────────
   Il `.fpst-cardlist__body` è il 2° figlio di un gruppo `is-layout-constrained`,
   quindi WP gli applica un margin-block-start (block-gap ~24px). Dentro la
   griglia questo spinge in basso titolo+data disallineandoli dalla foto.
   Azzerato: la spaziatura viene già dal `gap` della griglia (colonna per le
   card compatte, riga per la card in evidenza). */
.fpst-cardlist__body { margin-block-start: 0; }

/* ── Allineamento liste + immagine articolo in evidenza full-bleed su mobile ──
   Le liste post-template (card di sezione, apertura, rail) avevano un
   padding-inline-start residuo (~20px) da <ul>, che spostava a destra le card
   rispetto ai titoli di sezione. Azzerato: tutto allineato al bordo contenuti. */
.fpst-news .fpst-cardlist,
.fpst-news .fpst-lead__main,
.fpst-news .fpst-lead__rail { padding-inline-start: 0 !important; }

@media (max-width: 781px) {
	/* Immagine dell'articolo in evidenza (apertura + prima card di ogni sezione)
	   a tutta larghezza, edge-to-edge (root padding = spacing|50). `!important`
	   perché il margine delle figure è forzato da un altro foglio (Kit/core). */
	.fpst-news .fpst-lead__img,
	.fpst-news .fpst-section-row .fpst-cardlist > .wp-block-post:first-child .fpst-cardlist__img {
		margin-left: calc(var(--wp--preset--spacing--50) * -1) !important;
		margin-right: calc(var(--wp--preset--spacing--50) * -1) !important;
		max-width: none !important;
		width: auto !important;
		border-radius: 0 !important;
	}
	.fpst-news .fpst-lead__img img,
	.fpst-news .fpst-section-row .fpst-cardlist > .wp-block-post:first-child .fpst-cardlist__img img {
		width: 100% !important;
		border-radius: 0 !important;
	}
}

/* Sondaggio: è un <div> grezzo (non un blocco WP) quindi non eredita il
   border-box → width + padding sforavano il contenitore causando scroll
   orizzontale su mobile. Forzato border-box. */
.fpst-news .fpst-poll { box-sizing: border-box; max-width: 100%; }

/* ── "Altre notizie": card compatte con miniatura (non più solo testo) ───────
   La lista solo-testo risultava povera e fuori scala col resto del sito, dove
   ogni notizia ha la sua foto. Stessa griglia delle card di sezione:
   miniatura a sinistra, pill + titolo + data a destra. */
.fpst-news .fpst-lead__rail-item {
	display: grid;
	grid-template-columns: 88px minmax(0, 1fr);
	gap: 0.8rem;
	align-items: start;
}
/* Articolo senza immagine in evidenza: il testo prende tutta la larghezza. */
.fpst-news .fpst-lead__rail-item:not(:has(.fpst-lead__rail-img)) {
	grid-template-columns: minmax(0, 1fr);
}
.fpst-news .fpst-lead__rail-img {
	margin: 0;
	overflow: hidden;
	border-radius: 3px;
}
.fpst-news .fpst-lead__rail-img img {
	display: block;
	width: 88px;
	height: 64px;
	object-fit: cover;
	transition: transform 0.35s ease;
}
.fpst-news .fpst-lead__rail-item:hover .fpst-lead__rail-img img { transform: scale(1.05); }
/* Stesso gotcha delle card: il body è 2° figlio → WP gli mette block-gap. */
.fpst-news .fpst-lead__rail-body {
	margin-block-start: 0;
	min-width: 0;
}
/* Pill categoria più contenuta in questo contesto stretto. */
.fpst-news .fpst-lead__rail-body .wp-block-post-terms { margin-bottom: 0.3em; }

/* Approfondimenti: foto più grandi. Con 1-2 card le immagini erano troppo
   schiacciate (210px su card larghe ~590px); ora seguono la larghezza e
   restano vicine al 16:9. Anche le griglie a 3-4 card guadagnano altezza. */
.fpst-appr__img { height: 170px; }
.fpst-appr__grid--1 .fpst-appr__img,
.fpst-appr__grid--2 .fpst-appr__img { height: clamp(220px, 26vw, 340px); }
@media (max-width: 520px) {
	.fpst-appr__img { height: 190px; }
	.fpst-appr__grid--1 .fpst-appr__img,
	.fpst-appr__grid--2 .fpst-appr__img { height: 210px; }
}

/* ── Box "In breve" (riassunto in cima all'articolo) ─────────────────────────── */
.fpst-news .fpst-summary {
	margin: 0 0 2rem;
	padding: 1.1rem 1.25rem 1.2rem;
	border-left: 4px solid var(--wp--preset--color--accent);
	border-radius: 0 4px 4px 0;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 5%, #fff);
}
.fpst-news .fpst-summary__label {
	margin: 0 0 0.6rem;
	font-family: var(--fpst-ui);
	font-size: 0.76rem;
	font-weight: 800;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent);
}
.fpst-news .fpst-summary__list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.55rem;
}
.fpst-news .fpst-summary__list li {
	position: relative;
	margin: 0;
	padding-left: 1.15rem;
	font-family: var(--fpst-ui);
	font-size: 0.98rem;
	line-height: 1.45;
	color: var(--wp--preset--color--ink);
	list-style: none;
}
/* Pallino accent (il tema azzera i marker delle liste: disegnato a mano). */
.fpst-news .fpst-summary__list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}
:root[data-theme="dark"] .fpst-news .fpst-summary {
	background: #1a1d24;
}
:root[data-theme="dark"] .fpst-news .fpst-summary__list li { color: #e9eaec; }
@media (max-width: 600px) {
	.fpst-news .fpst-summary { padding: 1rem 1.05rem; margin-bottom: 1.6rem; }
	.fpst-news .fpst-summary__list li { font-size: 0.94rem; }
}

/* Card in evidenza di sezione: la figura non si allargava alla cella della
   griglia, così la sua larghezza veniva dedotta dall'immagine (altezza 190px x
   proporzione ~= 338px) e restava rientrata/centrata rispetto al titolo.
   Forzata a piena larghezza: foto allineata ai margini del titolo. */
.fpst-section-row .fpst-cardlist > .wp-block-post:first-child .fpst-cardlist__img {
	width: 100%;
	justify-self: stretch;
	box-sizing: border-box;
}

/* Radice del disallineamento nelle card: i figli (figura e body) sono
   contenitori di layout WP `is-layout-constrained`, quindi ricevono
   `margin-inline: auto` + `max-width`. Dentro una griglia questo li fa
   restringere al contenuto e centrare nella cella → foto e titolo rientrati e
   non allineati tra loro. Forzati a riempire la propria cella. */
.fpst-cardlist__item > *,
.fpst-lead__rail-item > * {
	margin-inline: 0;
	max-width: none;
	width: 100%;
	box-sizing: border-box;
}

/* Logo testata più grande su desktop (su mobile resta contenuto: l'header
   sticky non deve rubare schermo). */
@media (min-width: 782px) {
	.fpst-news .fpst-header__logo img { max-height: 92px; }
}

/* ── Richiamo segnalazioni in fondo agli articoli ────────────────────────────── */
.fpst-news .fpst-tipcta {
	margin: 2.5rem 0 0;
	padding: 1.5rem 1.6rem;
	border-radius: 4px;
	background: var(--wp--preset--color--accent);
	color: #fff;
}
.fpst-news .fpst-tipcta__label {
	margin: 0 0 0.4rem;
	font-family: var(--fpst-ui);
	font-size: 0.74rem;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}
.fpst-news .fpst-tipcta__text {
	margin: 0 0 1rem;
	font-family: var(--fpst-serif);
	font-size: 1.18rem;
	line-height: 1.35;
	color: #fff;
}
.fpst-news .fpst-tipcta__btn {
	display: inline-block;
	padding: 0.6rem 1.3rem;
	border-radius: 4px;
	background: #fff;
	color: var(--wp--preset--color--accent);
	font-family: var(--fpst-ui);
	font-size: 0.92rem;
	font-weight: 700;
	text-decoration: none;
	transition: background 0.15s ease;
}
.fpst-news .fpst-tipcta__btn:hover { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--ink); }

/* ── Indice dei luoghi (comuni + quartieri) ──────────────────────────────────── */
.fpst-news .fpst-luoghi { margin-bottom: 2.5rem; }
.fpst-news .fpst-luoghi__title {
	margin: 0 0 1rem;
	padding-bottom: 0.5rem;
	font-family: var(--fpst-ui);
	font-size: 0.9rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	border-bottom: 2px solid var(--wp--preset--color--accent);
}
.fpst-news .fpst-luoghi__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
	gap: 0.6rem;
}
.fpst-news .fpst-luoghi__item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.7rem 0.9rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 3px;
	background: #fff;
	text-decoration: none;
	transition: border-color 0.15s ease, transform 0.15s ease;
}
.fpst-news .fpst-luoghi__item:hover {
	border-color: var(--wp--preset--color--accent);
	transform: translateY(-1px);
}
.fpst-news .fpst-luoghi__name {
	font-family: var(--fpst-serif);
	font-weight: 600;
	color: var(--wp--preset--color--ink);
}
.fpst-news .fpst-luoghi__count {
	flex: 0 0 auto;
	min-width: 1.6em;
	padding: 0.1em 0.45em;
	border-radius: 999px;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 10%, #fff);
	color: var(--wp--preset--color--accent);
	font-family: var(--fpst-ui);
	font-size: 0.76rem;
	font-weight: 700;
	text-align: center;
}
:root[data-theme="dark"] .fpst-news .fpst-luoghi__item { background: #1e2127; border-color: #2c3038; }

/* ── "Altre notizie da <luogo>" in fondo all'articolo ────────────────────────── */
.fpst-news .fpst-place {
	margin: 2.5rem 0 0;
	padding: 1.2rem 1.4rem;
	border-left: 4px solid var(--wp--preset--color--gold);
	background: color-mix(in srgb, var(--wp--preset--color--gold) 8%, #fff);
	border-radius: 0 4px 4px 0;
}
.fpst-news .fpst-place__label {
	margin: 0 0 0.7rem;
	font-family: var(--fpst-ui);
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--ink);
}
.fpst-news .fpst-place__list { margin: 0 0 0.9rem; padding: 0; list-style: none; }
.fpst-news .fpst-place__list li { margin: 0 0 0.5rem; list-style: none; }
.fpst-news .fpst-place__list a {
	font-family: var(--fpst-serif);
	font-weight: 600;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
}
.fpst-news .fpst-place__list a:hover { color: var(--wp--preset--color--accent); }
.fpst-news .fpst-place__more {
	font-family: var(--fpst-ui);
	font-size: 0.86rem;
	font-weight: 700;
	color: var(--wp--preset--color--accent);
	text-decoration: none;
}
:root[data-theme="dark"] .fpst-news .fpst-place { background: #1e2127; }
:root[data-theme="dark"] .fpst-news .fpst-place__list a,
:root[data-theme="dark"] .fpst-news .fpst-place__label { color: #e9eaec; }

/* ── "Ascolta l'articolo" ─────────────────────────────────────────────────────
   Il contenitore è vuoto finché listen.js non crea il pulsante: senza sintesi
   vocale nel browser non deve occupare spazio. */
.fpst-news .fpst-listen:empty { display: none; }
.fpst-news .fpst-listen { margin: 0 0 1.5rem; }
.fpst-news .fpst-listen__btn {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	padding: 0.55rem 1.1rem;
	border: 1px solid var(--wp--preset--color--accent);
	border-radius: 999px;
	background: transparent;
	color: var(--wp--preset--color--accent);
	font-family: var(--fpst-ui);
	font-size: 0.88rem;
	font-weight: 700;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.fpst-news .fpst-listen__btn:hover {
	background: var(--wp--preset--color--accent);
	color: #fff;
}
.fpst-news .fpst-listen.is-playing .fpst-listen__btn {
	background: var(--wp--preset--color--accent);
	color: #fff;
}
.fpst-news .fpst-listen__icon { font-size: 0.8em; line-height: 1; }
.fpst-news .fpst-listen__btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--gold);
	outline-offset: 2px;
}

/* ── Fascia di allerta meteo ─────────────────────────────────────────────────── */
.fpst-alert {
	font-family: var(--fpst-ui);
	border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}
.fpst-alert__in {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	/* Stessa larghezza della topbar (content-size, non wide-size): i margini
	   laterali delle due righe in cima devono coincidere. */
	max-width: var(--wp--style--global--content-size, 1180px);
	margin: 0 auto;
	padding: 0.5rem var(--wp--preset--spacing--50);
	font-size: 0.85rem;
}
.fpst-alert__badge {
	flex: 0 0 auto;
	padding: 0.15em 0.6em;
	border-radius: 3px;
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.fpst-alert__text { flex: 1 1 auto; font-weight: 600; }
.fpst-alert__src {
	flex: 0 0 auto;
	font-weight: 700;
	text-decoration: none;
	opacity: 0.75;
}
.fpst-alert__src:hover { opacity: 1; }

/* Livelli: giallo / arancione / rosso (colori della protezione civile). */
.fpst-alert--gialla    { background: #ffd54a; color: #3a2c00; }
.fpst-alert--gialla .fpst-alert__badge { background: #3a2c00; color: #ffd54a; }
.fpst-alert--gialla .fpst-alert__src   { color: #3a2c00; }

.fpst-alert--arancione { background: #f08a24; color: #3a1e00; }
.fpst-alert--arancione .fpst-alert__badge { background: #3a1e00; color: #f08a24; }
.fpst-alert--arancione .fpst-alert__src   { color: #3a1e00; }

.fpst-alert--rossa     { background: #c62828; color: #fff; }
.fpst-alert--rossa .fpst-alert__badge { background: #fff; color: #c62828; }
.fpst-alert--rossa .fpst-alert__src   { color: #fff; }

@media (max-width: 600px) {
	/* Su mobile niente flex: con nowrap + centratura il contenuto sforava a
	   destra. Qui la fascia e' semplicemente una riga di testo centrata.
	   Il rimando alla fonte e' secondario -> nascosto. */
	.fpst-alert__in {
		display: block;
		text-align: center;
		padding-inline: 0.75rem;
		font-size: 0.76rem;
		line-height: 1.4;
	}
	.fpst-alert__src { display: none; }
	.fpst-alert__badge {
		display: inline-block;
		margin-right: 0.4rem;
		padding: 0.15em 0.5em;
		font-size: 0.62rem;
		vertical-align: 0.05em;
	}
	.fpst-alert__text { display: inline; font-weight: 600; }
}

/* ── "I numeri di Viterbo": schede-dato con fonte ────────────────────────────── */
.fpst-news .fpst-num-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 1rem;
	margin: 1.5rem 0 2.5rem;
}
.fpst-news .fpst-num {
	display: flex;
	flex-direction: column;
	padding: 1.2rem 1.3rem;
	border: 1px solid var(--wp--preset--color--line);
	border-top: 4px solid var(--wp--preset--color--accent);
	border-radius: 3px;
	background: #fff;
}
.fpst-news .fpst-num__value {
	font-family: var(--fpst-serif);
	font-size: 2.1rem;
	font-weight: 700;
	line-height: 1.1;
	color: var(--wp--preset--color--accent);
}
.fpst-news .fpst-num__label {
	margin-top: 0.35rem;
	font-family: var(--fpst-ui);
	font-size: 0.95rem;
	font-weight: 700;
	color: var(--wp--preset--color--ink);
}
.fpst-news .fpst-num__note {
	margin-top: 0.5rem;
	flex: 1 1 auto;
	font-family: var(--fpst-ui);
	font-size: 0.86rem;
	line-height: 1.45;
	color: var(--wp--preset--color--muted);
}
.fpst-news .fpst-num__src {
	margin-top: 0.9rem;
	font-family: var(--fpst-ui);
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--wp--preset--color--accent);
	text-decoration: none;
}
.fpst-news .fpst-num__src:hover { text-decoration: underline; }
/* Sfumature per tema: i numeri "negativi" in rosso mattone, i positivi in verde. */
.fpst-news .fpst-num--bad  { border-top-color: #c62828; }
.fpst-news .fpst-num--bad .fpst-num__value,
.fpst-news .fpst-num--bad .fpst-num__src { color: #c62828; }
.fpst-news .fpst-num--good { border-top-color: #2e7d32; }
.fpst-news .fpst-num--good .fpst-num__value,
.fpst-news .fpst-num--good .fpst-num__src { color: #2e7d32; }
:root[data-theme="dark"] .fpst-news .fpst-num { background: #1e2127; border-color: #2c3038; }

/* ── Sezione Video / interviste ──────────────────────────────────────────────── */
.fpst-news .fpst-video {
	background: #14161a;
	color: #fff;
	padding: clamp(2rem, 4vw, 3rem) 0;
}
.fpst-news .fpst-video__in {
	max-width: var(--wp--style--global--wide-size, 1440px);
	margin: 0 auto;
	padding-inline: var(--wp--preset--spacing--50);
}
.fpst-news .fpst-video__label {
	margin: 0 0 1.4rem;
	font-family: var(--fpst-ui);
	font-size: 1.05rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #fff;
}
.fpst-news .fpst-video__label::before {
	content: "";
	display: inline-block;
	width: 5px;
	height: 1em;
	margin-right: 0.6rem;
	vertical-align: -0.12em;
	background: var(--wp--preset--color--gold);
}
.fpst-news .fpst-video__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: clamp(1rem, 2vw, 1.6rem);
}
.fpst-news .fpst-video__card { display: block; text-decoration: none; color: #fff; }
.fpst-news .fpst-video__thumb {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: 3px;
	background: #23262c;
}
.fpst-news .fpst-video__img,
.fpst-news .fpst-video__ph {
	display: block;
	width: 100%;
	height: 190px;
	object-fit: cover;
	transition: transform 0.35s ease;
}
.fpst-news .fpst-video__card:hover .fpst-video__img { transform: scale(1.05); }
/* Simbolo play: dice a colpo d'occhio che è un video, non un articolo. */
.fpst-news .fpst-video__play {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 1.6rem;
	color: #fff;
	background: rgba(0, 0, 0, 0.3);
	transition: background 0.2s ease;
}
.fpst-news .fpst-video__play::before {
	content: "";
	position: absolute;
	width: 58px;
	height: 58px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}
.fpst-news .fpst-video__play { text-indent: 0.15em; }
.fpst-news .fpst-video__card:hover .fpst-video__play { background: rgba(0, 0, 0, 0.15); }
.fpst-news .fpst-video__title {
	display: block;
	margin-top: 0.7rem;
	font-family: var(--fpst-serif);
	font-size: 1.05rem;
	font-weight: 600;
	line-height: 1.3;
}
.fpst-news .fpst-video__card:hover .fpst-video__title { color: var(--wp--preset--color--gold); }
.fpst-news .fpst-video__more {
	display: inline-block;
	margin-top: 1.4rem;
	font-family: var(--fpst-ui);
	font-weight: 700;
	color: #fff;
	text-decoration: none;
}
.fpst-news .fpst-video__more:hover { color: var(--wp--preset--color--gold); }
/* Il player dentro l'articolo deve essere responsive. */
.fpst-news .wp-block-embed iframe { width: 100%; aspect-ratio: 16 / 9; height: auto; }

/* Logo nel footer (al posto del titolo testuale). */
.fpst-news .fpst-footer__logo { display: inline-block; margin-bottom: 0.6rem; }
.fpst-news .fpst-footer__logo-img {
	display: block;
	width: auto;
	max-width: 230px;
	height: auto;
}
@media (max-width: 781px) {
	.fpst-news .fpst-footer__logo-img { max-width: 190px; }
}

/* Footer, colonna del marchio: logo e payoff centrati fra loro. */
.fpst-news .fpst-footer__cols > .wp-block-column:first-child { text-align: center; }
.fpst-news .fpst-footer__logo { display: block; }
.fpst-news .fpst-footer__logo-img { margin-inline: auto; }
/* Il payoff ha `max-width: 34ch` e resta ancorato a sinistra: senza margini
   automatici il testo si centrerebbe dentro quel riquadro stretto, non sotto
   il logo. */
.fpst-news .fpst-footer__tagline { text-align: center; margin-inline: auto; }
.fpst-news .fpst-footer__social { justify-content: center; }

/* "Idee" nel menu: reso a pulsante (oro del brand) per staccarlo dalle sezioni
   di cronaca — è l'area di opinione e analisi, non una categoria di notizie. */
/* NB: i link della navbar hanno `color: #fff !important` (serve a battere una
   regola equivalente del core). Per il testo nero del pulsante Idee servono
   quindi stessa specificita' e !important. */
.fpst-news .fpst-header__navbar-menu .wp-block-navigation-item__content[href$="/idee"] {
	padding: 0.28em 0.85em;
	border-radius: 999px;
	background: var(--wp--preset--color--gold);
	color: #111 !important;
	transition: background 0.15s ease, color 0.15s ease;
}
.fpst-news .fpst-header__navbar-menu .wp-block-navigation-item__content[href$="/idee"]:hover,
.fpst-news .fpst-header__navbar-menu .wp-block-navigation-item__content[href$="/idee"]:focus-visible {
	background: #fff;
	color: var(--wp--preset--color--accent) !important;
}

/* Topbar su mobile: data e meteo centrati, come la fascia di allerta sotto. */
@media (max-width: 600px) {
	.fpst-news .fpst-topbar__in { justify-content: center; }
	.fpst-news .fpst-topbar__left { justify-content: center; }
}

/* ══ MOBILE: toggle scuro a sinistra, hamburger a destra, logo al centro ══════
   Il toggle viene iniettato da darkmode.js dentro `.fpst-header__actions` (cella
   destra della griglia). Su mobile lo portiamo nella cella sinistra — che e'
   vuota (i social non ci sono ancora) — posizionandolo in assoluto: cosi' non
   si tocca la struttura della griglia. `top:50%` + translate lo allinea
   verticalmente al logo e all'hamburger, che la griglia centra gia'. */
@media (max-width: 781px) {
	/* Toggle scuro a sinistra, hamburger a destra, logo al centro — tutti e tre
	   allineati verticalmente. Entrambi i comandi sono posizionati in assoluto
	   RISPETTO ALLA BARRA (che e' l'unico antenato posizionato): dentro la cella
	   della griglia l'hamburger finiva 12px piu' in basso del logo. */
	.fpst-news .fpst-header__bar { position: relative; }
	.fpst-news .fpst-header__bar .fpst-darktoggle,
	.fpst-news .fpst-header__bar .fpst-burger {
		position: absolute;
		top: 50%;
		transform: translateY(-50%);
		margin: 0;
	}
	.fpst-news .fpst-header__bar .fpst-darktoggle { left: 0; }
	.fpst-news .fpst-header__bar .fpst-burger { right: 0; }
}

/* ══ MENU A TUTTO SCHERMO (overlay) — versione curata ═════════════════════════ */
.fpst-news .fpst-overlay__menu > li > a {
	position: relative;
	padding: 0.1em 0;
	transition: color 0.18s ease, transform 0.18s ease;
}
/* Filetto oro che cresce da sotto invece del semplice cambio colore. */
.fpst-news .fpst-overlay__menu > li > a::after {
	content: "";
	position: absolute;
	left: 50%;
	right: 50%;
	bottom: -0.12em;
	height: 2px;
	background: var(--wp--preset--color--gold);
	transition: left 0.22s ease, right 0.22s ease;
}
.fpst-news .fpst-overlay__menu > li > a:hover::after,
.fpst-news .fpst-overlay__menu > li > a:focus-visible::after { left: 0; right: 0; }

/* Entrata scaglionata delle voci: il menu "si apre" invece di apparire secco. */
@media (prefers-reduced-motion: no-preference) {
	.fpst-news .fpst-overlay__menu > li {
		opacity: 0;
		transform: translateY(10px);
	}
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li {
		animation: fpst-menu-in 0.42s cubic-bezier(0.2, 0.72, 0.2, 1) forwards;
	}
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(1) { animation-delay: 0.06s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(2) { animation-delay: 0.11s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(3) { animation-delay: 0.16s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(4) { animation-delay: 0.21s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(5) { animation-delay: 0.26s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(6) { animation-delay: 0.31s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(7) { animation-delay: 0.36s; }
	.fpst-news .fpst-nav-toggle:checked ~ .fpst-overlay .fpst-overlay__menu > li:nth-child(8) { animation-delay: 0.41s; }
}
@keyframes fpst-menu-in {
	to { opacity: 1; transform: none; }
}

/* Piede del menu: richiamo alle segnalazioni + payoff. */
.fpst-news .fpst-overlay__foot {
	margin-top: 2.2rem;
	text-align: center;
	animation: fpst-menu-in 0.5s cubic-bezier(0.2, 0.72, 0.2, 1) 0.48s both;
}
.fpst-news .fpst-overlay__cta {
	display: inline-block;
	padding: 0.65rem 1.5rem;
	border-radius: 999px;
	background: var(--wp--preset--color--gold);
	color: #111;
	font-family: var(--fpst-ui);
	font-size: 0.92rem;
	font-weight: 700;
	text-decoration: none;
	transition: background 0.15s ease, color 0.15s ease;
}
.fpst-news .fpst-overlay__cta:hover { background: #fff; color: var(--wp--preset--color--accent); }
.fpst-news .fpst-overlay__tag {
	margin: 1.1rem 0 0;
	font-family: var(--fpst-ui);
	font-size: 0.8rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.6);
}

/* ══ PAYOFF sopra la prima notizia ════════════════════════════════════════════ */
.fpst-news .fpst-payoff {
	display: flex;
	align-items: center;
	gap: clamp(0.9rem, 3vw, 2rem);
	margin: clamp(1.4rem, 3vw, 2.2rem) 0;
}
.fpst-news .fpst-payoff::before,
.fpst-news .fpst-payoff::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--wp--preset--color--line);
}
.fpst-news .fpst-payoff__text {
	flex: 0 1 auto;
	margin: 0;
	font-family: var(--fpst-serif);
	font-size: clamp(1.2rem, 2.3vw, 1.75rem);
	font-style: italic;
	line-height: 1.3;
	text-align: center;
	color: var(--wp--preset--color--ink);
}
.fpst-news .fpst-payoff__text strong {
	font-style: normal;
	font-weight: 700;
	color: var(--wp--preset--color--accent);
}
@media (max-width: 600px) {
	.fpst-news .fpst-payoff { gap: 0.7rem; margin: 1.1rem 0; }
	.fpst-news .fpst-payoff__text { font-size: 1.35rem; }
}

/* L'overlay e' un flex CENTRATO: aggiungendo il piede (CTA + payoff) i due
   figli — menu e piede — si affiancavano. In colonna, e con un po' d'aria. */
.fpst-news .fpst-overlay {
	flex-direction: column;
	justify-content: center;
	gap: 0.5rem;
	/* Aria in cima: la ricerca finiva sotto il pulsante X di chiusura. */
	padding: 5.5rem 1.5rem 2rem;
}
.fpst-news .fpst-overlay__foot { margin-top: 1.6rem; }

/* Payoff su due righe + aria sotto, cosi' la foto dell'articolo successivo non
   sbuca sopra la piega. Lo spazio e' in vh (non in px) per adattarsi alle varie
   altezze di schermo. */
.fpst-news .fpst-payoff__text br { display: inline; }
.fpst-news .fpst-payoff { margin-bottom: clamp(2rem, 8vh, 5rem); }
@media (max-width: 781px) {
	/* Margine di sicurezza: sui telefoni reali (barre del browser, altezze
	   diverse) un lembo della foto riusciva ancora a sbucare. Questo spinge giu'
	   la foto senza spostare il payoff. */
	.fpst-news .fpst-payoff { margin-bottom: 4.5rem; }
}

/* ── Menu: ricerca in cima ─────────────────────────────────────────────────── */
.fpst-news .fpst-overlay__search {
	display: flex;
	align-items: stretch;
	width: min(340px, 100%);
	margin: 0 auto 1.8rem;
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 999px;
	overflow: hidden;
	background: rgba(255, 255, 255, 0.08);
	animation: fpst-menu-in 0.4s cubic-bezier(0.2, 0.72, 0.2, 1) 0.02s both;
}
.fpst-news .fpst-overlay__search input[type="search"] {
	flex: 1 1 auto;
	min-width: 0;
	border: 0;
	background: transparent;
	padding: 0.7rem 1.1rem;
	color: #fff;
	font-family: var(--fpst-ui);
	font-size: 0.95rem;
}
.fpst-news .fpst-overlay__search input::placeholder { color: rgba(255, 255, 255, 0.65); }
.fpst-news .fpst-overlay__search input:focus { outline: none; }
.fpst-news .fpst-overlay__search button {
	flex: 0 0 auto;
	border: 0;
	padding: 0 1.1rem;
	background: var(--wp--preset--color--gold);
	color: #111;
	font-size: 1.1rem;
	font-weight: 700;
	cursor: pointer;
	transition: background 0.15s ease;
}
.fpst-news .fpst-overlay__search button:hover { background: #fff; }


/* Separatore leggero prima del piede. */
.fpst-news .fpst-overlay__foot {
	position: relative;
	padding-top: 1.8rem;
}
.fpst-news .fpst-overlay__foot::before {
	content: "";
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	width: 60px;
	height: 1px;
	background: rgba(255, 255, 255, 0.3);
}

/* L'overlay e' un flex column con altezza fissa: quando il contenuto (ricerca +
   voci + piede) supera lo schermo, i flex item vengono COMPRESSI — la ricerca
   finiva schiacciata ad altezza 0. Vietato comprimere: se non ci sta, si scorre
   (l'overlay ha gia' overflow-y: auto). */
.fpst-news .fpst-overlay > * { flex-shrink: 0; }
.fpst-news .fpst-overlay__search { flex: 0 0 auto; }
/* Voci un filo piu' compatte: cosi' il menu ci sta quasi sempre per intero. */
@media (max-width: 781px) {
	.fpst-news .fpst-overlay__menu > li > a { font-size: clamp(1.45rem, 5.5vw, 1.9rem); }
	.fpst-news .fpst-overlay__menu > li { margin: 0.18em 0; }
	.fpst-news .fpst-overlay { padding-top: 4.5rem; }
}

/* ── Sottomenu dentro il menu a tutto schermo ─────────────────────────────────
   Non era mai stato stilizzato: usciva il riquadro BIANCO assoluto di default
   di WordPress, con testo scuro, tagliato e sovrapposto al pulsante in fondo.
   Qui diventa un elenco in linea, coerente col resto del menu. */
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container {
	position: static !important;
	width: auto !important;
	min-width: 0 !important;
	margin: 0.5rem 0 0.3rem !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
	text-align: center;
}
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container li {
	margin: 0.1em 0;
	text-align: center;
}
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	display: inline-block;
	padding: 0.35em 0.6em;
	color: rgba(255, 255, 255, 0.82) !important;
	background: transparent !important;
	font-family: var(--fpst-serif);
	font-size: 1.05rem;
	font-weight: 500;
	text-decoration: none;
}
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible {
	color: var(--wp--preset--color--gold) !important;
}
/* Il filetto oro delle voci principali non deve comparire sulle sottovoci. */
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container a::after { content: none; }

/* La voce con sottomenu e' una riga flex (link + freccia + sottomenu): il
   sottomenu finiva AFFIANCATO a "Viterbo". In colonna, sotto, centrato. */
.fpst-news .fpst-overlay__menu > li.wp-block-navigation-submenu,
.fpst-news .fpst-overlay__menu > li.has-child {
	display: block;
	text-align: center;
}
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container { width: 100% !important; }

/* Freccia accanto a "Viterbo" (col blocco era andata a capo) e sottovoci
   davvero centrate (la <ul> aveva un padding-inline-start residuo). */
.fpst-news .fpst-overlay__menu > li.wp-block-navigation-submenu > a,
.fpst-news .fpst-overlay__menu > li.wp-block-navigation-submenu > button,
.fpst-news .fpst-overlay__menu > li.has-child > a,
.fpst-news .fpst-overlay__menu > li.has-child > button {
	display: inline-flex;
	align-items: center;
	vertical-align: middle;
}
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container {
	padding-inline-start: 0 !important;
	list-style: none;
}

/* Centratura esplicita delle sottovoci (flex column + align-items:center):
   non fidarsi del solo text-align, la <ul> del core porta con se' margini
   e allineamenti propri. */
.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container {
	display: flex !important;
	flex-direction: column;
	align-items: center;
	margin-inline: auto !important;
}

/* ══ BARRA FISSA IN FONDO (solo mobile) ══════════════════════════════════════ */
.fpst-tabbar { display: none; }
@media (max-width: 781px) {
	.fpst-news .fpst-tabbar {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 140;
		display: grid;
		grid-auto-flow: column;
		grid-auto-columns: 1fr;
		background: #14161a;
		border-top: 2px solid var(--wp--preset--color--accent);
		/* Safe-area: sui telefoni con barra home la riga finirebbe sotto di essa. */
		padding-bottom: env(safe-area-inset-bottom, 0px);
	}
	.fpst-news .fpst-tabbar__item {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 0.15rem;
		padding: 0.5rem 0.25rem 0.55rem;
		color: rgba(255, 255, 255, 0.85);
		text-decoration: none;
		font-family: var(--fpst-ui);
	}
	.fpst-news .fpst-tabbar__icon { font-size: 1.05rem; line-height: 1; }
	.fpst-news .fpst-tabbar__label {
		font-size: 0.66rem;
		font-weight: 700;
		letter-spacing: 0.02em;
	}
	.fpst-news .fpst-tabbar__item:active,
	.fpst-news .fpst-tabbar__item:hover { color: var(--wp--preset--color--gold); }
	/* Il sondaggio e' l'invito a partecipare: si distingue. */
	.fpst-news .fpst-tabbar__item--poll { color: var(--wp--preset--color--gold); }

	/* Il pallino "riapri preferenze cookie" di FP Privacy e' fixed in basso e
	   finirebbe SOPRA la barra dei tasti: lo solleviamo sopra la barra (~64px)
	   piu' un margine, rispettando la safe-area del telefono. */
	.fpst-news .fp-privacy-reopen {
		bottom: calc(76px + env(safe-area-inset-bottom, 0px)) !important;
	}

	/* Spazio in fondo alla pagina: la barra copre l'ultimo pezzo di contenuto. */
	.fpst-news .wp-site-blocks { padding-bottom: calc(62px + env(safe-area-inset-bottom, 0px)); }
	/* Il pulsante "torna su" non deve finire dietro la barra. */
	.fpst-news .fpst-totop { bottom: calc(74px + env(safe-area-inset-bottom, 0px)); }
}

/* ── Pagina Sondaggi (in corso + storico) ────────────────────────────────────── */
.fpst-news .fpst-polls__h {
	margin: 0 0 1rem;
	padding-bottom: 0.5rem;
	font-family: var(--fpst-ui);
	font-size: 0.92rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	border-bottom: 2px solid var(--wp--preset--color--accent);
}
.fpst-news .fpst-polls__now { margin-bottom: 3rem; }
.fpst-news .fpst-polls__note {
	margin: 0 0 1.6rem;
	font-family: var(--fpst-ui);
	font-size: 0.88rem;
	line-height: 1.5;
	color: var(--wp--preset--color--muted);
}
.fpst-news .fpst-polls__none {
	padding: 1.2rem 1.3rem;
	border-left: 4px solid var(--wp--preset--color--line);
	background: color-mix(in srgb, var(--wp--preset--color--accent) 4%, #fff);
	font-family: var(--fpst-ui);
}
/* Sondaggio passato */
.fpst-news .fpst-pastpoll {
	padding: 1.3rem 1.4rem;
	margin-bottom: 1.2rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 4px;
	background: #fff;
}
.fpst-news .fpst-pastpoll__date {
	margin: 0 0 0.35rem;
	font-family: var(--fpst-ui);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted);
}
.fpst-news .fpst-pastpoll__q {
	margin: 0 0 1rem;
	font-family: var(--fpst-serif);
	font-size: 1.18rem;
	font-weight: 600;
	line-height: 1.3;
}
.fpst-news .fpst-pastpoll__list { margin: 0; padding: 0; list-style: none; }
.fpst-news .fpst-pastpoll__opt { margin: 0 0 0.7rem; list-style: none; }
.fpst-news .fpst-pastpoll__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.8rem;
	font-family: var(--fpst-ui);
	font-size: 0.92rem;
}
.fpst-news .fpst-pastpoll__pct { flex: 0 0 auto; font-weight: 700; color: var(--wp--preset--color--muted); }
.fpst-news .fpst-pastpoll__bar {
	display: block;
	height: 7px;
	margin-top: 0.3rem;
	border-radius: 5px;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 10%, #fff);
	overflow: hidden;
}
.fpst-news .fpst-pastpoll__fill {
	display: block;
	height: 100%;
	border-radius: 5px;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 40%, #fff);
}
/* L'opzione vincente si legge a colpo d'occhio. */
.fpst-news .fpst-pastpoll__opt.is-top .fpst-pastpoll__fill { background: var(--wp--preset--color--accent); }
.fpst-news .fpst-pastpoll__opt.is-top .fpst-pastpoll__label { font-weight: 700; }
.fpst-news .fpst-pastpoll__opt.is-top .fpst-pastpoll__pct { color: var(--wp--preset--color--accent); }
.fpst-news .fpst-pastpoll__total {
	margin: 0.9rem 0 0;
	font-family: var(--fpst-ui);
	font-size: 0.78rem;
	color: var(--wp--preset--color--muted);
	text-align: right;
}
:root[data-theme="dark"] .fpst-news .fpst-pastpoll { background: #1e2127; border-color: #2c3038; }

/* Due strade nel riquadro "Partecipa": segnalare un fatto o proporre un tema. */
.fpst-news .fpst-tipcta__btns {
	display: flex;
	flex-wrap: wrap;
	gap: 0.7rem;
}
.fpst-news .fpst-tipcta__btn--ghost {
	background: transparent;
	color: #fff;
	box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.75);
}
.fpst-news .fpst-tipcta__btn--ghost:hover {
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--ink);
	box-shadow: none;
}

/* ── Box newsletter ──────────────────────────────────────────────────────────── */
.fpst-news .fpst-nl {
	box-sizing: border-box;
	max-width: 100%;
	margin-bottom: var(--wp--preset--spacing--50);
	padding: 1.2rem 1.3rem 1.35rem;
	border-radius: 4px;
	background: var(--wp--preset--color--accent);
	color: #fff;
}
.fpst-news .fpst-nl__kicker {
	margin: 0 0 0.4rem;
	font-family: var(--fpst-ui);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}
.fpst-news .fpst-nl__title {
	margin: 0 0 0.5rem;
	font-family: var(--fpst-serif);
	font-size: 1.15rem;
	font-weight: 600;
	line-height: 1.3;
	color: #fff;
}
.fpst-news .fpst-nl__text {
	margin: 0 0 1rem;
	font-family: var(--fpst-ui);
	font-size: 0.86rem;
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.85);
}
/* Il form del plugin: reso coerente col box (campi chiari su fondo accent). */
.fpst-news .fpst-nl input[type="email"],
.fpst-news .fpst-nl input[type="text"] {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	padding: 0.65rem 0.9rem;
	border: 0;
	border-radius: 4px;
	background: #fff;
	color: var(--wp--preset--color--ink);
	font-family: var(--fpst-ui);
	font-size: 0.92rem;
}
.fpst-news .fpst-nl button,
.fpst-news .fpst-nl input[type="submit"] {
	box-sizing: border-box;
	width: 100%;
	margin-top: 0.6rem;
	padding: 0.65rem 1rem;
	border: 0;
	border-radius: 4px;
	background: var(--wp--preset--color--gold);
	color: #111;
	font-family: var(--fpst-ui);
	font-size: 0.92rem;
	font-weight: 700;
	cursor: pointer;
}
.fpst-news .fpst-nl button:hover { background: #fff; }
.fpst-news .fpst-nl label,
.fpst-news .fpst-nl a { color: rgba(255, 255, 255, 0.9); font-size: 0.8rem; }
.fpst-news .fpst-nl a { text-decoration: underline; }

/* Il titolo del box newsletter ereditava il colore scuro dei titoli del tema:
   su fondo accent risultava illeggibile. */
.fpst-news .fpst-nl .fpst-nl__title,
.fpst-news .fpst-nl .fpmail-subscribe__title { color: #fff !important; }
.fpst-news .fpst-nl .fpmail-subscribe__label { color: rgba(255, 255, 255, 0.9); font-weight: 700; }
/* Riga del consenso: spunta e testo allineati. */
.fpst-news .fpst-nl .fpmail-subscribe__consent label {
	display: flex;
	align-items: flex-start;
	gap: 0.5rem;
	line-height: 1.4;
}
.fpst-news .fpst-nl .fpmail-subscribe__consent input[type="checkbox"] {
	flex: 0 0 auto;
	margin-top: 0.15em;
	accent-color: var(--wp--preset--color--gold);
}

/* Menu a tutto schermo su mobile: il contenuto finiva SOTTO la barra fissa in
   fondo (il pulsante "Segnalaci una notizia" era tagliato). Spaziature ridotte
   e spazio in coda pari all'altezza della barra. */
@media (max-width: 781px) {
	.fpst-news .fpst-overlay {
		padding-top: 3.5rem;
		padding-bottom: calc(70px + env(safe-area-inset-bottom, 0px));
		gap: 0;
	}
	.fpst-news .fpst-overlay__search { margin-bottom: 1.1rem; }
	.fpst-news .fpst-overlay__menu > li { margin: 0.05em 0; }
	.fpst-news .fpst-overlay__menu > li > a {
		font-size: clamp(1.3rem, 5vw, 1.7rem);
		padding: 0.08em 0;
	}
	.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container {
		margin: 0.25rem 0 0.15rem !important;
	}
	.fpst-news .fpst-overlay__menu .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		font-size: 0.95rem;
		padding: 0.2em 0.5em;
	}
	.fpst-news .fpst-overlay__foot { margin-top: 1rem; padding-top: 1.1rem; }
	.fpst-news .fpst-overlay__cta { padding: 0.55rem 1.3rem; font-size: 0.88rem; }
	.fpst-news .fpst-overlay__tag { margin-top: 0.7rem; font-size: 0.72rem; }
}

/* Allineamenti nel box newsletter: etichetta attaccata al campo, spunta e testo
   del consenso sulla stessa riga. */
.fpst-news .fpst-nl .fpmail-subscribe__row { margin-bottom: 0.9rem; }
.fpst-news .fpst-nl .fpmail-subscribe__label {
	display: block;
	margin-bottom: 0.35rem;
	font-size: 0.8rem;
}
.fpst-news .fpst-nl .fpmail-subscribe__consent { margin-bottom: 1rem; }
.fpst-news .fpst-nl .fpmail-subscribe__consent label {
	display: flex;
	align-items: flex-start;
	gap: 0.55rem;
	margin: 0;
}
.fpst-news .fpst-nl .fpmail-subscribe__consent span { flex: 1 1 auto; line-height: 1.4; }
.fpst-news .fpst-nl .fpmail-subscribe__consent input[type="checkbox"] {
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	margin: 0.12em 0 0;
}

/* I due pulsanti del riquadro "Partecipa" della stessa larghezza (griglia a
   colonne uguali invece che a larghezza-contenuto). */
.fpst-news .fpst-tipcta__btns {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 0.7rem;
}
.fpst-news .fpst-tipcta__btn {
	text-align: center;
	box-sizing: border-box;
	width: 100%;
}

/* Resta un <br> iniettato da WordPress dentro la riga del consenso: in un
   contenitore flex diventa un ELEMENTO a sé e apre un vuoto tra spunta e testo. */
.fpst-news .fpst-nl br { display: none; }

/* Barra di avanzamento lettura: era un filo da 3px quasi impercettibile.
   Piu' alta, con una traccia di sfondo (si vede anche quanto MANCA) e un
   bagliore che la stacca dal contenuto sottostante. */
.fpst-news .fpst-progress {
	height: 8px;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 12%, transparent);
}
.fpst-news .fpst-progress__fill {
	background: linear-gradient(90deg, var(--wp--preset--color--accent), var(--wp--preset--color--gold));
	box-shadow: 0 0 8px color-mix(in srgb, var(--wp--preset--color--gold) 65%, transparent);
}
:root[data-theme="dark"] .fpst-news .fpst-progress {
	background: rgba(255, 255, 255, 0.12);
}

/* ── Mappa interattiva ───────────────────────────────────────────────────────── */
.fpst-news .fpst-map { margin: 2rem 0; }
.fpst-news .fpst-map__title {
	margin: 0 0 0.6rem;
	font-family: var(--fpst-ui);
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent);
}
.fpst-news .fpst-map__canvas {
	height: 420px;
	border-radius: 4px;
	border: 1px solid var(--wp--preset--color--line);
	background: #eef0f2;
}
@media (max-width: 600px) {
	.fpst-news .fpst-map__canvas { height: 320px; }
}
/* Elenco testuale: resta leggibile anche senza mappa. */
.fpst-news .fpst-map__list {
	margin: 0.9rem 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 0.4rem 1.2rem;
}
.fpst-news .fpst-map__list li {
	margin: 0;
	padding-left: 1rem;
	position: relative;
	list-style: none;
	font-family: var(--fpst-ui);
	font-size: 0.88rem;
	line-height: 1.45;
}
.fpst-news .fpst-map__list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
}
/* Leaflet: i popup coerenti col resto. */
.fpst-news .leaflet-popup-content { font-family: var(--fpst-ui); font-size: 0.9rem; }

/* Icone SVG della barra in fondo (prima erano caratteri unicode, con pesi e
   allineamenti diversi tra loro e da un dispositivo all'altro). */
@media (max-width: 781px) {
	.fpst-news .fpst-tabbar__icon {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 22px;
		height: 22px;
		font-size: 0;
	}
	.fpst-news .fpst-tabbar__icon svg {
		width: 22px;
		height: 22px;
		display: block;
	}
	.fpst-news .fpst-tabbar__item { gap: 0.25rem; padding-top: 0.55rem; }
	.fpst-news .fpst-tabbar__label { font-size: 0.68rem; }
	/* Pagina corrente: la voce si accende. */
	.fpst-news .fpst-tabbar__item[aria-current="page"] { color: var(--wp--preset--color--gold); }
}

/* ── Mappa: contenimento e marker su misura ──────────────────────────────────
   Leaflet usa z-index molto alti (pannelli 400, controlli 800, popup 700): senza
   un contesto di impilamento proprio, la mappa passava SOPRA l'header sticky.
   `isolation: isolate` + z-index 0 la confinano dentro il proprio riquadro. */
.fpst-news .fpst-map {
	position: relative;
	z-index: 0;
	isolation: isolate;
}
.fpst-news .fpst-map__canvas { z-index: 0; }

/* Marker numerati, colori del brand (al posto dei segnaposti azzurri di serie). */
.fpst-news .fpst-pin {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	border: 2px solid #fff;
	background: var(--wp--preset--color--accent);
	color: #fff;
	font-family: var(--fpst-ui);
	font-size: 0.82rem;
	font-weight: 800;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
	transition: transform 0.15s ease, background 0.15s ease;
}
.fpst-news .fpst-pin.is-active,
.fpst-news .leaflet-marker-icon:hover .fpst-pin {
	background: var(--wp--preset--color--gold);
	color: #111;
	transform: scale(1.22);
}

/* Scheda del marker */
.fpst-news .fpst-pop .leaflet-popup-content-wrapper { border-radius: 5px; }
.fpst-news .fpst-pop .leaflet-popup-content { margin: 0.8rem 0.95rem; font-family: var(--fpst-ui); }
.fpst-news .fpst-pop__name {
	display: block;
	margin-bottom: 0.3rem;
	font-family: var(--fpst-serif);
	font-size: 1rem;
}
.fpst-news .fpst-pop__note { display: block; font-size: 0.85rem; line-height: 1.45; color: var(--wp--preset--color--muted); }
.fpst-news .fpst-pop__link {
	display: inline-block;
	margin-top: 0.55rem;
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--wp--preset--color--accent);
	text-decoration: none;
}

/* Elenco = legenda cliccabile della mappa */
.fpst-news .fpst-map__list li {
	display: flex;
	align-items: flex-start;
	gap: 0.55rem;
	padding: 0.35rem 0.45rem;
	border-radius: 4px;
	transition: background 0.15s ease;
}
.fpst-news .fpst-map__list li::before { content: none; }
.fpst-news .fpst-map__list li.is-clickable { cursor: pointer; }
.fpst-news .fpst-map__list li.is-clickable:hover,
.fpst-news .fpst-map__list li.is-active {
	background: color-mix(in srgb, var(--wp--preset--color--accent) 8%, transparent);
}
.fpst-news .fpst-map__list li:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent);
	outline-offset: 1px;
}
.fpst-news .fpst-map__n {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	margin-top: 0.05em;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	color: #fff;
	font-size: 0.72rem;
	font-weight: 800;
}
.fpst-news .fpst-map__list li.is-active .fpst-map__n {
	background: var(--wp--preset--color--gold);
	color: #111;
}
.fpst-news .fpst-map__txt { flex: 1 1 auto; }
