/* =========================================================================
   AM Memorial Theme — migliorie pre-lancio (AM-032)
   Foglio di override caricato DOPO main.css: ogni blocco è documentato e
   autonomo, così resta leggibile che cosa cambia rispetto alla base.
   Palette invariata. Nessuna libreria, nessun asset remoto.
   ========================================================================= */

/* -------------------------------------------------------------------------
   §1 · TIPOGRAFIA — coppia di font self-hosted
   Newsreader (titoli, citazioni: serif editoriale, caldo, molto adatto al
   registro memoriale) + Source Sans 3 (testo e UI: umanista, leggibilissimo).
   Font variabili woff2 (subset latin, sufficiente per l'italiano) serviti
   da assets/fonts/ del tema: nessun CDN, coerente con la policy no-remote.
   I caratteri fuori dal subset ricadono sui font di sistema del fallback.
   ------------------------------------------------------------------------- */
@font-face {
	font-family: "Newsreader";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/newsreader-vf.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Newsreader";
	font-style: italic;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/newsreader-italic-vf.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Source Sans 3";
	font-style: normal;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/source-sans-3-vf.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Source Sans 3";
	font-style: italic;
	font-weight: 400 700;
	font-display: swap;
	src: url("../fonts/source-sans-3-italic-vf.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
	--am-font-serif: "Newsreader", Georgia, Cambria, "Times New Roman", serif;
	--am-font-sans: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* Newsreader rende meglio con un tracking appena negativo sui corpi grandi
   e pesi un filo più alti sui piccoli. */
h1, h2, h3 {
	letter-spacing: -0.012em;
}

body {
	font-size: 1.0625rem; /* 17px: Source Sans 3 è più compatto di Segoe/Roboto */
}

p {
	text-wrap: pretty;
}

/* -------------------------------------------------------------------------
   §2 · HERO — più respiro al testo, caption integrata
   ------------------------------------------------------------------------- */
.home-hero__lead {
	font-size: clamp(1.35rem, 2.6vw, 1.65rem);
	line-height: 1.42;
}

.home-hero__intro {
	max-width: 34rem;
}

/* La didascalia sotto la hero diventa una vera didascalia: piccola, muta,
   con il trattino oro che la aggancia al sistema delle eyebrow. */
.home-hero__caption {
	display: flex;
	align-items: baseline;
	gap: 0.6rem;
	color: var(--am-color-muted);
	font-size: 0.85rem;
}

.home-hero__caption::before {
	flex: none;
	width: 1.4rem;
	height: 1px;
	background: var(--am-color-gold);
	transform: translateY(-0.28em);
	content: "";
}

/* -------------------------------------------------------------------------
   §3 · BOTTONI — target più generosi (>=48px), gerarchia più netta
   ------------------------------------------------------------------------- */
.am-button {
	min-height: 3rem;
	padding: 0.8rem 1.6rem;
	font-size: 1rem;
	transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.am-button--primary:hover {
	box-shadow: 0 0.5rem 1.4rem rgb(23 57 46 / 22%);
	transform: translateY(-1px);
}

.am-button--ghost {
	border-width: 1.5px;
}

/* -------------------------------------------------------------------------
   §4 · BANDA CITAZIONE — la voce della comunità merita più corpo
   ------------------------------------------------------------------------- */
.home-band__quote p {
	font-size: clamp(1.6rem, 3.4vw, 2.35rem);
	font-style: italic; /* Newsreader ha un corsivo splendido */
	line-height: 1.3;
}

/* -------------------------------------------------------------------------
   §5 · SEZIONE UNIFICATA «Esplora il sito»
   (sostituisce «Il sito in breve» + «Percorsi»: stessa griglia fotografica
   scura di .home-paths, con copy più ricco e una card orizzontale finale
   per Ricordi + Fotografie)
   ------------------------------------------------------------------------- */
.home-path__body p {
	font-size: 0.98rem;
}

/* Card orizzontale di chiusura griglia: invito ai ricordi, senza foto. */
.home-path--wide {
	grid-column: 1 / -1;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	justify-content: space-between;
}

.home-path--wide .home-path__body {
	flex: 1 1 26rem;
}

.home-path--wide .home-path__aside {
	display: flex;
	flex: none;
	padding: 1.35rem 1.25rem;
	/* Padding simmetrico: quando su mobile la CTA va a capo sotto il testo,
	   resta allineata al bordo del copy invece di attaccarsi alla card. */
}

/* -------------------------------------------------------------------------
   §6 · MICRO-LEGGIBILITÀ — payoff e nav meno minuti (accessibilità)
   ------------------------------------------------------------------------- */
.site-brand__payoff {
	font-size: 0.67rem;
	letter-spacing: 0.18em;
}

.nav-menu {
	font-size: 0.84rem;
}

.site-footer__payoff {
	font-size: 0.7rem;
}

/* =========================================================================
   §7 · PAGINE INTERNE — rifiniture grafiche cross-device
   Valgono per Chi era Alessandro, Torneo, Documentazione, Il progetto,
   Ricordi. Tutto additivo: nessuna struttura o palette cambiata.
   ========================================================================= */

/* §7.1 · Ritmo dei titoli di sezione — un piccolo segno oro prima di ogni
   H2, che riprende la keyline della hero e scandisce la lettura. */
.page-prose .page-section > h2 {
	position: relative;
	padding-top: 1rem;
}

.page-prose .page-section > h2::before {
	position: absolute;
	top: 0;
	left: 0;
	width: 2.25rem;
	height: 3px;
	background: var(--am-color-gold);
	content: "";
}

/* La prima sezione (spesso apre con .page-lead, non con H2) non serve marcarla:
   il segno resta solo sulle sezioni con titolo, dando struttura all'insieme. */

/* §7.2 · Lead di pagina più editoriale e arioso su ogni schermo. */
.page-hero__lead {
	line-height: 1.34;
}

.page-lead {
	line-height: 1.62;
}

/* §7.3 · Timeline — rail più presente, data come kicker spaziato. */
.page-timeline li {
	padding-left: 1.9rem;
	border-left-width: 2px;
	border-left-color: rgb(173 133 73 / 35%);
}

.page-timeline li::before {
	width: 0.78rem;
	height: 0.78rem;
	left: -0.5rem;
	box-shadow: 0 0 0 4px var(--am-color-background);
}

.page-timeline__date {
	margin-bottom: 0.25rem;
	font-family: var(--am-font-sans);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--am-color-secondary-dark);
}

/* §7.4 · Card di contenuto — sollevamento coerente al passaggio del mouse
   e in focus (utile dove la card contiene link, es. le fonti). */
.doc-source,
.doc-qa__item,
.page-card {
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.doc-source:hover,
.doc-qa__item:hover,
.page-card:hover,
.doc-source:focus-within,
.page-card:focus-within {
	border-color: rgb(40 87 70 / 30%);
	box-shadow: var(--am-shadow-plate);
	transform: translateY(-2px);
}

/* §7.5 · «In breve» — le voci diventano coppie kicker/testo più leggibili. */
.page-brief dt {
	color: var(--am-color-secondary-dark);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.page-brief dd {
	margin-left: 0;
	line-height: 1.55;
}

/* §7.6 · Citazioni dei ricordi — segno di virgoletta editoriale. */
.voice-card {
	position: relative;
}

.voice-card blockquote {
	font-size: 1.18rem;
	line-height: 1.48;
}

/* §7.7 · Archivio torneo — griglia robusta a ogni larghezza + hover deciso. */
.tournament-years {
	display: grid;
	gap: 1.25rem;
	grid-template-columns: repeat(auto-fit, minmax(15.5rem, 1fr));
}

.tournament-year-card--linked {
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.tournament-year-card--linked:hover,
.tournament-year-card--linked:focus-within {
	transform: translateY(-2px);
}

/* §7.8 · Gruppi di pulsanti — vanno a capo con grazia sui piccoli schermi. */
.page-cta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

/* §7.9 · Blocchi «split» testo+foto — su mobile la foto non deve schiacciarsi;
   su desktop resta il layout esistente del tema. */
@media (max-width: 47.999rem) {
	.home-split--media .media-frame {
		max-width: 24rem;
		margin-inline: auto;
	}
}

/* §7.10 · Video-testimonianza — cornice coerente con le media-frame del tema. */
.page-video__frame {
	border-radius: var(--am-radius);
	overflow: hidden;
	box-shadow: var(--am-shadow-soft);
}

/* =========================================================================
   §8 · FIX SISTEMICO — margine di default dei <figure> (disallineamenti)
   Il browser applica ai <figure> un margine di default (1em 40px). Il tema
   lo azzera solo in .home-hero__figure, .tournament-gallery/.edition-gallery
   figure: TUTTI gli altri figure (.voice-card, .home-split__media,
   .home-tournament__media, .page-video, .tournament-hero-media, i figure
   senza classe nelle pagine) restano rientrati di 40px → è la causa dei
   disallineamenti che si notano soprattutto su desktop, dentro griglie e
   blocchi affiancati. Reset a bassa specificità: le regole con classe del
   tema che impostano un margine esplicito continuano a vincere.
   ========================================================================= */
figure {
	margin: 0;
}

/* =========================================================================
   §9 · PAGINA RICORDI — «come funziona» + nota editoriale
   Sostituisce la lista a step (che si rompeva: nel grid del tema il testo
   finiva nella colonna stretta, una parola per riga) con chip orizzontali
   più una nota calda. AM-032 è puramente visuale: NON c'è un modulo di invio
   né alcun backend (la raccolta dati/consensi/upload è rimandata a una task
   dedicata privacy). Stili derivati dai token del tema, nessuna libreria.
   ========================================================================= */

/* Chip «come funziona»: tre passaggi in riga, che vanno a capo su mobile. */
.ricordi-how {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin: 1.35rem 0 0;
	padding: 0;
	list-style: none;
}

.ricordi-how li {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	padding: 0.5rem 0.95rem 0.5rem 0.5rem;
	border: 1px solid var(--am-color-border);
	border-radius: 999px;
	background: var(--am-color-surface);
	color: var(--am-color-muted);
	font-size: 0.92rem;
}

.ricordi-how li b {
	display: grid;
	place-content: center;
	flex: none;
	width: 1.6rem;
	height: 1.6rem;
	border-radius: 999px;
	background: var(--am-color-accent);
	color: #fff;
	font-family: var(--am-font-serif);
	font-size: 0.9rem;
	font-weight: 700;
}

/* La card «Lascia un ricordo» (già .ricordi-note in AM-032B) è stata sostituita
   in AM-034 §20 dalla .ricordi-invite, più ricca e vicina al mockup. Qui resta
   solo il vincolo di colonna (46rem) dell'empty-state di «Le voci raccolte». */
.ricordi-empty {
	max-width: 46rem;
}

/* =========================================================================
   §10 · ALLINEAMENTO PAGINE INTERNE — header, hero e corpo sullo stesso
   bordo sinistro (come già avviene in homepage).
   Prima, su desktop, erano tre colonne CENTRATE di larghezza diversa:
   header 74rem, hero 58/52/68rem, colonna di lettura 46/64rem → tre bordi
   sinistri diversi. Ora hero e corpo si agganciano al bordo della shell da
   74rem, quindi logo, titolo della pagina e testo partono dalla stessa
   verticale. Nessuna modifica al markup.
   ========================================================================= */

/* Hero: stessa shell dell'header (74rem, centrata). Occhiello, titolo e lead
   restano allineati a sinistra dentro la shell con i loro max-width. */
.page-hero > .site-shell,
.page-hero--narrative > .site-shell,
.page-hero--documentary > .site-shell,
.page-hero--tournament > .site-shell {
	width: min(100% - (var(--am-space-page) * 2), var(--am-wide-width));
}

/* Corpo: la colonna di lettura mantiene la sua larghezza (46/64rem) ma viene
   allineata al bordo sinistro della shell da 74rem invece di essere centrata.
   Sotto i 74rem il calcolo diventa negativo e resta il padding di pagina. */
.page-body > .site-shell {
	margin-left: max(var(--am-space-page), calc((100% - var(--am-wide-width)) / 2));
	margin-right: auto;
}

/* =========================================================================
   §11 · HUB TORNEO — rifiniture grafiche più marcate
   ========================================================================= */

/* Fatti in hero: un pallino oro segna ogni chip. */
.tournament-hero-facts span::before {
	content: "";
	flex: none;
	width: 0.4rem;
	height: 0.4rem;
	margin-right: 0.55rem;
	border-radius: 50%;
	background: var(--am-color-gold);
}

/* Prossima edizione: due colonne bilanciate su desktop. */
@media (min-width: 48rem) {
	.tournament-next {
		grid-template-columns: 1fr auto;
		align-items: center;
	}
}

/* Anno più presente nelle card d'archivio. */
.tournament-year-card__header h3 {
	font-size: 1.6rem;
}

/* Albo delle finali come «albo d'oro»: barra oro, ombra morbida e anno in
   serif ben visibile al posto del vecchio micro-occhiello. */
.tournament-hall > div {
	border-top: 3px solid var(--am-color-gold);
	border-radius: var(--am-radius);
	box-shadow: var(--am-shadow-soft);
}

.tournament-hall span {
	margin-bottom: 0.5rem;
	color: var(--am-color-accent);
	font-family: var(--am-font-serif);
	font-size: 1.5rem;
	font-weight: 700;
	letter-spacing: 0;
	text-transform: none;
}

/* =========================================================================
   §12 · CARD-GRID — allineamento e respiro
   ========================================================================= */

/* Le card-grid sono <ul>/<ol>: dentro .page-section ereditano
   `padding-left: 1.4rem` dalla regola generica delle liste, che spinge le
   card a destra rispetto al testo (è il disallineamento della prima card in
   «Ricordo, fonti e atti» su Documentazione, e delle card d'archivio). Reset. */
.page-section :is(.page-cards, .tournament-years, .ricordi-how) {
	padding-left: 0;
}

/* «Le quattro stanze del sito» (Il progetto): da colonna stretta (46rem, che
   lasciava un grande vuoto a destra su desktop) a griglia piena e ariosa. */
.page-cards--rooms {
	max-width: none;
	gap: 1.25rem;
}

@media (min-width: 40rem) {
	.page-cards--rooms {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.page-cards--rooms .page-card {
	padding: 1.6rem;
}

/* =========================================================================
   §13 · HOMEPAGE — banda invito «Lascia il tuo ricordo»
   Rende esplicito e graficamente evidente che chiunque può inviare la
   propria dedica. Riusa le chip «come funziona» della pagina Ricordi.
   ========================================================================= */
.home-invite {
	border-block: 1px solid var(--am-color-border);
	background: linear-gradient(150deg, var(--am-color-warm), #f6efe3);
}

.home-invite__inner {
	display: grid;
	gap: 1.2rem;
	padding-block: clamp(2.75rem, 6vw, 4.25rem);
}

.home-invite__text {
	display: grid;
	gap: 0.65rem;
	max-width: 46rem;
}

.home-invite__text h2 {
	margin: 0;
	font-size: clamp(1.7rem, 3.6vw, 2.5rem);
}

.home-invite__text p {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 1.05rem;
	line-height: 1.6;
}

.home-invite .ricordi-how {
	margin: 0.25rem 0 0;
}

.home-invite__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 0.35rem;
}

/* =========================================================================
   §14 · SCHEDE ANNUALI — gallery scalabile a molte foto + tile «aggiungi»
   Le pagine per anno devono poter accogliere quante più foto possibile:
   la gallery passa a una griglia auto-fit che regge 1, 3, 6 o più immagini.
   ========================================================================= */
.edition-gallery,
.tournament-gallery {
	grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
}

.edition-gallery figure,
.tournament-gallery figure {
	transition: transform 0.15s ease;
}

.edition-gallery figure:hover,
.tournament-gallery figure:hover {
	transform: translateY(-2px);
}

/* Tile invito: chiude la gallery e chiarisce che ogni anno se ne aggiungono. */
.edition-gallery__add {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 0.6rem;
	min-height: 12rem;
	padding: 1.5rem;
	border: 1.5px dashed rgb(40 87 70 / 40%);
	border-radius: var(--am-radius);
	background: rgb(255 253 248 / 60%);
	color: var(--am-color-muted);
	text-align: left;
}

.edition-gallery__add strong {
	color: var(--am-color-accent-dark);
	font-family: var(--am-font-serif);
	font-size: 1.15rem;
}

.edition-gallery__add a {
	margin-top: 0.2rem;
	font-weight: 750;
}

/* =========================================================================
   §15 · HOMEPAGE — foto verticale del torneo leggibile (striscione)
   Su desktop la cornice si stirava più stretta di 3/4 per pareggiare
   l'altezza del testo, tagliando i lati dello striscione. La allarghiamo un
   po' e usiamo un rapporto 4/5 (leggermente meno alto di 3/4): lo striscione
   resta intero, con un minimo ritaglio su cielo/pavimento.
   ========================================================================= */
@media (min-width: 48rem) {
	.home-tournament__media--portrait {
		/* width: 100% perché, con il margin-inline-start auto della base, il
		   grid item altrimenti si stringe alla larghezza intrinseca dell'img. */
		width: 100%;
		max-width: 28rem;
	}

	.home-tournament__media--portrait .media-frame {
		flex: initial;
		aspect-ratio: 4 / 5;
	}

	.home-tournament__media--portrait .media-frame img {
		object-position: center;
	}
}

/* =========================================================================
   §16 · COUNTDOWN — barra fissa «prossimo torneo del 15 luglio»
   Markup iniettato da assets/js/countdown.js. Sobria, in basso, chiudibile.
   ========================================================================= */
.am-countdown {
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 60;
	border-top: 2px solid var(--am-color-gold);
	background: linear-gradient(180deg, var(--am-color-accent-dark), #122d24);
	color: #f4efe4;
	box-shadow: 0 -0.5rem 1.5rem rgb(23 57 46 / 22%);
}

.am-countdown__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.6rem 1.25rem;
	width: min(100% - 2rem, var(--am-wide-width));
	margin-inline: auto;
	padding-block: 0.7rem;
}

.am-countdown__text {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.3rem 0.7rem;
	min-width: 0;
}

.am-countdown__kicker {
	color: rgb(244 239 228 / 72%);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.am-countdown__value {
	font-family: var(--am-font-serif);
	font-size: 1.12rem;
	color: #fff;
}

.am-countdown--today .am-countdown__value {
	color: #ffe6b8;
}

.am-countdown__actions {
	display: flex;
	align-items: center;
	gap: 0.35rem;
}

.am-countdown__cta {
	display: inline-flex;
	align-items: center;
	padding: 0.5rem 1rem;
	border: 1px solid rgb(244 239 228 / 45%);
	border-radius: 999px;
	color: #fff;
	font-size: 0.9rem;
	font-weight: 700;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.am-countdown__cta:hover {
	border-color: var(--am-color-gold);
	background: rgb(173 133 73 / 30%);
	color: #fff;
}

.am-countdown__close {
	display: grid;
	place-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: rgb(244 239 228 / 80%);
	font-size: 1.35rem;
	line-height: 1;
	cursor: pointer;
}

.am-countdown__close:hover {
	background: rgb(255 255 255 / 12%);
	color: #fff;
}

@media (max-width: 30rem) {
	.am-countdown__value {
		font-size: 1rem;
	}
	.am-countdown__cta {
		padding: 0.45rem 0.8rem;
		font-size: 0.85rem;
	}
}

/* Iubenda — il bottone flottante «Preferenze cookie» non deve coprire la barra
   del countdown (soprattutto su mobile). Iubenda lo ancora con
   `bottom: 0 !important`; qui lo solleviamo sopra la barra riusando l'altezza
   reale esposta da countdown.js (--am-countdown-h). Le classi sono ripetute
   apposta per superare in specificità la regola !important di Iubenda; senza
   countdown il fallback riporta il bottone esattamente a bottom: 0. */
.iubenda-cs-preferences-link.iubenda-cs-preferences-link.iubenda-cs-preferences-link.iubenda-tp-btn.iubenda-tp-btn {
	bottom: calc(var(--am-countdown-h, -0.75rem) + 0.75rem) !important;
}

/* =========================================================================
   §17 · GALLERY PROFESSIONALE — miniature + lightbox (molte foto)
   .edition-gallery--grid: miniature quadrate compatte, così una pagina può
   ospitare decine di foto senza allungarsi a dismisura. La lightbox
   (assets/js/gallery.js) apre la foto grande con frecce e contatore.
   ========================================================================= */
.edition-gallery--grid {
	grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
	gap: 1.1rem 1rem;
}

.edition-gallery--grid figure {
	margin: 0;
}

.edition-gallery--grid .media-frame {
	aspect-ratio: 4 / 3;
	border-radius: var(--am-radius-small);
}

.edition-gallery[data-lightbox] figure {
	cursor: zoom-in;
}

/* La didascalia delle miniature resta per screen reader / hover, non ingombra
   la griglia fitta: la nascondiamo visivamente nella griglia compatta. */
.edition-gallery--grid figcaption {
	margin: 0.55rem 0 0;
	color: var(--am-color-muted);
	font-size: 0.85rem;
	font-style: italic;
	line-height: 1.4;
}

.edition-gallery--grid figure {
	position: relative;
}

/* Affordance «+» all'hover della miniatura. */
.edition-gallery[data-lightbox] .media-frame::after {
	content: "+";
	position: absolute;
	right: 0.5rem;
	bottom: 0.4rem;
	z-index: 2;
	display: grid;
	place-content: center;
	width: 1.7rem;
	height: 1.7rem;
	border-radius: 999px;
	background: rgb(23 57 46 / 72%);
	color: #fff;
	font-size: 1.1rem;
	line-height: 1;
	opacity: 0;
	transition: opacity 0.15s ease;
}

.edition-gallery[data-lightbox] figure:hover .media-frame::after,
.edition-gallery[data-lightbox] figure:focus-visible .media-frame::after {
	opacity: 1;
}

/* Tile «+N / aggiungi» dentro la griglia compatta. */
.edition-gallery--grid .edition-gallery__add {
	min-height: 0;
	aspect-ratio: 4 / 3;
	justify-content: center;
	padding: 1rem;
	text-align: center;
}

.edition-gallery--grid .edition-gallery__add strong {
	font-size: 1rem;
}

/* ----- Lightbox overlay ------------------------------------------------- */
.am-lb {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: none;
	flex-direction: column;
}

.am-lb.is-open {
	display: flex;
}

body.am-lb-open {
	overflow: hidden;
}

.am-lb__backdrop {
	position: absolute;
	inset: 0;
	background: rgb(16 26 22 / 92%);
}

.am-lb__stage {
	position: relative;
	z-index: 1;
	display: flex;
	flex: 1;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: 0;
	padding: clamp(0.75rem, 3vw, 2rem);
}

.am-lb__figure {
	margin: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.75rem;
	max-width: min(92vw, 70rem);
	max-height: 100%;
}

.am-lb__img {
	max-width: 100%;
	max-height: 78vh;
	border-radius: var(--am-radius-small);
	box-shadow: 0 1.5rem 3.5rem rgb(0 0 0 / 45%);
	object-fit: contain;
}

.am-lb__caption {
	max-width: 44rem;
	color: rgb(244 239 228 / 88%);
	font-size: 0.92rem;
	line-height: 1.5;
	text-align: center;
}

.am-lb__caption strong {
	color: #fff;
	font-family: var(--am-font-serif);
}

.am-lb__nav {
	flex: none;
	display: grid;
	place-content: center;
	width: 3rem;
	height: 3rem;
	border: 1px solid rgb(244 239 228 / 30%);
	border-radius: 999px;
	background: rgb(255 255 255 / 8%);
	color: #fff;
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.am-lb__nav:hover {
	border-color: var(--am-color-gold);
	background: rgb(173 133 73 / 35%);
}

.am-lb__bar {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: min(100% - 2rem, 70rem);
	margin-inline: auto;
	padding-block: 0.85rem 1.1rem;
	color: rgb(244 239 228 / 85%);
}

.am-lb__counter {
	font-size: 0.85rem;
	letter-spacing: 0.06em;
}

.am-lb__close {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.5rem 1rem;
	border: 1px solid rgb(244 239 228 / 35%);
	border-radius: 999px;
	background: transparent;
	color: #fff;
	font: inherit;
	font-size: 0.9rem;
	font-weight: 700;
	cursor: pointer;
}

.am-lb__close:hover {
	border-color: var(--am-color-gold);
	background: rgb(173 133 73 / 30%);
}

@media (max-width: 40rem) {
	.am-lb__nav {
		width: 2.5rem;
		height: 2.5rem;
		font-size: 1.35rem;
	}
	.am-lb__img {
		max-height: 68vh;
	}
}

/* §18 (campo allegati foto del form ricordi) rimosso in AM-032B: la pagina
   Ricordi non ospita più un modulo di invio, la raccolta foto è rimandata a
   una task dedicata privacy/upload. */

/* =========================================================================
   §19 · HOMEPAGE — «intenzioni» (Ricordare / Ritrovarsi / Raccontare)  [AM-033]
   Da ≥36rem main.css impagina le tre intenzioni su 3 colonne; da ≥48rem la
   sezione «Il senso del sito» diventa a due colonne e le intenzioni finiscono
   nella colonna destra, che a 768px è larga solo ~346px. Le 3 colonne (con il
   loro contenuto minimo ~409px) non ci stanno più: la terza voce «Raccontare»
   veniva tagliata da .home-main{overflow:hidden}. Nella sola fascia tablet
   (48–62rem) le impilo su una colonna; oltre i 62rem la colonna destra torna
   abbastanza larga e riprende la griglia a 3 di main.css. Nessun impatto su
   mobile né su desktop. */
@media (min-width: 48rem) and (max-width: 61.999rem) {
	.home-intentions {
		grid-template-columns: minmax(0, 1fr);
		padding-left: 0;
		border-top: 0;
	}

	.home-intention {
		padding: 1.1rem 0;
		border-top: 1px solid var(--am-color-border);
	}

	.home-intention:last-child {
		border-bottom: 1px solid var(--am-color-border);
	}
}

/* =========================================================================
   §20 · PAGINA RICORDI — blocco «Lascia un ricordo» più curato  [AM-034]
   Visual parity col mockup di Claude Design (che prevedeva un modulo di invio
   disegnato) SENZA introdurre un modulo interattivo: nessun campo di invio,
   nessun POST, upload o email. Card editoriale che riprende il linguaggio del
   modulo del mockup (keyline accent in alto, «tessere» di ciò che si può
   condividere al posto dei campi, stepper «come funziona») e resta onesta sulla
   raccolta manuale in questa fase. Solo token del tema, nessuna libreria.
   ========================================================================= */
.ricordi-invite {
	display: grid;
	gap: 1.35rem;
	max-width: 46rem;
	margin: 1.5rem 0 0;
	padding: clamp(1.5rem, 3.5vw, 2.2rem);
	border: 1px solid var(--am-color-border);
	border-top: 3px solid var(--am-color-accent);
	border-radius: var(--am-radius);
	background: var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

.ricordi-invite__head {
	display: grid;
	gap: 0.3rem;
}

.ricordi-invite__eyebrow {
	margin: 0;
	color: var(--am-color-secondary-dark);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

.ricordi-invite__lead {
	margin: 0;
	color: var(--am-color-text);
	line-height: 1.6;
}

/* Lo stepper riusa .ricordi-how; dentro la card annullo il margine in alto. */
.ricordi-invite .ricordi-how {
	margin: 0;
}

.ricordi-invite__prompts {
	display: grid;
	gap: 0.7rem;
}

.ricordi-invite__prompts-title {
	margin: 0;
	color: var(--am-color-accent-dark);
	font-family: var(--am-font-serif);
	font-size: 1.1rem;
	font-weight: 700;
}

/* «Che cosa puoi condividere»: tessere che ricordano i campi del modulo del
   mockup, ma sono puramente descrittive (nessun input, nessun invio). */
.ricordi-prompts {
	display: grid;
	gap: 0.7rem;
	grid-template-columns: 1fr; /* mobile: colonna piena (evita il track a max-content) */
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 34rem) {
	.ricordi-prompts {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.ricordi-prompt {
	display: flex;
	gap: 0.7rem;
	align-items: flex-start;
	padding: 0.9rem 1rem;
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: var(--am-color-background);
}

.ricordi-prompt__icon {
	flex: none;
	display: grid;
	place-content: center;
	width: 2.1rem;
	height: 2.1rem;
	border-radius: 999px;
	background: rgb(40 87 70 / 10%);
	color: var(--am-color-accent);
}

.ricordi-prompt__icon svg {
	width: 1.15rem;
	height: 1.15rem;
}

.ricordi-prompt__text {
	display: grid;
	gap: 0.12rem;
	min-width: 0;
}

.ricordi-prompt__title {
	color: var(--am-color-accent-dark);
	font-weight: 700;
	font-size: 0.98rem;
}

.ricordi-prompt__hint {
	color: var(--am-color-muted);
	font-size: 0.87rem;
	line-height: 1.4;
}

.ricordi-invite__foot {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.95rem;
	line-height: 1.55;
}

.ricordi-invite__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

/* =========================================================================
   §21 · FOOTER — larghezza piena (allineamento al mockup Claude Design)
   Il footer (parts/footer.html) è in un wp:group layout:constrained, quindi
   WordPress limitava ogni figlio a contentSize (720px) e lo centrava. Qui
   togliamo quel limite: brand + mission, la nav a 3 colonne e la riga finale
   usano l'intera shell (74rem), come nel mockup Claude Design. Le colonne di
   testo restano leggibili grazie ai max-width interni (mission/note = 44rem).
   ========================================================================= */
.site-footer__inner > * {
	max-width: none;
	margin-inline: 0;
}

@media (min-width: 48rem) {
	.site-footer__nav {
		width: 100%;
		grid-template-columns: repeat(3, 1fr);
	}
}

/* =========================================================================
   §22 · PAGINA RICORDI — form dedica moderato (invio + foto + esito)  [AM-039]
   Reintroduce il modulo rimosso in AM-032B, ora con backend reale
   (plugin am-memory-core): CPT am_testimonial in stato pending, anti-spam
   honeypot + time-check, upload foto con strip EXIF via GD, notifica staff.
   L'esito viaggia solo nell'ancora URL (#ricordi-grazie / #ricordi-errore) ed
   e' mostrato via :target, cosi' la pagina resta cache-friendly. Stili derivati
   dai token del tema, nessuna libreria. (§9/§18 dell'handoff Claude Design.)
   ========================================================================= */

/* Honeypot: resta nel DOM (i bot lo compilano) ma fuori schermo per le
   persone; nel markup ha aria-hidden + tabindex="-1". */
.ricordi-hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Il modulo: card con keyline accent, campi ampi, target >= 44px. */
.ricordi-form {
	display: grid;
	gap: 1.15rem;
	margin: 1.6rem 0 0;
	padding: clamp(1.4rem, 3vw, 2rem);
	border: 1px solid var(--am-color-border);
	border-top: 3px solid var(--am-color-accent);
	border-radius: var(--am-radius);
	background: var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

/* wpautop (applicato via the_content all'output dello shortcode) inserisce dei
   <br> tra <label> e campo — elementi inline separati da un newline nel markup.
   Il form non usa mai <br> legittimi, quindi li annullo: senza, ogni campo
   guadagna ~42px di vuoto tra etichetta e input. Vale sia per /ricordi/ sia per
   i modal delle schede anno (AM-047). Completa il fix wpautop di AM-045. */
.ricordi-form br {
	display: none;
}

.ricordi-form__intro {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.96rem;
	line-height: 1.55;
}

.ricordi-row {
	display: grid;
	gap: 1.15rem;
}

@media (min-width: 40rem) {
	.ricordi-row {
		grid-template-columns: 1fr 1fr;
	}
}

.ricordi-field {
	display: grid;
	gap: 0.4rem;
}

.ricordi-field label,
.ricordi-file__label {
	color: var(--am-color-accent-dark);
	font-size: 0.9rem;
	font-weight: 700;
}

.ricordi-field label .opt,
.ricordi-file__label .opt {
	color: var(--am-color-muted);
	font-weight: 400;
}

.ricordi-form input,
.ricordi-form textarea {
	width: 100%;
	min-height: 3rem;
	padding: 0.7rem 0.85rem;
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: var(--am-color-background);
	color: var(--am-color-text);
	font: inherit;
	line-height: 1.5;
}

.ricordi-form textarea {
	min-height: 8.5rem;
	resize: vertical;
}

.ricordi-form input:focus,
.ricordi-form textarea:focus {
	border-color: var(--am-color-accent);
	outline: 2px solid var(--am-color-focus);
	outline-offset: 1px;
}

.ricordi-form input::placeholder,
.ricordi-form textarea::placeholder {
	color: rgb(89 99 93 / 65%);
}

/* Campo allegati foto (handoff §18). Il campo file eredita alcune proprieta'
   dalla regola generica sopra; qui vince per bordo/padding/sfondo. */
.ricordi-file {
	display: grid;
	gap: 0.4rem;
}

.ricordi-file input[type="file"] {
	padding: 0.6rem 0.7rem;
	border: 1.5px dashed rgb(40 87 70 / 40%);
	background: var(--am-color-background);
	color: var(--am-color-muted);
	font-size: 0.92rem;
	cursor: pointer;
}

.ricordi-file input[type="file"]::file-selector-button {
	margin-right: 0.8rem;
	padding: 0.5rem 0.9rem;
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
	color: var(--am-color-accent-dark);
	font: inherit;
	font-weight: 700;
	cursor: pointer;
}

.ricordi-file input[type="file"]:focus {
	border-color: var(--am-color-accent);
	outline: 2px solid var(--am-color-focus);
	outline-offset: 1px;
}

.ricordi-file__hint {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.82rem;
	line-height: 1.45;
}

/* Consenso: riga con checkbox generosa, obbligatoria per l'invio. */
.ricordi-consent {
	display: flex;
	gap: 0.65rem;
	align-items: flex-start;
	color: var(--am-color-muted);
	font-size: 0.9rem;
	line-height: 1.5;
}

.ricordi-consent input {
	flex: none;
	width: 1.2rem;
	height: 1.2rem;
	margin-top: 0.15rem;
	accent-color: var(--am-color-accent);
}

.ricordi-consent a {
	color: var(--am-color-accent-dark);
}

.ricordi-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	align-items: center;
}

.ricordi-form__note {
	margin: 0;
	flex: 1 1 14rem;
	color: var(--am-color-muted);
	font-size: 0.85rem;
	line-height: 1.45;
}

/* Il modulo resta ancorato alla colonna di testo (46rem); le voci raccolte
   restano piu' larghe per le due colonne di card. */
.ricordi-form,
.ricordi-empty,
.ricordi-privacy-link {
	max-width: 46rem;
}

.ricordi-privacy-link {
	color: var(--am-color-muted);
	font-size: 0.95rem;
}

/* Voci approvate dallo staff: stessa griglia delle voci statiche, staccata. */
.ricordi-voices--approved {
	margin-top: 1.25rem;
}

/* Esito invio: banner mostrati solo quando sono il target dell'ancora URL,
   cosi' la pagina non porta stato lato server ed e' cache-friendly. */
.ricordi-result {
	display: none;
}

.ricordi-result:target {
	display: grid;
	scroll-margin-top: 5rem;
}

/* Dopo un invio riuscito nascondo il modulo (resta il «Grazie»); su errore il
   modulo resta visibile per correggere. «Scrivine un altro» toglie il target
   e fa riapparire il modulo. Uso la classe .ricordi-thanks--ok (solo il banner
   di successo) invece dell'id, così la regola vale per ogni istanza — /ricordi/
   e i modal delle schede anno (AM-047), qualunque sia il loro id_suffix. */
.ricordi-thanks--ok:target ~ .ricordi-form {
	display: none;
}

.ricordi-thanks__more {
	margin: 0.4rem 0 0;
}

.ricordi-thanks__more a {
	color: var(--am-color-accent-dark);
	font-weight: 700;
}

.ricordi-thanks {
	gap: 0.5rem;
	margin: 0 0 1.6rem;
	padding: clamp(1.4rem, 3vw, 2rem);
	border: 1px solid rgb(40 87 70 / 24%);
	border-top: 3px solid var(--am-color-gold);
	border-radius: var(--am-radius);
	background: var(--am-color-warm);
}

.ricordi-thanks h3 {
	margin: 0;
	color: var(--am-color-accent-dark);
}

.ricordi-thanks p {
	margin: 0;
	color: var(--am-color-text);
	line-height: 1.6;
}

.ricordi-thanks--error {
	border-top-color: #a3432b;
}

.ricordi-thanks--error h3 {
	color: #8a3a25;
}

/* Footer: link legali (Iubenda) su riga propria, sotto la firma — niente sovrapposizione. */
.site-footer__policies {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	margin: 0.85rem 0 0;
}

.site-footer__policies a {
	line-height: 1.2;
}

/* Nota "campi obbligatori" a fine modulo (posizione standard, non in cima). */
.ricordi-form__hint {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.85rem;
	line-height: 1.5;
}

.ricordi-form__hint .req {
	color: var(--am-color-gold);
	font-weight: 700;
}

/* =========================================================================
   §23 · MODAL CONTRIBUTI — form ricordi in-pagina sulle schede anno  [AM-047]
   Il riquadro «Hai foto del YYYY?» apre lo stesso form dei Ricordi in un modal:
   si contribuisce (foto/ricordo di quell'edizione) restando sulla pagina anno,
   senza account e senza rimando a /ricordi/. Apertura/chiusura via :target
   (universale); dopo un invio senza JS l'esito riappare dentro il modal via
   :has(). Nessuna libreria, solo token del tema. Il focus/Esc/focus-trap sono
   gestiti dal piccolo JS del plugin (assets/js/ricordi-form.js).
   ========================================================================= */

/* Tile: la CTA principale apre il modal, il link a Drive resta come secondario
   (specificita' >= .edition-gallery__add a della §14/§17). */
.edition-gallery__add .edition-gallery__add-cta {
	font-weight: 750;
}

.edition-gallery__add .edition-gallery__add-alt {
	margin-top: 0.1rem;
	font-size: 0.85rem;
	font-weight: 600;
	opacity: 0.85;
}

/* Overlay: nascosto finche' non e' il target dell'ancora (o, dopo un invio
   senza JS, finche' non lo e' un banner d'esito al suo interno). Lo scroll e'
   sull'overlay, cosi' su mobile un dialogo alto scorre senza tagliarsi in cima. */
.ricordi-modal {
	display: none;
}

.ricordi-modal:target,
.ricordi-modal:has(.ricordi-result:target) {
	display: flex;
	position: fixed;
	inset: 0;
	z-index: 210;
	justify-content: center;
	padding: clamp(1rem, 4vw, 3rem) 1rem;
	overflow-y: auto;
	overscroll-behavior: contain;
}

/* Backdrop cliccabile (e' un <a> verso #edition-gallery-title): chiude il modal. */
.ricordi-modal__backdrop {
	position: fixed;
	inset: 0;
	background: rgb(16 26 22 / 62%);
	cursor: pointer;
}

.ricordi-modal__dialog {
	position: relative;
	z-index: 1;
	width: min(46rem, 100%);
	margin: auto;
	padding: clamp(1.4rem, 3vw, 2.2rem);
	border-radius: var(--am-radius);
	border-top: 3px solid var(--am-color-accent);
	background: var(--am-color-surface);
	box-shadow: 0 1.5rem 3.5rem rgb(16 26 22 / 32%);
}

@media (prefers-reduced-motion: no-preference) {
	.ricordi-modal:target .ricordi-modal__dialog,
	.ricordi-modal:has(.ricordi-result:target) .ricordi-modal__dialog {
		animation: ricordi-modal-in 0.18s ease-out both;
	}
}

@keyframes ricordi-modal-in {
	from {
		opacity: 0;
		transform: translateY(0.6rem);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.ricordi-modal__head {
	display: grid;
	gap: 0.35rem;
	margin-right: 2.6rem; /* spazio per il bottone di chiusura */
}

.ricordi-modal__head h2 {
	margin: 0;
	color: var(--am-color-accent-dark);
	font-size: clamp(1.3rem, 3vw, 1.6rem);
}

.ricordi-modal__head p {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.95rem;
	line-height: 1.55;
}

.ricordi-modal__close {
	position: absolute;
	top: 0.6rem;
	right: 0.6rem;
	display: grid;
	place-content: center;
	width: 2.4rem;
	height: 2.4rem;
	border-radius: 999px;
	background: var(--am-color-background);
	color: var(--am-color-accent-dark);
	font-size: 1.6rem;
	line-height: 1;
	text-decoration: none;
}

.ricordi-modal__close:hover,
.ricordi-modal__close:focus-visible {
	background: var(--am-color-warm);
}

/* Dentro il modal il dialogo E' gia' la card: azzero bordo/ombra/padding del
   form perche' non si annidi una card dentro una card. */
.ricordi-modal .ricordi-form {
	margin: 1.1rem 0 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	max-width: none;
}

/* Banner d'esito dentro al modal: staccati dalla testata, senza doppio margine. */
.ricordi-modal .ricordi-thanks {
	margin: 1.1rem 0 0;
}

/* =========================================================================
   §24 · TESTIMONIANZE — foto allegate agli invii approvati  [AM-052]
   Le foto caricate dal form Ricordi sono attachment parentati alla
   testimonianza: il plugin le rende nelle card approvate e nella pagina
   singola. Qui le impaginiamo con la stessa media-frame del tema, cosi'
   ereditano lightbox, bordi, crop e focus gia' verificati.
   ========================================================================= */

.am-testimonial-photos {
	margin-top: 2rem;
}

.am-testimonial-photos h2 {
	margin-bottom: 1rem;
	color: var(--am-color-accent-dark);
}

.am-testimonial-photos__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
	gap: 0.9rem;
}

.am-testimonial-photos__item {
	margin: 0;
}

.am-testimonial-photos__grid .media-frame {
	border-radius: var(--am-radius-small);
}

.voice-card__photos {
	margin-top: 0.35rem;
}

.am-testimonial-photos__grid--compact {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 7rem), 1fr));
	gap: 0.65rem;
}

.voice-card__photos .media-frame {
	display: block;
	aspect-ratio: 4 / 3;
	box-shadow: none;
}

.voice-card__link {
	position: relative;
	z-index: 1;
	margin: 0.35rem 0 0;
	clear: both;
}

.voice-card__link a {
	color: var(--am-color-accent-dark);
	font-size: 0.88rem;
	font-weight: 750;
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.16em;
}

/* =========================================================================
   §25 · DOCUMENTAZIONE — hero, navigazione e cronologia estesa  [AM-053]
   ========================================================================= */

.page-hero--documentary > .doc-hero {
	display: grid;
	gap: clamp(1.5rem, 4vw, 3.5rem);
	align-items: center;
	width: min(100% - (var(--am-space-page) * 2), 68rem);
	padding-block: clamp(2.5rem, 6vw, 4.75rem);
}

.page-hero--documentary > .doc-hero::before {
	content: none;
}

.doc-hero__copy {
	min-width: 0;
}

.doc-hero__copy::before {
	display: block;
	width: 2.75rem;
	height: 3px;
	margin-bottom: 1rem;
	background: var(--am-color-accent);
	content: "";
}

.doc-hero__facts {
	display: grid;
	gap: 0.65rem;
	margin: 1.5rem 0 0;
}

.doc-hero__facts > div {
	display: grid;
	grid-template-columns: 3.2rem minmax(0, 1fr);
	gap: 0.75rem;
	align-items: baseline;
	padding-top: 0.65rem;
	border-top: 1px solid rgb(40 87 70 / 18%);
}

.doc-hero__facts dt {
	color: var(--am-color-secondary-dark);
	font-size: 0.78rem;
	font-weight: 800;
}

.doc-hero__facts dd {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.88rem;
	line-height: 1.4;
}

.doc-hero__media {
	width: 100%;
	max-width: 31rem;
	margin: 0;
	justify-self: end;
}

.doc-hero__media .media-frame {
	display: block;
	aspect-ratio: 31 / 17;
	border-color: rgb(40 87 70 / 22%);
	box-shadow: var(--am-shadow-plate);
}

.doc-hero__media figcaption {
	margin-top: 0.65rem;
	color: var(--am-color-muted);
	font-size: 0.78rem;
	line-height: 1.45;
}

@media (min-width: 52rem) {
	.page-hero--documentary > .doc-hero {
		grid-template-columns: minmax(0, 1.08fr) minmax(18rem, 0.92fr);
	}
}

.doc-jump {
	border-block: 1px solid var(--am-color-border);
	background: var(--am-color-surface);
}

.doc-jump .site-shell {
	display: flex;
	gap: 0.55rem;
	align-items: center;
	padding-block: 0.85rem;
	overflow-x: auto;
	scrollbar-width: thin;
}

.doc-jump a {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	min-height: 2.75rem;
	padding: 0.52rem 0.9rem;
	border-radius: 999px;
	color: var(--am-color-accent-dark);
	font-size: clamp(0.92rem, 0.35vw + 0.82rem, 1rem);
	font-weight: 750;
	line-height: 1.1;
	text-decoration: none;
	white-space: nowrap;
}

@media (min-width: 64rem) {
	.doc-jump .site-shell {
		gap: 0.7rem;
		padding-block: 0.95rem;
	}

	.doc-jump a {
		padding-inline: 1rem;
	}
}

.doc-jump a:hover,
.doc-jump a:focus-visible {
	background: var(--am-color-warm);
}

.doc-status {
	display: grid;
	gap: 0.35rem;
	margin-top: 1.4rem;
	padding: 1rem 1.15rem;
	border-left: 4px solid var(--am-color-accent);
	background: rgb(217 232 223 / 45%);
}

.doc-status__label {
	color: var(--am-color-accent-dark);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.doc-status p {
	margin: 0;
	font-size: 0.94rem;
	line-height: 1.55;
}

.doc-years {
	display: grid;
	gap: 0.8rem;
	margin-top: 1.5rem;
}

.doc-year {
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
}

.doc-year > summary {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: 0.8rem;
	align-items: center;
	min-height: 3.4rem;
	padding: 0.8rem 1rem;
	color: var(--am-color-accent-dark);
	cursor: pointer;
	list-style: none;
}

.doc-year > summary::-webkit-details-marker {
	display: none;
}

.doc-year > summary::after {
	display: grid;
	place-content: center;
	width: 1.8rem;
	height: 1.8rem;
	border: 1px solid var(--am-color-border);
	border-radius: 50%;
	font-size: 1.1rem;
	font-weight: 400;
	content: "+";
}

.doc-year[open] > summary::after {
	content: "−";
}

.doc-year > summary span {
	color: var(--am-color-secondary-dark);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.06em;
}

.doc-year > summary strong {
	font-family: var(--am-font-serif);
	font-size: 1rem;
	line-height: 1.25;
}

.doc-year > summary:hover,
.doc-year > summary:focus-visible {
	background: var(--am-color-warm);
}

.doc-year[open] > summary {
	border-bottom: 1px solid var(--am-color-border);
}

.doc-timeline {
	margin: 0;
	padding: 1.25rem 1.15rem 1.25rem 1.55rem;
}

.doc-timeline li {
	padding-bottom: 1.6rem;
}

.doc-timeline h3 {
	margin: 0 0 0.35rem;
	font-size: 1.08rem;
}

.doc-timeline p {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.94rem;
	line-height: 1.55;
}

.doc-timeline__source {
	display: inline-flex;
	gap: 0.35rem;
	align-items: baseline;
	margin-top: 0.6rem;
	color: var(--am-color-accent-dark);
	font-size: 0.82rem;
	font-weight: 750;
	line-height: 1.4;
	text-decoration-thickness: 0.08em;
	text-underline-offset: 0.16em;
}

.doc-timeline__source::after {
	font-size: 0.85em;
	content: "↗";
}

.doc-timeline__source--caution {
	color: var(--am-color-secondary-dark);
}

.doc-year__context {
	padding: 1.1rem 1.2rem 1.25rem;
}

.doc-year__context p {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.94rem;
	line-height: 1.55;
}

.doc-context {
	margin-top: 1.4rem;
	border-block: 1px solid var(--am-color-border);
}

.doc-context > summary {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 0.2rem 1rem;
	align-items: center;
	min-height: 3.75rem;
	padding: 0.85rem 0;
	color: var(--am-color-accent-dark);
	cursor: pointer;
	list-style: none;
}

.doc-context > summary::-webkit-details-marker {
	display: none;
}

.doc-context > summary::after {
	display: grid;
	grid-column: 2;
	grid-row: 1 / span 2;
	place-content: center;
	width: 2rem;
	height: 2rem;
	border: 1px solid var(--am-color-border);
	border-radius: 50%;
	content: "+";
}

.doc-context[open] > summary::after {
	content: "−";
}

.doc-context > summary strong,
.doc-context > summary span {
	grid-column: 1;
}

.doc-context > summary strong {
	font-family: var(--am-font-serif);
	font-size: 1.02rem;
}

.doc-context > summary span {
	color: var(--am-color-muted);
	font-size: 0.78rem;
}

.doc-context > summary:hover,
.doc-context > summary:focus-visible {
	color: var(--am-color-secondary-dark);
}

.doc-context[open] > summary {
	border-bottom: 1px solid var(--am-color-border);
}

.doc-context__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.doc-context__list li {
	padding: 1.1rem 0 1.2rem;
	border-bottom: 1px solid rgb(40 87 70 / 13%);
}

.doc-context__list li:last-child {
	border-bottom: 0;
}

.doc-context__list time {
	display: block;
	margin-bottom: 0.3rem;
	color: var(--am-color-secondary-dark);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.doc-context__list h3 {
	margin: 0 0 0.3rem;
	font-size: 1rem;
}

.doc-context__list p {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.9rem;
	line-height: 1.55;
}

.doc-context__list a {
	display: inline-flex;
	gap: 0.25rem;
	align-items: baseline;
	margin: 0.55rem 0.8rem 0 0;
	color: var(--am-color-accent-dark);
	font-size: 0.8rem;
	font-weight: 750;
	text-underline-offset: 0.14em;
}

.doc-context__list a::after {
	font-size: 0.85em;
	content: "↗";
}

.doc-source-groups {
	display: grid;
	gap: 1rem;
	margin-top: 1.5rem;
}

.doc-source-group {
	padding: 1.2rem 1.3rem 1.3rem;
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

.doc-source-group h3 {
	margin: 0.65rem 0 0.45rem;
	font-size: 1.08rem;
}

.doc-source-group p,
.doc-source-group ul {
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.9rem;
	line-height: 1.55;
}

.doc-source-group ul {
	padding-left: 1.1rem;
}

.doc-source-group li + li {
	margin-top: 0.45rem;
}

.doc-source-group a {
	font-weight: 650;
	text-underline-offset: 0.14em;
}

.doc-source__type--context {
	border-color: rgb(173 133 73 / 35%);
	background: rgb(244 239 228 / 75%);
	color: var(--am-color-secondary-dark);
}

@media (min-width: 52rem) {
	.doc-source-groups {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 35rem) {
	.doc-year > summary {
		grid-template-columns: minmax(0, 1fr) auto;
	}

	.doc-year > summary span {
		grid-column: 1;
	}

	.doc-year > summary strong {
		grid-column: 1;
	}

	.doc-year > summary::after {
		grid-column: 2;
		grid-row: 1 / span 2;
	}
}

/* =========================================================================
   §26 · TORNEO — indice edizioni + telecronaca di Trullovic  [AM-061]
   a) .edition-index: strip con gli anni 2015–2026 subito sotto la hero
      dell'hub e delle schede anno. Nasce dal feedback utente: le card delle
      edizioni erano visibili solo dopo molto scroll; le pill rendono chiaro
      da subito che esiste una scheda per ogni anno. Su schermi stretti la
      lista scorre in orizzontale senza rompere il layout.
   b) .edition-telecronaca: la «cronaca differita» integrale di mister
      Trullovic nelle schede anno: ritratto (monogramma in attesa della
      foto), contesto e lettura a scomparsa via <details>, per non
      trasformare la pagina in un muro di testo. Componente riutilizzabile
      sulle prossime edizioni; keyline gialla come la squadra dei ragazzi.
   ========================================================================= */
.edition-index {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin: 0 0 clamp(1.8rem, 4vw, 2.6rem);
	padding: 1.05rem 1.15rem 1.15rem;
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: linear-gradient(160deg, var(--am-color-surface), var(--am-color-warm));
}

.edition-index__label {
	display: flex;
	gap: 0.7rem;
	align-items: center;
	color: var(--am-color-secondary);
	font-size: 0.78rem;
	font-weight: 750;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.edition-index__label::before {
	width: 1.5rem;
	height: 2px;
	background: var(--am-color-gold);
	content: "";
}

.edition-index__list {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.55rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.edition-index__list li {
	padding: 0;
}

.edition-index__list a,
.edition-index__here {
	display: grid;
	min-height: 2.75rem;
	padding: 0.45rem 0.55rem;
	border: 1px solid var(--am-color-border);
	border-radius: 999px;
	background: var(--am-color-surface);
	font-size: 1rem;
	font-weight: 650;
	line-height: 1.2;
	place-items: center;
	text-decoration: none;
}

.edition-index__list a {
	color: var(--am-color-accent-dark);
}

.edition-index__list a:hover,
.edition-index__list a:focus-visible {
	border-color: var(--am-color-accent);
	background: var(--am-color-accent);
	color: #fff;
}

.edition-index__list a.edition-index__next {
	border-color: var(--am-color-gold);
	box-shadow: inset 0 -2px 0 var(--am-color-gold);
	font-weight: 750;
}

.edition-index__here {
	border-color: var(--am-color-accent-dark);
	background: var(--am-color-accent-dark);
	color: #fff;
}

@media (min-width: 48rem) {
	.edition-index {
		padding: 1.2rem 1.35rem;
	}

	.edition-index__list {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}
}

@media (min-width: 64rem) {
	.edition-index {
		display: grid;
		grid-template-columns: 10.5rem minmax(0, 1fr);
		align-items: center;
	}
}

/* Raccolta delle cronache differite: una destinazione unica, leggibile
   anche senza sapere in quale anno è stata pubblicata ogni telecronaca. */
.tournament-telecronache__intro {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 1rem 1.35rem;
	align-items: center;
	max-width: 48rem;
}

.tournament-telecronache__portrait {
	width: 6.5rem;
	aspect-ratio: 1;
	margin: 0;
	overflow: hidden;
	border: 1px solid var(--am-color-border);
	border-bottom: 3px solid var(--am-color-gold);
	border-radius: var(--am-radius);
	box-shadow: var(--am-shadow-soft);
}

.tournament-telecronache__portrait img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tournament-telecronache__kicker,
.edition-live__kicker {
	display: flex;
	gap: 0.55rem;
	align-items: center;
	margin: 0 0 0.55rem;
	color: var(--am-color-secondary);
	font-size: 0.78rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.tournament-telecronache__kicker::before,
.edition-live__kicker::before {
	width: 1.5rem;
	height: 2px;
	background: var(--am-color-gold);
	content: "";
}

.tournament-telecronache__intro h2,
.edition-live__intro h2 {
	margin: 0;
}

.tournament-telecronache__intro p:not(.tournament-telecronache__kicker),
.edition-live__intro p:not(.edition-live__kicker) {
	margin-bottom: 0;
}

.tournament-telecronache__list {
	display: grid;
	gap: 0.7rem;
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
}

.tournament-telecronache__list li {
	margin: 0;
	padding: 0;
}

.tournament-telecronache__list a {
	display: grid;
	grid-template-columns: 3.5rem minmax(0, 1fr) auto;
	gap: 0.8rem;
	align-items: center;
	min-height: 3.25rem;
	padding: 0.65rem 0.85rem;
	border: 1px solid var(--am-color-border);
	border-left: 3px solid var(--am-color-gold);
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
	color: var(--am-color-accent-dark);
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
}

.tournament-telecronache__list a:hover,
.tournament-telecronache__list a:focus-visible {
	border-color: var(--am-color-accent);
	background: var(--am-color-warm);
	color: var(--am-color-secondary-dark);
}

.tournament-telecronache__year {
	color: var(--am-color-secondary);
	font-family: var(--am-font-serif);
	font-size: 1.25rem;
	font-weight: 700;
}

.tournament-hall__source {
	color: var(--am-color-secondary-dark);
	font-size: 0.9rem;
	font-weight: 700;
	white-space: nowrap;
}

/* Stato della diretta 2026: il blocco resta esplicito finché non esiste un
   collegamento verificato; così non viene presentata una diretta inesistente. */
.edition-live {
	display: grid;
	gap: 1.35rem;
	padding-block: 1.75rem;
	border-block: 1px solid var(--am-color-border);
}

.edition-live__intro {
	max-width: 46rem;
}

.edition-live__status {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 0.35rem 0.75rem;
	align-items: center;
	max-width: 30rem;
	padding: 1rem 1.1rem;
	border: 1px solid var(--am-color-border);
	border-left: 4px solid var(--am-color-gold);
	border-radius: var(--am-radius-small);
	background: var(--am-color-warm);
}

.edition-live__dot {
	width: 0.7rem;
	height: 0.7rem;
	border-radius: 50%;
	background: var(--am-color-gold);
}

.edition-live__status strong {
	color: var(--am-color-accent-dark);
}

.edition-live__status p {
	grid-column: 2;
	margin: 0;
	color: var(--am-color-muted);
	font-size: 0.94rem;
	line-height: 1.45;
}

.edition-live__player {
	display: grid;
	gap: 0.75rem;
}

.edition-live__player iframe {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	border: 0;
	border-radius: var(--am-radius-small);
	background: #111;
	box-shadow: var(--am-shadow-soft);
}

.edition-live__fallback {
	justify-self: start;
	color: var(--am-color-accent-dark);
	font-weight: 750;
	text-underline-offset: 0.22em;
}

@media (min-width: 48rem) {
	.tournament-telecronache__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.edition-live {
		grid-template-columns: minmax(0, 1fr) minmax(16rem, 0.8fr);
		align-items: center;
	}
}

@media (max-width: 25rem) {
	.tournament-telecronache__intro {
		grid-template-columns: 1fr;
	}
}

/* AM-083: calendario pubblico del Morricella's Day 2026. Il blocco usa
   una lista ordinata, non una tabella fitta, cosi resta leggibile da telefono. */
.edition-schedule {
	padding: clamp(1.35rem, 4vw, 2rem);
	border: 1px solid var(--am-color-border);
	border-top: 4px solid var(--am-color-gold);
	border-radius: var(--am-radius-medium);
	background:
		linear-gradient(135deg, rgba(253, 250, 244, 0.98), rgba(244, 238, 226, 0.92)),
		var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

.edition-schedule__intro {
	max-width: 46rem;
}

.edition-schedule__kicker {
	display: flex;
	gap: 0.55rem;
	align-items: center;
	margin: 0 0 0.55rem;
	color: var(--am-color-secondary);
	font-size: 0.78rem;
	font-weight: 750;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.edition-schedule__kicker::before {
	width: 1.5rem;
	height: 2px;
	background: var(--am-color-gold);
	content: "";
}

.edition-schedule__intro h2 {
	margin-bottom: 0.7rem;
}

.edition-schedule__rules {
	display: grid;
	gap: 0.75rem;
	margin-top: 1.25rem;
}

.edition-schedule__rules > div,
.edition-schedule__note,
.edition-schedule__toast {
	padding: 0.9rem 1rem;
	border: 1px solid rgba(75, 61, 44, 0.16);
	border-radius: var(--am-radius-small);
	background: rgba(255, 255, 255, 0.62);
}

.edition-schedule__rules strong,
.edition-schedule__note strong,
.edition-schedule__toast strong {
	display: block;
	color: var(--am-color-accent-dark);
	font-size: 0.92rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.edition-schedule__rules p,
.edition-schedule__note p,
.edition-schedule__toast p {
	margin: 0.35rem 0 0;
	color: var(--am-color-muted);
	font-size: 0.95rem;
	line-height: 1.45;
}

.edition-schedule__matches {
	display: grid;
	gap: 0.65rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
}

.edition-schedule__match {
	display: grid;
	gap: 0.6rem;
	padding: 0.85rem;
	border: 1px solid rgba(75, 61, 44, 0.16);
	border-left: 4px solid var(--am-color-secondary);
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
}

.edition-schedule__match time {
	color: var(--am-color-secondary-dark);
	font-family: var(--am-font-serif);
	font-size: 1.08rem;
	font-weight: 760;
	line-height: 1.1;
}

.edition-schedule__teams {
	display: flex;
	flex-wrap: wrap;
	gap: 0.45rem;
	align-items: center;
	color: var(--am-color-muted);
	font-weight: 750;
}

.team-pill {
	display: inline-flex;
	align-items: center;
	min-height: 2rem;
	padding: 0.3rem 0.62rem;
	border: 1px solid currentColor;
	border-radius: 999px;
	background: var(--am-color-surface);
	color: var(--am-color-accent-dark);
	font-size: 0.88rem;
	line-height: 1.1;
}

.team-pill::before {
	width: 0.55rem;
	height: 0.55rem;
	margin-right: 0.42rem;
	border-radius: 50%;
	background: currentColor;
	content: "";
}

.team-pill--gialla {
	background: #fff7c4;
	color: #8b6500;
}

.team-pill--rossa {
	background: #ffe0db;
	color: #9a2f22;
}

.team-pill--nera {
	background: #262626;
	color: #fff;
}

.team-pill--bianca {
	background: #fff;
	color: #665d50;
}

.edition-schedule__match--final {
	border-left-color: var(--am-color-gold);
	background: linear-gradient(135deg, #fff9e6, #fff);
}

.edition-schedule__match--final .edition-schedule__teams {
	gap: 0.35rem 0.6rem;
}

.edition-schedule__match--final strong {
	color: var(--am-color-accent-dark);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.edition-schedule__note,
.edition-schedule__toast {
	margin-top: 1rem;
}

.edition-schedule__toast {
	border-color: rgba(138, 95, 24, 0.28);
	background: rgba(255, 248, 226, 0.72);
}

@media (min-width: 42rem) {
	.edition-schedule__rules {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}

	.edition-schedule__match {
		grid-template-columns: minmax(8.5rem, 0.42fr) minmax(0, 1fr);
		align-items: center;
	}
}

.page-hero--tournament .page-cta {
	margin-top: 1.5rem;
}

.edition-telecronaca__head {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: 1rem 1.35rem;
	align-items: center;
	max-width: 46rem;
	margin-top: 1.4rem;
}

.edition-telecronaca__portrait {
	display: grid;
	place-items: center;
	width: clamp(5.25rem, 14vw, 7.25rem);
	aspect-ratio: 1;
	margin: 0;
	overflow: hidden;
	border: 1px solid var(--am-color-border);
	border-bottom: 3px solid #c9a13b;
	border-radius: var(--am-radius);
	background: linear-gradient(160deg, var(--am-color-warm), var(--am-color-surface));
	box-shadow: var(--am-shadow-soft);
}

.edition-telecronaca__portrait img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.edition-telecronaca__monogram {
	color: var(--am-color-secondary-dark);
	font-family: var(--am-font-serif);
	font-size: clamp(1.5rem, 4vw, 1.95rem);
	font-weight: 700;
	letter-spacing: 0.05em;
}

.edition-telecronaca__kicker {
	display: flex;
	gap: 0.55rem;
	align-items: center;
	margin: 0 0 0.55rem;
	color: var(--am-color-secondary);
	font-size: 0.7rem;
	font-weight: 750;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.edition-telecronaca__kicker::before {
	width: 1.5rem;
	height: 2px;
	background: var(--am-color-gold);
	content: "";
}

.edition-telecronaca__meta p:not(.edition-telecronaca__kicker) {
	margin: 0;
	line-height: 1.6;
}

.edition-telecronaca__reader {
	max-width: 46rem;
	margin-top: clamp(1.3rem, 3vw, 1.9rem);
	border: 1px solid var(--am-color-border);
	border-left: 4px solid var(--am-color-gold);
	border-radius: 0 var(--am-radius) var(--am-radius) 0;
	background: linear-gradient(160deg, var(--am-color-surface), var(--am-color-warm));
	box-shadow: var(--am-shadow-soft);
}

.edition-telecronaca__reader > summary {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 0.25rem 1rem;
	align-items: center;
	padding: 1rem 1.25rem;
	color: var(--am-color-accent-dark);
	cursor: pointer;
	list-style: none;
}

.edition-telecronaca__reader > summary::-webkit-details-marker {
	display: none;
}

.edition-telecronaca__reader > summary > span:first-child {
	grid-column: 1;
	font-family: var(--am-font-serif);
	font-size: 1.05rem;
	font-weight: 700;
}

.edition-telecronaca__hint {
	grid-column: 1;
	color: var(--am-color-muted);
	font-size: 0.78rem;
	font-style: italic;
}

.edition-telecronaca__reader > summary::after {
	display: grid;
	grid-column: 2;
	grid-row: 1 / span 2;
	place-content: center;
	width: 2rem;
	height: 2rem;
	border: 1px solid var(--am-color-border);
	border-radius: 50%;
	font-size: 1.15rem;
	font-weight: 400;
	content: "+";
}

.edition-telecronaca__reader[open] > summary::after {
	content: "−";
}

.edition-telecronaca__reader > summary:hover,
.edition-telecronaca__reader > summary:focus-visible {
	color: var(--am-color-secondary-dark);
}

.edition-telecronaca__reader[open] > summary {
	border-bottom: 1px solid var(--am-color-border);
}

.edition-telecronaca__text {
	padding: 1.2rem 1.3rem 1.35rem;
}

.edition-telecronaca__text p {
	margin: 0 0 0.95rem;
	font-size: 0.97rem;
	line-height: 1.65;
}

.edition-telecronaca__text p:last-child {
	margin-bottom: 0;
}

.edition-telecronaca__text .edition-telecronaca__sign {
	margin-top: 1.15rem;
	color: var(--am-color-secondary-dark);
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.05em;
}

/* =========================================================================
   §27 · TORNEO — card giocatori con foto o monogramma  [AM-059/AM-062]
   I roster delle schede anno (2018-2026) passano da lista testuale a
   griglia di card giocatore (ul.roster-grid): riquadro quadrato con la
   foto (WebP 320px, EXIF rimossi, crop sul soggetto) oppure, per chi non
   ha ancora una foto, monogramma con le iniziali su fondo caldo. Keyline
   nel colore della squadra. Le liste descrittive (es. «cantera» 2024)
   restano <ul> semplici senza classe.
   ========================================================================= */
.edition-officials {
	margin: 1.3rem 0 1.6rem;
}

.edition-officials__card {
	display: grid;
	grid-template-columns: minmax(5.5rem, 7rem) 1fr;
	gap: clamp(0.9rem, 2vw, 1.25rem);
	align-items: center;
	max-width: 42rem;
	padding: clamp(0.95rem, 2vw, 1.25rem);
	border: 1px solid var(--am-color-border);
	border-left: 4px solid var(--am-color-gold);
	border-radius: var(--am-radius-small);
	background: linear-gradient(135deg, var(--am-color-warm), var(--am-color-surface));
	box-shadow: var(--am-shadow-soft);
}

.edition-officials__media {
	display: block;
	overflow: hidden;
	aspect-ratio: 1 / 1;
	border: 1px solid rgba(48, 62, 63, 0.18);
	border-bottom: 3px solid #2f7f7a;
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
}

.edition-officials__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.edition-officials__body {
	min-width: 0;
}

.edition-officials__eyebrow {
	margin: 0 0 0.2rem;
	color: var(--am-color-secondary-dark);
	font-size: 0.72rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.edition-officials__card h3 {
	margin: 0;
	color: var(--am-color-accent-dark);
	font-size: clamp(1.15rem, 2.5vw, 1.45rem);
}

.edition-officials__card p:last-child {
	margin: 0.35rem 0 0;
	color: var(--am-color-muted);
	font-size: 0.9rem;
	line-height: 1.55;
}

.edition-roster__team ul.roster-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(5.6rem, 1fr));
	gap: 0.8rem 0.7rem;
}

.edition-roster__team .roster-grid > li.roster-player {
	display: grid;
	gap: 0.4rem;
	justify-items: center;
	padding-top: 0;
	border-top: 0;
	text-align: center;
}

.roster-player__media {
	display: grid;
	place-items: center;
	width: 100%;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	border: 1px solid var(--am-color-border);
	border-bottom: 3px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: linear-gradient(160deg, var(--am-color-warm), var(--am-color-surface));
	box-shadow: var(--am-shadow-soft);
}

.edition-roster__team--rossa .roster-player__media {
	border-bottom-color: #a24734;
}

.edition-roster__team--blu .roster-player__media {
	border-bottom-color: #34558b;
}

.edition-roster__team--bianca .roster-player__media {
	border-bottom-color: #cfc8b9;
}

.edition-roster__team--gialla .roster-player__media {
	border-bottom-color: #c9a13b;
}

.edition-roster__team--turchese .roster-player__media {
	border-bottom-color: #2f7f7a;
}

.roster-player__media img,
.roster-player__photo {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.roster-player__monogram {
	color: var(--am-color-secondary-dark);
	font-family: var(--am-font-serif);
	font-size: clamp(1.15rem, 2.4vw, 1.5rem);
	font-weight: 700;
	letter-spacing: 0.04em;
}

.roster-player__name {
	color: var(--am-color-accent-dark);
	font-size: 0.8rem;
	font-weight: 650;
	line-height: 1.25;
}

.edition-roster__pending {
	max-width: 46rem;
	margin: 1.15rem 0 0;
	color: var(--am-color-muted);
	font-size: 0.88rem;
	line-height: 1.55;
}

@media (max-width: 540px) {
	.edition-officials__card {
		grid-template-columns: 5.6rem 1fr;
	}
}

/* =========================================================================
   Section 28 - Collettivo Morricella and 2026 live placement [AM-071]
   The live area is a visible editorial band, not a simulated player. The
   collective page uses verified sources and leaves the video empty until the
   broadcaster's rights are cleared.
   ========================================================================= */
.edition-live--featured {
	margin-top: 1.5rem;
	padding: clamp(1.35rem, 3vw, 2.25rem);
	border: 1px solid var(--am-color-border);
	border-left: 4px solid var(--am-color-gold);
	background: var(--am-color-warm);
}

.edition-live--featured .edition-live__status {
	max-width: none;
	background: var(--am-color-surface);
}

.edition-live__placement {
	margin-top: 0.75rem;
	color: var(--am-color-secondary-dark);
	font-weight: 650;
}

/* AM-089: post-evento 2026. La foto principale entra nella hero senza
   trasformarla in landing page; risultato e formazioni restano raggiungibili
   subito da mobile con CTA e una card di riepilogo. */
.edition-hero-media {
	max-width: 58rem;
	margin: clamp(1.35rem, 4vw, 2.25rem) 0 0;
}

.edition-hero-media .media-frame {
	border-radius: var(--am-radius-small);
	box-shadow: var(--am-shadow-soft);
}

.edition-result {
	margin-top: clamp(1.5rem, 4vw, 2.25rem);
}

.edition-result__card {
	display: grid;
	gap: 0.8rem;
	max-width: 52rem;
	padding: clamp(1.1rem, 3vw, 1.55rem);
	border: 1px solid var(--am-color-border);
	border-left: 4px solid var(--am-color-gold);
	border-radius: var(--am-radius-small);
	background: linear-gradient(135deg, var(--am-color-warm), var(--am-color-surface));
	box-shadow: var(--am-shadow-soft);
}

.edition-result__kicker {
	display: flex;
	gap: 0.55rem;
	align-items: center;
	margin: 0;
	color: var(--am-color-secondary);
	font-size: 0.74rem;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.edition-result__kicker::before {
	width: 1.5rem;
	height: 2px;
	background: var(--am-color-gold);
	content: "";
}

.edition-result__card h2 {
	margin: 0;
}

.edition-result__card p:not(.edition-result__kicker) {
	margin: 0;
	color: var(--am-color-muted);
}

.edition-result__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem;
	margin-top: 0.2rem;
}

.edition-result__actions a {
	display: inline-flex;
	align-items: center;
	min-height: 2.55rem;
	padding: 0.45rem 0.78rem;
	border: 1px solid rgba(40, 87, 70, 0.28);
	border-radius: 999px;
	background: var(--am-color-surface);
	color: var(--am-color-accent-dark);
	font-size: 0.9rem;
	font-weight: 750;
	line-height: 1.15;
	text-decoration: none;
}

.edition-result__actions a:hover,
.edition-result__actions a:focus-visible {
	border-color: var(--am-color-accent);
	background: var(--am-color-accent);
	color: #fff;
}

.testimonial-breadcrumb {
	margin: 0 0 1.1rem;
}

.collective-hero-media .media-frame {
	background: var(--am-color-accent-dark);
}

.collective-intro {
	padding-bottom: 0.5rem;
}

.collective-timeline {
	margin-top: 1.6rem;
}

.collective-timeline h3 {
	margin: 0;
	color: var(--am-color-accent-dark);
	font-size: 1.12rem;
	line-height: 1.3;
}

.collective-timeline p {
	margin: 0.45rem 0 0.7rem;
}

.collective-source-link {
	display: inline-flex;
	gap: 0.4rem;
	align-items: baseline;
	color: var(--am-color-secondary-dark);
	font-size: 0.92rem;
	font-weight: 700;
	line-height: 1.4;
}

.collective-sources {
	display: grid;
	gap: 0.75rem;
	margin: 1.4rem 0 0;
	padding: 0;
	list-style: none;
}

.collective-sources li {
	margin: 0;
	padding: 0;
}

.collective-sources a {
	display: grid;
	gap: 0.15rem;
	min-height: 4.25rem;
	padding: 0.85rem 1rem;
	border: 1px solid var(--am-color-border);
	border-left: 3px solid var(--am-color-gold);
	border-radius: var(--am-radius-small);
	background: var(--am-color-surface);
	color: var(--am-color-accent-dark);
	text-decoration: none;
}

.collective-sources a:hover,
.collective-sources a:focus-visible {
	border-color: var(--am-color-accent);
	background: var(--am-color-warm);
}

.collective-sources strong {
	font-size: 1rem;
}

.collective-sources span:not(.screen-reader-text) {
	color: var(--am-color-muted);
	font-size: 0.92rem;
	line-height: 1.35;
}

@media (min-width: 48rem) {
	.edition-live--featured {
		grid-template-columns: minmax(0, 1.1fr) minmax(17rem, 0.9fr);
	}

	.collective-sources {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* =========================================================================
   Section 29 - Collettivo identity and initiatives refresh [AM-072]
   ========================================================================= */
.collective-hero-facts span:first-child {
	background: var(--am-color-accent-dark);
	color: var(--am-color-surface);
}

.collective-hero-media {
	align-self: center;
}

.collective-hero-media__figure {
	margin: 0;
	overflow: hidden;
	border: 1px solid var(--am-color-border);
	border-radius: var(--am-radius-small);
	background: var(--am-color-accent-dark);
	box-shadow: var(--am-shadow-soft);
}

.collective-hero-media__figure img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.collective-hero-media__caption {
	margin: 0.7rem 0 0;
	color: var(--am-color-muted);
	font-size: 0.88rem;
	line-height: 1.45;
}

.collective-origin {
	display: grid;
	gap: 1.25rem;
	padding-block: clamp(1.75rem, 4vw, 3.25rem);
	border-top: 1px solid var(--am-color-border);
	border-bottom: 1px solid var(--am-color-border);
}

.collective-origin h2,
.collective-section-heading h2,
.collective-plan h2 {
	margin-top: 0.25rem;
}

.collective-origin__statement .page-lead {
	max-width: 44rem;
}

.collective-origin__question {
	display: grid;
	align-content: center;
	gap: 0.75rem;
	min-height: 14rem;
	padding: clamp(1.35rem, 3vw, 2rem);
	border-left: 4px solid var(--am-color-gold);
	background: var(--am-color-accent-dark);
	color: var(--am-color-surface);
}

.collective-origin__question p {
	margin: 0;
	color: var(--am-color-gold-light);
	font-size: 0.78rem;
	font-weight: 800;
	letter-spacing: 0;
	text-transform: uppercase;
}

.collective-origin__question strong {
	font-family: var(--am-font-heading);
	font-size: clamp(1.7rem, 3vw, 2.35rem);
	line-height: 1.08;
}

.collective-origin__question span {
	max-width: 20rem;
	color: inherit;
	font-size: 0.95rem;
	line-height: 1.4;
}

.collective-origin__body {
	max-width: 48rem;
}

.collective-origin__body p {
	margin-top: 0;
}

.collective-network {
	padding-block: clamp(1.75rem, 4vw, 3.25rem);
	border-bottom: 1px solid var(--am-color-border);
}

.collective-network__list {
	display: grid;
	gap: 0.85rem;
	margin: 1.6rem 0 0;
	padding: 0;
	list-style: none;
}

.collective-network__list li {
	display: grid;
	align-content: start;
	gap: 0.2rem;
	margin: 0;
	min-height: 6.35rem;
	padding: 1rem 1.1rem;
	border-left: 3px solid var(--am-color-gold);
	background: var(--am-color-warm);
}

.collective-network__list strong {
	color: var(--am-color-accent-dark);
	font-size: 1rem;
	line-height: 1.3;
}

.collective-network__list span {
	color: var(--am-color-muted);
	font-size: 0.92rem;
	line-height: 1.4;
}

.collective-network__source {
	margin: 1.2rem 0 0;
}

.collective-events-section {
	padding-block: clamp(1.75rem, 4vw, 3.25rem);
}

.collective-section-heading {
	max-width: 48rem;
}

.collective-events {
	display: grid;
	gap: clamp(1rem, 2vw, 1.35rem);
	margin: 1.75rem 0 0;
	padding: 0;
	list-style: none;
}

.collective-events li {
	display: grid;
	grid-template-columns: 5.25rem minmax(0, 1fr);
	gap: 1rem;
	align-content: start;
	margin: 0;
	padding: clamp(1rem, 2.2vw, 1.35rem);
	border: 1px solid var(--am-color-border);
	background: color-mix(in srgb, var(--am-color-surface) 82%, transparent);
	box-shadow: 0 0.55rem 1.5rem rgba(52, 36, 21, 0.05);
}

.collective-events time {
	display: grid;
	align-content: start;
	gap: 0.1rem;
	color: var(--am-color-accent);
	font-family: var(--am-font-heading);
	font-size: 2rem;
	font-weight: 800;
	line-height: 0.92;
}

.collective-events time span {
	color: var(--am-color-muted);
	font-family: var(--am-font-body);
	font-size: 0.74rem;
	font-weight: 800;
	line-height: 1.18;
	text-transform: uppercase;
}

.collective-events h3 {
	margin: 0;
	color: var(--am-color-accent-dark);
	font-size: 1.18rem;
	line-height: 1.3;
}

.collective-events p {
	margin: 0.4rem 0 0.7rem;
}

.collective-event-media {
	grid-column: 2;
	width: min(100%, 18rem);
	margin: 0.85rem 0 0;
}

.collective-event-media a {
	display: grid;
	place-items: center;
	min-height: clamp(11rem, 30vw, 17rem);
	padding: 0.65rem;
	border: 1px solid var(--am-color-border);
	background: var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

.collective-event-media a:focus-visible {
	outline: 3px solid var(--am-color-focus);
	outline-offset: 3px;
}

.collective-event-media img {
	display: block;
	width: auto;
	max-width: 100%;
	height: auto;
	max-height: clamp(10rem, 29vw, 16rem);
	object-fit: contain;
}

.collective-event-media--document a {
	overflow: hidden;
	padding: 0;
	background: var(--am-color-accent-dark);
	text-decoration: none;
}

.collective-document-card {
	display: grid;
	align-content: space-between;
	gap: 0.75rem;
	width: 100%;
	min-height: clamp(11rem, 30vw, 17rem);
	padding: clamp(1rem, 2vw, 1.35rem);
	background:
		linear-gradient(135deg, rgba(185, 133, 71, 0.88), rgba(17, 66, 57, 0.92)),
		linear-gradient(90deg, transparent 0 62%, rgba(255, 255, 255, 0.11) 62% 64%, transparent 64% 100%);
	color: #fff;
}

.collective-document-card__kicker {
	font-size: 0.7rem;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.collective-document-card strong {
	max-width: 8.5rem;
	font-family: var(--am-font-heading);
	font-size: clamp(1.85rem, 5vw, 2.55rem);
	line-height: 0.94;
}

.collective-document-card span:not(.collective-document-card__kicker) {
	max-width: 13rem;
	font-size: 0.96rem;
	font-weight: 700;
	line-height: 1.35;
}

.collective-document-card small {
	display: block;
	font-size: 0.76rem;
	font-weight: 800;
	line-height: 1.35;
	opacity: 0.86;
}

.collective-event-media figcaption {
	margin: 0.45rem 0 0;
	color: var(--am-color-muted);
	font-size: 0.82rem;
	font-weight: 700;
	line-height: 1.35;
}

.collective-archive-note {
	display: block;
	color: var(--am-color-muted);
	font-size: 0.9rem;
	font-style: italic;
	line-height: 1.45;
}

.collective-page .wp-block-post-content {
	margin-top: 0;
}

.collective-archive {
	margin: 0;
	padding: clamp(1.5rem, 4vw, 2.75rem);
	border-top: 4px solid var(--am-color-gold);
	background: var(--am-color-warm);
}

.collective-archive > .wp-block-post-content {
	max-width: none;
}

.collective-archive__heading {
	max-width: 48rem;
}

.collective-archive__heading h2 {
	margin-top: 0.25rem;
}

.collective-archive-map {
	display: grid;
	gap: 0.65rem;
	margin: 1.25rem 0 0;
	padding: 0;
	list-style: none;
}

.collective-archive-map li {
	display: grid;
	gap: 0.25rem;
	margin: 0;
	padding: 0.85rem 1rem;
	border-left: 3px solid var(--am-color-gold);
	background: var(--am-color-surface);
}

.collective-archive-map time {
	color: var(--am-color-accent-dark);
	font-size: 0.8rem;
	font-weight: 800;
	letter-spacing: 0;
	text-transform: uppercase;
}

.collective-archive-map span {
	color: var(--am-color-muted);
	font-size: 0.92rem;
	line-height: 1.42;
}

.collective-archive .wp-block-gallery,
.collective-archive .wp-block-gallery.has-nested-images {
	display: grid !important;
	grid-template-columns: 1fr;
	margin: 1.5rem 0 0;
	gap: clamp(0.75rem, 2vw, 1.25rem);
	align-items: stretch;
}

.collective-archive .wp-block-image,
.collective-archive .wp-block-gallery.has-nested-images figure.wp-block-image {
	display: grid;
	grid-template-rows: minmax(0, 1fr) auto;
	gap: 0.65rem;
	width: 100% !important;
	height: 100%;
	margin: 0;
	padding: 0.7rem;
	border: 1px solid var(--am-color-border);
	background: var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

.collective-archive .wp-block-image a,
.collective-archive .wp-block-gallery.has-nested-images figure.wp-block-image a,
.collective-archive .wp-block-image img {
	display: block;
}

.collective-archive .wp-block-image a {
	height: 100%;
}

.collective-archive .wp-block-image img,
.collective-archive .wp-block-gallery.has-nested-images figure.wp-block-image img {
	width: 100%;
	height: 100%;
	aspect-ratio: 3 / 4;
	object-fit: contain;
	background: var(--am-color-paper);
}

.collective-archive figcaption {
	margin: 0;
	padding: 0 0.2rem 0.15rem;
	color: var(--am-color-muted);
	font-size: 0.88rem;
	line-height: 1.4;
}

.collective-letter {
	padding-block: clamp(1.75rem, 4vw, 3.25rem);
	border-bottom: 1px solid var(--am-color-border);
}

.collective-letter__panel {
	margin-top: 1.3rem;
	border: 1px solid var(--am-color-border);
	border-left: 4px solid var(--am-color-gold);
	background: var(--am-color-surface);
	box-shadow: var(--am-shadow-soft);
}

.collective-letter__panel summary {
	cursor: pointer;
	padding: 1rem 1.15rem;
	color: var(--am-color-accent-dark);
	font-weight: 800;
	line-height: 1.35;
}

.collective-letter__panel summary:focus-visible {
	outline: 3px solid var(--am-color-focus);
	outline-offset: 3px;
}

.collective-letter__text {
	padding: 0 1.15rem 1.2rem;
	color: var(--am-color-text);
	font-size: 0.98rem;
	line-height: 1.72;
}

.collective-letter__text p {
	margin: 1rem 0 0;
}

.collective-events .collective-event-letter {
	margin: 0.85rem 0 0.7rem;
	box-shadow: none;
}

.collective-events .collective-event-letter summary {
	padding: 0.85rem 1rem;
	font-size: 0.92rem;
}

.collective-events .collective-event-letter .collective-letter__text {
	max-height: 28rem;
	overflow: auto;
	font-size: 0.92rem;
}

.collective-plan {
	display: grid;
	gap: 1.35rem;
	padding: clamp(1.5rem, 4vw, 2.75rem);
	border: 1px solid var(--am-color-border);
	border-top: 4px solid var(--am-color-gold);
	background: var(--am-color-warm);
}

.collective-plan h2,
.collective-plan p {
	margin-bottom: 0;
}

.collective-plan ul {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.6rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.collective-plan li {
	position: relative;
	min-height: 3.5rem;
	margin: 0;
	padding: 0.75rem 0.75rem 0.75rem 1.6rem;
	border: 1px solid var(--am-color-border);
	background: var(--am-color-surface);
	color: var(--am-color-accent-dark);
	font-size: 0.9rem;
	font-weight: 700;
	line-height: 1.35;
}

.collective-plan li::before {
	position: absolute;
	left: 0.7rem;
	top: 0.85rem;
	width: 0.45rem;
	height: 0.45rem;
	border-radius: 50%;
	background: var(--am-color-gold);
	content: "";
}

.collective-page .collective-sources {
	grid-template-columns: 1fr;
}

@media (min-width: 48rem) {
	.collective-origin {
		grid-template-columns: minmax(0, 1.35fr) minmax(15rem, 0.65fr);
		column-gap: clamp(2rem, 5vw, 4.5rem);
	}

	.collective-origin__statement,
	.collective-origin__body {
		grid-column: 1;
	}

	.collective-origin__question {
		grid-column: 2;
		grid-row: 1 / span 2;
	}

	.collective-events {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: clamp(1.25rem, 3vw, 2rem);
	}

	.collective-events li {
		grid-template-columns: 4.8rem minmax(0, 1fr);
	}

	.collective-event-media {
		width: min(100%, 17rem);
		margin-top: 1rem;
	}

	.collective-event-media a {
		min-height: 17rem;
	}

	.collective-event-media img {
		max-height: 16rem;
	}

	.collective-network__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		align-items: stretch;
	}

	.collective-archive .wp-block-gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.collective-archive-map {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.collective-network__list li:last-child {
		grid-column: 1 / -1;
	}

	.collective-plan {
		grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.95fr);
		align-items: center;
	}

	.collective-plan > p {
		grid-column: 1 / -1;
	}

	.collective-page .collective-sources {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
