/* ==========================================================================
   Product Finder — componente frontend (Step 4a)

   Prefisso .pf-. I token del design export (--fd-green-*, --fd-ink-*) non
   esistono in questo sito: qui sono rimappati sui token reali --ft-*, emessi
   inline da ThemeColors. Ogni var() ha un fallback perché lo shortcode può
   stare su una pagina non-Fintable, dove né fintable.css né i token vengono
   caricati: il finder deve reggersi da solo.

   Nessun font dichiarato: la tipografia si eredita dal tema.
   ========================================================================== */

/* .pf-dr e .pf-sb vivono in fondo al <body>, fuori dal guscio .pf: i token
   vanno dichiarati anche su di loro o perdono colori e raggi. */
.pf,
.pf-dr,
.pf-sb {
	/* Mappa dei token del design system (docs/finder/design/styles/tokens.css)
	   sui token del sito emessi a runtime da ThemeColors. I fallback sono i
	   valori esatti di tokens.css, che per il verde e per gli ink coincidono
	   con i default della palette: --fd-green-600 = --ft-primary = #0e7a4f,
	   --fd-ink-900 = --ft-text-primary, --fd-ink-150 = --ft-border,
	   --fd-gold-500 = --ft-accent, --fd-green-800 = --ft-hero-bg. Dove il
	   token del sito non esiste (dividers, ink tenui, tinte) il valore si
	   deriva con color-mix, così resta agganciato alla palette se la
	   redazione la cambia da Fintable -> Aspetto. */
	--pf-ink: var(--ft-text-primary, #0f1e2e);            /* --fd-ink-900 */
	--pf-ink-soft: var(--ft-text-secondary, #647689);     /* --fd-ink-500 */
	--pf-ink-muted: color-mix(in srgb, var(--ft-text-secondary, #647689) 78%, #fff); /* ~ --fd-ink-400 */
	--pf-ink-faint: color-mix(in srgb, var(--ft-text-secondary, #647689) 52%, #fff); /* ~ --fd-ink-300 */
	--pf-line: var(--ft-border, #e3e7ec);                 /* --fd-ink-150 */
	--pf-line-strong: color-mix(in srgb, var(--ft-border, #e3e7ec) 80%, var(--ft-text-secondary, #647689)); /* ~ --fd-ink-200 */
	--pf-line-soft: color-mix(in srgb, var(--ft-border, #e3e7ec) 60%, #fff);        /* ~ --fd-ink-100 */
	--pf-paper: var(--ft-bg-card, #fff);                  /* --fd-paper */
	--pf-canvas: var(--ft-bg-secondary, #f3f5f7);         /* --fd-ink-75 */
	--pf-accent: var(--ft-primary, #0e7a4f);              /* --fd-green-600 */
	--pf-accent-soft: color-mix(in srgb, var(--ft-primary, #0e7a4f) 8%, #fff);  /* ~ --fd-green-50 */
	--pf-accent-tint: color-mix(in srgb, var(--ft-primary, #0e7a4f) 10%, #fff); /* stato selezionato */
	--pf-accent-line: color-mix(in srgb, var(--ft-primary, #0e7a4f) 28%, #fff); /* ~ --fd-green-200 */
	--pf-dark: var(--ft-hero-bg, #0d4a35);                /* --fd-green-800 */

	/* Raggi, ombre e motion dalla scala di tokens.css. Il raggio dei bottoni
	   resta 8px, che è quello reale delle CTA del sito
	   (.ft-card-v2__cta-btn e sorelle), non i 6/10 della scala astratta. */
	--pf-radius: 12px;
	--pf-radius-sm: 6px;
	--pf-radius-md: 10px;
	--pf-radius-lg: 14px;
	--pf-radius-full: 9999px;
	--pf-ring: 0 0 0 3px color-mix(in srgb, var(--ft-primary, #0e7a4f) 22%, transparent); /* --fd-shadow-focus */
	--pf-overlay: rgba(15, 30, 46, 0.28); /* --fd-overlay, alpha del drawer */
	--pf-ease: cubic-bezier(0.2, 0.8, 0.2, 1); /* --fd-ease-out */
	--pf-dur-fast: 120ms;
	--pf-dur: 200ms;
}

.pf {
	color: var(--pf-ink);
}

.pf *,
.pf-dr *,
.pf-sb * {
	box-sizing: border-box;
}

/* Il tema sottolinea gli <a> (spesso con `a:hover`, che pesa (0,1,1)): dentro
   il finder nessun link e' sottolineato, in nessuno stato. `.pf a:hover` pesa
   (0,2,1) e vince. .pf-dr e .pf-sb vanno elencate: vivono fuori da .pf. */
.pf a,
.pf a:hover,
.pf a:focus,
.pf a:focus-visible,
.pf a:active,
.pf-dr a,
.pf-dr a:hover,
.pf-dr a:focus,
.pf-dr a:focus-visible,
.pf-dr a:active,
.pf-sb a,
.pf-sb a:hover,
.pf-sb a:focus,
.pf-sb a:active {
	text-decoration: none;
}

.pf-sprite {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
}

/* --------------------------------------------------------------------------
   Bottoni
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   Reset dei <button>

   Il tema stila `button` e `button:hover` globalmente: `button:hover` pesa
   (0,1,1) e batteva le nostre regole a classe singola (0,1,0), facendo
   comparire il rettangolo scuro del tema sulla X del drawer. Il reset elenca
   le classi una per una — niente `.pf button`, che a (0,1,1) vincerebbe sulle
   regole del componente e ne romperebbe gli stati.
   -------------------------------------------------------------------------- */

.pf-btn,
.pf-back,
.pf-chip,
.pf-tile,
.pf-opt,
.pf-dr__close,
.pf-sb__go,
.pf-sb__x,
.pf-strip__a,
.pf-assume__edit {
	appearance: none;
	-webkit-appearance: none;
	margin: 0;
	box-shadow: none;
	font: inherit;
	letter-spacing: inherit;
	text-transform: none;
	text-decoration: none;
	text-shadow: none;
	cursor: pointer;
}

.pf-btn:hover,
.pf-back:hover,
.pf-chip:hover,
.pf-tile:hover,
.pf-opt:hover,
.pf-dr__close:hover,
.pf-sb__go:hover,
.pf-sb__x:hover,
.pf-strip__a:hover,
.pf-btn:active,
.pf-back:active,
.pf-chip:active,
.pf-tile:active,
.pf-dr__close:active,
.pf-sb__go:active,
.pf-sb__x:active,
.pf-strip__a:active {
	text-decoration: none;
	text-shadow: none;
	transform: none;
}

.pf-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	padding: 12px 18px;
	border: 1px solid transparent;
	border-radius: 8px;
	background: var(--pf-accent);
	color: #fff;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background var(--pf-dur-fast) var(--pf-ease);
}

.pf-btn:hover,
.pf-btn:focus,
.pf-btn:focus-visible,
.pf-btn:active {
	background: color-mix(in srgb, var(--ft-primary, #0e7a4f) 88%, black);
	color: #fff;
}

.pf-btn--lg {
	min-height: 48px;
}

.pf-btn[disabled] {
	opacity: 0.45;
	cursor: default;
}

.pf-btn--ghost {
	background: transparent;
	border-color: var(--pf-line);
	color: var(--pf-ink);
}

.pf-btn--ghost:hover,
.pf-btn--ghost:focus,
.pf-btn--ghost:focus-visible,
.pf-btn--ghost:active {
	background: var(--pf-canvas);
	border-color: var(--pf-line);
	color: var(--pf-ink);
}

.pf-btn--sm {
	padding: 9px 14px;
	font-size: 13px;
}

.pf-back {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 10px 6px;
	border: 0;
	background: none;
	color: var(--pf-ink-soft);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}

.pf-back:hover,
.pf-back:focus,
.pf-back:focus-visible,
.pf-back:active {
	background: none;
	color: var(--pf-ink);
}

.pf-dr__close {
	width: 44px;
	height: 44px;
	min-width: 44px;
	min-height: 44px;
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 0;
	border-radius: var(--pf-radius-full);
	background: none;
	color: var(--pf-ink-soft);
	line-height: 1;
	transition: background var(--pf-dur-fast) var(--pf-ease), color var(--pf-dur-fast) var(--pf-ease);
}

/* L'SVG inline eredita il line-height del testo e sbandava nel cerchio. */
.pf-dr__close svg {
	display: block;
}

/* Cerchio chiaro, mai il rettangolo del tema. */
.pf-dr__close:hover,
.pf-dr__close:focus-visible {
	background: var(--pf-accent-soft);
	color: var(--pf-ink);
}

/* --------------------------------------------------------------------------
   Box (picker hero + quiz inline)
   -------------------------------------------------------------------------- */

.pf-box {
	border: 1px solid var(--pf-line);
	border-radius: var(--pf-radius);
	background: var(--pf-paper);
	overflow: hidden;
}

.pf-box--hero,
.pf-box--inline {
	/* Altezza stabile fra picker e domande: il box non "salta" al click. */
	min-height: 320px;
	display: flex;
	flex-direction: column;
}

.pf-box__hd {
	padding: 16px 18px 0;
}

.pf-box__k {
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--pf-accent);
	margin-bottom: 6px;
}

.pf-box__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
}

.pf-box__t {
	margin: 0;
	font-size: 19px;
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1.25;
	color: var(--pf-ink);
}

.pf-box__meta {
	flex: 0 0 auto;
	font-size: 12.5px;
	color: var(--pf-ink-soft);
}

.pf-box__bd {
	flex: 1 1 auto;
	padding: 14px 18px 18px;
}

.pf-box__ft[hidden] {
	display: none;
}

.pf-box__ft {
	flex: 0 0 auto;
	display: flex;
	flex-wrap: wrap;
	gap: 8px 18px;
	padding: 12px 18px;
	border-top: 1px solid var(--pf-line-soft);
	background: var(--pf-canvas);
}

.pf-help {
	margin: 0 0 14px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--pf-ink-soft);
}

.pf-legend {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 12.5px;
	color: var(--pf-ink-soft);
}

.pf-legend svg {
	flex: 0 0 auto;
}

.pf-legend__q {
	width: 20px;
	height: 20px;
	flex: 0 0 auto;
	border-radius: 5px;
	background: var(--pf-accent);
	color: #fff;
	display: grid;
	place-items: center;
}

/* --------------------------------------------------------------------------
   Tile categoria
   -------------------------------------------------------------------------- */

.pf-tiles {
	display: grid;
	grid-template-columns: 1fr;
	gap: 10px;
}

.pf-tile {
	display: flex;
	align-items: center;
	gap: 12px;
	width: 100%;
	min-height: 60px;
	padding: 12px 14px;
	border: 1px solid var(--pf-line);
	border-radius: 10px;
	background: var(--pf-paper);
	color: inherit;
	text-align: left;
	transition: border-color var(--pf-dur-fast) var(--pf-ease), background var(--pf-dur-fast) var(--pf-ease);
}

/* Il tema sottolinea gli <a>: il tile e' una superficie, non un link inline. */
.pf-tile,
.pf-tile:hover,
.pf-tile:focus,
.pf-tile:active,
.pf-tile b,
.pf-tile small,
.pf-tile span {
	text-decoration: none;
}

.pf-tile:hover,
.pf-tile:focus-visible {
	border-color: var(--pf-accent-line);
	background: var(--pf-canvas);
}

.pf-tile__ic {
	width: 38px;
	height: 38px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border: 1px solid var(--pf-line);
	border-radius: 9px;
	color: var(--pf-accent);
	background: var(--pf-paper);
}

.pf-tile__tx {
	flex: 1 1 auto;
	min-width: 0;
}

.pf-tile__tx b {
	display: block;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--pf-ink);
}

.pf-tile__tx small {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-top: 2px;
	font-size: 12.5px;
	color: var(--pf-ink-soft);
}

.pf-tile__go {
	flex: 0 0 auto;
	display: inline-flex;
	color: var(--pf-ink-faint);
}

.pf-tile--link:hover .pf-tile__go {
	color: var(--pf-accent);
}

.pf-tile--quiz {
	border-color: var(--pf-accent-line);
}

.pf-tile--quiz .pf-tile__ic {
	background: var(--pf-accent);
	border-color: var(--pf-accent);
	color: #fff;
}

.pf-tile--quiz .pf-tile__tx small {
	color: var(--pf-accent);
	font-weight: 700;
}

/* --------------------------------------------------------------------------
   Box inline CTA (.pf-ib)
   -------------------------------------------------------------------------- */

.pf-ib {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: start;
	gap: 14px;
	margin: 0 0 24px;
	padding: 18px;
	border: 1px solid var(--pf-line);
	border-radius: var(--pf-radius);
	background: var(--pf-paper);
}

.pf-ib__ic {
	width: 44px;
	height: 44px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border: 1px solid var(--pf-line);
	border-radius: 10px;
	color: var(--pf-accent);
}

.pf-ib__tx {
	min-width: 0;
}

.pf-ib__t {
	margin: 0 0 3px;
	font-size: 17px;
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1.3;
	color: var(--pf-ink);
}

.pf-ib__s {
	margin: 0;
	font-size: 14.5px;
	line-height: 1.5;
	color: var(--pf-ink-soft);
}

.pf-ib .pf-btn {
	grid-column: 1 / -1;
	width: 100%;
	padding: 12px 16px;
	line-height: 1.25;
	white-space: normal;
}

/* --------------------------------------------------------------------------
   Barra sticky (solo mobile)
   -------------------------------------------------------------------------- */

.pf-sb {
	position: fixed;
	left: 12px;
	right: 12px;
	bottom: 12px;
	z-index: 90;
	height: 52px;
	display: flex;
	align-items: center;
	overflow: hidden;
	border-radius: var(--pf-radius);
	background: var(--pf-dark);
	color: #fff;
	box-shadow: 0 12px 30px -12px rgba(6, 24, 47, 0.6);
}

.pf-sb[hidden] {
	display: none;
}

.pf-sb__go {
	flex: 1 1 auto;
	min-width: 0;
	height: 100%;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0 16px;
	border: 0;
	background: none;
	color: #fff;
	font-size: 15px;
	font-weight: 700;
	text-align: left;
	cursor: pointer;
}

.pf-sb__go span {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.pf-sb__go svg {
	flex: 0 0 auto;
}

.pf-sb__go:hover,
.pf-sb__go:focus,
.pf-sb__go:active {
	background: rgba(255, 255, 255, 0.08);
	color: #fff;
}

.pf-sb__x {
	width: 48px;
	height: 100%;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border: 0;
	border-left: 1px solid rgba(255, 255, 255, 0.14);
	background: none;
	color: rgba(255, 255, 255, 0.75);
	cursor: pointer;
}

.pf-sb__x:hover,
.pf-sb__x:focus,
.pf-sb__x:active {
	background: rgba(255, 255, 255, 0.08);
	color: #fff;
}

/* --------------------------------------------------------------------------
   Drawer (<dialog>)
   -------------------------------------------------------------------------- */

.pf-dr {
	position: fixed;
	inset: 40px 0 0;
	width: 100%;
	max-width: none;
	max-height: none;
	height: auto;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 16px 16px 0 0;
	background: var(--pf-paper);
	color: var(--pf-ink);
	overflow: hidden;
	box-shadow: 0 -12px 40px -20px rgba(6, 24, 47, 0.45);
}

.pf-dr::backdrop {
	background: var(--pf-overlay);
}

.pf-dr__inner {
	display: flex;
	flex-direction: column;
	height: calc(100dvh - 40px);
}

.pf-dr__handle {
	display: block;
	width: 40px;
	height: 5px;
	flex: 0 0 auto;
	margin: 8px auto 2px;
	border-radius: var(--pf-radius-sm);
	background: var(--pf-line-strong);
}

.pf-dr__hd {
	position: relative;
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 60px;
	padding: 4px 12px 8px 20px;
	border-bottom: 1px solid var(--pf-line-soft);
	background: var(--pf-paper);
}

.pf-dr__cat {
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
	font-size: 14.5px;
	font-weight: 700;
	color: var(--pf-ink);
}

.pf-dr__ic {
	width: 30px;
	height: 30px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	border-radius: 8px;
	background: var(--pf-accent-soft);
	color: var(--pf-accent);
}

.pf-dr__step {
	margin-left: auto;
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	color: var(--pf-ink-soft);
}

.pf-dr__pbar {
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 3px;
	background: var(--pf-line-soft);
}

.pf-dr__pbar i {
	display: block;
	height: 100%;
	background: var(--pf-accent);
	transition: width var(--pf-dur) var(--pf-ease);
}

.pf-dr__bd {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	padding: 22px 20px;
}

.pf-dr__ft {
	position: sticky;
	bottom: 0;
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 20px calc(20px + env(safe-area-inset-bottom));
	border-top: 1px solid var(--pf-line-soft);
	background: var(--pf-paper);
}

.pf-dr__ft .pf-btn {
	flex: 1 1 auto;
}

/* Il footer esiste solo nelle schermate domanda (finder.js lo nasconde in
   risultati, caricamento ed errore). È display:flex, quindi l'attributo
   [hidden] da solo non basta. */
.pf-dr__ft[hidden],
.pf-host__ft[hidden] {
	display: none;
}

body.pf-lock {
	overflow: hidden;
}

/* --------------------------------------------------------------------------
   Chrome del quiz dentro un box in pagina (BoxHost)
   Stesso ruolo dell'header/footer del drawer, misure adattate al box.
   -------------------------------------------------------------------------- */

.pf-host {
	display: flex;
	flex-direction: column;
	min-height: 100%;
}

.pf-host__hd {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	min-height: 26px;
	margin: 0 0 18px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--pf-line-soft);
}

.pf-host__step {
	font-size: 13px;
	font-weight: 600;
	color: var(--pf-ink-soft);
	font-variant-numeric: tabular-nums;
}

.pf-host__pbar {
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 3px;
	background: var(--pf-line-soft);
}

.pf-host__pbar i {
	display: block;
	height: 100%;
	background: var(--pf-accent);
	transition: width var(--pf-dur) var(--pf-ease);
}

.pf-host__bd {
	flex: 1 1 auto;
	min-height: 0;
}

.pf-host__ft {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: 20px;
	padding-top: 14px;
	border-top: 1px solid var(--pf-line-soft);
}

.pf-host__ft .pf-btn {
	flex: 1 1 auto;
}

@media (prefers-reduced-motion: reduce) {
	.pf-host__pbar i {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   Domande
   -------------------------------------------------------------------------- */

/* Testo introduttivo del quiz (ruleset.intro), sopra la prima domanda. */
.pf-intro {
	margin: 0 0 14px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--pf-ink-soft);
}

.pf-q {
	margin: 0 0 6px;
	font-size: 20px;
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1.3;
	color: var(--pf-ink);
}

.pf-q:focus {
	outline: none;
}

.pf-opts {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
}

.pf-opt {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 12px;
	min-height: 52px;
	padding: 13px 14px;
	border: 1px solid var(--pf-line);
	border-radius: 10px;
	background: var(--pf-paper);
	cursor: pointer;
	transition: border-color var(--pf-dur-fast) var(--pf-ease), background var(--pf-dur-fast) var(--pf-ease);
}

.pf-opt:hover,
.pf-opt:focus,
.pf-opt:active {
	border-color: var(--pf-accent-line);
	background: var(--pf-paper);
}

.pf-opt input {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

.pf-opt__r {
	width: 20px;
	height: 20px;
	flex: 0 0 auto;
	margin-top: 1px;
	border: 2px solid var(--pf-line);
	border-radius: 50%;
	background: var(--pf-paper);
	transition: border-color var(--pf-dur-fast) var(--pf-ease), box-shadow var(--pf-dur-fast) var(--pf-ease);
}

.pf-opt.is-on,
.pf-opt.is-on:hover,
.pf-opt.is-on:active,
.pf-opt:has(input:checked) {
	border-color: var(--pf-accent);
	background: var(--pf-accent-tint);
}

.pf-opt.is-on .pf-opt__r,
.pf-opt:has(input:checked) .pf-opt__r {
	border-color: var(--pf-accent);
	box-shadow: inset 0 0 0 4px var(--pf-accent);
}

/* Anello di focus unico per tutte le superfici interattive (--fd-shadow-focus). */
.pf-btn:focus-visible,
.pf-back:focus-visible,
.pf-dr__close:focus-visible,
.pf-chip:focus-visible,
.pf-tile:focus-visible,
.pf-sb__go:focus-visible,
.pf-sb__x:focus-visible,
.pf-strip__a:focus-visible,
.pf-opt:has(input:focus-visible) {
	outline: 2px solid var(--pf-accent);
	outline-offset: 2px;
	box-shadow: var(--pf-ring);
}

.pf-opt__t {
	display: block;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	color: var(--pf-ink);
}

.pf-opt__s {
	display: block;
	margin-top: 2px;
	font-size: 13px;
	line-height: 1.4;
	color: var(--pf-ink-soft);
}

.pf-num {
	display: flex;
	align-items: baseline;
	gap: 8px;
	padding: 14px 16px;
	border: 1px solid var(--pf-line);
	border-radius: 10px;
	background: var(--pf-paper);
}

.pf-num:focus-within {
	border-color: var(--pf-accent);
}

.pf-num input {
	flex: 1 1 auto;
	min-width: 0;
	width: 100%;
	border: 0;
	background: none;
	padding: 0;
	font-size: 28px;
	font-weight: 800;
	letter-spacing: -0.02em;
	color: var(--pf-ink);
	font-variant-numeric: tabular-nums;
}

.pf-num input:focus {
	outline: none;
}

.pf-num__u {
	flex: 0 0 auto;
	font-size: 14px;
	font-weight: 600;
	color: var(--pf-ink-soft);
}

.pf-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 12px;
}

.pf-chip {
	/* Target touch >= 44px come le altre superfici tappabili del componente. */
	min-height: 44px;
	padding: 9px 14px;
	border: 1px solid var(--pf-line);
	border-radius: var(--pf-radius-full);
	background: var(--pf-paper);
	font-size: 13.5px;
	font-weight: 600;
	color: var(--pf-ink);
	cursor: pointer;
}

/* Il tema colora `button:active`/`:focus` di grigio scuro con testo blu:
   ogni stato del chip e' dichiarato qui, a (0,2,0), per non lasciargli spazio. */
.pf-chip:hover,
.pf-chip:focus,
.pf-chip:focus-visible,
.pf-chip:active {
	border-color: var(--pf-accent);
	background: var(--pf-paper);
	color: var(--pf-accent);
}

.pf-chip.is-on,
.pf-chip.is-on:hover,
.pf-chip.is-on:focus,
.pf-chip.is-on:focus-visible,
.pf-chip.is-on:active {
	border-color: var(--pf-accent);
	background: var(--pf-accent-tint);
	color: var(--pf-accent);
	font-weight: 600;
}

.pf-err {
	margin: 10px 0 0;
	font-size: 13px;
	font-weight: 600;
	color: var(--ft-voto-bad, #c5392f); /* --fd-danger */
}

/* --------------------------------------------------------------------------
   Risultati
   -------------------------------------------------------------------------- */

.pf-res__title {
	margin: 0 0 4px;
	font-size: 19px;
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1.3;
	color: var(--pf-ink);
}

.pf-assume {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 12px 0 18px;
	padding: 10px 12px;
	border: 1px dashed var(--pf-line);
	border-radius: 10px;
	font-size: 13px;
	line-height: 1.45;
	color: var(--pf-ink-soft);
}

.pf-assume svg {
	flex: 0 0 auto;
	margin-top: 1px;
	color: var(--pf-accent);
}

.pf-assume b {
	color: var(--pf-ink);
	font-variant-numeric: tabular-nums;
}

.pf-assume small {
	display: block;
	margin-top: 2px;
	font-size: 12px;
}

/* "Modifica risposte" in coda alla riga assunzioni: link, non bottone. */
.pf-assume__edit,
.pf-assume__edit:hover,
.pf-assume__edit:focus,
.pf-assume__edit:active {
	display: inline;
	padding: 0;
	border: 0;
	background: none;
	font-size: inherit;
	font-weight: 600;
	line-height: inherit;
	color: var(--pf-accent);
	text-decoration: none;
	white-space: nowrap;
}

.pf-assume__edit:focus-visible {
	outline: 2px solid var(--pf-accent);
	outline-offset: 2px;
	border-radius: 2px;
}

/* "Vedi la classifica" in fondo alla lista, dopo il disclaimer. */
.pf-res__more {
	margin-top: 16px;
}

/* Etichetta sopra la card, fuori dal bordo: kicker in maiuscoletto, non una
   banda piena (spezzava il ritmo verticale della scheda). */
.pf-kicker {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 8px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	line-height: 1;
	color: var(--pf-accent);
}

.pf-kicker svg {
	flex: 0 0 auto;
	display: block;
}

.pf-main {
	border: 1px solid var(--pf-accent-line);
	border-radius: var(--pf-radius);
	background: var(--pf-paper);
}

/* Una colonna sola con ritmo unico: 16px fra i blocchi (identita', badge,
   costo, perche', gruppo CTA, verifica). */
.pf-main__body {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 16px;
	padding: 16px;
}

.pf-main__id,
.pf-alt__id {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
}

.pf-id__tx {
	min-width: 0;
}

.pf-lt {
	width: 44px;
	height: 44px;
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	overflow: hidden;
	border: 1px solid var(--pf-line);
	border-radius: 9px;
	background: var(--pf-paper);
}

.pf-lt img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

.pf-name {
	margin: 0;
	font-size: 17px;
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 1.25;
	color: var(--pf-ink);
}

.pf-alt__name {
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--pf-ink);
}

.pf-rate {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 3px;
}

.pf-score {
	font-size: 13px;
	font-weight: 700;
	color: var(--pf-ink);
	font-variant-numeric: tabular-nums;
}

.pf-badgew {
	display: flex;
}

.pf-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 28px;
	padding: 4px 12px;
	border-radius: var(--pf-radius-full);
	background: var(--pf-accent-soft);
	color: var(--pf-accent);
	font-size: 12.5px;
	font-weight: 700;
	line-height: 1.2;
}

/* Costo su una riga, senza box: il mensile in evidenza, il resto secondario. */
/* Mensile e primo anno in linea, separati solo da spazio (12px). Niente "·":
   la larghezza utile dipende dal contenitore (box, drawer, colonna) e non dal
   viewport, quindi nessuna media query sa dire quando la riga va a capo; un
   separatore resterebbe orfano. Senza, quando va a capo si impila pulita. */
.pf-costline {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 2px 12px;
	/* Nessun margine: la distanza dai blocchi vicini la da' il gap del body. */
	margin: 0;
	font-size: 14px;
	line-height: 1.4;
	color: var(--pf-ink-soft);
}

.pf-costline__m {
	font-size: 28px;
	font-weight: 800;
	letter-spacing: -0.02em;
	line-height: 1.1;
	color: var(--pf-ink);
	font-variant-numeric: tabular-nums;
}

.pf-costline__m small {
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0;
	color: var(--pf-ink-soft);
}



.pf-alt .pf-costline__m {
	font-size: 19px;
}

.pf-why {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.pf-why li {
	display: flex;
	gap: 9px;
	font-size: 14px;
	line-height: 1.45;
	color: var(--pf-ink);
}

.pf-why svg {
	flex: 0 0 auto;
	margin-top: 2px;
	color: var(--ft-success, #0e7a4f);
}

/* CTA e link recensione sono un gruppo: 12px fra loro, 16px dal resto. */
.pf-main__act,
.pf-alt__act {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 12px;
}

/* Disclaimer di rischio (Compliance\Disclaimer, contesto 'card') fra CTA e
   link recensione: il gap del gruppo fa da spaziatura, niente margini; a
   tutta larghezza della card invece del cap a 220px delle card del
   catalogo. Il testo resta quello di fintable.css (12px, centrato). */
.pf-main__act .ft-cta-disclaimer,
.pf-alt__act .ft-cta-disclaimer {
	margin: 0;
	max-width: none;
}

/* I link del disclaimer restano sottolineati: e' testo di compliance, non
   navigazione. Batte il reset `.pf a:hover` (0,2,1) con (0,3,1). */
.pf .ft-cta-disclaimer a,
.pf .ft-cta-disclaimer a:hover,
.pf .ft-cta-disclaimer a:focus,
.pf .ft-cta-disclaimer a:active,
.pf-dr .ft-cta-disclaimer a,
.pf-dr .ft-cta-disclaimer a:hover,
.pf-dr .ft-cta-disclaimer a:focus,
.pf-dr .ft-cta-disclaimer a:active {
	text-decoration: underline;
	text-underline-offset: 2px;
}

.pf-btn--block {
	width: 100%;
}

/* Link testuale sotto la CTA: centrato, colore primario, mai sottolineato. */
.pf-reviewlink,
.pf-reviewlink:hover,
.pf-reviewlink:focus,
.pf-reviewlink:focus-visible,
.pf-reviewlink:active {
	display: block;
	margin: 0;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	color: var(--pf-accent);
	text-decoration: none;
}

.pf-verified {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	font-size: 12px;
	color: var(--pf-ink-muted);
}

.pf-alts-h {
	margin: 22px 0 10px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	color: var(--pf-ink-soft);
}

.pf-alts {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}

.pf-alt {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 16px;
	padding: 16px;
	border: 1px solid var(--pf-line);
	border-radius: var(--pf-radius);
	background: var(--pf-paper);
}

/* Chip piccolo grigio, stessa forma del badge ma neutro. */
.pf-alt__label {
	align-self: flex-start;
	min-height: 24px;
	display: inline-flex;
	align-items: center;
	padding: 3px 10px;
	border-radius: var(--pf-radius-full);
	background: var(--pf-canvas);
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.02em;
	line-height: 1.2;
	color: var(--pf-ink-soft);
}

/* striscia contesto recensione */
.pf-strip {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin-top: 18px;
	padding: 13px 14px;
	border: 1px solid var(--pf-line);
	border-radius: var(--pf-radius);
	background: var(--pf-canvas);
}

.pf-strip__t {
	flex: 1 1 auto;
	min-width: 0;
	font-size: 13.5px;
	line-height: 1.45;
	color: var(--pf-ink-soft);
}

.pf-strip__k {
	display: block;
	font-weight: 600;
	color: var(--pf-ink);
}

.pf-strip__t b {
	color: var(--pf-ink);
}

.pf-strip__a {
	width: 100%;
	min-height: 32px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: 0;
	background: none;
	padding: 0;
	font-size: 13px;
	font-weight: 700;
	color: var(--pf-accent);
	cursor: pointer;
}

.pf-disc {
	margin: 18px 0 0;
	font-size: 12px;
	line-height: 1.5;
	color: var(--pf-ink-soft);
}

/* --------------------------------------------------------------------------
   Stati: loading, errore, nessun risultato
   -------------------------------------------------------------------------- */

.pf-skel {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.pf-skel span {
	display: block;
	height: 14px;
	border-radius: 6px;
	background: linear-gradient(90deg, var(--pf-canvas) 25%, var(--pf-line-soft) 37%, var(--pf-canvas) 63%);
	background-size: 400% 100%;
	animation: pf-shimmer 1.4s ease infinite;
}

.pf-skel span:first-child {
	height: 22px;
	width: 70%;
}

.pf-skel span:nth-child(2) {
	width: 92%;
}

.pf-skel--card span {
	height: 96px;
	border-radius: var(--pf-radius);
}

@keyframes pf-shimmer {
	0% {
		background-position: 100% 50%;
	}

	100% {
		background-position: 0 50%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.pf-skel span {
		animation: none;
	}

	.pf-dr__pbar i {
		transition: none;
	}
}

.pf-state {
	padding: 6px 0;
}

.pf-state__t {
	margin: 0 0 8px;
	font-size: 17px;
	font-weight: 800;
	line-height: 1.35;
	color: var(--pf-ink);
}

.pf-state .pf-btn {
	margin-top: 4px;
}

.pf-state__p {
	margin: 0 0 14px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--pf-ink-soft);
}

/* --------------------------------------------------------------------------
   Stelle (Helpers\Rating): replicate qui perché fintable.css può non esserci
   -------------------------------------------------------------------------- */

.pf .ft-stars,
.pf-dr .ft-stars {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	font-size: 0;
	line-height: 1;
	vertical-align: middle;
}

.pf .ft-star,
.pf-dr .ft-star {
	position: relative;
	display: inline-block;
	width: 14px;
	height: 14px;
}

.pf .ft-stars--mini .ft-star,
.pf-dr .ft-stars--mini .ft-star {
	width: 12px;
	height: 12px;
}

.pf .ft-star svg,
.pf-dr .ft-star svg {
	display: block;
	width: 100%;
	height: 100%;
}

.pf .ft-star__bg,
.pf-dr .ft-star__bg {
	color: var(--ft-star-empty, #e5e7eb);
}

.pf .ft-star__fg,
.pf-dr .ft-star__fg {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	color: var(--ft-star-full, var(--ft-accent, #e6a82e));
}

.pf .ft-star__fg--half,
.pf-dr .ft-star__fg--half {
	clip-path: inset(0 50% 0 0);
}

/* Barra che sostituisce la barra CTA del prodotto: resta visibile fino a
   1023px, come quella che sostituisce. Deve battere `.pf-sb { display: none }`
   della sezione desktop (piu' in basso nel file, quindi a pari peso
   vincerebbe lei): da qui (0,3,0). `:not([hidden])` fa si' che la barra
   nascosta dal JS resti nascosta anche in questa fascia. */
@media (min-width: 768px) and (max-width: 1023px) {
	.pf-sb.pf-sb--wide:not([hidden]) {
		display: flex;
	}
}

/* --------------------------------------------------------------------------
   Barra prodotto sostituita dalla barra del finder (Finder\Placements)

   fintable.css riserva 80px in fondo alla recensione per la barra CTA del
   prodotto (<1024px). Quando Placements la sostituisce, in pagina c'e' la
   radice .pf--sticky e la barra prodotto non esiste: la riserva torna al
   padding base della scheda (24px), e lo spazio per la barra del finder lo
   aggiunge finder.js (76px) solo mentre e' visibile. La classe sul <body>
   esce prima della decisione di Placements, da qui :has().
   -------------------------------------------------------------------------- */

@media (max-width: 1023px) {
	body.ft-prodotto-single:has(.pf--sticky) .ft-prodotto-single {
		padding-bottom: 24px;
	}
}

/* --------------------------------------------------------------------------
   Picker nella hero della home (Finder\Placements::hero)

   Sul fondo scuro della hero si presenta come il widget Top 3 che sostituisce
   (.ft-home-hero__aside .ft-widget in fintable.css): niente bordo, raggio 14,
   stessa ombra. Su mobile i sei tile sono impilati: si compattano per non
   allungare troppo la hero.
   -------------------------------------------------------------------------- */

.ft-home-hero__aside .pf-box {
	border: 0;
	border-radius: 14px;
	box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
}

@media (max-width: 767px) {
	.ft-home-hero__aside .pf-tiles {
		gap: 8px;
	}

	.ft-home-hero__aside .pf-tile {
		min-height: 52px;
		padding: 9px 12px;
	}

	.ft-home-hero__aside .pf-tile__ic {
		width: 32px;
		height: 32px;
	}
}

/* --------------------------------------------------------------------------
   Desktop
   -------------------------------------------------------------------------- */

@media (min-width: 768px) {
	.pf-box__hd {
		padding: 20px 24px 0;
	}

	.pf-box__bd {
		padding: 16px 24px 22px;
	}

	.pf-box__ft {
		padding: 12px 24px;
	}

	.pf-box__t {
		font-size: 21px;
	}

	.pf-tiles {
		grid-template-columns: 1fr 1fr;
	}

	.pf-ib {
		display: flex;
		align-items: center;
		gap: 24px;
		padding: 20px 24px;
	}

	/* Il testo prende tutto lo spazio libero e il bottone resta a destra.
	   Con il flex di default (0 1 auto) il testo si fermava alla sua
	   larghezza naturale: bottone attaccato e vuoto a destra. */
	.pf-ib__tx {
		flex: 1 1 auto;
		min-width: 0;
	}

	.pf-ib .pf-btn {
		flex: 0 0 auto;
		width: auto;
		margin-left: auto;
		white-space: nowrap;
	}

	/* La barra sticky è un pattern solo mobile. */
	.pf-sb {
		display: none;
	}

	.pf-dr {
		inset: 0 0 0 auto;
		width: 480px;
		max-width: 100%;
		border-radius: 0;
		box-shadow: -24px 0 60px -30px rgba(6, 24, 47, 0.5);
	}

	.pf-dr__inner {
		height: 100dvh;
	}

	.pf-dr__handle {
		display: none;
	}

	.pf-dr__hd {
		min-height: 72px;
		padding: 0 16px 0 28px;
	}

	.pf-dr__bd {
		padding: 28px;
	}

	.pf-dr__ft {
		padding: 16px 28px 24px;
	}

	.pf-q {
		font-size: 21px;
	}

	.pf-main__body,
	.pf-alt {
		padding: 20px 24px;
	}

	.pf-strip__a {
		width: auto;
	}
}
