		.nsn-category-page { padding: 1.5rem 3rem 4rem; }
		.nsn-cat-breadcrumb { font-size: 0.8rem; color: var(--nsn-text-muted); margin-bottom: 0.75rem; }
		.nsn-cat-breadcrumb a { color: var(--nsn-text-muted); text-decoration: none; }
		.nsn-cat-breadcrumb a:hover { color: var(--wp--preset--color--contrast, #23282d); }
		.nsn-category-header {
			display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap;
			gap: 1rem; margin-bottom: 1.5rem; padding-bottom: 1rem; border-bottom: 1px solid var(--wp--preset--color--border, #ebebeb);
		}
		.nsn-category-title { margin: 0; font-size: 1.75rem; }
		.nsn-category-count { color: var(--nsn-text-muted); font-weight: 400; font-size: 1.1rem; }
		.nsn-category-header-actions { display: flex; align-items: center; gap: 1.5rem; }
		.nsn-filters-toggle {
			display: flex; align-items: center; gap: 0.5rem; background: none; border: none;
			font-size: 0.9rem; font-weight: 600; cursor: pointer; color: var(--wp--preset--color--contrast, #23282d);
		}
		.nsn-filters-toggle-label-show { display: none; }
		.nsn-filters-hidden .nsn-filters-toggle-label-hide { display: none; }
		.nsn-filters-hidden .nsn-filters-toggle-label-show { display: inline; }
		.nsn-category-sort { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9rem; }
		.nsn-category-sort-select { border: 1px solid var(--wp--preset--color--border, #ebebeb); padding: 0.4rem 0.6rem; font-family: inherit; background: var(--nsn-white); }
		.nsn-category-body { display: flex; gap: 2.5rem; align-items: flex-start; }
		.nsn-category-sidebar { flex: 0 0 220px; }
		.nsn-category-page.nsn-filters-hidden .nsn-category-sidebar { display: none; }
		/* Campo di ricerca in cima alla sidebar filtri (categoria e pagina
		   risultati) - richiesta esplicita dell'utente 2026-08-14. */
		.nsn-sidebar-search {
			display: flex; align-items: stretch; gap: 0; margin-bottom: 1.5rem;
			border: 1px solid var(--wp--preset--color--border, #ebebeb);
		}
		.nsn-sidebar-search input[type="search"] {
			flex: 1 1 auto; min-width: 0; border: none; padding: 0.65rem 0.8rem;
			font-family: inherit; font-size: 0.9rem; background: var(--nsn-white);
		}
		.nsn-sidebar-search input[type="search"]:focus { outline: none; }
		.nsn-sidebar-search button {
			flex-shrink: 0; display: flex; align-items: center; justify-content: center;
			width: 2.6rem; border: none; border-left: 1px solid var(--wp--preset--color--border, #ebebeb);
			background: var(--wp--preset--color--subtle, #ebebeb); color: var(--wp--preset--color--contrast, #23282d);
			cursor: pointer;
		}
		.nsn-sidebar-search button:hover { background: var(--nsn-c1, var(--wp--preset--color--contrast, #23282d)); color: var(--nsn-c1-testo, var(--nsn-white)); }
		.nsn-cat-sidebar-list { list-style: none; margin: 0 0 1.5rem; padding: 0; }
		.nsn-cat-sidebar-list li { margin-bottom: 0.7rem; }
		.nsn-cat-sidebar-list a { color: var(--wp--preset--color--contrast, #23282d); text-decoration: none; font-size: 0.95rem; font-weight: 600; }
		.nsn-cat-sidebar-list a:hover, .nsn-cat-sidebar-list a.is-current { color: var(--wp--preset--color--accent, #26649d); }
		.nsn-filter-group { border-bottom: 1px solid var(--wp--preset--color--border, #ebebeb); padding: 0.9rem 0; }
		.nsn-filter-group-toggle {
			display: flex; align-items: center; justify-content: space-between; width: 100%;
			background: none; border: none; font-size: 0.9rem; font-weight: 600; cursor: pointer;
			color: var(--wp--preset--color--contrast, #23282d); padding: 0; font-family: inherit;
		}
		.nsn-filter-group-body { margin-top: 0.8rem; display: flex; flex-direction: column; gap: 0.6rem; }
		/* Su desktop i gruppi filtro sono aperti di default: la classe
		   ".nsn-toggled" (aggiunta dal click, vedi category-page.js) li
		   chiude. Il significato si inverte sotto i 900px (vedi media query
		   piu' in basso), stesso meccanismo gia' usato per il pannello
		   filtri generale. */
		.nsn-filter-group-body.nsn-toggled { display: none; }
		.nsn-filter-option { display: flex; align-items: center; gap: 0.55rem; font-size: 0.88rem; cursor: pointer; color: var(--nsn-black-hover); margin-bottom: 0.5rem; }
		.nsn-filter-option input { margin: 0; }
		.nsn-filter-option-count { margin-left: auto; color: var(--nsn-text-faint); font-size: 0.8rem; }
		/* Oltre i primi 10 termini di un filtro (es. Marchio, Tema), le opzioni restano
		   nel markup ma nascoste finche' non si preme "Mostra altri": una spunta gia'
		   attiva su un'opzione oltre la decima (da una ricerca precedente) resta comunque
		   visibile, per non nascondere un filtro attivo senza spiegazione. */
		.nsn-filter-option--extra { display: none; }
		.nsn-filter-group-body.is-expanded .nsn-filter-option--extra { display: flex; }
		.nsn-filter-option--extra:has(input:checked) { display: flex; }
		.nsn-filter-more {
			display: block; background: none; border: none; padding: 0; margin-top: 0.2rem;
			font-size: 0.82rem; font-weight: 600; color: var(--wp--preset--color--accent, #26649d);
			cursor: pointer; font-family: inherit;
		}
		.nsn-filter-group-body.is-expanded .nsn-filter-more { display: none; }
		.nsn-category-results { flex: 1; min-width: 0; }
		.nsn-product-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem 1.25rem; }
		.nsn-product-card { position: relative; background: var(--nsn-white); display: flex; flex-direction: column; }
		.nsn-product-card-media { display: block; position: relative; aspect-ratio: 1/1; overflow: hidden; background: var(--wp--preset--color--subtle, #ebebeb); }
		.nsn-product-card-media img, .nsn-product-card-media .nsn-product-media { width: 100%; height: 100%; object-fit: cover; display: block; }
		.nsn-product-media { position: relative; }
		.nsn-product-media__img--secondary { position: absolute; inset: 0; opacity: 0; transition: opacity 0.25s ease; }
		.nsn-product-card:hover .nsn-product-media__img--secondary { opacity: 1; }
		/* Senza mouse la seconda foto non si vede mai; non si scarica grazie al picture di nsn_product_media(). */
		@media (hover: none) { .nsn-product-card-media .nsn-product-media__img--secondary { display: none; } }
		.nsn-product-card .nsn-wishlist-btn-wrap { position: absolute; top: 0.7rem; right: 0.7rem; left: auto; z-index: 2; }
		.nsn-product-card-info { padding: 0.9rem 0.2rem; }
		.nsn-product-badge {
			display: inline-block; font-size: 0.72rem; font-weight: 700; text-transform: uppercase;
			letter-spacing: 0.03em; margin-bottom: 0.4rem;
		}
		.nsn-product-badge--sale, .nsn-product-badge--new { color: var(--wp--preset--color--accent, #26649d); }
		.nsn-product-card-name {
			display: block; margin: 0 0 0.2rem; padding: 0;
			font-size: 1rem; font-weight: 600; font-family: inherit; line-height: inherit; letter-spacing: normal;
		}
		.nsn-product-card-name a { display: block; color: var(--wp--preset--color--contrast, #23282d); text-decoration: none; }
		.nsn-product-card-name a:hover { color: var(--wp--preset--color--accent, #26649d); }
		.nsn-product-card-subtitle { margin: 0 0 0.4rem; color: var(--nsn-text-muted); font-size: 0.85rem; }
		.nsn-product-card-price { font-weight: 600; }
		.nsn-product-card-price del { opacity: 0.55; font-weight: 400; margin-right: 0.4em; }
		.nsn-product-card-price ins { text-decoration: none; color: var(--wp--preset--color--accent, #26649d); }
		.nsn-category-empty { padding: 3rem 0; text-align: center; color: var(--nsn-text-muted); }
		.nsn-load-more {
			display: block; margin: 2.5rem auto 0; background: none; border: 1px solid var(--wp--preset--color--contrast, #23282d);
			padding: 0.8rem 2.5rem; font-size: 0.85rem; letter-spacing: 0.05em; text-transform: uppercase;
			cursor: pointer;
		}
		.nsn-load-more:hover { background: var(--nsn-c1, var(--wp--preset--color--contrast, #23282d)); color: var(--nsn-c1-testo, var(--nsn-white)); }

		@media (max-width: 900px) {
			.nsn-category-page { padding: 1rem 1rem 3rem; }
			.nsn-category-body { flex-direction: column; }
			.nsn-category-sidebar { flex: none; width: 100%; }
			.nsn-product-grid { grid-template-columns: repeat(2, 1fr); }
			/* Su mobile resta solo il menu a tendina "Ordina per": l'etichetta
			   di testo davanti occupa spazio prezioso nell'header categoria,
			   gia' stretto insieme al pulsante filtri (richiesta esplicita
			   dell'utente 2026-08-10). */
			.nsn-category-sort-label { display: none; }
			/* Il dropdown va spinto a destra della riga (richiesta esplicita
			   dell'utente 2026-08-10), non lasciato accanto al pulsante filtri
			   a meta' riga. "width:100%" necessario: senza, il contenitore si
			   stringe al contenuto (296px su 343 disponibili nel test), lo
			   "space-between" non ha spazio extra da distribuire e il dropdown
			   resta a meta' riga invece che a destra (bug reale verificato). */
			.nsn-category-header-actions { justify-content: space-between; width: 100%; }
			/* Filtri chiusi di default su mobile, aperti di default su desktop
			   (richiesta esplicita dell'utente 2026-08-10): qui si inverte sia
			   lo stato iniziale della sidebar sia il significato della classe
			   ".nsn-filters-hidden" (su desktop "presente" = nascosti, qui
			   "presente" = mostrati), cosi' un solo classList.toggle() in JS
			   basta per entrambi i comportamenti senza rilevare il viewport. */
			.nsn-category-sidebar { display: none; }
			.nsn-category-page.nsn-filters-hidden .nsn-category-sidebar { display: block; }
			.nsn-filters-toggle-label-show { display: inline; }
			.nsn-filters-toggle-label-hide { display: none; }
			.nsn-filters-hidden .nsn-filters-toggle-label-show { display: none; }
			.nsn-filters-hidden .nsn-filters-toggle-label-hide { display: inline; }
			/* Stessa inversione dei gruppi filtro (Categorie, Tonalita', Marchio,
			   ecc.): chiusi di default su mobile, aperti di default su desktop
			   (richiesta esplicita dell'utente 2026-08-10, ribadita piu' volte:
			   "restano aperti, solo su mobile"). ".nsn-toggled" qui apre invece
			   di chiudere, significato invertito rispetto alla regola base sopra
			   la media query. */
			.nsn-filter-group-body { display: none; }
			.nsn-filter-group-body.nsn-toggled { display: flex; }
		}
		@media (max-width: 480px) {
			.nsn-product-grid { grid-template-columns: repeat(2, 1fr); gap: 1px; }
			.nsn-category-title { font-size: 1.35rem; }
		}

/* Pallini colore nella card di catalogo (2026-09-07).
   Il filtro colore include i colori ordinabili, non solo quello in foto:
   senza questi pallini un risultato "Nero" con foto bianca sembra un errore. */
.nsn-card-colors {
	display: flex;
	gap: 5px;
	margin: 6px 0 0;
	padding: 0;
	list-style: none;
}

.nsn-card-color {
	width: 13px;
	height: 13px;
	border-radius: 50%;
	background: var(--c);
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .25);
	flex: 0 0 auto;
}
