/* ==========================================================================
   RADAR.casa — MAPPA-NUOVA, pezzo 0 di 8: la lingua visiva
   Scritto il 13/9/2026, squadra RADAR-MAPPA-LINGUA.

   COS'È QUESTO FILE
   Non è la mappa: è il vocabolario che i pezzi 1-8 (segnaposto, barra
   nell'eroe, barra sulla mappa, pannello dei risultati, filtri...) useranno
   tutti allo stesso modo, per non ridisegnare colori/icone/raggi/ombre
   quattro volte diverse — è già successo (*«minestrone estetico»*, 3/9/2026).

   Forma dalla guida (`_disegno/guida-mappa/Radar-Casa-Fix-Icone.html`, meta.ai,
   13/9/2026): pastiglia di categoria, cartolina del risultato, segnaposto
   tondo pieno, pannello galleggiante, tasto rotondo dei filtri.
   Colori dal tema: `radar.css` (`--pin-*`, palette Okabe-Ito, righe 376-385
   chiaro / 503-512 scuro) — ⛔ NON i colori della guida (blu/nero/verde
   acqua/verde/viola/arancione): sono condivisi con le pastiglie del modulo e
   la legenda, e cambiarli solo qui darebbe alla stessa categoria due colori
   in due pagine (regola di Gabriele del 12/9, MAPPA-NUOVA.md §6).

   QUESTO FILE **ESTENDE** `radar.css`, NON LO SOSTITUISCE
   Ogni colore/raggio/ombra/font qui sotto è un `var(--radar-*)` o un
   `var(--pin-*)` letto da `radar.css` — zero valori ricopiati a mano. Non è
   caricato in nessuna pagina del sito: esiste, si prova su
   `_prove/mappa-lingua/campione.html`, lo aggancia il pezzo 1.

   IL TEMA SCURO
   Si aggancia a `data-tema-eff` (scritto da `assets/js/tema.js` sulla
   radice), stessa convenzione già in uso in `cerca.css`/`home-categorie.css`:
   blocco chiaro di default, `:root[data-tema-eff="scuro"] …` per il resto.
   ⛔ Nessun meccanismo nuovo, nessun secondo `prefers-color-scheme`.

   ⛔ NESSUNA CLASSE TAILWIND. ⛔ NIENTE LEAFLET/CARTO: le tessere restano
   `radar.pmtiles`, qui non c'è nessuna dipendenza di libreria mappa — solo
   i pezzi «intorno» alla mappa (pastiglie, cartoline, pannello, tasto).
   ========================================================================== */


/* ==========================================================================
   1 · LE SEI CATEGORIE — colore, icona, nome
   ========================================================================== */

/*
   IL CONTRASTO DELL'ICONA, MISURATO — non a occhio (formula WCAG 2.x,
   luminanza relativa), soglia **3:1** (WCAG 1.4.11, oggetti grafici — non
   4,5:1: qui l'icona non è testo).

   🚨 LA CORREZIONE DI GABRIELE, 13/9/2026 — sostituisce il punto 5 del §8 di
   MAPPA-NUOVA.md (quel paragrafo proponeva un bordo scuro sul cerchio; qui
   si cambia il colore dell'icona, non il colore del pin):

     categoria       fondo chiaro   icona bianca   fondo scuro    icona bianca
     Affitto         #0072B2        5,19:1  ✅     #4DA3D9        2,78:1  ⛔
     Vendita         #D55E00        3,87:1  ✅     #F07A26        2,79:1  ⛔
     Case Vacanza    #56B4E9        2,31:1  ⛔     #7FC7F0        1,85:1  ⛔
     Terreni         #009E73        3,42:1  ✅     #2BBB92        2,43:1  ⛔
     Servizi         #E69F00        2,25:1  ⛔     #EFB43A        1,87:1  ⛔
     Lavoro          #CC79A7        3,06:1  ✅     #DE95BE        2,30:1  ⛔

   👉 **Il tema chiaro** ha due fondi (Case Vacanza, Servizi) sotto soglia con
   l'icona bianca: lì l'icona diventa scura. Gli altri quattro restano bianchi.
   Questo è il caso che il brief descriveva.

   🚨 **E qui il "non-zero accanto allo zero" è la colonna "fondo scuro":**
   nel tema scuro i sei fondi sono le varianti pastello (`colore_scuro` in
   `radar-core/data/pin.php`), pensate per restare leggibili sul fondo scuro
   della pagina — e un'icona bianca sopra un fondo già chiaro **fallisce su
   TUTTE E SEI**, non solo sulle stesse due del chiaro (1,85–2,78:1, tutte
   sotto 3:1: la riga "Affitto, fondo scuro, icona bianca, 2,78:1 ⛔" è
   proprio l'esempio negativo scritto apposta, come chiede il brief). Se
   questo file avesse semplicemente invertito la regola del chiaro
   (bianca su 4, scura su 2) anche in scuro, quattro icone su sei sarebbero
   uscite sotto soglia senza che nessun metro lo segnalasse prima del rilascio.

   👉 **Il tema scuro usa l'icona scura su tutte e sei le categorie.** Con
   l'inchiostro (`--inchiostro` di `ossatura.css`, #17110E — non se ne importa
   il file, si ripete qui il valore per non creare una dipendenza di
   caricamento fra due fogli indipendenti) il contrasto va da 6,69:1 a
   10,09:1 su tutti e sei i fondi scuri: ampiamente sopra soglia, misurato
   sotto in tabella.

     categoria       fondo scuro    icona inchiostro
     Affitto         #4DA3D9        6,73:1  ✅
     Vendita         #F07A26        6,69:1  ✅
     Case Vacanza    #7FC7F0       10,09:1  ✅
     Terreni         #2BBB92        7,68:1  ✅
     Servizi         #EFB43A       10,03:1  ✅
     Lavoro          #DE95BE        8,15:1  ✅

   La sagoma per categoria (già decisa, `_disegno/token.css` §LE SEI FORME,
   WCAG 1.4.1) resta comunque la vera rete di sicurezza: qui il pin è tondo
   per tutti — è la scelta del brief — quindi l'icona interna e il nome sono
   gli unici due canali che restano per chi non distingue i sei colori.
*/

:root {
	/* Le due tinte dell'icona: non ridichiarate da --radar-testo o
	   --inchiostro (che seguono `light-dark()`/`color-scheme`, non
	   `data-tema-eff` — vedi intestazione del file). Valori propri, fissi. */
	--mn-icona-chiara:  #FFFFFF;
	--mn-icona-scura:   #17110E; /* = --inchiostro, ossatura.css:162 */
}

/* --- Affitto -------------------------------------------------------------- */
[data-categoria="affitto"] {
	--mn-colore:  var(--pin-affitto);           /* #0072B2 chiaro · #4DA3D9 scuro */
	--mn-icona:   var(--mn-icona-chiara);        /* 5,19:1 sul fondo chiaro */
	--mn-nome:    "Affitto";
}
/* --- Vendita ---------------------------------------------------------------*/
[data-categoria="vendita"] {
	--mn-colore:  var(--pin-vendita);           /* #D55E00 chiaro · #F07A26 scuro */
	--mn-icona:   var(--mn-icona-chiara);        /* 3,87:1 sul fondo chiaro */
	--mn-nome:    "Vendita";
}
/* --- Case Vacanza — icona scura anche in chiaro: 2,31:1 con la bianca ----- */
[data-categoria="case-vacanza"] {
	--mn-colore:  var(--pin-vacanza);           /* #56B4E9 chiaro · #7FC7F0 scuro */
	--mn-icona:   var(--mn-icona-scura);         /* 8,10:1 — la bianca cadeva a 2,31:1 */
	--mn-nome:    "Case vacanza";
}
/* --- Terreni --------------------------------------------------------------*/
[data-categoria="terreni"] {
	--mn-colore:  var(--pin-terreni);           /* #009E73 chiaro · #2BBB92 scuro */
	--mn-icona:   var(--mn-icona-chiara);        /* 3,42:1 sul fondo chiaro */
	--mn-nome:    "Terreni";
}
/* --- Servizi — icona scura anche in chiaro: 2,25:1 con la bianca ---------- */
[data-categoria="servizi"] {
	--mn-colore:  var(--pin-servizi);           /* #E69F00 chiaro · #EFB43A scuro */
	--mn-icona:   var(--mn-icona-scura);         /* 8,30:1 — la bianca cadeva a 2,25:1 */
	--mn-nome:    "Servizi";
}
/* --- Lavoro -----------------------------------------------------------------*/
[data-categoria="lavoro"] {
	--mn-colore:  var(--pin-lavoro);            /* #CC79A7 chiaro · #DE95BE scuro */
	--mn-icona:   var(--mn-icona-chiara);        /* 3,06:1 sul fondo chiaro, appena sopra soglia */
	--mn-nome:    "Lavoro";
}

/* Tema scuro: l'icona bianca cade su TUTTE E SEI (1,85–2,78:1, vedi tabella
   sopra) — qui vince sempre l'inchiostro, non solo sulle due del chiaro. */
:root[data-tema-eff="scuro"] [data-categoria] {
	--mn-icona: var(--mn-icona-scura);
}


/* ==========================================================================
   2 · TOKEN DI FORMA — nuovi, ambientati a `mn-`, non toccano `radar.css`
   ========================================================================== */

.mn-lingua {
	/* Il pannello galleggiante vuole angoli più arrotondati di
	   --radar-raggio-grande (18px): 24px, misurato sulla guida
	   (guida-1440-01-iniziale.png). Token nuovo, non un valore che sostituisce
	   quello condiviso. */
	--mn-raggio-pannello: 24px;
	--mn-raggio-cartolina: var(--radar-raggio-grande); /* 18px, già condiviso */
	--mn-vetro: color-mix(in srgb, var(--radar-superficie) 88%, transparent);
}


/* ==========================================================================
   3 · IL SEGNAPOSTO — tondo pieno, icona bianca (o scura) dentro
   Dalla guida si prende la forma (cerchio pieno + icona), non la libreria
   (Leaflet): questo è solo il disegno del pin, il motore che lo posiziona
   sulla mappa resta quello che c'è (pezzo 1, `mappa.js`).
   ========================================================================== */

/*
   🔴 UNA GRANDEZZA SOLA, misurata sul bersaglio di tocco — corretto il
   13/9/2026 dopo il giro del coordinatore: qui c'erano tre taglie
   (26/34/44px) senza un motivo che si vedesse, ed erano anche uno sbalzo
   (Gabriele non li vuole). Il default è `--radar-tocco-minimo` (44px, lo
   stesso «cerchio da 44px stile Google Maps» già citato in `radar.css`
   riga ~1916 per un altro pin) — sotto quella misura il segnaposto è
   cliccabile ma non è toccabile col dito.

   L'UNICO stato che ingrandisce è `--selezionato` (52px): un solo stato,
   con un nome che dice cos'è — non «grande»/«piccolo» senza motivo. Va
   mostrato nella pagina campione **con l'etichetta**, mai mescolato in
   silenzio fra segnaposto normali (§4 di `campione.html`).
*/
.mn-segnaposto {
	--mn-diametro: var(--radar-tocco-minimo); /* 44px */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--mn-diametro);
	height: var(--mn-diametro);
	border-radius: var(--radar-raggio-tondo);   /* 50% */
	background: var(--mn-colore);
	color: var(--mn-icona);
	border: 2px solid var(--radar-superficie);  /* anello per staccarsi dalla tessera */
	box-shadow: var(--radar-ombra);
	flex: 0 0 auto;
}

/* Unico stato di ingrandimento: selezionato (o sotto il puntatore) — mai
   più di uno alla volta, mai silenzioso. */
.mn-segnaposto--selezionato {
	--mn-diametro: calc(var(--radar-tocco-minimo) + 8px); /* 52px */
}

.mn-segnaposto .mn-icona {
	width: 50%;
	height: 50%;
}


/* ==========================================================================
   4 · LA PASTIGLIA DI CATEGORIA — punto colorato + icona + nome
   Stato attivo e non attivo. ⚠ Il verde --radar-azione NON compare qui: è
   riservato al solo pulsante primario (DESIGN.md §3).
   ========================================================================== */

.mn-pastiglia {
	display: inline-flex;
	align-items: center;
	gap: calc(var(--radar-passo) * .5);
	height: var(--radar-tocco-minimo);          /* 44px, bersaglio minimo di tocco */
	padding: 0 calc(var(--radar-passo) * .9);
	border-radius: var(--radar-raggio-pillola); /* 999px */
	border: 1px solid var(--radar-bordo);
	background: var(--radar-superficie);
	color: var(--radar-testo-secondario);
	font: 600 var(--radar-corpo-5) / 1 var(--radar-font);
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.mn-pastiglia__punto {
	width: 10px;
	height: 10px;
	border-radius: var(--radar-raggio-tondo);
	background: var(--mn-colore);
	flex: 0 0 auto;
}

.mn-pastiglia .mn-icona {
	width: 16px;
	height: 16px;
	color: var(--mn-colore);
}

.mn-pastiglia__nome { white-space: nowrap; }

/* Stato attivo: fondo tinto (16%) del colore della categoria, bordo pieno,
   testo nel colore della categoria — mai il verde azione. */
.mn-pastiglia[aria-pressed="true"] {
	background: color-mix(in srgb, var(--mn-colore) 16%, var(--radar-superficie));
	border-color: var(--mn-colore);
	color: var(--radar-testo);
}
.mn-pastiglia[aria-pressed="true"] .mn-pastiglia__nome { color: var(--radar-testo); }

.mn-pastiglia:hover    { border-color: var(--mn-colore, var(--radar-bordo)); }
.mn-pastiglia:focus-visible {
	outline: 2px solid var(--mn-colore, var(--radar-testo));
	outline-offset: 2px;
}

/* La riga di pastiglie: scorre su una riga sola su schermo stretto — è
   esattamente il difetto della guida da NON portare («Lavoro» tagliato fuori
   a 1440px, guida-1440-12-chip-scroll-lavoro.png): qui la riga scorre SEMPRE,
   dichiarato, non scoperto scrollando per caso. */
.mn-pastiglie {
	display: flex;
	gap: calc(var(--radar-passo) * .5);
	overflow-x: auto;
	scrollbar-width: thin;
	padding-block: 2px; /* spazio per l'anello di :focus-visible */
}


/* ==========================================================================
   5 · LA CARTOLINA DEL RISULTATO
   Dall'immagine di Gabriele (MAPPA-NUOVA.md §0): icona tonda colorata a
   sinistra, titolo in grassetto, riga grigia «indirizzo · tipo», prezzo con
   l'unità.
   ========================================================================== */

.mn-cartolina {
	display: flex;
	gap: var(--radar-passo);
	align-items: flex-start;
	padding: calc(var(--radar-passo) * .9);
	border-radius: var(--mn-raggio-cartolina, var(--radar-raggio-grande));
	background: var(--radar-superficie);
	border: 1px solid var(--radar-bordo);
	text-decoration: none;
	color: inherit;
}

.mn-cartolina:hover,
.mn-cartolina:focus-visible {
	border-color: var(--mn-colore);
	box-shadow: var(--radar-ombra);
}
.mn-cartolina:focus-visible { outline: 2px solid var(--mn-colore); outline-offset: 2px; }

.mn-cartolina__icona {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: var(--radar-raggio-tondo);
	background: var(--mn-colore);
	color: var(--mn-icona);
	flex: 0 0 auto;
}
.mn-cartolina__icona .mn-icona { width: 20px; height: 20px; }

/* MAPPA NUOVA, PEZZO 4 (13/9/2026) — la cartolina di un COMUNE aggregato
   (`radar_mappa_lista_comuni()`, quando la mappa è zoomata abbastanza indietro
   da contare comuni invece di schede): non è una delle sei categorie, quindi
   non ha un `--mn-colore` da leggere — senza questa variante l'icona sarebbe
   invisibile (fondo e colore che leggono una custom property assente). Tinta
   neutra, la stessa che il tema usa per il testo secondario. */
.mn-cartolina__icona--neutra {
	background: var(--radar-testo-secondario);
	color: var(--radar-fondo, #FFFFFF);
}

.mn-cartolina__corpo { min-width: 0; flex: 1 1 auto; }

/*
   🔴 Corretto il 13/9/2026: il titolo troncava a UNA riga con «…» — nel
   pannello dei risultati (largo, non le tre colonne della griglia) un
   titolo tagliato a metà nasconde il dato più importante della cartolina.
   👉 Fino a DUE righe (`-webkit-line-clamp`, supporto ampio, non solo
   Chrome/Safari da anni).

   ⛔ NIENTE `min-height` sulle due righe. C'era, per «non far ballare le
   cartoline», e apriva una RIGA VUOTA sotto ogni titolo corto: nella
   cartolina di «Bilocale in centro, Cosenza» si vedeva un buco fra il
   titolo e «Cosenza · Appartamento» (cattura del 13/9, rivista dal
   coordinatore). E non serviva a niente:
   - in un elenco verticale le cartoline hanno altezze fisse una volta
     disegnate — più alte o più basse, ma NON ballano scorrendo: ballerebbe
     solo un contenuto che cambia sotto gli occhi, e qui non cambia;
   - in una griglia a colonne l'allineamento lo fa già la griglia: le
     celle di una stessa riga si allungano da sole all'altezza della più
     alta (`align-items: stretch`, il valore di partenza).
   Un buco visibile in cambio di un difetto che non esiste è uno scambio in
   perdita — e Gabriele gli spazi vuoti non li vuole.
*/
.mn-cartolina__titolo {
	margin: 0 0 2px 0;
	font: 700 var(--radar-corpo-4) / 1.3 var(--radar-font);
	color: var(--radar-testo);
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	overflow: hidden;
}

.mn-cartolina__riga {
	margin: 0 0 6px 0;
	font: 400 var(--radar-corpo-5) / 1.3 var(--radar-font);
	color: var(--radar-testo-secondario);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.mn-cartolina__prezzo {
	margin: 0;
	font: 700 var(--radar-corpo-4) / 1 var(--radar-font);
	color: var(--radar-testo);
}
.mn-cartolina__unita {
	font-weight: 400;
	color: var(--radar-testo-secondario);
}
/* Categorie senza prezzo (Servizi, Lavoro): «Si contatta», stesso
   trattamento tipografico del prezzo — non un badge diverso, la cartolina
   resta la stessa forma per tutte e sei le categorie. */
.mn-cartolina__prezzo--assente { color: var(--radar-testo-secondario); font-weight: 600; }


/* ==========================================================================
   6 · IL PANNELLO GALLEGGIANTE
   Angoli molto arrotondati, fondo chiaro (vetro), ombra. Il pannello scorre
   al suo interno, non la pagina (§0 dell'immagine di Gabriele).
   ========================================================================== */

.mn-pannello {
	--mn-larghezza: 27.5rem; /* ~440px, sotto i ~500px dell'immagine per lasciare margine alla mappa a 1440 */
	width: min(100% - 2rem, var(--mn-larghezza));
	max-height: min(100% - 2rem, 44rem);
	display: flex;
	flex-direction: column;
	border-radius: var(--mn-raggio-pannello, 24px);
	background: var(--mn-vetro, var(--radar-superficie));
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	box-shadow: var(--radar-elevazione-3, var(--radar-ombra));
	border: 1px solid var(--radar-bordo);
	overflow: hidden;
}

.mn-pannello__testa {
	padding: calc(var(--radar-passo) * 1.1) calc(var(--radar-passo) * 1.1) calc(var(--radar-passo) * .75);
	border-bottom: 1px solid var(--radar-bordo);
	flex: 0 0 auto;
}

.mn-pannello__etichetta {
	margin: 0 0 4px 0;
	font: 600 var(--radar-corpo-5) / 1 var(--radar-font);
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--radar-testo-secondario);
}

.mn-pannello__titolo {
	margin: 0;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--radar-passo);
	font: 700 var(--radar-corpo-3) / 1.2 var(--radar-font);
	color: var(--radar-testo);
}

.mn-pannello__contatore {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2em;
	height: 2em;
	padding: 0 .4em;
	border-radius: var(--radar-raggio-pillola);
	background: var(--radar-superficie-alt);
	color: var(--radar-testo);
	font: 700 var(--radar-corpo-5) / 1 var(--radar-font);
	flex: 0 0 auto;
}

.mn-pannello__corpo {
	flex: 1 1 auto;
	overflow-y: auto;
	padding: calc(var(--radar-passo) * .75) calc(var(--radar-passo) * 1.1);
	display: flex;
	flex-direction: column;
	gap: calc(var(--radar-passo) * .6);
}

.mn-pannello__piede {
	flex: 0 0 auto;
	padding: calc(var(--radar-passo) * .6) calc(var(--radar-passo) * 1.1);
	border-top: 1px solid var(--radar-bordo);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--radar-passo);
	font: 400 var(--radar-corpo-5) / 1.3 var(--radar-font);
	color: var(--radar-testo-secondario);
}

/* «Come ordiniamo i risultati» — obbligo di legge (art. 22 c. 4-bis Cod.
   Cons.), MAPPA-NUOVA.md §0/§4: dentro il pannello, vicino al contatore,
   sempre a un clic — non solo nella striscia crediti. Il pezzo che lo
   collega davvero è il 4 (elenco); qui c'è solo la forma del link. */
.mn-pannello__piede a {
	color: var(--radar-testo-secondario);
	text-decoration: underline;
	text-underline-offset: 2px;
}
.mn-pannello__piede a:hover,
.mn-pannello__piede a:focus-visible { color: var(--radar-testo); }


/* ==========================================================================
   7 · IL TASTO ROTONDO — quello dei filtri, nero nella guida
   Qui non è #000 della guida ma l'inchiostro del tema (--radar-testo),
   stessa idea, stesso peso visivo, senza importare un colore fuori paletta.

   🔴 Corretto il 13/9/2026: un tasto rotondo senza icona dentro è un
   quadrato bianco vuoto (il segno di un'icona NON caricata, non un
   cerchio muto) — perché `.mn-icona` da sola non disegna niente, è solo
   la cornice: senza un modificatore `.mn-icona--xxx` che porti la
   `mask-image`, `background-color: currentColor` riempie l'intero
   riquadro invece di ritagliare una forma. 👉 **Ogni `.mn-tasto-rotondo`
   porta SEMPRE un'icona con nome**, mai un `<svg class="mn-icona">`
   vuoto o con un disegno proprio scritto a mano nella pagina che lo usa:

     uso                → icona
     Filtri (della guida) → `.mn-icona--cursori` (§8, qui sotto)
     Cambia tema          → NON fa parte di questa lingua: è un'utilità
                            della sola pagina campione (§ in fondo a
                            `campione.html`), con la sua icona propria e
                            SENZA la classe `.mn-icona` (che è riservata
                            alle icone mascherate di questo foglio) — così
                            un domani, se un pezzo vero avesse bisogno di un
                            tasto «Cambia tema», gli si scriverebbe un'icona
                            `.mn-icona--tema` qui, non si riuserebbe quella
                            della pagina di prova.
   ========================================================================== */

.mn-tasto-rotondo {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--radar-tocco-minimo);   /* 44px */
	height: var(--radar-tocco-minimo);
	border-radius: var(--radar-raggio-tondo);
	background: var(--radar-testo);
	color: var(--radar-fondo);
	border: none;
	box-shadow: var(--radar-ombra);
	cursor: pointer;
}
.mn-tasto-rotondo .mn-icona { width: 20px; height: 20px; }

.mn-tasto-rotondo:hover { background: var(--radar-testo-secondario); }
.mn-tasto-rotondo:focus-visible {
	outline: 2px solid var(--radar-testo);
	outline-offset: 3px;
}

/* Variante piena (badge di conteggio dei filtri attivi) — riusa la pastiglia
   di conteggio del pannello, non un terzo disegno di badge. */
.mn-tasto-rotondo__badge {
	position: absolute;
	top: -4px;
	right: -4px;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	border-radius: var(--radar-raggio-pillola);
	background: var(--mn-colore, var(--radar-marchio));
	color: #FFFFFF;
	font: 700 .7rem/18px var(--radar-font);
	text-align: center;
	border: 2px solid var(--radar-fondo);
}


/* ==========================================================================
   8 · LE ICONE — sei delle categorie più «cursori» del tasto rotondo (§7),
   un solo posto
   `mask-image` + `background-color: var(--mn-icona)`: il colore è nel CSS,
   non nell'SVG — un unico simbolo serve al pin, alla pastiglia e alla
   cartolina, e cambia tinta da solo con la categoria e col tema.
   `mask-mode: alpha` è esplicito apposta: senza, alcuni browser userebbero la
   luminanza della sorgente e un tratto nero diventerebbe «trasparente» invece
   che «opaco» — misurato, non supposto (la differenza fra i due modi è
   esattamente il tipo di errore silenzioso che questo file vuole evitare).
   Forma ridisegnata nello stile della guida (linea, 24×24, tratto arrotondato)
   — non è un'estrazione byte per byte dal bundle React compilato (minificato,
   senza nomi di classe leggibili): stessa famiglia visiva (chiave, cartellino,
   ombrellone, germoglio, chiave inglese, valigetta), tratto ridisegnato qui.
   ========================================================================== */

.mn-icona {
	display: inline-block;
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
	-webkit-mask-mode: alpha;
	mask-mode: alpha;
	flex: 0 0 auto;
}

/* Affitto — chiave */
.mn-icona--chiave {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%227.5%22%20cy%3D%2215.5%22%20r%3D%223.5%22/%3E%3Cpath%20d%3D%22M10.3%2012.7%2019%204%22/%3E%3Cpath%20d%3D%22M15.5%207.5%2018%2010%22/%3E%3Cpath%20d%3D%22M12.7%2010.3%2014.5%2012%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%227.5%22%20cy%3D%2215.5%22%20r%3D%223.5%22/%3E%3Cpath%20d%3D%22M10.3%2012.7%2019%204%22/%3E%3Cpath%20d%3D%22M15.5%207.5%2018%2010%22/%3E%3Cpath%20d%3D%22M12.7%2010.3%2014.5%2012%22/%3E%3C/svg%3E");
}
/* Vendita — cartellino del prezzo */
.mn-icona--cartellino {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2010.5V5a1%201%200%200%201%201-1h5.5a1%201%200%200%201%20.7.3l9.3%209.3a1%201%200%200%201%200%201.4l-6.5%206.5a1%201%200%200%201-1.4%200L3.3%2012.2a1%201%200%200%201-.3-.7z%22/%3E%3Ccircle%20cx%3D%227.7%22%20cy%3D%227.7%22%20r%3D%221.4%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2010.5V5a1%201%200%200%201%201-1h5.5a1%201%200%200%201%20.7.3l9.3%209.3a1%201%200%200%201%200%201.4l-6.5%206.5a1%201%200%200%201-1.4%200L3.3%2012.2a1%201%200%200%201-.3-.7z%22/%3E%3Ccircle%20cx%3D%227.7%22%20cy%3D%227.7%22%20r%3D%221.4%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3C/svg%3E");
}
/* Case Vacanza — ombrellone */
.mn-icona--ombrellone {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203v2.2%22/%3E%3Cpath%20d%3D%22M3%2012.5a9%209%200%200%201%2018%200z%22/%3E%3Cpath%20d%3D%22M12%2012.5V20a2%202%200%200%201-3.6%201.2%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203v2.2%22/%3E%3Cpath%20d%3D%22M3%2012.5a9%209%200%200%201%2018%200z%22/%3E%3Cpath%20d%3D%22M12%2012.5V20a2%202%200%200%201-3.6%201.2%22/%3E%3C/svg%3E");
}
/* Terreni — germoglio */
.mn-icona--germoglio {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2021v-9.5%22/%3E%3Cpath%20d%3D%22M7%2020.5h10%22/%3E%3Cpath%20d%3D%22M12%2011.5C12%207%209%204.5%204.5%204.5c0%204.5%203%207%207.5%207z%22/%3E%3Cpath%20d%3D%22M12%2011.5c0-3.6%202.4-6%206-6%200%203.6-2.4%206-6%206z%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2021v-9.5%22/%3E%3Cpath%20d%3D%22M7%2020.5h10%22/%3E%3Cpath%20d%3D%22M12%2011.5C12%207%209%204.5%204.5%204.5c0%204.5%203%207%207.5%207z%22/%3E%3Cpath%20d%3D%22M12%2011.5c0-3.6%202.4-6%206-6%200%203.6-2.4%206-6%206z%22/%3E%3C/svg%3E");
}
/* Servizi — chiave inglese */
.mn-icona--chiave-inglese {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M14.7%206.3a4%204%200%201%200-5.66%205.66L4%2017l3%203%205.04-5.04a4%204%200%200%200%205.66-5.66l-2.12%202.12-2.83-2.83z%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M14.7%206.3a4%204%200%201%200-5.66%205.66L4%2017l3%203%205.04-5.04a4%204%200%200%200%205.66-5.66l-2.12%202.12-2.83-2.83z%22/%3E%3C/svg%3E");
}
/* Lavoro — valigetta */
.mn-icona--valigetta {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%227.5%22%20width%3D%2218%22%20height%3D%2212%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M8.5%207.5v-2a1.5%201.5%200%200%201%201.5-1.5h4a1.5%201.5%200%200%201%201.5%201.5v2%22/%3E%3Cpath%20d%3D%22M3%2013.5h18%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%227.5%22%20width%3D%2218%22%20height%3D%2212%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M8.5%207.5v-2a1.5%201.5%200%200%201%201.5-1.5h4a1.5%201.5%200%200%201%201.5%201.5v2%22/%3E%3Cpath%20d%3D%22M3%2013.5h18%22/%3E%3C/svg%3E");
}
/* Filtri — cursori (tre linee coi pomelli), l'icona del tasto rotondo della
   guida. Non è una delle sei categorie: è la settima, del componente §7. */
.mn-icona--cursori {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cline%20x1%3D%224%22%20y1%3D%226%22%20x2%3D%2220%22%20y2%3D%226%22/%3E%3Ccircle%20cx%3D%229%22%20cy%3D%226%22%20r%3D%222%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3Cline%20x1%3D%224%22%20y1%3D%2212%22%20x2%3D%2220%22%20y2%3D%2212%22/%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2212%22%20r%3D%222%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3Cline%20x1%3D%224%22%20y1%3D%2218%22%20x2%3D%2220%22%20y2%3D%2218%22/%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2218%22%20r%3D%222%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cline%20x1%3D%224%22%20y1%3D%226%22%20x2%3D%2220%22%20y2%3D%226%22/%3E%3Ccircle%20cx%3D%229%22%20cy%3D%226%22%20r%3D%222%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3Cline%20x1%3D%224%22%20y1%3D%2212%22%20x2%3D%2220%22%20y2%3D%2212%22/%3E%3Ccircle%20cx%3D%2215%22%20cy%3D%2212%22%20r%3D%222%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3Cline%20x1%3D%224%22%20y1%3D%2218%22%20x2%3D%2220%22%20y2%3D%2218%22/%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2218%22%20r%3D%222%22%20fill%3D%22%23000%22%20stroke%3D%22none%22/%3E%3C/svg%3E");
}

/* La coppia categoria→icona (affitto→chiave, vendita→cartellino,
   case-vacanza→ombrellone, terreni→germoglio, servizi→chiave-inglese,
   lavoro→valigetta) si scrive nel markup con le due classi insieme
   (`class="mn-icona mn-icona--chiave"` dentro `[data-categoria="affitto"]`):
   il CSS non può scegliere UNA fra sei `mask-image` solo dall'attributo
   dell'antenato senza ripetere le sei immagini una seconda volta — pezzo di
   markup che i pezzi 1-8 replicano, non un limite di questo foglio.
   La pagina campione (`_prove/mappa-lingua/campione.html`) mostra la coppia
   già scritta, categoria per categoria. */

/* Lente — non è una delle sei categorie, è la settima icona d'uso generale
   (come «cursori» sopra): il campo di ricerca §9, qui sotto. Aggiunta il
   13/9/2026, pezzo 2 (barra nell'eroe della home): mancava nel pezzo 0. */
.mn-icona--lente {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%227%22/%3E%3Cline%20x1%3D%2221%22%20y1%3D%2221%22%20x2%3D%2216.65%22%20y2%3D%2216.65%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%227%22/%3E%3Cline%20x1%3D%2221%22%20y1%3D%2221%22%20x2%3D%2216.65%22%20y2%3D%2216.65%22/%3E%3C/svg%3E");
}


/* ==========================================================================
   9 · LA PASTIGLIA COME CASELLA VERA — aggiunto il 13/9/2026, pezzo 2
   (barra nell'eroe della home). `.mn-pastiglia` (§4) è pensata per un
   bottone con `aria-pressed`: qui la riusiamo com'è — stessa forma, stesso
   colore, ZERO regole di §4 toccate — sopra un `<label>` che avvolge un
   `<input type="checkbox" name="cat[]">` vero (MAPPA-NUOVA.md §5: il modulo
   resta un `<form>` che funziona anche senza JavaScript). Lo stato attivo
   qui si legge da `:has(input:checked)`, non da `aria-pressed` (che un
   browser non assegna da solo a un `<label>`): stessa veste di §4, nuovo
   selettore, nessuna riga di §4 riscritta.
   ========================================================================== */

/* Il bersaglio di tocco vuole `position: relative` per contenere la casella
   ritagliata subito sotto — proprietà aggiunta qui, non nella dichiarazione
   di §4 (che resta intatta). */
.mn-pastiglia { position: relative; }

/* La casella si ritaglia, non si sbiadisce: `opacity: 0` la toglie
   dall'albero di accessibilità di Chrome (stessa scelta già misurata l'8/8
   in `cerca.css` §pillole vecchie). */
.mn-pastiglia__casella {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	border: 0;
	white-space: nowrap;
}

.mn-pastiglia:has(.mn-pastiglia__casella:checked) {
	background: color-mix(in srgb, var(--mn-colore) 16%, var(--radar-superficie));
	border-color: var(--mn-colore);
	color: var(--radar-testo);
}
.mn-pastiglia:has(.mn-pastiglia__casella:checked) .mn-pastiglia__nome { color: var(--radar-testo); }

.mn-pastiglia:has(.mn-pastiglia__casella:focus-visible) {
	outline: 2px solid var(--mn-colore, var(--radar-testo));
	outline-offset: 2px;
}


/* ==========================================================================
   10 · IL CAMPO DI RICERCA — la barra della guida (campo bianco molto
   arrotondato, lente, segnaposto). Aggiunto il 13/9/2026, pezzo 2 (barra
   nell'eroe della home): mancava nel pezzo 0, che aveva disegnato solo i
   componenti «intorno» alla mappa (pastiglia, cartolina, pannello, tasto).

   COMPONENTE CONDIVISO, non un pezzo di home: MAPPA-NUOVA.md §6, «una parte
   condivisa si cambia per tutto il sito o per niente» — è lo stesso campo
   che il pezzo 3 metterà su `/mappa/`. Zero token nuovi: `--radar-superficie`
   (che segue già `data-tema-eff` altrove in questo foglio), `--radar-bordo`,
   `--radar-ombra`, `--radar-raggio-pillola`, `--radar-tocco-minimo`.
   ========================================================================== */

.mn-campo-ricerca {
	display: flex;
	align-items: center;
	gap: calc(var(--radar-passo) * .6);
	flex: 1 1 320px;
	min-height: var(--radar-tocco-minimo);
	padding: 0 calc(var(--radar-passo) * .9);
	border-radius: var(--radar-raggio-pillola);
	background: var(--radar-superficie);
	border: 1px solid var(--radar-bordo);
	box-shadow: var(--radar-ombra);
	cursor: text;
}

.mn-campo-ricerca .mn-icona--lente { color: var(--radar-testo-secondario); }

/* Il bersaglio vero è il `<label>` (min-height sopra, 44px): il controllo in
   sé resta un rigo di testo, come già `.mn-pastiglia`/i campi di sempre. */
.mn-campo-ricerca__valore {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 24px;
	padding: calc(var(--radar-passo) * .5) 0;
	border: 0;
	background: transparent;
	color: var(--radar-testo);
	font: 600 var(--radar-corpo-4) / 1.3 var(--radar-font);
	outline: none;
	appearance: none;
}

/* Stessa diagnosi già misurata in `cerca.css` (TURNO 10): `appearance: none`
   sull'`<input>` non spegne gli pseudo-elementi `-webkit-search-*` che
   Chrome disegna dentro un `type="search"`. */
.mn-campo-ricerca__valore::-webkit-search-decoration,
.mn-campo-ricerca__valore::-webkit-search-cancel-button,
.mn-campo-ricerca__valore::-webkit-search-results-button,
.mn-campo-ricerca__valore::-webkit-search-results-decoration {
	appearance: none;
	display: none;
}

.mn-campo-ricerca__valore::placeholder {
	color: var(--radar-testo-secondario);
	opacity: .85;
}

.mn-campo-ricerca:focus-within {
	border-color: var(--radar-testo);
	outline: 2px solid var(--radar-testo);
	outline-offset: 2px;
}
.mn-campo-ricerca__valore:focus-visible { outline: none; }


/* ==========================================================================
   11 · LA CARTOLINA DEL RISULTATO CLICCATO — pezzo 1, 13/9/2026
   ==========================================================================
   Il popup che sale al clic di un segnaposto (`.pannello-scheda`, mappa.js/
   radar.css/mappa.css — non mio, esiste già) prende la lingua qui: la classe
   `mn-lingua` e l'attributo `data-categoria` li scrive `apriScheda()`.

   🔴 QUESTO BLOCCO ESTENDE `.pannello-scheda`, NON LO SOSTITUISCE. La
   struttura (posizione, foglio a 390, focus, tastiera) resta quella di
   `radar.css`/`mappa.css`: qui solo i pezzi NUOVI che la guida ha e noi no —
   foto grande con pillola e cuore sopra, il tasto «Contatta», il prezzo in
   evidenza (§5, `.mn-cartolina__prezzo`, già pronto dal pezzo 0 — riusato,
   non riscritto).

   ⚠ `.pannello-scheda__foto` è GIÀ «grande» di suo (`radar.css`, width:100%,
   aspect-ratio 3/2) su ogni larghezza: qui non serve ingrandirla ancora, la
   guida è già rispettata. L'UNICA larghezza dove NON lo è è sotto i 60rem,
   dove `mappa.css` la stringe apposta a 4,5rem — una scelta già misurata
   (Prometeo, rilievo 9: a piena larghezza nel foglio «a metà», 40vh, le
   azioni non ci stanno più senza scorrere). Non si torna indietro su quella
   misura da qui: sotto i 60rem la pillola e il cuore si nascondono (sotto),
   e la foto resta quella piccola che c'è già — è uno scarto dichiarato, non
   un dimenticato: vedi la consegna.
   ========================================================================== */

.mn-cartolina-popup__foto-riquadro {
	position: relative;
	border-radius: var(--radar-raggio-grande);
	overflow: hidden;
}

/*
 * 🔴 Corretto dopo la prima cattura (13/9/2026): `.pannello-scheda__foto`
 * (radar.css, `width:100%; aspect-ratio:3/2`) su un'immagine ROTTA (le
 * miniature di prova del banco rendono 404 — file mai arrivato su disco,
 * misurato con `curl`) collassava alla taglia dell'icona di «immagine non
 * trovata» di Chrome invece di riservare comunque la cassa — la pillola e
 * il cuore, assoluti dentro `.mn-cartolina-popup__foto-riquadro`, finivano
 * schiacciati su un riquadro di ~25px invece dei ~230px attesi. Qui si
 * ridichiara la stessa regola (nessun valore diverso da radar.css: stesso
 * 100%/3:2/cover), scoped alla classe di QUESTO componente — così la cassa
 * regge anche a immagine rotta, senza toccare `.pannello-scheda__foto`
 * «nudo» (usato altrove, fuori dal mio perimetro). Su un'immagine vera la
 * resa è identica: `aspect-ratio` non dipende dal caricamento riuscito.
 */
.mn-cartolina-popup__foto {
	display: block;
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

/*
 * 🔴 Corretto il 13/9/2026, rilievo del coordinatore — «un componente solo,
 * con un nome solo»: il riquadro quando la foto manca o non carica è
 * `.mn-foto-ripiego` (§14.6, più giù in questo file) — lo stesso che
 * `single-immobile.php` usa nella galleria. Qui **non se ne ridisegna un
 * secondo**: si accoda solo la misura che la cartolina chiede
 * (`aspect-ratio: 3/2`, come la foto vera qui sopra), perché
 * `.mn-foto-ripiego` da solo è pensato per riempire un contenitore che
 * gliela dà già (in §14.6, le classi `.galleria__*`) — qui il contenitore
 * è `.mn-cartolina-popup__foto-riquadro`, che non la dava.
 */
/* 14/9/2026 — senza foto la cassa NON resta 3:2: sulla mappa vera quasi tutte
   le schede dei professionisti non hanno foto, e la cartolina apriva con
   230px di beige vuoto (Gabriele: niente riquadri mezzi vuoti). Una fascia
   bassa col colore della categoria e l'icona basta a dire «qui non c'è foto». */
.mn-cartolina-popup__foto-riquadro > .mn-foto-ripiego {
	aspect-ratio: auto;
	height: 96px;
	min-height: 0;
}

/* La pillola di categoria, sopra la foto — MAPPA-NUOVA.md §0: «icona rotonda
   colorata... poi titolo». Qui è un rettangolo pieno (non tonda) perché sta
   su una foto qualunque, non su un fondo chiaro fisso: il testo ha bisogno
   del proprio fondo per restare leggibile sopra qualunque immagine. */
.mn-cartolina-popup__etichetta {
	position: absolute;
	top: .6rem;
	left: .6rem;
	padding: .3rem .75rem;
	border-radius: var(--radar-raggio-pillola);
	background: var(--mn-colore);
	color: var(--mn-icona);
	font: 700 var(--radar-corpo-5) / 1 var(--radar-font);
	box-shadow: var(--radar-ombra);
}

/* Il cuore — SOLO sui professionisti (mappa.js: `costruisciCuore()` non
   viene neppure chiamata sulle altre categorie). Oro come la stellina di
   `elenco.css` (`--oro`): stesso linguaggio di «salvato» in tutto il sito,
   non un secondo colore inventato qui. */
.mn-cartolina-popup__cuore {
	position: absolute;
	bottom: .6rem;
	right: .6rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--radar-tocco-minimo);
	height: var(--radar-tocco-minimo);
	padding: 0;
	border: none;
	border-radius: var(--radar-raggio-tondo);
	background: color-mix(in srgb, var(--radar-superficie) 88%, transparent);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	color: var(--radar-testo-secondario);
	box-shadow: var(--radar-ombra);
	cursor: pointer;
}
.mn-cartolina-popup__cuore svg { width: 22px; height: 22px; }
.mn-cartolina-popup__cuore:hover { color: var(--oro, #C9A227); }
.mn-cartolina-popup__cuore:focus-visible { outline: 2px solid var(--radar-testo); outline-offset: 2px; }

/* Acceso: pieno e dorato — la FORMA del cuore cambia (contorno → pieno,
   `mnCuoreSvg()` in mappa.js), non solo il colore (WCAG 1.4.1), stessa
   regola della stellina ☆→★ di elenco.js. */
.mn-cartolina-popup__cuore[aria-pressed="true"] { color: var(--oro, #C9A227); }

@media (max-width: 59.999rem) {
	/* Il wrapper esce dall'albero della `grid` (§ nota sopra): l'`<img>`
	   torna a essere il figlio diretto che `mappa.css` già posiziona a
	   `grid-column:1`, 4,5rem×4,5rem — zero valori ripetuti qui. */
	.mn-cartolina-popup__foto-riquadro { display: contents; }

	/* Su una foto di 72px la pillola e il cuore non ci stanno leggibili:
	   restano SPENTI qui (non costruiti in un modo diverso) — la categoria
	   resta comunque leggibile nella pillola piccola della riga sotto
	   (`.pannello-scheda__categoria`, invariata), il cuore no: è un limite
	   dichiarato di questo giro, non un difetto silenzioso — vedi la
	   consegna del pezzo 1. */
	.mn-cartolina-popup__etichetta,
	.mn-cartolina-popup__cuore {
		display: none;
	}
}

/*
 * IL TASTO VERDE — «Contatta», l'UNICO primario della cartolina.
 *
 * 🔴 Decisione (chiesta esplicitamente dal brief): SÌ, «Contatta» è il
 * pulsante primario — non «Indicazioni». Fino a P210-v2 (5/9/2026) il verde
 * stava su «Indicazioni» («l'unica azione primaria della fila», commento in
 * `radar.css`): su una mappa senza cartolina-vetrina aveva senso, era
 * l'unico invito a fare qualcosa. Con «Contatta» in scena i due non possono
 * restare verdi insieme (`--radar-azione` è «il SOLO pulsante primario»,
 * mappa-nuova.css intestazione) — e fra i due è «Contatta» che converte un
 * visitatore in un contatto vero: è la riga che l'intero pannello «Chi
 * pubblica» esiste per raccogliere (`inc/fiducia.php`), «Indicazioni» è
 * corredo. Si demota qui, SOLO dentro `.mn-lingua`: la mappa senza questa
 * classe (se mai esistesse un punto che la richiama senza il resto del
 * pezzo 1) non cambia.
 */
.pannello-scheda.mn-lingua .pannello-scheda__icona-cerchio--primario {
	color: var(--radar-testo);
	background: var(--radar-superficie);
	border-color: var(--radar-bordo);
}
.pannello-scheda.mn-lingua .pannello-scheda__icona-voce:hover .pannello-scheda__icona-cerchio--primario {
	background: var(--radar-superficie-alt);
}

.mn-cartolina-popup__contatta {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: var(--radar-tocco-minimo);
	padding: 0 calc(var(--radar-passo) * 1.2);
	margin-bottom: calc(var(--radar-passo) * .5);
	border-radius: var(--radar-raggio-pillola);
	background: var(--radar-azione);
	color: var(--radar-azione-testo);
	font: 700 var(--radar-corpo-4) / 1 var(--radar-font);
	text-decoration: none;
	text-align: center;
}
.mn-cartolina-popup__contatta:hover,
.mn-cartolina-popup__contatta:focus-visible {
	background: var(--radar-azione-hover);
}
.mn-cartolina-popup__contatta:focus-visible {
	outline: 2px solid var(--radar-testo);
	outline-offset: 2px;
}

/* «Come ordiniamo i risultati» dentro la cartolina — obbligo di legge a un
   clic anche sul singolo risultato (MAPPA-NUOVA.md §4/§8 punto 3), non solo
   nella striscia crediti in fondo alla mappa. Stessa `.pannello-scheda__
   nota-inline` (radar.css) per la taglia del testo; qui solo il trattamento
   da link. */
.mn-cartolina-popup__ordiniamo {
	display: inline-block;
	color: var(--radar-testo-secondario);
	text-decoration: underline;
	text-underline-offset: 2px;
}
.mn-cartolina-popup__ordiniamo:hover,
.mn-cartolina-popup__ordiniamo:focus-visible { color: var(--radar-testo); }


/* ==========================================================================
   12 · «TUTTI» — LO STATO ACCESO È DERIVATO, NON UN VALORE PROPRIO
   Aggiunto il 13/9/2026, pezzo 2, correzione 2 del coordinatore.

   La pastiglia «Tutti» (guida: prima della fila, nessun `data-categoria`,
   nessun `cat[]`) non ha un `checked` tutto suo: è «accesa» quando nessuna
   pastiglia-categoria della stessa riga lo è — «tutte le categorie» è già
   quello che la mappa mostra senza `cat[]` (MAPPA-NUOVA.md §5, il percorso
   verificato). `:not(:has(...))` lo scrive in puro CSS: nessun valore
   nuovo, nessuno script che tenga due stati sincronizzati — il browser
   rivaluta da solo a ogni casella spuntata o tolta, CON o SENZA JavaScript.

   ⛔ Non usa `--mn-colore` (che qui non esiste: «Tutti» non è una
   categoria, `var()` senza fallback su una custom property assente
   invaliderebbe l'intera dichiarazione) — la tinta è quella neutra del
   testo, non quella di un pin.
   ========================================================================== */
.mn-pastiglie:not(:has(.mn-pastiglia__casella:checked)) > [data-radar-tutte] {
	background: color-mix(in srgb, var(--radar-testo) 12%, var(--radar-superficie));
	border-color: var(--radar-testo);
	color: var(--radar-testo);
	font-weight: 700;
}


/* ==========================================================================
   13 · IL RESPIRO DOPO L'ULTIMA PASTIGLIA
   Aggiunto il 13/9/2026, pezzo 2, correzione del coordinatore sulla cattura
   `piega-375x635-chiaro.png`: la riga scorrevole può sfondare fino al
   bordo vero dello schermo (il pezzo che la usa decide se farla sfondare:
   → `cerca.css` per l'eroe della home) — ma quando si scorre fino in fondo
   l'ultima pastiglia non deve restare incollata a quel bordo. Il respiro è
   nel COMPONENTE, non nella pagina che lo sfonda: chi lo riusa (il pezzo 3,
   su `/mappa/`) lo eredita senza doverlo riscrivere.
   ========================================================================== */
.mn-pastiglie {
	padding-right: calc(var(--radar-passo) * 1.25);
}


/* ==========================================================================
   14 · LA SCHEDA DELL'ANNUNCIO — pezzo 1 (struttura), 13/9/2026
   Squadra RADAR-SCHEDA-P1. Componenti che mancavano alla lingua e che
   `single-immobile.php` usa per la struttura nuova (SCHEDA-NUOVA.md §8):
   la carta generica, la carta del titolo con le tessere-icona, la carta del
   prezzo, «Chi pubblica»/«Perché fidarti», e lo stato senza foto.

   ⚠ SOLO AGGIUNTE — sezioni 1-13 sopra non toccate, per lo stesso motivo
   scritto nella testata del file (due squadre, un foglio solo, adesso).

   Le icone nuove (§14.7) sono generiche — misura/struttura/documento/spunta —
   e non seguono la coppia 1:1 con le sei categorie di §8: qui non c'è una
   categoria da colorare, sono etichette di un dato (superficie, contratto…),
   quindi il colore resta neutro (`--radar-testo`/`--radar-testo-secondario`),
   mai `--mn-colore`.
   ========================================================================== */

/* --- 14.1 · La carta generica --------------------------------------------
   Base di ogni riquadro bianco della scheda (titolo, prezzo, chi pubblica,
   perché fidarti): stessi token della cartolina (§5), un solo posto per
   "cos'è una carta" su questa pagina. */
.mn-carta {
	padding: calc(var(--radar-passo) * 1.1);
	border-radius: var(--radar-raggio-grande);
	background: var(--radar-superficie);
	border: 1px solid var(--radar-bordo);
	box-shadow: var(--radar-ombra);
}

.mn-carta + .mn-carta { margin-top: calc(var(--radar-passo) * .9); }

/* --- 14.2 · La carta del titolo -------------------------------------------
   Sotto la galleria: categoria, titolo, luogo, la garanzia detta piano,
   le tessere. Sostituisce la fascia scura «notte» che stava PRIMA della
   foto (⛔ vietata dal brief) — qui è una carta come le altre, sulla
   superficie normale della pagina. */
.mn-carta-titolo { margin-bottom: calc(var(--radar-passo) * 1.2); }

.mn-carta-titolo h1 {
	margin: .5rem 0 .35rem;
	font-family: var(--font-titolo);
	font-size: clamp(1.9rem, 3.6vw, 3.4rem);
	font-weight: 400;
	line-height: 1.04;
	letter-spacing: -.02em;
	color: var(--radar-testo);
}

/* La garanzia, detta piano — 🔴 dopo il titolo, mai prima (SCHEDA-NUOVA.md
   §8 punto 2). Stesso trattamento tipografico di una nota secondaria, non
   di un'etichetta di reparto: niente maiuscolo spaziato, niente colore
   d'allarme. */
.mn-occhiello-piano {
	margin: 0 0 calc(var(--radar-passo) * .9);
	font: 500 .8125rem/1.3 var(--radar-font);
	color: var(--radar-testo-secondario);
}

/* --- 14.3 · Le tessere -------------------------------------------------------
   Sostituiscono, solo nella resa, i pannelli piatti di `.annuncio .dati`
   (annuncio.css §7): stesso `<dl>`, stessa logica dati.

   🚨 13/9/2026 — SENZA ICONA, E NON È UN PASSO INDIETRO. La prima resa
   aveva un'icona per tessera scelta per FAMIGLIA di campo (misura,
   struttura, documento: tre forme per venti campi diversi), e sulla
   cattura vera si è visto il difetto: bagni, piano, anno, tipologia,
   locali, riscaldamento, arredamento, stato — OTTO tessere diverse con
   la STESSA casetta. Un'icona uguale su otto tessere non distingue
   niente: è decorazione che finge di essere informazione, e sembra un
   errore («perché hanno tutte la stessa icona?») più di quanto aiuti.

   La guida ne disegna quattro, tutte diverse — ma lì sono quattro campi
   fissi (superficie, zona, accesso, pendenza) uguali su ogni terreno.
   Qui i campi sono fino a venti e cambiano per tipo di bene
   (`Radar_Campi::per_bene()`): disegnare venti icone sotto la pressione
   di questo giro avrebbe voluto dire indovinarne la metà. Fra un'icona
   ripetuta (bugia) e nessuna icona (onesto), qui vince l'onesto — resta
   una griglia, tessera, etichetta, valore, senza il terzo canale.
   Il grafo per campo, se un giorno serve davvero, è un giro suo. */
.mn-tessere {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
	gap: .6rem;
	margin: 0;
}

/* `<dl><div class="mn-tessera"><dt>…</dt><dd>…</dd></div></dl>` è markup
   valido (WHATWG, contenuto di `<dl>`: un `<div>` può avvolgere UNA coppia
   dt/dd, e dt/dd restano SUOI figli diretti). */
.mn-tessera {
	display: flex;
	flex-direction: column;
	gap: .15rem;
	padding: .7rem .8rem;
	border-radius: var(--radar-raggio);
	background: var(--radar-superficie-alt);
}

.mn-tessera dt {
	margin: 0;
	font-size: var(--radar-corpo-5);
	color: var(--radar-testo-secondario);
}

.mn-tessera dd {
	margin: 0;
	font: 700 var(--radar-corpo-4)/1.2 var(--radar-font);
	color: var(--radar-testo);
}

/* --- 14.4 · La carta del prezzo --------------------------------------------
   ⚠ Resta attaccata mentre si scorre: lo fa già `.fiducia` (radar.css,
   `position:sticky` da 60rem) sull'involucro `<aside class="fiducia">` —
   qui non si tocca quella regola (radar.css è fuori dal mio perimetro),
   si veste solo quello che ci va dentro. */
.mn-carta-prezzo__cifra {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: .5rem;
	margin: 0 0 .2rem;
}

.mn-carta-prezzo__cifra .prezzo {
	font-family: var(--font-titolo);
	font-size: clamp(1.7rem, 2.4vw, 2.2rem);
	font-weight: 400;
	letter-spacing: -.01em;
	color: var(--radar-testo);
}

/* La riga sotto il tasto — una riga sola, con la spunta della verifica
   invece del lucchetto/riquadro d'allarme (§8 punto 2 del brief: la
   garanzia si dice piano). Riusa `.badge__segno` (radar.css) per la stessa
   spunta disegnata dei badge di verifica: un solo segno di «ok» su tutta
   la pagina, non un secondo disegnato qui. */
.mn-carta-prezzo__nota {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	margin: .7rem 0 0;
	font-size: var(--radar-corpo-5);
	line-height: 1.4;
	color: var(--radar-testo-secondario);
}

.mn-carta-prezzo__nota .badge__segno {
	color: var(--verificato, #25674A);
	margin-top: .3em;
}

/* --- 14.5 · Chi pubblica / Perché fidarti ----------------------------------
   Due carte separate (non una sola grande): così la pagina non finisce con
   metà colonna bianca — ogni carta prende solo lo spazio che il suo
   contenuto chiede, e il respiro fra le tre è quello di `.mn-carta`. */
.mn-chi-pubblica .fiducia__titolo,
.mn-perche-fidarti .fiducia__titolo {
	margin: 0 0 .7rem;
}

/*
   🚨 13/9/2026 — «PERCHÉ FIDARTI» C'È SEMPRE, e il coordinatore ha chiesto
   perché: le tre spunte della guida (confini verificabili, foto senza
   GPS, contatto solo dal sito) sono promesse **del sito**, non di
   quell'annuncio — vale su ogni scheda allo stesso modo, quindi la carta
   non può dipendere da un dato che su metà degli annunci manca (i badge
   di verifica, per esempio, che restano un canale in più, non l'UNICO).

   Le due `.mn-perche__voce` fisse sono fatti veri sul MECCANISMO del
   sito, non sull'annuncio — verificabili nel codice, non promesse a
   vuoto: il contatto passa sempre dal modulo o dal login
   (`radar_fiducia_pulsante()`/`Radar_Richiesta_Impresa`, mai un numero
   in chiaro), e il punto sulla mappa è sempre sfocato
   (`Radar_Api::SFOCATURA`, mai il civico). I badge di verifica reali
   (quando ci sono) si aggiungono sotto, con `.fiducia__badge` — stesso
   markup di sempre, non duplicato. */
.mn-perche__voce {
	display: flex;
	align-items: flex-start;
	gap: .5rem;
	font-size: var(--radar-corpo-5);
	line-height: 1.4;
	color: var(--radar-testo-secondario);
}

.mn-perche__voce + .mn-perche__voce { margin-top: .5rem; }

.mn-perche__voce .badge__segno {
	color: var(--verificato, #25674A);
	margin-top: .3em;
}

.mn-perche-fidarti .fiducia__badge { margin-top: .7rem; }

.mn-perche-fidarti .fiducia__badge:not(:last-child) { margin-bottom: .5rem; }

/* --- 14.6 · La foto che manca o che si rompe — UN NOME SOLO, DUE USI --------
   13/9/2026, decisione del coordinatore dopo aver aperto la cattura: la
   stessa foto rotta (riquadro beige vuoto, testo alternativo in cima,
   icona rotta del browser) esce sia qui (annuncio senza foto o con un
   file 404) sia sulla cartolina della mappa — un'altra squadra la sta
   riparando nello stesso momento su quel componente. `.mn-foto-ripiego`
   è la lingua, un riquadro nel colore della categoria (`[data-categoria]`,
   §1) con la sua icona al centro — MAI il testo alternativo del browser,
   MAI la sua icona d'errore.

   Due usi:
     1. Nessuna foto affatto — `single-immobile.php` lo sa già in PHP,
        stampa `.mn-foto-ripiego` al posto della `.galleria` intera, con
        una riga di testo (`.mn-foto-ripiego__testo`).
     2. Una foto che non carica — l'`<img>` porta `onerror` (unico punto
        di JavaScript su questa pagina, un `outerHTML` di una riga, niente
        file `.js`: coerente con «zero JavaScript sulla scheda» perché non
        è un file caricato, è la stessa foto che si ripara da sola quando
        il file manca) e si sostituisce con lo stesso riquadro, senza
        testo — dentro una griglia di miniature una riga di spiegazione
        per foto sarebbe rumore, l'icona basta.

   ⚠ Le classi di forma (`.galleria__prima`, `.galleria__foto`) restano
   SULLO STESSO elemento insieme a `.mn-foto-ripiego`: l'aspect-ratio, il
   raggio e il bordo (annuncio.css §6) sono già giusti, non si ridisegnano
   qui — questo file dà solo il fondo colorato e l'icona. */
/*
 * 🔴 13/9/2026, CANCELLO VISIVO — TOLTO `height: 100%`.
 *
 * Con `height:100%` il riquadro, dentro `.annuncio__principale` (griglia
 * di `.annuncio__corpo`, `align-items` di default `stretch`), risaliva la
 * catena fino a una riga di griglia alta quanto TUTTA la colonna — 1.439px
 * a 1440, 1.623px a 390, misurato dal cancello su cinque annunci — invece
 * dei 546/199px della proporzione vera. Le carte sotto (titolo, poi
 * descrizione) restavano scritte alla posizione di sempre nel DOM, ma il
 * riquadro le copriva: il prezzo e «Perché fidarti» finivano sopra il
 * titolo, il titolo dentro il piede.
 *
 * ⚠ La cartolina della mappa usa lo stesso `.mn-foto-ripiego` e NON si
 * tocca (`.mn-cartolina-popup__foto-riquadro > .mn-foto-ripiego`, più giù
 * in questo file): quella regola dà già la sua misura con un
 * `aspect-ratio` scoped al proprio contenitore — non leggeva `height:100%`
 * per restare alta, quindi toglierlo qui non le cambia un pixel (verificato
 * dalla squadra mappa, non da me: è il loro componente).
 *
 * 👉 La regola giusta, come l'ha scritta il coordinatore: il riquadro
 * prende le misure dello SPAZIO DELLA FOTO, non un `height` proprio.
 * Nella scheda quello spazio è `.galleria__prima`/`.galleria__foto`
 * (annuncio.css §6, `aspect-ratio`), già applicate insieme a questa
 * classe nel markup — bastano da sole. `height:auto` sostituisce
 * `height:100%`: torna a essere determinata dal contenuto/aspect-ratio
 * del contenitore, mai un valore che si autoalimenta nella griglia.
 */
.mn-foto-ripiego {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	width: 100%;
	height: auto;
	min-height: 8rem;
	background: color-mix(in srgb, var(--mn-colore, var(--radar-testo-secondario)) 14%, var(--radar-superficie-alt));
	color: var(--mn-colore, var(--radar-testo-secondario));
	text-align: center;
}

.mn-foto-ripiego .mn-icona {
	width: 2rem;
	height: 2rem;
	flex: 0 0 auto;
}

/* Solo sull'uso 1 (nessuna foto affatto): una riga che dice cosa manca.
   Sulle miniature rotte (uso 2) questo `<span>` non si stampa — l'icona
   sola basta, una didascalia per ogni miniatura sarebbe rumore. */
.mn-foto-ripiego__testo {
	max-width: 22em;
	font-size: var(--radar-corpo-5);
	color: var(--radar-testo-secondario);
}

/* --- 14.7 · Dove si trova, nella colonna larga -----------------------------
   `radar_fiducia_zona()` (inc/fiducia.php) resta invariata — disegna lo
   stesso SVG di sempre (⛔ «senza rifarli», brief) — qui solo un tetto alla
   larghezza: nella colonna stretta di destra il cerchio stava su 372px,
   nella colonna larga di sinistra senza un limite si allargherebbe fino a
   ~900px e la scala non si leggerebbe più come un cerchio, come un poster.
   La mappa vera (pezzo 2) sostituirà questo blocco, non questa regola. */
.mn-dove-si-trova {
	max-width: 26rem;
	margin-top: calc(var(--radar-passo) * 1.2);
}

/* --- 14.8 · Le icone nuove --------------------------------------------------
   Misura (righello), struttura (una pianta minima), documento (contratto),
   spunta (già `.badge__segno` di radar.css, §14.4 — qui non se ne ridisegna
   una seconda). Stesso stile mono-linea 24×24 delle sei icone di §8. */
.mn-icona--righello {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%222.5%22%20y%3D%227%22%20width%3D%2219%22%20height%3D%2210%22%20rx%3D%221.5%22%20transform%3D%22rotate(-45%2012%2012)%22/%3E%3Cpath%20d%3D%22M7%2011.5%209%209.5M11%2015.5%2013%2013.5M9%2013.5%2010.2%2012.3%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%222.5%22%20y%3D%227%22%20width%3D%2219%22%20height%3D%2210%22%20rx%3D%221.5%22%20transform%3D%22rotate(-45%2012%2012)%22/%3E%3Cpath%20d%3D%22M7%2011.5%209%209.5M11%2015.5%2013%2013.5M9%2013.5%2010.2%2012.3%22/%3E%3C/svg%3E");
}
.mn-icona--struttura {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3.5%2011%2012%204l8.5%207%22/%3E%3Cpath%20d%3D%22M5.5%209.5V20h13V9.5%22/%3E%3Cpath%20d%3D%22M10%2020v-6h4v6%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3.5%2011%2012%204l8.5%207%22/%3E%3Cpath%20d%3D%22M5.5%209.5V20h13V9.5%22/%3E%3Cpath%20d%3D%22M10%2020v-6h4v6%22/%3E%3C/svg%3E");
}
.mn-icona--documento {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%203h8l4%204v14H6z%22/%3E%3Cpath%20d%3D%22M14%203v4h4%22/%3E%3Cpath%20d%3D%22M9%2013h6M9%2016.5h6%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%203h8l4%204v14H6z%22/%3E%3Cpath%20d%3D%22M14%203v4h4%22/%3E%3Cpath%20d%3D%22M9%2013h6M9%2016.5h6%22/%3E%3C/svg%3E");
}
/* Nessuna foto — la stessa famiglia di `.mn-icona--ombrellone`, una cornice
   vuota: non è un'icona di errore, è la forma di una foto che manca. */
.mn-icona--foto-assente {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2218%22%20height%3D%2214%22%20rx%3D%222%22/%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2210%22%20r%3D%221.6%22/%3E%3Cpath%20d%3D%22M4%2017l5-4.5%203%202.5%204-4%204%204%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2218%22%20height%3D%2214%22%20rx%3D%222%22/%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2210%22%20r%3D%221.6%22/%3E%3Cpath%20d%3D%22M4%2017l5-4.5%203%202.5%204-4%204%204%22/%3E%3C/svg%3E");
}

/* ==========================================================================
   15 · PEZZO 3/4 (13/9/2026) — LA BARRA E IL PANNELLO SU /mappa/
   Squadra RADAR-MAPPA-P3P4. SOLO AGGIUNTE, sezioni 1-14 sopra non toccate
   (stessa regola in testa al file: un foglio, più squadre, adesso).

   Qui solo i due pezzi mancanti al vocabolario — un'icona (nessuna delle sei
   categorie: un comune aggregato, `radar_mappa_lista_comuni()`) e un tasto
   con la spunta per «Come ordiniamo i risultati» quando serve inline. Tutto
   il resto (posizione della barra, del pannello, del foglio a 390) è
   specifico di questa pagina e vive in `assets/css/mappa.css`, non qui:
   `mappa-nuova.css` è il vocabolario condiviso con l'eroe della home
   (pezzo 2) e con la scheda (un'altra squadra, adesso) — la geometria di
   UNA pagina non ci va.
   ========================================================================== */

/* Comune aggregato — un fermo (pin) semplice, non una delle sei categorie:
   `radar_mappa_lista_comuni()`, quando la mappa è zoomata indietro abbastanza
   da contare comuni invece di singole schede. */
.mn-icona--comune {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2021.5S5%2014.86%205%209.9A7%207%200%200%201%2019%209.9c0%204.96-7%2011.6-7%2011.6z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%229.7%22%20r%3D%222.4%22/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2021.5S5%2014.86%205%209.9A7%207%200%200%201%2019%209.9c0%204.96-7%2011.6-7%2011.6z%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%229.7%22%20r%3D%222.4%22/%3E%3C/svg%3E");
}
