/* =============================================================================
   FEC Annunci — foglio di stile pubblico
   -----------------------------------------------------------------------------
   Direzione visiva
   - Palette "notte di festa": viola profondo come base, rosa confetto come
     unico accento forte, giallo candelina per i richiami secondari.
   - Tipografia: titoli molto stretti e pesanti, etichette in monospaziato
     (leggono come i cartellini dei prezzi e i biglietti d'ingresso).
   - Elemento firma: il filo di bandierine che segna l'avanzamento del wizard.
   - Tutto il resto resta volutamente quieto: bordi sottili, niente ombre
     gratuite, un solo raggio di curvatura.
   Mobile first: le regole base valgono per il telefono, i media query
   aggiungono spazio solo quando c'è.
   ========================================================================== */

/* Prima difesa: i token stanno anche su :root.
   I plugin che «rimuovono il CSS inutilizzato» analizzano l'HTML e buttano le
   regole i cui selettori non trovano. Se sbagliano su una sola delle classi
   elencate qui sotto e scartano l'intero blocco, ogni var() del foglio resta
   senza valore e la pagina perde sfondi e colori in blocco. :root c'e'
   sempre, su qualunque pagina, e nessuno lo scarta: se il blocco scoped
   sparisce, i colori arrivano comunque da qui per eredita'.
   Seconda difesa: ogni var() nel resto del foglio porta il proprio valore di
   ripiego scritto accanto, quindi anche senza nessuna delle due dichiarazioni
   i colori restano quelli giusti. */
:root {
	--fec-ink: #1b1140;
	--fec-grape: #4b2e83;
	--fec-confetto: #ff3d7f;
	--fec-limone: #ffc53d;
	--fec-menta: #12b886;
	--fec-carta: #fbf7ff;
	--fec-nebbia: #ede7f6;
	--fec-bordo: #ddd2ee;
	--fec-testo: #241a44;
	--fec-tenue: #6b5f8c;
	--fec-r: 14px;
	--fec-r-s: 8px;
	--fec-sp: 1rem;
	--fec-display: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
	--fec-testo-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fec-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;
}

/* I token vanno dichiarati su ogni radice del plugin, comprese quelle che
   vivono fuori dal contenuto dell'annuncio (il pulsante fluttuante, gli
   avvisi, le modali). Una regola che usa var(--x) dove --x non e' definita
   viene annullata dal browser: e' cosi' che il modulo di contatto si e'
   ritrovato senza bordi e con il pulsante invisibile. */
.fec-annuncio,
.fec-wizard,
.fec-ricerca,
.fec-dash,
.fec-vuoto,
.fec-modale,
.fec-traguardo,
.fec-badge-festa,
.fec-avviso-volante {
	/* Token di colore */
	--fec-ink: #1b1140;
	--fec-grape: #4b2e83;
	--fec-confetto: #ff3d7f;
	--fec-limone: #ffc53d;
	--fec-menta: #12b886;
	--fec-carta: #fbf7ff;
	--fec-nebbia: #ede7f6;
	--fec-bordo: #ddd2ee;
	--fec-testo: #241a44;
	--fec-tenue: #6b5f8c;

	/* Token di forma e spazio */
	--fec-r: 14px;
	--fec-r-s: 8px;
	--fec-sp: 1rem;

	/* Tipografia */
	--fec-display: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
	--fec-testo-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fec-mono: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;

	font-family: var(--fec-testo-font);
	color: var(--fec-testo);
	line-height: 1.6;
	box-sizing: border-box;
}

.fec-annuncio *, .fec-wizard *, .fec-ricerca *, .fec-dash * { box-sizing: inherit; }

/* -----------------------------------------------------------------------------
   L'attributo hidden deve nascondere, sempre.
   Il browser applica [hidden] { display: none } dal proprio foglio di stile, che
   ha priorità più bassa di qualunque regola scritta qui. Ogni volta che a un
   elemento assegniamo un display esplicito (grid, flex, inline-flex...) quella
   regola vince e l'elemento resta a schermo anche con hidden impostato: era il
   caso della modale di anteprima e del pulsante "Mostra altri risultati".
   Questa dichiarazione ristabilisce il comportamento atteso una volta per tutte.
   -------------------------------------------------------------------------- */
.fec-annuncio [hidden],
.fec-wizard [hidden],
.fec-ricerca [hidden],
.fec-dash [hidden],
.fec-modale[hidden] { display: none !important; }

/* --- Tipografia condivisa -------------------------------------------------- */

.fec-eyebrow {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace);
	font-size: .75rem;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--fec-tenue, #6b5f8c);
	margin: 0 0 .35em;
}

.fec-titolo,
.fec-wizard h2,
.fec-annuncio h1 {
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-weight: 800;
	letter-spacing: -.025em;
	line-height: 1.1;
	color: var(--fec-ink, #1b1140);
	margin: 0 0 .3em;
}

.fec-annuncio h1 { font-size: clamp(1.75rem, 6vw, 2.9rem); }
.fec-annuncio h2 {
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-size: clamp(1.25rem, 4vw, 1.6rem);
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--fec-ink, #1b1140);
	margin: 0 0 .6em;
}
.fec-sottotitolo { font-size: 1.05rem; color: var(--fec-tenue, #6b5f8c); margin: 0 0 1rem; }
.fec-lead { font-size: 1.1rem; }

/* --- Pulsanti -------------------------------------------------------------- */

.fec-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .4em;
	min-height: 48px;              /* area di tocco comoda sul telefono */
	padding: .7em 1.2em;
	border: 1.5px solid transparent;
	border-radius: 999px;
	font: 600 1rem/1 var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	text-decoration: none;
	cursor: pointer;
	transition: transform .12s ease, background-color .15s ease;
}
.fec-btn:active { transform: translateY(1px); }
.fec-btn--primario { background: var(--fec-confetto, #ff3d7f); color: #fff; }
.fec-btn--primario:hover { background: #e12f6d; color: #fff; }
.fec-btn--ghost { background: transparent; color: var(--fec-grape, #4b2e83); border-color: var(--fec-bordo, #ddd2ee); }
.fec-btn--ghost:hover { background: var(--fec-nebbia, #ede7f6); }
.fec-btn--wa { background: #25d366; color: #06331a; }
.fec-btn:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }

/* =============================================================================
   WIZARD
   ========================================================================== */

.fec-wizard { max-width: 780px; margin: 0 auto; padding: var(--fec-sp, 1rem); }

/* --- Avanzamento: numeri --------------------------------------------------
   Un numero grande dice due cose in un colpo: dove sei e quanto manca. Il
   cerchio pieno segna il passo corrente, la spunta quelli chiusi, la barra
   sotto misura la strada fatta. I passi non ancora raggiunti sono disattivati:
   saltare avanti lascerebbe indietro dati obbligatori.
   ------------------------------------------------------------------------ */

.fec-passi-nav { margin: 0 0 1.75rem; }
.fec-passi-nav__stato {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .75rem; letter-spacing: .06em;
	text-transform: uppercase; color: var(--fec-tenue, #6b5f8c); margin: 0 0 .5rem;
}
.fec-passi-nav__stato strong { color: var(--fec-confetto, #ff3d7f); font-size: 1rem; }

.fec-passi-nav__lista {
	display: flex; gap: .4rem;
	list-style: none; margin: 0 0 .6rem; padding: 0 0 .35rem;
	overflow-x: auto; scrollbar-width: none;
	scroll-snap-type: x proximity;
}
.fec-passi-nav__lista::-webkit-scrollbar { display: none; }
.fec-passo { flex: 0 0 auto; scroll-snap-align: center; }

.fec-passo__btn {
	display: flex; flex-direction: column; align-items: center; gap: .3rem;
	width: 60px; padding: .2rem .1rem;
	background: none; border: 0; cursor: pointer;
	font: inherit; color: var(--fec-tenue, #6b5f8c);
}
.fec-passo__btn[disabled] { cursor: default; opacity: .55; }
.fec-passo__btn:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; border-radius: 10px; }

.fec-passo__num {
	display: grid; place-items: center;
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--fec-nebbia, #ede7f6);
	color: var(--fec-grape, #4b2e83);
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-size: 1.05rem; font-weight: 800;
	transition: background-color .18s ease, color .18s ease, transform .18s ease;
}
.fec-passo__label {
	font-size: .62rem; line-height: 1.15; text-align: center;
	max-width: 60px;
}

.fec-passo.is-done .fec-passo__num {
	background: var(--fec-menta, #12b886); color: #fff; font-size: 0;
}
.fec-passo.is-done .fec-passo__num::after {
	content: "\2713"; font-size: 1.15rem; line-height: 1;
}
.fec-passo.is-done .fec-passo__btn:hover .fec-passo__num { transform: scale(1.08); }

.fec-passo.is-current .fec-passo__num {
	background: var(--fec-confetto, #ff3d7f); color: #fff;
	box-shadow: 0 0 0 4px rgba(255, 61, 127, .18);
}
.fec-passo.is-current .fec-passo__label { color: var(--fec-ink, #1b1140); font-weight: 700; }

.fec-passi-nav__barra {
	height: 4px; border-radius: 999px;
	background: var(--fec-nebbia, #ede7f6); overflow: hidden;
}
.fec-passi-nav__barra > span {
	display: block; height: 100%;
	background: linear-gradient(90deg, var(--fec-menta, #12b886), var(--fec-confetto, #ff3d7f));
	transition: width .3s ease;
}

/* --- Struttura degli step --------------------------------------------------- */

.fec-step__testa { margin-bottom: 1.25rem; }
.fec-step__sub { color: var(--fec-tenue, #6b5f8c); margin: 0; }
.fec-step__piede {
	display: flex; flex-wrap: wrap; align-items: center; gap: .6rem;
	margin-top: 1.5rem; padding-top: 1rem;
	border-top: 1px solid var(--fec-bordo, #ddd2ee);
}
.fec-autosave { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .75rem; color: var(--fec-menta, #12b886); }

/* --- Campi ----------------------------------------------------------------- */

.fec-campi { display: grid; gap: 1.1rem; }
.fec-campo { display: grid; gap: .35rem; }
.fec-campo > label { font-weight: 600; font-size: .95rem; }
.fec-obbl { color: var(--fec-confetto, #ff3d7f); text-decoration: none; border: 0; }
.fec-cons {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .65rem; text-transform: uppercase;
	background: var(--fec-limone, #ffc53d); color: #4a3400; padding: .15em .5em; border-radius: 999px;
}
.fec-aiuto { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); margin: 0; }
.fec-errore { font-size: .85rem; color: #c0224f; margin: 0; min-height: 0; }
.fec-campo.has-error input,
.fec-campo.has-error textarea,
.fec-campo.has-error select { border-color: #c0224f; }

.fec-campo input[type="text"], .fec-campo input[type="email"], .fec-campo input[type="tel"],
.fec-campo input[type="url"], .fec-campo input[type="number"], .fec-campo input[type="date"],
.fec-campo input[type="search"], .fec-campo select, .fec-campo textarea,
.fec-filtri input[type="number"], .fec-filtri select, .fec-inline input {
	width: 100%;
	min-height: 48px;
	padding: .6em .8em;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r-s, 8px);
	background: #fff;
	font: 1rem/1.4 var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	color: var(--fec-testo, #241a44);
}
.fec-campo textarea { min-height: 120px; resize: vertical; }
.fec-campo input:focus, .fec-campo textarea:focus, .fec-campo select:focus {
	outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 1px; border-color: var(--fec-grape, #4b2e83);
}
.fec-contatore { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .75rem; color: var(--fec-tenue, #6b5f8c); justify-self: end; }
.fec-contatore.is-over { color: #c0224f; }
.fec-input-valuta { display: flex; align-items: center; gap: .5rem; }
.fec-input-valuta > span { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: 1.2rem; color: var(--fec-tenue, #6b5f8c); }
.fec-inline { display: flex; gap: .5rem; align-items: center; }

.fec-check, .fec-radio { display: flex; align-items: center; gap: .5rem; font-size: .95rem; }
.fec-check input, .fec-radio input { width: 22px; height: 22px; accent-color: var(--fec-confetto, #ff3d7f); }
.fec-check-gruppo, .fec-radio-gruppo { display: grid; gap: .5rem; }

/* Chip selezionabili */
.fec-chips {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: flex-start;
	gap: .45rem;
}
.fec-chip {
	display: inline-flex; align-items: center;
	padding: .5em .9em;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: 999px;
	background: #fff;
	font-size: .9rem;
	cursor: pointer;
	user-select: none;
}
.fec-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.fec-chip.is-on { background: var(--fec-ink, #1b1140); color: #fff; border-color: var(--fec-ink, #1b1140); }
.fec-chip--azione { border-style: dashed; color: var(--fec-grape, #4b2e83); }

/* Chip con miniatura: usati nei filtri per tipo di fornitore. */
.fec-chips--media { gap: .5rem; }
.fec-chip--media {
	flex-direction: column;
	gap: .35rem;
	padding: .45rem .45rem .55rem;
	border-radius: var(--fec-r-s, 8px);
	width: 92px;
	text-align: center;
}
.fec-chip__media {
	width: 100%;
	aspect-ratio: 1;
	border-radius: 6px;
	overflow: hidden;
	background: var(--fec-nebbia, #ede7f6);
	display: grid;
	place-items: center;
}
.fec-chip__media .fec-cat-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fec-chip__media .fec-cat-icona svg { width: 52%; max-width: 30px; }
.fec-chip__nome { font-size: .72rem; line-height: 1.2; }
.fec-chip--media.is-on .fec-chip__media { outline: 2px solid var(--fec-limone, #ffc53d); outline-offset: -2px; }

/* =============================================================================
   ANIMAZIONI DI FILTRAGGIO
   -----------------------------------------------------------------------------
   Due sole classi, usate da tutti i filtri: una per chi entra, una per chi
   esce. Il ritardo progressivo arriva dalla variabile --i, impostata dal
   JavaScript e azzerata dopo la dodicesima voce.
   ========================================================================== */

.fec-cat-item,
.fec-chip,
.fec-card,
.fec-accordion .fec-chip {
	transition:
		opacity .18s ease,
		transform .18s ease,
		border-color .15s ease,
		background-color .15s ease;
}

.is-entrata {
	animation: fec-entra .18s ease both;
	animation-delay: calc(var(--i, 0) * 30ms);
}
.is-uscita {
	opacity: 0;
	transform: scale(.96);
	pointer-events: none;
}

@keyframes fec-entra {
	from { opacity: 0; transform: translateY(6px) scale(.98); }
	to   { opacity: 1; transform: none; }
}

/* Attesa: il contenitore si smorza senza cambiare altezza, così la pagina
   non salta mentre arrivano i risultati. */
.is-attesa {
	opacity: .45;
	pointer-events: none;
	transition: opacity .15s ease;
}
.fec-chip-gruppo { border: 0; padding: 0; margin: 0 0 1rem; }
.fec-chip-gruppo legend {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .7rem; text-transform: uppercase;
	letter-spacing: .06em; color: var(--fec-tenue, #6b5f8c); padding: 0 0 .4rem;
}
.fec-tax__conta { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .8rem; color: var(--fec-tenue, #6b5f8c); margin: 0 0 .5rem; }
.fec-tax__conta.is-ok { color: var(--fec-menta, #12b886); }

/* Scelta categoria */
.fec-cat-gruppo { border: 0; padding: 0; margin: 0 0 1.25rem; }
.fec-cat-gruppo legend { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .7rem; text-transform: uppercase; color: var(--fec-tenue, #6b5f8c); }
.fec-cat-griglia { display: grid; gap: .6rem; grid-template-columns: repeat(2, 1fr); }

.fec-cat-item {
	position: relative;
	display: grid;
	grid-template-rows: auto 1fr;
	gap: .5rem;
	padding: .55rem .55rem .75rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff;
	cursor: pointer;
	transition: border-color .15s ease, background-color .15s ease, transform .15s ease;
}
.fec-cat-item:hover { border-color: var(--fec-grape, #4b2e83); transform: translateY(-2px); }
.fec-cat-item input { position: absolute; opacity: 0; width: 0; height: 0; }

/* Riquadro immagine: rapporto fisso, così la griglia non balla mentre le
   foto arrivano una dopo l'altra. */
.fec-cat-item__media {
	display: block;
	aspect-ratio: 4 / 3;
	border-radius: var(--fec-r-s, 8px);
	overflow: hidden;
	background: var(--fec-nebbia, #ede7f6);
	display: grid;
	place-items: center;
}
.fec-cat-item__media .fec-cat-img {
	width: 100%; height: 100%;
	object-fit: cover;
	display: block;
}
.fec-cat-item__testo { display: grid; gap: .15rem; align-content: start; }
.fec-cat-item__nome { font-weight: 700; font-size: .95rem; line-height: 1.25; }
.fec-cat-item__descr { font-size: .8rem; color: var(--fec-tenue, #6b5f8c); line-height: 1.35; }

/* Segno di selezione: un cerchio in alto a destra sulla foto. */
.fec-cat-item__segno {
	position: absolute; top: .95rem; right: .95rem;
	width: 24px; height: 24px; border-radius: 50%;
	border: 2px solid #fff;
	background: rgba(27, 17, 64, .35);
	backdrop-filter: blur(2px);
	transition: background-color .15s ease;
}
.fec-cat-item__segno::after {
	content: ""; position: absolute; inset: 0;
	background: no-repeat center / 12px 10px
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 10'%3E%3Cpath d='M1 5l3.5 3.5L11 1.5' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	opacity: 0; transform: scale(.6);
	transition: opacity .15s ease, transform .15s ease;
}
.fec-cat-item.is-selected { border-color: var(--fec-confetto, #ff3d7f); background: #fff4f8; }
.fec-cat-item.is-selected .fec-cat-item__segno { background: var(--fec-confetto, #ff3d7f); }
.fec-cat-item.is-selected .fec-cat-item__segno::after { opacity: 1; transform: scale(1); }

/* Icona di ripiego, quando la categoria non ha ancora una foto. */
.fec-cat-icona {
	display: grid; place-items: center;
	width: 100%; height: 100%;
	color: var(--fec-grape, #4b2e83);
	background:
		radial-gradient(circle at 30% 25%, rgba(255, 61, 127, .10), transparent 60%),
		radial-gradient(circle at 75% 80%, rgba(255, 197, 61, .16), transparent 60%);
}
.fec-cat-icona svg { width: 42%; height: auto; max-width: 64px; }

/* Scelta template */
.fec-tpl-griglia { display: grid; gap: .75rem; }
.fec-tpl {
	display: grid; gap: .3rem;
	padding: .85rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff; cursor: pointer;
}
.fec-tpl input { position: absolute; opacity: 0; }
.fec-tpl.is-selected { border-color: var(--fec-confetto, #ff3d7f); background: #fff4f8; }
.fec-tpl__nome { font-weight: 700; }
.fec-tpl__descr { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); }
.fec-tpl__anteprima {
	justify-self: start; margin-top: .3rem;
	background: none; border: 0; padding: 0;
	font: 600 .85rem var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif); color: var(--fec-grape, #4b2e83);
	text-decoration: underline; cursor: pointer;
}
/* Miniature schematiche delle skin: barre che suggeriscono il layout */
.fec-tpl__preview {
	height: 74px; border-radius: var(--fec-r-s, 8px);
	background: var(--fec-nebbia, #ede7f6);
	background-image: linear-gradient(var(--fec-bordo, #ddd2ee) 0 0), linear-gradient(var(--fec-bordo, #ddd2ee) 0 0), linear-gradient(var(--fec-bordo, #ddd2ee) 0 0);
	background-repeat: no-repeat;
}
.fec-tpl__preview--vetrina    { background-size: 100% 34px, 60% 8px, 90% 8px; background-position: 0 0, 8px 44px, 8px 58px; }
.fec-tpl__preview--listino    { background-size: 100% 14px, 46% 26px, 46% 26px; background-position: 0 0, 8px 22px, 54% 22px; }
.fec-tpl__preview--esperienza { background-size: 100% 18px, 90% 8px, 70% 8px; background-position: 0 0, 8px 30px, 8px 46px; }
.fec-tpl__preview--portfolio  { background-size: 46% 30px, 46% 30px, 96% 14px; background-position: 4px 4px, 52% 4px, 4px 40px; }
.fec-tpl__preview--essenziale { background-size: 60% 10px, 96% 8px, 96% 8px; background-position: 8px 10px, 8px 30px, 8px 44px; }

/* Upload e fotocamera */
.fec-upload__azioni { display: flex; flex-wrap: wrap; gap: .5rem; }
.fec-upload__lista { list-style: none; margin: .75rem 0 0; padding: 0; display: grid; gap: .6rem; }
.fec-upload__lista li {
	display: grid; grid-template-columns: 64px 1fr auto; gap: .6rem; align-items: center;
	padding: .5rem; border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px); background: #fff;
}
.fec-upload__lista img { width: 64px; height: 64px; object-fit: cover; border-radius: 6px; }
.fec-alt { font-size: .85rem; }
.fec-upload__rimuovi {
	width: 36px; height: 36px; border-radius: 50%;
	border: 1px solid var(--fec-bordo, #ddd2ee); background: #fff; cursor: pointer; font-size: 1.1rem; line-height: 1;
}
.fec-upload__progress { width: 100%; height: 6px; }

/* Righe ripetibili */
.fec-riga {
	position: relative;
	display: grid; gap: .6rem;
	padding: .85rem; margin-bottom: .6rem;
	border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r, 14px); background: var(--fec-carta, #fbf7ff);
}
.fec-riga__campo { display: grid; gap: .25rem; }
.fec-riga__campo label { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .7rem; text-transform: uppercase; color: var(--fec-tenue, #6b5f8c); }
.fec-riga__campo input, .fec-riga__campo textarea {
	width: 100%; min-height: 44px; padding: .5em .7em;
	border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px); font: 1rem var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}
/* Il pulsante di rimozione della riga: quadrato con angoli morbidi e non
   cerchio. A 32x32 con un carattere dentro il cerchio risultava schiacciato,
   e la croce non stava al centro. */
.fec-riga__rimuovi {
	position: absolute; top: .45rem; right: .45rem;
	display: grid; place-items: center;
	width: 32px; height: 32px; padding: 0;
	border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: 8px;
	background: #fff; color: var(--fec-tenue, #6b5f8c);
	font-size: 1.1rem; line-height: 1; cursor: pointer;
	transition: background-color .15s ease, color .15s ease;
}
.fec-riga__rimuovi:hover { background: #ffe8ef; color: #c0224f; border-color: #f3c3d3; }
.fec-riga__rimuovi:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }

/* Mappa nel passo «Dove lavori» */
.fec-geo__azioni { display: flex; flex-wrap: wrap; gap: .5rem; }
.fec-geo__mappa { margin-top: .75rem; }
.fec-geo__mappa iframe {
	width: 100%; height: 260px; border: 1px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r-s, 8px); display: block;
}
.fec-geo__aiuto { font-size: .82rem; color: var(--fec-tenue, #6b5f8c); margin: .4rem 0 0; }
.fec-geo__esito { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); margin: .5rem 0 0; }
.fec-suggeriti { margin-top: .75rem; padding-top: .75rem; border-top: 1px dashed var(--fec-bordo, #ddd2ee); }

/* Consiglio prezzi */
.fec-consiglio {
	padding: .9rem 1rem; margin-bottom: 1.25rem;
	border-left: 4px solid var(--fec-limone, #ffc53d);
	background: #fffaeb; border-radius: 0 var(--fec-r-s, 8px) var(--fec-r-s, 8px) 0;
	font-size: .95rem;
}
.fec-avviso { padding: .9rem 1rem; border-radius: var(--fec-r-s, 8px); background: var(--fec-nebbia, #ede7f6); }
.fec-avviso--errore { background: #ffe8ef; color: #8c0f38; }
.fec-nota { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); }

/* Modale anteprima */
/* Modale anteprima */
.fec-modale { position: fixed; inset: 0; background: rgba(27, 17, 64, .72); display: grid; place-items: center; padding: 1rem; z-index: 9999; }
.fec-modale__box { background: #fff; border-radius: var(--fec-r, 14px); max-width: 900px; width: 100%; max-height: 88vh; overflow: auto; position: relative; }
.fec-modale__chiudi { position: sticky; top: 0; float: right; margin: .5rem; width: 40px; height: 40px; border-radius: 50%; border: 0; background: var(--fec-nebbia, #ede7f6); font-size: 1.3rem; line-height: 1; cursor: pointer; z-index: 1; }
.fec-modale__chiudi:hover { background: var(--fec-bordo, #ddd2ee); }
.fec-modale__chiudi:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }
.fec-modale__corpo { padding: 1.25rem; min-height: 3rem; }

/* Metriche dashboard */
.fec-dash { max-width: 780px; margin: 0 auto; padding: var(--fec-sp, 1rem); }
.fec-dash__metriche { display: grid; gap: .75rem; margin: 1.25rem 0; }
.fec-metrica { display: grid; grid-template-columns: 1fr auto; gap: .3rem .75rem; align-items: center; }
.fec-metrica__label { font-weight: 600; font-size: .9rem; }
.fec-metrica__val { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .85rem; }
.fec-metrica__barra { grid-column: 1 / -1; height: 10px; border-radius: 999px; background: var(--fec-nebbia, #ede7f6); overflow: hidden; }
.fec-metrica__barra > span { display: block; height: 100%; background: var(--fec-confetto, #ff3d7f); }
.fec-metrica--ok .fec-metrica__barra > span { background: var(--fec-menta, #12b886); }
.fec-metrica--medio .fec-metrica__barra > span { background: var(--fec-limone, #ffc53d); }
.fec-suggerimenti { background: var(--fec-carta, #fbf7ff); border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r, 14px); padding: .85rem 1rem; }
.fec-suggerimenti summary { cursor: pointer; font-weight: 600; }
.fec-stato { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .85rem; }
.fec-vuoto { text-align: center; padding: 2.5rem 1rem; }

/* =============================================================================
   ANNUNCIO PUBBLICO
   ========================================================================== */

.fec-annuncio { max-width: 900px; margin: 0 auto; }
.fec-hero { display: grid; gap: 1rem; margin-bottom: 2rem; }
.fec-copertina { margin: 0; border-radius: var(--fec-r, 14px); overflow: hidden; }
.fec-copertina img { display: block; width: 100%; height: auto; }
.fec-logo img { width: 72px; height: 72px; object-fit: contain; border-radius: 12px; background: #fff; padding: 4px; border: 1px solid var(--fec-bordo, #ddd2ee); }

.fec-badges { display: flex; flex-wrap: wrap; gap: .4rem; margin: .75rem 0; }
.fec-badge {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .75rem;
	padding: .35em .7em; border-radius: 999px;
	background: var(--fec-nebbia, #ede7f6); color: var(--fec-grape, #4b2e83);
}
.fec-badge--prezzo { background: var(--fec-ink, #1b1140); color: var(--fec-limone, #ffc53d); font-weight: 700; }
.fec-badge--atm { background: #e6fbf3; color: #06694a; }

.fec-cta { display: flex; flex-wrap: wrap; gap: .5rem; }
.fec-sezione { margin: 0 0 2.25rem; }
.fec-testo p { margin: 0 0 1em; }

.fec-griglia-3 { display: grid; gap: .75rem; }
.fec-punto { padding: 1rem; border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r, 14px); background: var(--fec-carta, #fbf7ff); }
.fec-punto h3 { margin: 0 0 .3em; font-size: 1rem; }

.fec-passi { counter-reset: p; list-style: none; padding: 0; margin: 0; display: grid; gap: .75rem; }
.fec-passi li { counter-increment: p; padding-left: 2.5rem; position: relative; }
.fec-passi li::before {
	content: counter(p);
	position: absolute; left: 0; top: 0;
	width: 1.9rem; height: 1.9rem; border-radius: 50%;
	display: grid; place-items: center;
	background: var(--fec-limone, #ffc53d); color: #4a3400;
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-weight: 700; font-size: .85rem;
}

.fec-lista-servizi { list-style: none; padding: 0; margin: 0; display: grid; gap: .4rem; grid-template-columns: 1fr; }
.fec-lista-servizi li { padding-left: 1.6rem; position: relative; }
.fec-lista-servizi li::before { content: "•"; position: absolute; left: .4rem; color: var(--fec-confetto, #ff3d7f); font-size: 1.2rem; line-height: 1; }

.fec-griglia-foto { display: grid; gap: .5rem; grid-template-columns: repeat(2, 1fr); }
.fec-foto img { display: block; width: 100%; height: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: var(--fec-r-s, 8px); }

.fec-griglia-pacchetti { display: grid; gap: .75rem; }
.fec-pacchetto { padding: 1.1rem; border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r, 14px); background: #fff; }
.fec-pacchetto h3 { margin: 0 0 .4em; font-size: 1.05rem; }
.fec-prezzo { font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif); font-size: 1.6rem; font-weight: 800; color: var(--fec-ink, #1b1140); margin: 0 0 .4em; letter-spacing: -.02em; }
.fec-prezzo__da { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .7rem; text-transform: uppercase; color: var(--fec-tenue, #6b5f8c); vertical-align: middle; }
.fec-prezzo small { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .7rem; font-weight: 400; color: var(--fec-tenue, #6b5f8c); }
.fec-incluso { list-style: none; padding: 0; margin: .5rem 0 0; display: grid; gap: .3rem; font-size: .92rem; }
.fec-incluso li { padding-left: 1.3rem; position: relative; }
.fec-incluso li::before { content: "✓"; position: absolute; left: 0; color: var(--fec-menta, #12b886); font-weight: 700; }
.fec-nota-prezzi { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); }

.fec-tabella-wrap { overflow-x: auto; }
.fec-tabella { width: 100%; border-collapse: collapse; }
.fec-tabella th, .fec-tabella td { padding: .65rem .5rem; text-align: left; border-bottom: 1px solid var(--fec-bordo, #ddd2ee); }
.fec-tabella th { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .7rem; text-transform: uppercase; color: var(--fec-tenue, #6b5f8c); }

.fec-faq__item { border-bottom: 1px solid var(--fec-bordo, #ddd2ee); padding: .75rem 0; }
.fec-faq__item summary { cursor: pointer; font-weight: 600; }

.fec-mappa { padding: 1rem; border: 1px dashed var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r, 14px); text-align: center; }
.fec-contatti__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: .4rem; }
.fec-social-bar { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }
.fec-social { padding: .45em .9em; border-radius: 999px; border: 1px solid var(--fec-bordo, #ddd2ee); font-size: .85rem; text-decoration: none; color: var(--fec-grape, #4b2e83); }
.fec-tag-cloud { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: 2rem; }
.fec-tag { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .72rem; padding: .3em .6em; border-radius: 4px; background: var(--fec-nebbia, #ede7f6); color: var(--fec-grape, #4b2e83); text-decoration: none; }
.fec-dl dt { font-weight: 700; margin-top: .75rem; }
.fec-dl dd { margin: 0; }

/* Modulo contatto */
.fec-form { display: grid; gap: .9rem; padding: 1.25rem; border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r, 14px); background: var(--fec-carta, #fbf7ff); }
.fec-form .fec-campo--full { grid-column: 1 / -1; }
.fec-form__esito { font-size: .9rem; margin: 0; }
.fec-form__esito.is-ok { color: #06694a; }
.fec-form__esito.is-ko { color: #c0224f; }

/* =============================================================================
   RICERCA
   ========================================================================== */

/* =============================================================================
   ADATTAMENTI PER SCHERMI PIÙ GRANDI
   ========================================================================== */

@media (min-width: 640px) {
	.fec-cat-griglia { grid-template-columns: repeat(3, 1fr); }
	.fec-tpl-griglia { grid-template-columns: repeat(2, 1fr); }
	.fec-griglia-3 { grid-template-columns: repeat(3, 1fr); }
	.fec-griglia-pacchetti { grid-template-columns: repeat(2, 1fr); }
	.fec-lista-servizi { grid-template-columns: repeat(2, 1fr); }
	.fec-griglia-foto { grid-template-columns: repeat(3, 1fr); }
	.fec-form { grid-template-columns: repeat(2, 1fr); }
	.fec-riga { grid-template-columns: repeat(2, 1fr); }
	.fec-riga__campo:first-child { grid-column: 1 / -1; }
	.fec-passo__btn { width: 76px; }
	.fec-passo__label { font-size: .68rem; max-width: 76px; }
}

@media (min-width: 900px) {
	.fec-cat-griglia { grid-template-columns: repeat(4, 1fr); }
	.fec-filtri__toggle { display: none; }
	.fec-filtri__pannello { display: grid; gap: 1.25rem; }
	.fec-griglia-pacchetti { grid-template-columns: repeat(3, 1fr); }
	.fec-hero { grid-template-columns: 1fr; }
}

/* Rispetto delle preferenze di movimento ridotto */
@media (prefers-reduced-motion: reduce) {
	* { animation-duration: .01ms !important; transition-duration: .01ms !important; }
	/* Le voci filtrate compaiono e scompaiono, senza scorrimenti né scale. */
	.is-entrata { animation: none !important; }
	.is-uscita { transform: none !important; }
	.fec-cat-item:hover { transform: none; }
}

/* Utilità di accessibilità */
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px;
	overflow: hidden; clip: rect(1px, 1px, 1px, 1px); white-space: nowrap;
}

/* Blocco dello scorrimento di fondo mentre una modale è aperta.
   Sta fuori dai contenitori del plugin perché va applicato a <body>. */
body.fec-blocca-scroll { overflow: hidden; }

/* =============================================================================
   CARRELLO DELLA FESTA
   ========================================================================== */

.fec-festa {
	--fec-ink: #1b1140; --fec-grape: #4b2e83; --fec-confetto: #ff3d7f;
	--fec-limone: #ffc53d; --fec-menta: #12b886; --fec-carta: #fbf7ff;
	--fec-nebbia: #ede7f6; --fec-bordo: #ddd2ee; --fec-testo: #241a44;
	--fec-tenue: #6b5f8c; --fec-r: 14px; --fec-r-s: 8px;
	--fec-display: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fec-testo-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fec-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
	font-family: var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	color: var(--fec-testo, #241a44);
	line-height: 1.6;
	max-width: 900px;
	margin: 0 auto;
	padding: 1rem;
	box-sizing: border-box;
}
.fec-festa *, .fec-festa *::before, .fec-festa *::after { box-sizing: inherit; }
.fec-festa [hidden] { display: none !important; }

.fec-festa__testa { margin-bottom: 1.5rem; }
.fec-festa__sub { color: var(--fec-tenue, #6b5f8c); margin: 0; }

/* Dati dell'evento */
.fec-festa__evento {
	display: grid;
	gap: .75rem;
	padding: 1rem;
	margin-bottom: 1.5rem;
	background: var(--fec-carta, #fbf7ff);
	border: 1px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
}
.fec-festa__evento .fec-campo > label { font-weight: 600; font-size: .9rem; }
.fec-festa__evento input, .fec-festa__evento select {
	width: 100%; min-height: 48px; padding: .55em .8em;
	border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px);
	background: #fff; font: 1rem var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif); color: var(--fec-testo, #241a44);
}

/* Elenco fornitori */
.fec-festa__lista { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: .85rem; }
.fec-fornitore {
	display: grid;
	gap: .75rem;
	padding: 1rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff;
}
.fec-fornitore__cat {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .68rem; text-transform: uppercase;
	letter-spacing: .06em; color: var(--fec-tenue, #6b5f8c); margin: 0 0 .15rem;
}
.fec-fornitore__nome { font-size: 1.15rem; margin: 0 0 .2rem; line-height: 1.2; }

/* Immagine del fornitore accanto al nome: il logo intero su fondo bianco,
   la copertina ritagliata a quadrato. */
.fec-fornitore__testa--foto { display: flex; gap: .85rem; align-items: flex-start; }
.fec-fornitore__id { min-width: 0; }
.fec-fornitore__foto {
	flex: 0 0 auto;
	width: 64px;
	height: 64px;
	border-radius: 12px;
	border: 1px solid var(--fec-bordo, #ddd2ee);
	background: #fff;
	object-fit: cover;
	display: block;
}
.fec-fornitore__foto--intera { object-fit: contain; padding: 4px; }
@media (min-width: 640px) {
	.fec-fornitore__foto { width: 76px; height: 76px; }
}
.fec-fornitore__nome a { color: var(--fec-ink, #1b1140); text-decoration: none; }
.fec-fornitore__nome a:hover { text-decoration: underline; }
.fec-fornitore__luogo { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); margin: 0; }

.fec-fornitore__contatti { list-style: none; margin: 0; padding: 0; display: grid; gap: .25rem; font-size: .9rem; }
.fec-et {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .65rem; text-transform: uppercase;
	letter-spacing: .06em; color: var(--fec-tenue, #6b5f8c); margin-right: .4rem;
}

.fec-fornitore__pacchetto { padding-top: .6rem; border-top: 1px dashed var(--fec-bordo, #ddd2ee); }
.fec-fornitore__pacchetto select {
	width: 100%; min-height: 44px; padding: .45em .7em; margin-top: .2rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px);
	background: #fff; font: .95rem var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
}
.fec-fornitore__pkgnome { font-weight: 700; margin: .1rem 0 0; }
.fec-fornitore__incluso { list-style: none; padding: 0; margin: .5rem 0 0; display: grid; gap: .2rem; font-size: .85rem; }
.fec-fornitore__incluso li { padding-left: 1.2rem; position: relative; }
.fec-fornitore__incluso li::before { content: "✓"; position: absolute; left: 0; color: var(--fec-menta, #12b886); }

.fec-fornitore__prezzo {
	display: flex; align-items: baseline; justify-content: space-between;
	gap: .75rem; flex-wrap: wrap;
	padding-top: .6rem; border-top: 1px dashed var(--fec-bordo, #ddd2ee);
}
.fec-fornitore__calcolo { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .78rem; color: var(--fec-tenue, #6b5f8c); margin: 0; width: 100%; }
.fec-fornitore__surichiesta { color: var(--fec-tenue, #6b5f8c); font-size: .9rem; margin: 0; }
.fec-fornitore__togli {
	background: none; border: 0; padding: .2rem .4rem; cursor: pointer;
	font: 600 .85rem var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif); color: var(--fec-grape, #4b2e83);
	text-decoration: underline; margin-left: auto;
}
.fec-fornitore__togli:hover { color: #c0224f; }

/* Totale */
.fec-totale {
	padding: 1.25rem;
	border-radius: var(--fec-r, 14px);
	background: var(--fec-ink, #1b1140);
	color: #fff;
}
.fec-totale__riga {
	display: flex; align-items: baseline; justify-content: space-between;
	gap: 1rem; flex-wrap: wrap;
	padding-bottom: .75rem; margin-bottom: .75rem;
	border-bottom: 1px solid rgba(255, 255, 255, .18);
}
.fec-totale__et { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; color: #d9cffa; }
.fec-totale__cifra {
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif); font-size: clamp(1.6rem, 6vw, 2.4rem);
	font-weight: 800; letter-spacing: -.02em; color: var(--fec-limone, #ffc53d);
}
.fec-totale__nota { font-size: .85rem; color: #d9cffa; margin: 0 0 .4rem; }
.fec-totale__avviso {
	font-size: .88rem; line-height: 1.5; margin: .75rem 0 0;
	padding: .75rem .9rem;
	background: rgba(255, 197, 61, .14);
	border-left: 3px solid var(--fec-limone, #ffc53d);
	border-radius: 0 var(--fec-r-s, 8px) var(--fec-r-s, 8px) 0;
	color: #fff;
}

.fec-festa__azioni { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.5rem; }
.fec-festa__attesa { color: var(--fec-tenue, #6b5f8c); }
.fec-vuoto--festa { padding: 2.5rem 1rem; text-align: center; }

/* Pulsante fluttuante */
.fec-badge-festa {
	position: fixed; right: 1rem; bottom: 1rem; z-index: 900;
	display: inline-flex; align-items: center; gap: .5rem;
	min-height: 52px; padding: .6em 1.2em .6em .7em;
	border-radius: 999px;
	background: #1b1140; color: #fff;
	font: 600 .95rem system-ui, sans-serif;
	text-decoration: none;
	box-shadow: 0 6px 20px rgba(27, 17, 64, .32);
}
.fec-badge-festa[hidden] { display: none !important; }
.fec-badge-festa:hover { background: #4b2e83; color: #fff; }
.fec-badge-festa:focus-visible { outline: 3px solid #ffc53d; outline-offset: 3px; }
.fec-badge-festa__conta {
	display: grid; place-items: center;
	min-width: 30px; height: 30px; padding: 0 .4em;
	border-radius: 999px;
	background: #ff3d7f;
	font-family: ui-monospace, Menlo, monospace; font-size: .85rem;
}
.fec-badge-festa.is-pulsa { animation: fec-pulsa .5s ease; }
@keyframes fec-pulsa {
	0%   { transform: scale(1); }
	40%  { transform: scale(1.12); }
	100% { transform: scale(1); }
}

/* Pulsante «Aggiungi alla festa» */
.fec-btn--mini { min-height: 38px; padding: .35em .8em; font-size: .82rem; }
[data-fec-aggiungi].is-on {
	background: var(--fec-menta, #12b886);
	border-color: var(--fec-menta, #12b886);
	color: #06331a;
}
.fec-agg__icona { font-weight: 700; }

/* Messaggio temporaneo */
.fec-avviso-volante {
	position: fixed; left: 50%; bottom: 5.5rem; z-index: 950;
	transform: translate(-50%, 1rem);
	max-width: min(90vw, 380px);
	padding: .7em 1.1em;
	border-radius: 999px;
	background: #1b1140; color: #fff;
	font: .9rem/1.35 system-ui, sans-serif; text-align: center;
	box-shadow: 0 6px 20px rgba(27, 17, 64, .3);
	opacity: 0; pointer-events: none;
	transition: opacity .2s ease, transform .2s ease;
}
.fec-avviso-volante.is-on { opacity: 1; transform: translate(-50%, 0); }

@media (min-width: 640px) {
	.fec-festa__evento { grid-template-columns: 2fr 1fr 1fr; align-items: end; }
	/* Il nome della festa occupa tutta la riga, sopra gli altri tre campi. */
	.fec-festa__evento .fec-campo--largo { grid-column: 1 / -1; }
	.fec-fornitore { grid-template-columns: 1.4fr 1fr; grid-template-areas: "testa contatti" "pacchetto pacchetto" "prezzo prezzo"; }
	.fec-fornitore__testa { grid-area: testa; }
	.fec-fornitore__contatti { grid-area: contatti; }
	.fec-fornitore__pacchetto { grid-area: pacchetto; }
	.fec-fornitore__prezzo { grid-area: prezzo; }
}

@media (prefers-reduced-motion: reduce) {
	.fec-badge-festa.is-pulsa { animation: none; }
}

/* =============================================================================
   MOBILE
   -----------------------------------------------------------------------------
   Su questo portale il telefono non è un ripiego: chi organizza una festa cerca
   dal divano, e l'inserzionista compila l'annuncio dal bancone del negozio.
   Le regole che seguono partono da quattro vincoli concreti del telefono reale,
   non dalla larghezza dello schermo:

   1. iOS ingrandisce la pagina quando si tocca un campo con testo sotto i 16px,
      e poi non la rimpicciolisce più. Tutti i controlli vanno portati a 16px.
   2. Un dito copre circa 9 mm: sotto i 44px i bersagli si sbagliano.
   3. Le barre del browser compaiono e scompaiono mentre si scorre, quindi
      100vh non è l'altezza visibile. Serve dvh.
   4. Sotto lo schermo c'è la barra dei gesti: gli elementi fissi in basso
      devono lasciarle spazio, altrimenti diventano intoccabili.
   ========================================================================== */

/* --- Niente sfonda mai la larghezza dello schermo ------------------------- */
.fec-wizard img, .fec-ricerca img, .fec-annuncio img,
.fec-festa img, .fec-dash img { max-width: 100%; height: auto; }

/* Indirizzi web ed email lunghi mandavano la scheda fuori schermo. */
.fec-fornitore__contatti li,
.fec-contatti__lista li,
.fec-card__descr,
.fec-cat-item__descr { overflow-wrap: anywhere; }

/* --- Tocco --------------------------------------------------------------- */
.fec-btn, .fec-chip, .fec-cat-item, .fec-tpl,
.fec-upload__rimuovi, .fec-riga__rimuovi, .fec-modale__chiudi {
	/* Elimina il ritardo di 300 ms sul tocco e l'alone grigio di Android. */
	touch-action: manipulation;
	-webkit-tap-highlight-color: transparent;
}

/* Lo scorrimento verso un campo non deve finire sotto una barra fissa. */
.fec-campo, .fec-step, .fec-fornitore { scroll-margin-top: 5rem; }

/* --- Modale: a schermo intero sul telefono ------------------------------- */
.fec-modale__box { max-height: 88dvh; }

/* =============================================================================
   REGOLE ATTIVE SOLO SU SCHERMI STRETTI
   ========================================================================== */
@media (max-width: 899px) {

	/* 1. Nessun controllo sotto i 16px: è l'unico modo per impedire lo zoom
	      automatico di Safari senza disattivare lo zoom manuale, che serve a
	      chi vede poco. */
	.fec-campo input, .fec-campo select, .fec-campo textarea,
	.fec-filtri input, .fec-filtri select,
	.fec-riga__campo input, .fec-riga__campo textarea,
	.fec-festa__evento input, .fec-festa__evento select,
	.fec-fornitore__pacchetto select,
	.fec-alt, .fec-form input, .fec-form textarea,
	.fec-inline input {
		font-size: 16px;
	}

	/* 2. Bersagli portati alla misura di un dito. */
	.fec-chip { min-height: 44px; padding: .6em 1em; }
	.fec-chip--media { min-height: 0; }
	.fec-upload__rimuovi, .fec-riga__rimuovi { width: 44px; height: 44px; }
	.fec-modale__chiudi { width: 46px; height: 46px; }
	.fec-fornitore__togli { min-height: 44px; padding: .5rem .75rem; }
	.fec-check input, .fec-radio input { width: 24px; height: 24px; }
	.fec-btn--mini { min-height: 44px; }

	/* 3. Tabelle impilate: le celle hanno già data-th, lo usiamo come
	      etichetta invece di far scorrere la tabella di lato. */
	.fec-tabella thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); }
	.fec-tabella, .fec-tabella tbody, .fec-tabella tr, .fec-tabella td { display: block; width: 100%; }
	.fec-tabella tr {
		margin-bottom: .6rem; padding: .6rem .75rem;
		border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px);
		background: #fff;
	}
	.fec-tabella td { border: 0; padding: .2rem 0; display: flex; gap: .75rem; justify-content: space-between; }
	.fec-tabella td::before {
		content: attr(data-th);
		font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .68rem; text-transform: uppercase;
		letter-spacing: .06em; color: var(--fec-tenue, #6b5f8c); flex: 0 0 auto;
	}
	.fec-tabella td:empty { display: none; }

	/* 4. Elementi fissi: spazio per la barra dei gesti. */
	.fec-badge-festa {
		bottom: calc(1rem + env(safe-area-inset-bottom, 0px));
		/* Più compatto: a schermo stretto il testo rubava spazio ai risultati. */
		padding: .5em .9em .5em .55em;
		min-height: 48px;
		font-size: .88rem;
	}
	/* Col cassetto filtri aperto sparisce: sarebbe sopra il pannello. */
	body.fec-filtri-aperti .fec-badge-festa { display: none !important; }
	.fec-avviso-volante { bottom: calc(5.5rem + env(safe-area-inset-bottom, 0px)); }

	/* --- Wizard ---------------------------------------------------------- */

	/* Il pulsante «Continua» resta agganciato in basso: negli step lunghi
	   era in fondo a due schermate di scorrimento. */
	.fec-step__piede {
		position: sticky;
		bottom: 0;
		z-index: 20;
		margin: 1.5rem -1rem 0;
		padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom, 0px));
		background: rgba(255, 255, 255, .94);
		backdrop-filter: blur(8px);
		border-top: 1px solid var(--fec-bordo, #ddd2ee);
	}
	.fec-step__piede .fec-btn { flex: 1 1 auto; }
	.fec-autosave { flex: 1 0 100%; text-align: center; }

	/* Bandierine: solo l'icona, l'etichetta resta su quella corrente.
	   Nove etichette da tre parole occupavano metà schermo. */
	/* Su telefono restano i soli numeri: nove etichette da tre parole
	   occupavano mezzo schermo. Il titolo del passo corrente sta gia'
	   nell'intestazione dello step, quindi non si perde nulla. */
	.fec-passo__btn { width: 46px; }
	.fec-passo__label { display: none; }
	.fec-passo.is-current .fec-passo__label { display: block; }
	.fec-passo.is-current .fec-passo__btn { width: auto; max-width: 42vw; padding-inline: .3rem; }

	.fec-cat-item__descr { display: none; }
	.fec-cat-item { padding: .45rem .45rem .6rem; }

	/* --- Ricerca: il pannello filtri diventa un cassetto ------------------ */
	.fec-barra {
		position: sticky; top: 0; z-index: 30;
		margin: 0 -1rem; padding: .6rem 1rem;
		background: rgba(255, 255, 255, .95);
		backdrop-filter: blur(8px);
		border-bottom: 1px solid var(--fec-bordo, #ddd2ee);
	}

	/* Conteggio dei filtri attivi sul pulsante di apertura. */
	.fec-filtri__toggle { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; }
	.fec-filtri__conta {
		display: grid; place-items: center;
		min-width: 24px; height: 24px; padding: 0 .35em;
		border-radius: 999px;
		background: var(--fec-confetto, #ff3d7f); color: #fff;
		font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .75rem;
	}

	/* --- Carrello -------------------------------------------------------- */
	.fec-festa__azioni { position: sticky; bottom: 0; z-index: 20; }
	.fec-festa__azioni .fec-btn { flex: 1 1 100%; }
	.fec-totale__cifra { font-size: 1.9rem; }
}

/* Blocco dello scorrimento quando il cassetto filtri è aperto. */
body.fec-filtri-aperti { overflow: hidden; }

/* Avviso sulla lunghezza della descrizione.
   Deve farsi notare senza sembrare un errore bloccante: si può pubblicare
   comunque, ma chi lo ignora si posiziona peggio e deve saperlo. */
.fec-soglia {
	margin-top: .6rem;
	padding: .85rem 1rem;
	border-left: 5px solid #d92b4b;
	border-radius: 0 var(--fec-r-s, 8px) var(--fec-r-s, 8px) 0;
	background: #fff1f4;
	color: #7a1230;
	font-size: .9rem;
	line-height: 1.5;
}
.fec-soglia p { margin: 0 0 .4rem; }
.fec-soglia p:last-child { margin-bottom: 0; }
.fec-soglia__titolo {
	font-weight: 800;
	font-size: 1rem;
	color: #b01236;
	display: flex;
	align-items: center;
	gap: .4rem;
}
.fec-soglia__titolo::before { content: "⚠"; font-size: 1.15rem; }
/* Quando manca poco il tono si ammorbidisce: incoraggia invece di allarmare. */
.fec-soglia.is-vicino { border-left-color: #e8a317; background: #fff8e8; color: #6b4a05; }
.fec-soglia.is-vicino .fec-soglia__titolo { color: #8a5c06; }
.fec-soglia.is-vicino .fec-soglia__titolo::before { content: "✎"; }

/* =============================================================================
   RIQUADRO CATEGORIA: FOTO SOTTO, ICONA SOPRA
   -----------------------------------------------------------------------------
   L'icona è il segno costante che rende la categoria riconoscibile; la foto,
   quando c'è, dà contesto. Sovrapporle richiede che l'icona resti leggibile su
   qualunque immagine: si risolve con una velatura scura fissa, così non serve
   ritoccare le foto una per una prima di caricarle.
   ========================================================================== */

.fec-cat-media {
	position: relative;
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	overflow: hidden;
	background: var(--fec-nebbia, #ede7f6);
}
.fec-cat-media .fec-cat-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
/* La velatura esiste solo quando c'è una foto sotto. */
.fec-cat-media.has-foto::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(27, 17, 64, .18), rgba(27, 17, 64, .58));
}
.fec-cat-media .fec-cat-icona {
	position: relative;
	z-index: 1;
	background: none;
}
.fec-cat-media.has-foto .fec-cat-icona {
	color: #fff;
	/* Il tratto bianco su foto chiare sparirebbe: l'ombra lo tiene staccato. */
	filter: drop-shadow(0 1px 3px rgba(0, 0, 0, .55));
}
.fec-cat-media:not(.has-foto) .fec-cat-icona {
	background:
		radial-gradient(circle at 30% 25%, rgba(255, 61, 127, .10), transparent 60%),
		radial-gradient(circle at 75% 80%, rgba(255, 197, 61, .16), transparent 60%);
}

/* Spunti presi da altri annunci: bordo diverso per distinguerli. */
.fec-chip--altrui { border-color: var(--fec-menta, #12b886); color: #06694a; }

/* Pulsante condividi */
.fec-condividi { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.25rem; }
.fec-condividi__esito { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .8rem; color: var(--fec-menta, #12b886); }

/* Schermata di traguardo dopo la pubblicazione */
.fec-traguardo {
	position: fixed; inset: 0; z-index: 9998;
	display: grid; place-items: center;
	padding: 1rem;
	background: rgba(27, 17, 64, .82);
	backdrop-filter: blur(4px);
	font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
.fec-traguardo__box {
	max-width: 520px; width: 100%;
	max-height: 92dvh; overflow: auto;
	padding: 2rem 1.5rem calc(2rem + env(safe-area-inset-bottom, 0px));
	border-radius: 18px;
	background: #fff; text-align: center;
	color: #241a44;
}
.fec-traguardo__emoji { font-size: 3rem; margin: 0 0 .5rem; }
.fec-traguardo__box h2 {
	font-size: clamp(1.5rem, 6vw, 2rem); font-weight: 800;
	letter-spacing: -.02em; color: #1b1140; margin: 0 0 .4rem;
}
.fec-traguardo__sub { color: #6b5f8c; margin: 0 0 1.25rem; line-height: 1.5; }
.fec-traguardo__url {
	padding: .7rem .9rem; margin: 0 0 1.25rem;
	border: 1.5px dashed #ddd2ee; border-radius: 10px;
	background: #fbf7ff;
	font-family: ui-monospace, Menlo, monospace; font-size: .82rem;
	overflow-wrap: anywhere;
}
.fec-traguardo__url a { color: #4b2e83; }
.fec-traguardo__azioni { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; }
.fec-traguardo__azioni .fec-btn { flex: 1 1 auto; min-width: 140px; }
.fec-traguardo__esito {
	font-family: ui-monospace, Menlo, monospace; font-size: .8rem;
	color: #12b886; min-height: 1.2em; margin: .75rem 0 0;
}
.fec-traguardo__avanti {
	display: inline-block; margin-top: 1rem;
	color: #6b5f8c; font-size: .9rem;
}

/* =============================================================================
   PAGINA DI RICERCA — impianto rifatto
   -----------------------------------------------------------------------------
   Struttura verticale: prima si cerca, poi si affina, poi si guarda. La colonna
   laterale costringeva a due letture parallele su una pagina che invece si
   percorre in un ordine solo.
   ========================================================================== */

.fec-ricerca {
	--fec-ink: #1b1140; --fec-grape: #4b2e83; --fec-confetto: #ff3d7f;
	--fec-limone: #ffc53d; --fec-menta: #12b886; --fec-carta: #fbf7ff;
	--fec-nebbia: #ede7f6; --fec-bordo: #ddd2ee; --fec-testo: #241a44;
	--fec-tenue: #6b5f8c; --fec-r: 14px; --fec-r-s: 8px; --fec-sp: 1rem;
	--fec-display: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fec-testo-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--fec-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
	font-family: var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	color: var(--fec-testo, #241a44);
	max-width: 1120px;
	margin: 0 auto;
	padding: var(--fec-sp, 1rem);
	box-sizing: border-box;
}

/* --- Barra di ricerca: una riga, tre elementi, altezze identiche --------- */
.fec-barra {
	/* Una sola misura per tutti e tre gli elementi della riga: cambiarla qui
	   li tiene automaticamente allineati. */
	--h: 52px;
	display: grid;
	grid-template-columns: 1fr;
	gap: .5rem;
	align-items: stretch;
	margin-bottom: 1.25rem;
}
.fec-barra__campo { position: relative; display: flex; }
.fec-barra__campo input {
	/* appearance: none e' la riga che conta. Un input type="search" in Safari
	   e Chrome ha un aspetto nativo con altezza e margini propri, e ignora
	   quanto gli si chiede: era piu' alto degli altri due per questo. */
	-webkit-appearance: none;
	appearance: none;
	width: 100%;
	height: var(--h);
	min-height: var(--h);
	margin: 0;
	padding: 0 .9em;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r-s, 8px);
	background: #fff;
	font: 16px/1.2 var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	color: var(--fec-testo, #241a44);
	box-sizing: border-box;
}
/* La crocetta nativa dei campi di ricerca porta con sé altezza e margini. */
.fec-barra__campo input[type="search"]::-webkit-search-decoration,
.fec-barra__campo input[type="search"]::-webkit-search-cancel-button,
.fec-barra__campo input[type="search"]::-webkit-search-results-button {
	-webkit-appearance: none;
	appearance: none;
}
.fec-barra__campo--dove input { padding-right: 52px; }
.fec-barra__vicino {
	/* Centrato verticalmente rispetto al campo, qualunque sia --h. */
	position: absolute; right: 4px; top: 50%;
	transform: translateY(-50%);
	width: 44px; height: 44px;
	display: grid; place-items: center;
	border: 0; border-radius: 6px;
	background: var(--fec-nebbia, #ede7f6);
	font-size: 1.1rem; cursor: pointer;
}
.fec-barra__vicino:hover { background: var(--fec-bordo, #ddd2ee); }
.fec-barra__vicino.is-on { background: var(--fec-confetto, #ff3d7f); }

/* Il pulsante è solo una lente: il testo «Cerca» accanto a un campo di
   ricerca non aggiunge nulla e ruba larghezza ai campi. */
.fec-barra__cerca {
	height: var(--h);
	min-height: var(--h);
	min-width: var(--h);
	padding: 0;
	box-sizing: border-box;
	display: grid; place-items: center;
	border: 0; border-radius: var(--fec-r-s, 8px);
	background: var(--fec-confetto, #ff3d7f);
	color: #fff;
	cursor: pointer;
	transition: background-color .15s ease;
}
.fec-barra__cerca:hover { background: #e12f6d; }
.fec-barra__cerca:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }
.fec-barra__cerca .fec-ico { width: 24px; height: 24px; }

/* --- FILTRI: sezione espandibile ---------------------------------------- */
.fec-filtri { margin-bottom: 1.5rem; }
.fec-filtri__toggle {
	width: 100%;
	min-height: 52px;
	display: flex; align-items: center; gap: .6rem;
	padding: 0 1rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r-s, 8px);
	background: #fff;
	cursor: pointer;
	font: 700 .85rem/1 var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace);
	letter-spacing: .12em;
	color: var(--fec-ink, #1b1140);
}
.fec-filtri__toggle:hover { background: var(--fec-carta, #fbf7ff); }
.fec-filtri__etichetta { flex: 0 0 auto; }
.fec-filtri__freccia {
	margin-left: auto;
	width: 10px; height: 10px;
	border-right: 2px solid var(--fec-grape, #4b2e83);
	border-bottom: 2px solid var(--fec-grape, #4b2e83);
	transform: rotate(45deg) translate(-2px, -2px);
	transition: transform .2s ease;
}
.fec-filtri.is-open .fec-filtri__freccia { transform: rotate(-135deg) translate(-2px, -2px); }
.fec-filtri__conta {
	display: grid; place-items: center;
	min-width: 24px; height: 24px; padding: 0 .4em;
	border-radius: 999px;
	background: var(--fec-confetto, #ff3d7f); color: #fff;
	font-size: .72rem; letter-spacing: 0;
}
.fec-filtri__pannello { display: none; }
.fec-filtri.is-open .fec-filtri__pannello {
	display: block;
	margin-top: .6rem;
	padding: 1.1rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: var(--fec-carta, #fbf7ff);
}
.fec-filtri__scorri { display: flex; flex-direction: column; }
.fec-filtri__testa { display: none; }
.fec-filtro {
	border: 0;
	padding: 0;
	margin: 0;
	/* I fieldset nascono con min-width: min-content, che impedisce loro di
	   restringersi dentro un contenitore flessibile: e' la causa classica
	   dei contenuti che sbordano invece di andare a capo. */
	min-width: 0;
}
.fec-accordion { border-bottom: 1px solid var(--fec-bordo, #ddd2ee); padding: .5rem 0; }
.fec-accordion summary { cursor: pointer; }
.fec-accordion .fec-chips { margin-top: .6rem; }
.fec-filtri input[type="range"] { width: 100%; accent-color: var(--fec-confetto, #ff3d7f); }
.fec-filtri input[type="number"], .fec-filtri select {
	min-height: 48px; padding: .5em .7em;
	border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px);
	background: #fff; font: 16px var(--fec-testo-font, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif); width: 100%;
}

/* --- Risultati ---------------------------------------------------------- */
.fec-risultati__conta {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .78rem;
	letter-spacing: .04em; color: var(--fec-tenue, #6b5f8c); margin: 0 0 .75rem;
}
.fec-risultati__lista {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 1rem;
	margin-bottom: 1.25rem;
}

/* Scheda: foto piena sopra, testo sotto, angolino vivace.
   Le sei tinte sono scelte per essere allegre e leggibili sul bianco; sono
   assegnate dall'ID e non a caso, perche' una scheda che cambia colore a ogni
   ricarica disorienta invece di ravvivare. */
.fec-card {
	position: relative;
	display: flex;
	flex-direction: column;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff;
	overflow: hidden;
	transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.fec-card:hover {
	transform: translateY(-3px);
	border-color: transparent;
	box-shadow: 0 10px 26px rgba(27, 17, 64, .16);
}
.fec-card__angolo {
	position: absolute; top: 0; right: 0; z-index: 2;
	width: 0; height: 0;
	border-top: 46px solid var(--tinta);
	border-left: 46px solid transparent;
}
.fec-card--t0 { --tinta: #ff3d7f; }  /* rosa confetto */
.fec-card--t1 { --tinta: #ffc53d; }  /* giallo candelina */
.fec-card--t2 { --tinta: #12b886; }  /* verde menta */
.fec-card--t3 { --tinta: #4dabf7; }  /* azzurro palloncino */
.fec-card--t4 { --tinta: #ff922b; }  /* arancio */
.fec-card--t5 { --tinta: #9775fa; }  /* viola */

.fec-card__img { display: block; width: 100%; aspect-ratio: 16 / 10; background: var(--fec-nebbia, #ede7f6); }
.fec-card__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fec-card__placeholder { display: grid; place-items: center; width: 100%; height: 100%; font-size: 2.4rem; }

.fec-card__body { display: flex; flex-direction: column; gap: .25rem; padding: .9rem; flex: 1; }
.fec-card__cat {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .64rem; text-transform: uppercase;
	letter-spacing: .08em; color: var(--tinta); font-weight: 700; margin: 0;
}
.fec-card__titolo { font-size: 1.02rem; line-height: 1.25; margin: 0; font-weight: 800; letter-spacing: -.01em; }
.fec-card__titolo a { color: var(--fec-ink, #1b1140); text-decoration: none; }
.fec-card__titolo a:hover { text-decoration: underline; }
.fec-card__luogo { font-size: .8rem; color: var(--fec-tenue, #6b5f8c); margin: 0; }
.fec-card__km { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); color: var(--fec-grape, #4b2e83); }
.fec-card__descr { font-size: .86rem; line-height: 1.45; margin: .2rem 0 0; }
.fec-card__piede { margin-top: auto; padding-top: .6rem; }
.fec-card__prezzo { margin: 0; font-size: 1rem; }
.fec-card__prezzo span { font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace); font-size: .68rem; text-transform: uppercase; color: var(--fec-tenue, #6b5f8c); }
.fec-card__prezzo strong { font-size: 1.25rem; font-weight: 800; color: var(--fec-ink, #1b1140); }
.fec-card__prezzo--vuoto { color: var(--fec-tenue, #6b5f8c); font-size: .88rem; }
.fec-card__azioni { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .7rem; }
.fec-card__azioni .fec-btn { flex: 1 1 auto; }

@media (min-width: 640px) {
	.fec-barra { grid-template-columns: 1.6fr 1fr auto; }
}
@media (min-width: 900px) {
	/* Disposizione a flusso invece che a griglia: ogni gruppo dichiara la
	   larghezza che gli serve e va a capo da solo. Con la griglia i gruppi
	   erano incastrati in due colonne fisse, e quelli con le pastiglie
	   grandi si trovavano meta' spazio senza motivo. */
	.fec-filtri__scorri {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: flex-start;
		column-gap: 2rem;
	}
	/* I gruppi con le miniature prendono tutta la riga: hanno bisogno di
	   spazio per disporre le pastiglie senza stringerle. */
	.fec-filtri__scorri > .fec-filtro--festa,
	.fec-filtri__scorri > .fec-filtro--categoria,
	.fec-filtri__scorri > .fec-filtro--atmosfera { flex: 1 1 100%; }
	/* Gli altri si affiancano finche' c'e' posto. */
	.fec-filtri__scorri > .fec-filtro { flex: 1 1 240px; }
	.fec-filtri__scorri > .fec-btn { flex: 0 0 auto; }
}

/* =============================================================================
   MAPPA TRASCINABILE, SPUNTI, LAYOUT, ICONE
   ========================================================================== */

/* --- Mappa --------------------------------------------------------------- */
.fec-mappa__tele {
	position: relative;
	height: 280px;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r-s, 8px);
	overflow: hidden;
	background: #e8e2d8;
	cursor: grab;
	touch-action: none;   /* il gesto lo gestiamo noi: senza, scorre la pagina */
	user-select: none;
}
.fec-mappa__tele.is-trascina { cursor: grabbing; }
.fec-mappa__tele:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }
.fec-mappa__strato { position: absolute; inset: 0; }
.fec-mappa__strato img { position: absolute; width: 256px; height: 256px; pointer-events: none; }

/* Il segnaposto resta immobile al centro: e' la mappa che scorre sotto. */
.fec-mappa__pin {
	position: absolute; left: 50%; top: 50%;
	width: 26px; height: 26px;
	margin: -26px 0 0 -13px;
	pointer-events: none;
	background: var(--fec-confetto, #ff3d7f);
	border: 3px solid #fff;
	border-radius: 50% 50% 50% 0;
	transform: rotate(-45deg);
	box-shadow: 0 3px 8px rgba(0, 0, 0, .35);
}
.fec-mappa__pin::after {
	content: ""; position: absolute; left: 50%; top: 50%;
	width: 8px; height: 8px; margin: -4px 0 0 -4px;
	background: #fff; border-radius: 50%;
}
.fec-mappa__zoom { position: absolute; right: .5rem; top: .5rem; display: grid; gap: 4px; }
.fec-mappa__zoom button {
	width: 40px; height: 40px;
	border: 1px solid var(--fec-bordo, #ddd2ee); border-radius: 6px;
	background: rgba(255, 255, 255, .95);
	font-size: 1.25rem; line-height: 1; cursor: pointer;
}
.fec-mappa__credito {
	position: absolute; right: 0; bottom: 0; margin: 0;
	padding: 2px 6px;
	background: rgba(255, 255, 255, .82);
	font-size: 10px; color: #444;
}
.fec-mappa__credito a { color: #444; }

/* --- Spunti: cassetto separato dal contenuto ---------------------------- */
.fec-spunti {
	margin-top: 1rem;
	border: 2px dashed var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: var(--fec-carta, #fbf7ff);
}
.fec-spunti__testa {
	display: flex; align-items: center; gap: .5rem;
	padding: .8rem 1rem;
	cursor: pointer;
	list-style: none;
	font-weight: 700;
	color: var(--fec-grape, #4b2e83);
}
.fec-spunti__testa::-webkit-details-marker { display: none; }
.fec-spunti__testa::before {
	content: "💡"; font-size: 1.1rem;
}
.fec-spunti__testa::after {
	content: ""; margin-left: auto;
	width: 9px; height: 9px;
	border-right: 2px solid var(--fec-grape, #4b2e83);
	border-bottom: 2px solid var(--fec-grape, #4b2e83);
	transform: rotate(45deg) translate(-2px, -2px);
	transition: transform .2s ease;
}
.fec-spunti[open] .fec-spunti__testa::after { transform: rotate(-135deg) translate(-2px, -2px); }
.fec-spunti__conta {
	display: grid; place-items: center;
	min-width: 22px; height: 22px; padding: 0 .35em;
	border-radius: 999px;
	background: var(--fec-limone, #ffc53d); color: #4a3400;
	font: 700 .72rem var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace);
}
.fec-spunti__corpo { padding: 0 1rem 1rem; }
.fec-spunti__nota { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); margin: 0 0 .75rem; line-height: 1.5; }

/* Le righe già inserite sono contenuto, gli spunti sono proposte: la cornice
   piena contro quella tratteggiata rende la differenza leggibile al volo. */
.fec-righe__lista:not(:empty) {
	padding: .1rem;
	margin-bottom: .6rem;
}

/* --- Scelta del layout con anteprima reale ------------------------------ */
.fec-tpl-griglia { display: grid; gap: 1rem; grid-template-columns: 1fr; }
.fec-tpl {
	border: 2px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff;
	overflow: hidden;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.fec-tpl.is-selected { border-color: var(--fec-confetto, #ff3d7f); box-shadow: 0 0 0 4px rgba(255, 61, 127, .14); }

.fec-tpl__vetrina {
	position: relative;
	height: 320px;
	background: var(--fec-carta, #fbf7ff);
	border-bottom: 1px solid var(--fec-bordo, #ddd2ee);
	cursor: zoom-in;
}
.fec-tpl__scorri {
	height: 100%;
	overflow-y: auto;
	overflow-x: hidden;
	-webkit-overflow-scrolling: touch;
	padding: .75rem;
	/* L'anteprima è larga quanto una pagina vera e viene rimpicciolita: così
	   si vede l'impaginazione reale, non una versione stretta che nella
	   pagina pubblica non esisterà mai. */
	zoom: .52;
}
.fec-tpl__attesa { color: var(--fec-tenue, #6b5f8c); font-size: 1.4rem; text-align: center; padding: 2rem 0; }
.fec-tpl__lente {
	position: absolute; right: .5rem; bottom: .5rem;
	display: grid; place-items: center;
	width: 40px; height: 40px;
	border-radius: 50%;
	background: rgba(27, 17, 64, .82);
	color: #fff;
	pointer-events: none;
}
.fec-tpl__lente .fec-ico { width: 20px; height: 20px; }
.fec-tpl__vetrina:hover .fec-tpl__lente { background: var(--fec-confetto, #ff3d7f); }

.fec-tpl__scelta {
	display: flex; align-items: flex-start; gap: .7rem;
	padding: .85rem;
	cursor: pointer;
}
.fec-tpl__scelta input { position: absolute; opacity: 0; width: 0; height: 0; }
.fec-tpl__segno {
	flex: 0 0 auto;
	width: 24px; height: 24px; margin-top: .1rem;
	border: 2px solid var(--fec-bordo, #ddd2ee); border-radius: 6px;
	background: #fff;
	position: relative;
	transition: background-color .15s ease, border-color .15s ease;
}
.fec-tpl__segno::after {
	content: ""; position: absolute; inset: 0;
	background: no-repeat center / 13px 10px
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'%3E%3Cpath d='M1 5l3.7 3.7L12 1.3' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	opacity: 0; transform: scale(.6);
	transition: opacity .15s ease, transform .15s ease;
}
.fec-tpl.is-selected .fec-tpl__segno { background: var(--fec-confetto, #ff3d7f); border-color: var(--fec-confetto, #ff3d7f); }
.fec-tpl.is-selected .fec-tpl__segno::after { opacity: 1; transform: scale(1); }
.fec-tpl__testi { display: grid; gap: .15rem; }
.fec-tpl__nome { font-weight: 800; }
.fec-tpl__descr { font-size: .85rem; color: var(--fec-tenue, #6b5f8c); line-height: 1.4; }

@media (min-width: 700px) {
	.fec-tpl-griglia { grid-template-columns: repeat(2, 1fr); }
}

/* --- Icone dentro i pulsanti -------------------------------------------- */
.fec-ico { width: 18px; height: 18px; flex: 0 0 auto; }
.fec-btn .fec-ico { margin-right: -.1em; }
.fec-btn--festa.is-on { background: var(--fec-menta, #12b886); border-color: var(--fec-menta, #12b886); color: #06331a; }

/* Barra dei contatti ripetuta in fondo all'annuncio */
.fec-cta-finale {
	padding: 1.25rem;
	border-radius: var(--fec-r, 14px);
	background: var(--fec-carta, #fbf7ff);
	border: 1px solid var(--fec-bordo, #ddd2ee);
}
.fec-cta-finale h2 { margin-top: 0; }

/* Editor di WordPress dentro il modulo */
.fec-editor-wp { width: 100%; }
.fec-campo .wp-editor-wrap { border: 1.5px solid var(--fec-bordo, #ddd2ee); border-radius: var(--fec-r-s, 8px); overflow: hidden; }
.fec-campo .wp-editor-tabs { padding: .25rem .25rem 0; }

/* Intestazione della pagina di ricerca */
.fec-ricerca__testa { margin-bottom: 1.25rem; }
.fec-ricerca__titolo {
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-size: clamp(1.7rem, 5.5vw, 2.6rem);
	font-weight: 800;
	letter-spacing: -.03em;
	line-height: 1.08;
	color: var(--fec-ink, #1b1140);
	margin: 0 0 .35rem;
}
.fec-ricerca__sub {
	font-size: clamp(.95rem, 2.4vw, 1.1rem);
	line-height: 1.5;
	color: var(--fec-tenue, #6b5f8c);
	margin: 0;
	max-width: 46ch;
}


/* Collegamento all'informativa dentro la casella di consenso */
.fec-check a { color: var(--fec-grape, #4b2e83); text-underline-offset: 2px; }
.fec-check a:hover { color: var(--fec-confetto, #ff3d7f); }
.fec-check > span { flex: 1; }

/* =============================================================================
   CAMPO IN ERRORE
   -----------------------------------------------------------------------------
   Un bordo rosso sottile passa inosservato, soprattutto su schermi piccoli e a
   chi distingue male i colori. Qui l'intero campo cambia fondo, compare un
   segno accanto all'etichetta e il messaggio è scritto su una fascia sua: tre
   segnali diversi, di cui uno solo è il colore.
   ========================================================================== */

.fec-campo.has-error {
	padding: .75rem .85rem;
	margin-inline: -.85rem;
	border-radius: var(--fec-r-s, 8px);
	background: #fff1f4;
	box-shadow: inset 3px 0 0 #d92b4b;
}
.fec-campo.has-error > label { color: #a5133a; font-weight: 700; }
.fec-campo.has-error > label::after {
	content: "da compilare";
	display: inline-block;
	margin-left: .5em;
	padding: .1em .5em;
	border-radius: 999px;
	background: #d92b4b;
	color: #fff;
	font: 700 .62rem/1.5 var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace);
	text-transform: uppercase;
	letter-spacing: .04em;
	vertical-align: middle;
}

/* Anche i campi dentro il contenitore in errore si tingono. */
.fec-campo.has-error input:not([type="checkbox"]):not([type="radio"]),
.fec-campo.has-error select,
.fec-campo.has-error textarea,
.fec-campo.has-error .fec-editor-wp {
	border-color: #d92b4b;
	background: #fff;
	box-shadow: 0 0 0 3px rgba(217, 43, 75, .12);
}
.fec-campo.has-error .fec-chip,
.fec-campo.has-error .fec-cat-item,
.fec-campo.has-error .fec-upload {
	border-color: #efb6c4;
}

/* Il messaggio: fascia piena, non testolino sotto. */
.fec-campo.has-error .fec-errore {
	display: flex;
	align-items: flex-start;
	gap: .4rem;
	margin-top: .45rem;
	padding: .5rem .65rem;
	border-radius: 6px;
	background: #d92b4b;
	color: #fff;
	font-weight: 600;
	font-size: .85rem;
	line-height: 1.35;
}
.fec-campo.has-error .fec-errore::before { content: "⚠"; flex: 0 0 auto; }
.fec-errore:empty { display: none; }

/* Il passo che contiene un errore si segnala anche nella barra dei numeri. */
.fec-passo.has-error .fec-passo__num {
	background: #d92b4b;
	color: #fff;
	box-shadow: 0 0 0 4px rgba(217, 43, 75, .2);
}

/* Contatore vivo dei risultati dentro i filtri */
.fec-filtri__esito {
	display: flex;
	align-items: baseline;
	gap: .4rem;
	padding: .7rem .9rem;
	margin-bottom: 1rem;
	border-radius: var(--fec-r-s, 8px);
	background: var(--fec-ink, #1b1140);
	color: #fff;
	position: sticky;
	top: .5rem;
	z-index: 5;
}
.fec-filtri__esito-num {
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-size: 1.7rem;
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--fec-limone, #ffc53d);
	line-height: 1;
}
.fec-filtri__esito-testo { font-size: .85rem; color: #d9cffa; }
.fec-filtri__esito.is-vuoto .fec-filtri__esito-num { color: #ff8fab; }
.fec-filtri__esito.is-cambiato { animation: fec-lampo .4s ease; }
@keyframes fec-lampo {
	0%   { transform: scale(1); }
	35%  { transform: scale(1.03); }
	100% { transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
	.fec-filtri__esito.is-cambiato { animation: none; }
}

/* =============================================================================
   TITOLI DEI FILTRI
   -----------------------------------------------------------------------------
   Erano minuscoli e in maiuscoletto spaziato: leggibili come etichette
   tecniche, non come titoli di sezione. Con dodici gruppi da scorrere servono
   ancore visive vere, quindi corpo più grande, peso pieno e colore d'inchiostro.
   ========================================================================== */

.fec-filtro legend {
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-size: 1.05rem;
	font-weight: 800;
	letter-spacing: -.01em;
	text-transform: none;
	color: var(--fec-ink, #1b1140);
	margin-bottom: .6rem;
	padding: 0;
	display: flex;
	align-items: center;
	gap: .5rem;
	width: 100%;
}
/* Una lineetta colorata prima del titolo: separa i gruppi senza aggiungere
   bordi, che moltiplicati per dodici farebbero solo rumore. */
.fec-filtro legend::before {
	content: "";
	width: 4px;
	height: 1.05em;
	border-radius: 2px;
	background: var(--fec-confetto, #ff3d7f);
	flex: 0 0 auto;
}

/* I titoli dei sottogruppi restano un gradino sotto. */
.fec-accordion summary {
	font-size: .95rem;
	font-weight: 700;
	color: var(--fec-grape, #4b2e83);
	padding: .15rem 0;
}
.fec-chip-gruppo legend,
.fec-spunti__titolo { font-size: .95rem; }

/* Distanza fra un gruppo e l'altro, ora che i titoli pesano di più.
   Solo row-gap: la distanza fra le colonne la fissa la regola dei 900px, e
   una scorciatoia «gap» scritta qui la sovrascriverebbe. */
.fec-filtri__scorri { row-gap: 1.6rem; }

/* --- Mondi tematici: stessa struttura dei fornitori --------------------- */
.fec-filtro--atmosfera .fec-chips--media { gap: .55rem; }
.fec-filtro--atmosfera .fec-chip--media { width: 104px; }

/* Ripiego quando l'atmosfera non ha ancora una foto: iniziale su fondo
   colorato, uno per mondo. Un riquadro grigio vuoto sarebbe peggio di nulla. */
.fec-atm-lettera {
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	font-family: var(--fec-display, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
	font-size: 1.6rem;
	font-weight: 800;
	color: #fff;
	background: var(--fec-grape, #4b2e83);
}
.fec-atm-lettera[data-atm="bio-green"]     { background: #12b886; }
.fec-atm-lettera[data-atm="tech"]          { background: #2e6be6; }
.fec-atm-lettera[data-atm="avventura"]     { background: #f76707; }
.fec-atm-lettera[data-atm="mistero"]       { background: #6b2d8c; }
.fec-atm-lettera[data-atm="classico"]      { background: #b08d3f; }
.fec-atm-lettera[data-atm="kids"]          { background: #ff3d7f; }
.fec-atm-lettera[data-atm="creativo"]      { background: #e8590c; }
.fec-atm-lettera[data-atm="gourmet"]       { background: #a61e4d; }
.fec-atm-lettera[data-atm="notturna"]      { background: #1b1140; }
.fec-atm-lettera[data-atm="inclusiva"]     { background: #0c8599; }
.fec-atm-lettera[data-atm="pet-friendly"]  { background: #74b816; }
.fec-atm-lettera[data-atm="low-cost"]      { background: #495057; }
.fec-atm-lettera[data-atm="diciottesimo"]  { background: #d6336c; }

/* Sottofiltri di un mondo: rientrati, così si vede che dipendono da esso. */
.fec-filtro--atmosfera + .fec-filtro--atmosfera,
[data-fec-sub-atmosfera] {
	padding-left: .9rem;
	border-left: 2px dashed var(--fec-bordo, #ddd2ee);
}

/* Piede del pannello filtri.
   «Mostra i risultati (N)» chiude la sezione e riporta l'occhio sull'elenco.
   Sta in fondo a qualunque larghezza: anche da computer, dopo aver percorso
   dodici gruppi di filtri, tornare in cima a mano e' una scocciatura. */
.fec-filtri__piede {
	display: flex;
	justify-content: flex-end;
	margin-top: 1.25rem;
	padding-top: 1rem;
	border-top: 1px solid var(--fec-bordo, #ddd2ee);
}
.fec-filtri__piede .fec-btn { min-width: 220px; }

@media (max-width: 639px) {
	.fec-filtri__piede .fec-btn { width: 100%; min-width: 0; }
}

/* =============================================================================
   ELENCO DEGLI ANNUNCI NELL'AREA RISERVATA
   ========================================================================== */

.fec-dash__quota {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace);
	font-size: .78rem;
	letter-spacing: .04em;
	color: var(--fec-tenue, #6b5f8c);
	margin: .25rem 0 0;
}
.fec-dash__elenco { display: grid; gap: 1rem; margin: 1.5rem 0; }

.fec-dash-card {
	display: grid;
	grid-template-columns: 72px 1fr;
	gap: .9rem;
	padding: 1rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff;
}
/* Una barra di stato sul fianco: si legge prima del testo quale scheda è
   online e quale è ferma in bozza. */
.fec-dash-card--publish { box-shadow: inset 4px 0 0 var(--fec-menta, #12b886); }
.fec-dash-card--fec_in_revisione { box-shadow: inset 4px 0 0 var(--fec-limone, #ffc53d); }
.fec-dash-card--draft,
.fec-dash-card--pending { box-shadow: inset 4px 0 0 var(--fec-bordo, #ddd2ee); }

.fec-dash-card__img {
	width: 72px; height: 72px;
	display: grid; place-items: center;
	border-radius: var(--fec-r-s, 8px);
	overflow: hidden;
	background: var(--fec-nebbia, #ede7f6);
	font-size: 1.8rem;
}
.fec-dash-card__img img { width: 100%; height: 100%; object-fit: cover; }

.fec-dash-card__corpo { display: grid; gap: .3rem; align-content: start; min-width: 0; }
.fec-dash-card__stato {
	font-family: var(--fec-mono, ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace);
	font-size: .68rem;
	text-transform: uppercase;
	letter-spacing: .06em;
	margin: 0;
	color: var(--fec-tenue, #6b5f8c);
}
.fec-dash-card__stato small { text-transform: none; letter-spacing: 0; font-size: .78rem; }
.fec-dash-card--publish .fec-dash-card__stato { color: #06694a; }
.fec-dash-card--fec_in_revisione .fec-dash-card__stato { color: #8a5c06; }

.fec-dash-card__nome { font-size: 1.1rem; font-weight: 800; margin: 0; line-height: 1.2; }
.fec-dash-card__cat { font-size: .82rem; color: var(--fec-tenue, #6b5f8c); margin: 0; }
.fec-dash-card__metriche { display: grid; gap: .4rem; margin: .5rem 0 .2rem; }
.fec-dash-card__azioni { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .6rem; }

@media (min-width: 640px) {
	.fec-dash-card { grid-template-columns: 110px 1fr; }
	.fec-dash-card__img { width: 110px; height: 110px; }
	.fec-dash-card__metriche { grid-template-columns: 1fr 1fr; gap: .4rem 1rem; }
}

/* I consensi nell'ultimo passo: separati dal resto, perché sono la cosa che
   si sta firmando e non un campo del modulo come gli altri. */
.fec-campo--checkbox.is-required {
	padding: .7rem .85rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r-s, 8px);
	background: var(--fec-carta, #fbf7ff);
}
.fec-campo--checkbox.is-required + .fec-campo--checkbox.is-required { margin-top: -.35rem; }

/* =============================================================================
   Anello di messa a fuoco da tastiera sulle etichette cliccabili
   -----------------------------------------------------------------------------
   Queste tre regole usano :has(), l'unico modo per disegnare l'anello attorno
   all'etichetta quando a ricevere il fuoco e' il radio nascosto dentro.
   Stanno in fondo al foglio di proposito: se un minificatore poco aggiornato
   non sa leggere :has() e rinuncia da qui in avanti, si perde soltanto un
   contorno giallo, non l'impaginazione della pagina.
   ========================================================================== */
.fec-chip:has(input:focus-visible) { outline: 3px solid var(--fec-limone, #ffc53d); }
.fec-cat-item:has(input:focus-visible) { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }
.fec-tpl__scelta:has(input:focus-visible) .fec-tpl__segno { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }

/* =============================================================================
   Visite e valutazione, in fondo all'annuncio
   ========================================================================== */
.fec-valuta {
	display: grid;
	gap: 1rem;
	margin-top: 1.5rem;
	padding: 1.1rem 1.25rem;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: var(--fec-r, 14px);
	background: #fff;
}
.fec-valuta .screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px; overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px); white-space: nowrap;
}
.fec-valuta__numeri { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.5rem; }
.fec-valuta__numeri p { margin: 0; display: inline-flex; align-items: center; gap: .4rem; color: var(--fec-testo, #241a44); }
.fec-valuta__visite .fec-ico { width: 20px; height: 20px; color: var(--fec-tenue, #6b5f8c); }
.fec-valuta__n { color: var(--fec-tenue, #6b5f8c); font-size: .9rem; }
.fec-stelle-media { display: inline-flex; gap: 1px; font-size: 1.25rem; line-height: 1; }
.fec-stella { color: #d9d3e6; }
.fec-stella.is-piena { color: #ffb400; }

.fec-valuta__vota { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; padding-top: .9rem; border-top: 1px dashed var(--fec-bordo, #ddd2ee); }
.fec-valuta__vota[hidden] { display: none !important; }
.fec-valuta__domanda { margin: 0; font-weight: 700; }
.fec-stelle { display: inline-flex; gap: .25rem; }
.fec-stelle__btn {
	width: 48px; height: 48px;
	display: inline-flex; align-items: center; justify-content: center;
	padding: 0;
	border: 1.5px solid var(--fec-bordo, #ddd2ee);
	border-radius: 12px;
	background: #fff;
	color: #d9d3e6;
	font-size: 1.6rem; line-height: 1;
	cursor: pointer;
	transition: transform .12s ease, color .12s ease, border-color .12s ease;
}
.fec-stelle__btn:hover { transform: translateY(-2px); }
.fec-stelle__btn.is-anteprima,
.fec-stelle__btn.is-on { color: #ffb400; border-color: #ffd36b; background: #fff8e6; }
.fec-stelle__btn:focus-visible { outline: 3px solid var(--fec-limone, #ffc53d); outline-offset: 2px; }
.fec-stelle__btn:disabled { opacity: .6; cursor: wait; }
.fec-valuta__esito { margin: 0; width: 100%; font-size: .9rem; color: var(--fec-tenue, #6b5f8c); }
.fec-valuta__esito:empty { display: none; }
@media (prefers-reduced-motion: reduce) { .fec-stelle__btn { transition: none; } }
@media print { .fec-valuta__vota { display: none !important; } }
