		.nsn-carousel__header { display: flex; align-items: flex-end; justify-content: space-between; padding: 0 2rem; margin-bottom: 1.25rem; gap: 1rem; }
		.nsn-carousel__header-actions { display: flex; align-items: center; gap: 0.75rem; }
		.has-contrast-background-color .nsn-carousel__title,
		.has-contrast-background-color .nsn-carousel__description,
		.has-contrast-background-color .nsn-carousel__viewall { color: var(--nsn-white); }
		.nsn-carousel__title { margin: 0; }
		.nsn-carousel__description { margin: 0.35rem 0 0; opacity: 0.75; max-width: 45em; }
		.nsn-carousel__viewall { border: 1px solid currentColor; padding: 0.6em 1.2em; font-size: 0.8rem; letter-spacing: 0.05em; text-decoration: none; white-space: nowrap; }
		.nsn-carousel__viewport { position: relative; }
		.nsn-carousel__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -ms-overflow-style: none; }
		.nsn-carousel__track::-webkit-scrollbar { display: none; }
		.nsn-carousel__item { position: relative; flex: 0 0 25%; scroll-snap-align: start; text-decoration: none; color: inherit; box-sizing: border-box; padding: 0 0.75rem; }
		.nsn-carousel__lead {
			position: sticky; left: 0; z-index: 3; flex: 0 0 22%;
			scroll-snap-align: start; text-decoration: none; color: var(--nsn-white);
			aspect-ratio: 1/1; display: block;
		}
		.nsn-carousel__lead img { width: 100%; height: 100%; object-fit: cover; display: block; }
		.nsn-carousel__lead::after {
			content: ""; position: absolute; inset: 0;
			background: linear-gradient(0deg, rgba(0,0,0,0.75), rgba(0,0,0,0) 55%);
		}
		.nsn-carousel__lead::before {
			content: ""; position: absolute; top: 0; bottom: 0; left: 100%; width: 34px; z-index: 2;
			background: linear-gradient(90deg, rgba(0,0,0,0.85), rgba(0,0,0,0));
			pointer-events: none;
		}
		.nsn-carousel__lead-title {
			position: absolute; left: 1.1rem; right: 2.8rem; bottom: 1rem; z-index: 1;
			font-weight: 700; font-size: 1.05rem; line-height: 1.2;
		}
		.nsn-carousel__lead-arrow {
			position: absolute; right: 1rem; bottom: 1rem; z-index: 1;
			width: 2rem; height: 2rem; border-radius: 50%; background: rgba(255,255,255,0.9); color: var(--wp--preset--color--contrast, #23282d);
			display: flex; align-items: center; justify-content: center;
		}
		.nsn-carousel__item a { text-decoration: none; color: inherit; }
		.nsn-carousel__item .nsn-wishlist-btn-wrap { top: 0.6rem; left: 1.1rem; right: auto; z-index: 1; }
		.nsn-carousel__lead + .nsn-carousel__item .nsn-wishlist-btn-wrap { left: 2.75rem; }
		.nsn-carousel__image { position: relative; aspect-ratio: 1/1; overflow: hidden; }
		.nsn-carousel__image img, .nsn-carousel__image .nsn-product-media { width: 100%; height: 100%; object-fit: cover; display: block; }
		.nsn-carousel__image .nsn-product-media { position: relative; }
		.nsn-carousel__image .nsn-product-media__img--secondary { position: absolute; inset: 0; opacity: 0; transition: opacity 0.25s ease; }
		.nsn-carousel__item: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-carousel__image .nsn-product-media__img--secondary { display: none; } }
		.nsn-carousel__image::after {
			content: ""; position: absolute; inset: 0; pointer-events: none;
			background: linear-gradient(0deg, rgba(0,0,0,0.72), rgba(0,0,0,0) 50%);
		}
		.nsn-carousel__item-info { position: absolute; left: 0.9rem; right: 0.9rem; bottom: 0.8rem; z-index: 1; }
		.nsn-carousel__name { color: var(--nsn-white); font-size: 0.95rem; margin-bottom: 0.3rem; line-height: 1.25; }
		.nsn-carousel__price { color: var(--nsn-white); }
		.nsn-carousel__price del { color: var(--nsn-white); opacity: 0.6; margin-right: 0.5em; }
		.nsn-carousel__price ins { text-decoration: none; color: var(--wp--preset--color--accent, #26649d); font-weight: 600; }
		.nsn-carousel__arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 2.5rem; height: 2.5rem; border: none; background: rgba(255,255,255,0.9); font-size: 1.5rem; line-height: 1; cursor: pointer; border-radius: 50%; box-shadow: 0 1px 4px rgba(0,0,0,0.15); }
		.nsn-carousel__arrow--prev { left: 0.5rem; }
		.nsn-carousel__arrow--next { right: 0.5rem; }

		.nsn-tabs__nav { display: flex; flex-wrap: wrap; gap: 0 2rem; padding: 0 2rem; margin-bottom: 1.75rem; }
		.nsn-tabs__btn {
			background: none; border: none; outline: none; box-shadow: none; cursor: pointer; font-family: inherit;
			padding: 1.25rem 0.1rem; margin-bottom: -1px; font-size: 1rem; font-weight: 700;
			color: rgba(255,255,255,0.55); border-bottom: 2px solid transparent;
		}
		.nsn-tabs__btn.is-active { color: var(--nsn-white); border-bottom-color: var(--nsn-white); }
		.nsn-tabs__btn:hover { color: var(--nsn-white); }
		/* Etichette brevi (titolo sezione + nome tab) mostrate solo sotto i 600px, dove le
		   versioni intere ("Jeans Personalizzati", "Scarpe Personalizzate"...) andavano a capo
		   in modo scomposto. Sopra i 600px restano le versioni intere di sempre. */
		.nsn-tabs__title-short, .nsn-tabs__btn-short { display: none; }
		.nsn-tabs__btn:focus-visible { border-bottom-color: rgba(255,255,255,0.6); }
		.nsn-tabs__panel { display: none; }
		.nsn-tabs__panel.is-active { display: block; }
		.nsn-tabs__description { padding: 0 2rem; margin: 0 0 1.25rem; }
		.nsn-tabs__title { padding: 0 2rem; margin: 0 0 1.5rem; }

		@media (min-width: 1025px) {
			.nsn-carousel__header, .nsn-carousel__viewport { max-width: 80%; margin-left: auto; margin-right: auto; }
			.nsn-carousel__header { padding: 0; }
			.nsn-carousel__arrow--prev { left: -4rem; }
			.nsn-carousel__arrow--next { right: -4rem; }
			.nsn-tabs__nav, .nsn-tabs__description, .nsn-tabs__title { max-width: 80%; margin-left: auto; margin-right: auto; padding-left: 0; padding-right: 0; }
		}
		@media (max-width: 1024px) { .nsn-carousel__item { flex-basis: 45%; } .nsn-carousel__lead { flex-basis: 38%; } }
		@media (max-width: 600px) {
			.nsn-carousel__item { flex-basis: 80%; }
			/* Card categoria fissa ("Jeans Personalizzati" con foto): tolta del tutto su
			   mobile, richiesto esplicitamente piu volte. Resta solo su desktop. */
			.nsn-carousel__lead { display: none; }
			/* Padding laterale a 2rem, non 1rem: deve combaciare col resto della pagina su
			   mobile (banner USP e footer sono a 2rem), altrimenti il bordo sinistro del
			   testo salta da 32px a 16px passando da una sezione all altra della stessa
			   pagina, un disallineamento visibile scorrendo. */
			.nsn-carousel__header { padding: 0 2rem; flex-direction: column; align-items: flex-start; }
			.nsn-carousel__header-actions { margin-top: 0.5rem; }
			/* Tab "Selezionati per te": su mobile il gap di 2rem tra le tab e il padding
			   verticale generoso dei bottoni le facevano sembrare sparse/rotte quando
			   andavano a capo. Compattate. */
			.nsn-tabs__nav { padding: 0 2rem; gap: 0.5rem 1.25rem; margin-bottom: 1.25rem; }
			.nsn-tabs__btn { padding: 0.5rem 0.1rem; font-size: 0.9rem; }
			.nsn-tabs__title { padding: 0 2rem; margin: 0 0 1rem; }
			.nsn-tabs__description { padding: 0 2rem; margin: 0 0 1rem; }
			.nsn-tabs__title-full, .nsn-tabs__btn-full { display: none; }
			.nsn-tabs__title-short, .nsn-tabs__btn-short { display: inline; }
		}
		/* Le tre sezioni homepage ("I più Richiesti"/"Questa Estate" = [nsn_carousel], "Selezionati
		   per te" = [nsn_category_tabs]) hanno 8rem di padding verticale fisso nel blocco gruppo che
		   le contiene (stile inline dal post_content, non una nostra classe): ottimo su desktop, troppo
		   su mobile. !important necessario per battere lo stile inline. Solo top/bottom, il padding
		   laterale (2rem) resta invariato. */
		@media (max-width: 600px) {
			.wp-block-group:has(> .nsn-carousel),
			.wp-block-group:has(> .nsn-tabs) { padding-top: 3rem !important; padding-bottom: 3rem !important; }
		}
