/* =========================================================
   Manzo B2B — UI affordances quando il prezzo è gated o
   quando lo staff consulta la matrice dei listini.
   Token coerenti col resto del design system.
   ========================================================= */

/* ---------- Messaggio "logga per vedere" ---------- */
.mz-b2b-noprice {
	display: inline-flex;
	align-items: center;
	gap: var(--s-2);
	padding: var(--s-3) var(--s-4);
	background: var(--paper-2);
	border: 1px dashed var(--border);
	border-radius: var(--r-2);
	font-size: var(--t-sm);
	line-height: 1.35;
	color: var(--ink-2);
	max-width: 100%;
}

.mz-b2b-noprice__link {
	color: var(--brand);
	text-decoration: none;
	font-weight: 600;
}

.mz-b2b-noprice__link:hover,
.mz-b2b-noprice__link:focus-visible {
	text-decoration: underline;
}

/* CTA accedi nelle archive card (sostituisce il bottone aggiungi-al-carrello) */
.mz-b2b-login-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--s-3) var(--s-4);
	background: var(--paper-2);
	color: var(--ink-1);
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	font-weight: 600;
	font-size: var(--t-sm);
	text-decoration: none;
	transition: background-color 150ms ease-out, border-color 150ms ease-out, color 150ms ease-out;
}

.mz-b2b-login-cta:hover,
.mz-b2b-login-cta:focus-visible {
	background: var(--ink-1);
	border-color: var(--ink-1);
	color: var(--paper);
}

/* ---------- Tab Staff (single product) ----------
   Layout "dashboard a colpo d'occhio": ogni listino è uno stallo
   verticale (label piccola sopra, prezzo grande sotto, tag minuto
   in fondo) allineato in griglia auto-fill. UBI come riga di tre
   blocchi key/val/price. Multicodice come chip con lente. Le classi
   .mz-staff-tab__table/__row/__price/__empty NON sono più definite
   qui: l'order-history-tab ha ora le proprie regole più sotto.
   ---------------------------------------------------------- */
.mz-staff-tab {
	border-top: 1px solid var(--ink-1);
	padding-top: var(--s-5);
	display: flex;
	flex-direction: column;
	gap: var(--s-6);
}

.mz-staff-tab__group {
	display: flex;
	flex-direction: column;
	gap: var(--s-3);
}

.mz-staff-tab__eyebrow {
	display: inline-flex;
	align-items: baseline;
	gap: var(--s-2);
	font: 600 var(--t-xs)/1.2 var(--ff-mono);
	letter-spacing: var(--tr-label);
	text-transform: uppercase;
	color: var(--ink-3);
}

.mz-staff-tab__count {
	font: 500 var(--t-xs)/1 var(--ff-mono);
	font-variant-numeric: tabular-nums;
	color: var(--ink-2);
	background: var(--paper-3);
	padding: 2px 6px;
	border-radius: var(--r-1);
	text-transform: none;
	letter-spacing: 0;
}

/* ---- Griglia listini (Pubblico + L2..L10) ---- */
.mz-staff-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
	gap: 0;
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	overflow: hidden;
	background: var(--paper);
}

.mz-staff-stall {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: var(--s-3) var(--s-3) var(--s-2);
	border-right: 1px solid var(--border);
	border-bottom: 1px solid var(--border);
	background: var(--paper);
	min-width: 0;
}

.mz-staff-stall:last-child { border-right: 0; }

.mz-staff-stall__label {
	font: 600 var(--t-xs)/1 var(--ff-mono);
	letter-spacing: var(--tr-label);
	text-transform: uppercase;
	color: var(--ink-3);
}

.mz-staff-stall__price {
	font: 700 var(--t-md)/1.1 var(--ff-mono);
	font-variant-numeric: tabular-nums;
	color: var(--ink-1);
	white-space: nowrap;
}

.mz-staff-stall__price .woocommerce-Price-amount {
	color: inherit;
}

.mz-staff-stall__empty {
	font-style: italic;
	color: var(--ink-3);
	font-weight: 400;
}

.mz-staff-stall__tag {
	font: 600 9px/1 var(--ff-mono);
	letter-spacing: var(--tr-label);
	text-transform: uppercase;
	color: var(--ink-3);
	margin-top: 2px;
}

.mz-staff-stall__tag--b2b {
	color: var(--success);
}

.mz-staff-stall--b2b {
	background: color-mix(in oklch, var(--success) 4%, var(--paper));
}

.mz-staff-stall--empty-row {
	background: var(--paper);
}

.mz-staff-stall--empty-row .mz-staff-stall__price {
	color: var(--ink-3);
	font-weight: 500;
}

/* ---- UBI: 3 blocchi affiancati ---- */
.mz-staff-ubi {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 0;
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	overflow: hidden;
}

.mz-staff-ubi__item {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: baseline;
	gap: var(--s-2);
	padding: var(--s-3) var(--s-4);
	border-right: 1px solid var(--border);
	background: var(--paper);
}

.mz-staff-ubi__item:last-child { border-right: 0; }

.mz-staff-ubi__item--empty {
	background: var(--paper);
}

.mz-staff-ubi__key {
	font: 600 var(--t-xs)/1 var(--ff-mono);
	letter-spacing: var(--tr-label);
	text-transform: uppercase;
	color: var(--ink-3);
}

.mz-staff-ubi__val {
	font: 500 var(--t-sm)/1.1 var(--ff-mono);
	color: var(--ink-1);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.mz-staff-ubi__price {
	font: 700 var(--t-sm)/1 var(--ff-mono);
	font-variant-numeric: tabular-nums;
	color: var(--ink-1);
	justify-self: end;
	white-space: nowrap;
}

.mz-staff-ubi__price .woocommerce-Price-amount {
	color: inherit;
}

.mz-staff-ubi__empty {
	font-style: italic;
	color: var(--ink-3);
	font-weight: 400;
}

/* ---- Multicodice: chip con lente ---- */
.mz-staff-tab__codes {
	display: flex;
	flex-wrap: wrap;
	gap: var(--s-2);
	margin: 0;
	padding: 0;
	list-style: none;
}

.mz-staff-code {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 4px 4px 4px 8px;
	border: 1px solid var(--border);
	border-radius: var(--r-1);
	background: var(--paper);
	font: 500 var(--t-xs)/1 var(--ff-mono);
	color: var(--ink-1);
	white-space: nowrap;
	transition: border-color 120ms var(--ease, ease-out);
}

.mz-staff-code:hover {
	border-color: var(--ink-2);
}

.mz-staff-code__val {
	font-variant-numeric: tabular-nums;
}

.mz-staff-code__search {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	border-radius: var(--r-1);
	color: var(--ink-3);
	text-decoration: none;
	transition: background-color 120ms var(--ease, ease-out), color 120ms var(--ease, ease-out);
}

.mz-staff-code__search:hover,
.mz-staff-code__search:focus-visible {
	background: var(--ink-1);
	color: var(--paper);
	outline: none;
}

@media (max-width: 560px) {
	.mz-staff-grid {
		grid-template-columns: repeat(3, 1fr);
	}
	.mz-staff-ubi {
		grid-template-columns: 1fr;
	}
	.mz-staff-ubi__item {
		border-right: 0;
		border-bottom: 1px solid var(--border);
	}
	.mz-staff-ubi__item:last-child { border-bottom: 0; }
}

/* ---------- Tab "Ultimi ordini" (single product, B2B) ----------
   Tabella full-width via single-product.css. Stesso peso visivo
   di .mz-info e .mz-spec: border collassato, eyebrow mono, niente
   header proprio (il titolo è già nel tab nav).
   ------------------------------------------------------------ */
.mz-order-history-tab {
	padding-top: var(--s-2);
}

.mz-order-history-tab__table {
	width: 100%;
	border-collapse: collapse;
	border-top: 1px solid var(--ink-1);
	border-bottom: 1px solid var(--ink-1);
}

.mz-order-history-tab__table thead th {
	padding: var(--s-3) var(--s-4) var(--s-3) 0;
	font: 600 var(--t-xs)/1.4 var(--ff-mono);
	letter-spacing: var(--tr-label);
	text-transform: uppercase;
	color: var(--ink-3);
	text-align: left;
	border-bottom: 1px solid var(--border-strong);
	background: transparent;
}

.mz-order-history-tab__table tbody tr {
	border-bottom: 1px solid var(--border);
}

.mz-order-history-tab__table tbody tr:last-child {
	border-bottom: 0;
}

.mz-order-history-tab__table td {
	padding: var(--s-3) var(--s-4) var(--s-3) 0;
	text-align: left;
	vertical-align: middle;
	font-size: var(--t-sm);
	color: var(--ink-1);
}

.mz-order-history-tab__row--cancelled td {
	color: var(--ink-3);
}

.mz-order-history-tab__price {
	font: 600 var(--t-sm)/1 var(--ff-mono);
	font-variant-numeric: tabular-nums;
}

@media (max-width: 560px) {
	.mz-order-history-tab__table {
		display: block;
		overflow-x: auto;
		white-space: nowrap;
	}
}

.mz-order-history-tab__link {
	color: var(--brand);
	text-decoration: none;
	font: 600 var(--t-sm)/1 var(--ff-mono);
	font-variant-numeric: tabular-nums;
}
.mz-order-history-tab__link:hover,
.mz-order-history-tab__link:focus-visible {
	text-decoration: underline;
}

.mz-order-history-tab__date {
	font-variant-numeric: tabular-nums;
	color: var(--ink-2);
}

.mz-order-history-tab__qty {
	font: 600 var(--t-sm)/1 var(--ff-mono);
	font-variant-numeric: tabular-nums;
}

.mz-order-history-tab__status {
	display: inline-flex;
	align-items: center;
	padding: 3px 8px;
	font: 600 var(--t-xs)/1 var(--ff-mono);
	letter-spacing: var(--tr-label);
	text-transform: uppercase;
	border-radius: var(--r-1);
	background: var(--paper-3);
	color: var(--ink-3);
}

.mz-order-history-tab__status--completed {
	background: color-mix(in oklch, var(--success) 12%, transparent);
	color: var(--success);
}

.mz-order-history-tab__status--processing {
	background: color-mix(in oklch, var(--accent) 10%, transparent);
	color: var(--accent-ink);
}

.mz-order-history-tab__empty {
	color: var(--ink-3);
	font-size: var(--t-sm);
	font-style: italic;
	margin: var(--s-4) 0 0;
}

/* =========================================================
   Dropdown account — preferenze B2B
   Allineato a .mz-account-menu (assets/css/components/site-header.css):
   stessi token (--paper-2, --ink-*, --border-soft, --s-*, --t-*),
   stesso peso visivo delle altre voci. Nessuna card colorata.
   ========================================================= */
.mz-account-menu__divider {
	height: 1px;
	margin: var(--s-2) 0;
	background: var(--border-soft);
	list-style: none;
}

.mz-account-menu__prefs {
	list-style: none;
	margin: 0;
	padding: 6px 10px 4px;
	position: relative;
	transition: opacity var(--d-1) var(--ease);
}
.mz-account-menu__prefs.is-saving {
	opacity: 0.55;
	pointer-events: none;
	cursor: wait;
}

.mz-account-menu__prefs-head {
	font-size: var(--t-xs, 11px);
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--ink-3);
	margin-bottom: var(--s-2);
}

.mz-account-menu__pref + .mz-account-menu__pref {
	margin-top: var(--s-3);
}

.mz-account-menu__pref-label {
	display: block;
	font-size: var(--t-sm);
	font-weight: 500;
	color: var(--ink-2);
	margin-bottom: 6px;
}

.mz-account-menu__pref-hint {
	margin: 4px 0 0;
	font-size: var(--t-xs, 11px);
	color: var(--ink-3);
	line-height: 1.35;
}

/* Segmented control — pill sottile, tipografia tema */
.mz-segctl {
	display: inline-flex;
	background: transparent;
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	padding: 2px;
	gap: 2px;
	width: 100%;
}

.mz-segctl__btn {
	flex: 1 1 auto;
	border: 0;
	background: transparent;
	padding: 4px 8px;
	font-size: var(--t-xs, 11px);
	font-weight: 500;
	color: var(--ink-2);
	border-radius: calc(var(--r-2) - 2px);
	cursor: pointer;
	transition: background-color var(--d-1) var(--ease), color var(--d-1) var(--ease);
	white-space: nowrap;
	line-height: 1.4;
}

.mz-segctl__btn:hover {
	background: var(--paper-3);
	color: var(--ink-1);
}

.mz-segctl__btn.is-on {
	background: var(--paper-3);
	color: var(--ink-1);
	font-weight: 600;
	box-shadow: inset 0 0 0 1px var(--border-strong);
}

.mz-segctl__btn:focus-visible {
	outline: 2px solid var(--border-focus);
	outline-offset: 1px;
}

/* Toggle — track tenue off / brand on, thumb sempre chiaro */
.mz-toggle {
	display: inline-flex;
	align-items: flex-start;
	gap: var(--s-2);
	cursor: pointer;
	font-size: var(--t-sm);
	color: var(--ink-2);
	line-height: 1.35;
}

.mz-toggle__input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.mz-toggle__track {
	width: 30px;
	height: 18px;
	background: var(--border-strong);
	border-radius: 999px;
	position: relative;
	flex-shrink: 0;
	transition: background-color var(--d-2) var(--ease);
	margin-top: 1px;
}

.mz-toggle__thumb {
	position: absolute;
	top: 2px;
	left: 2px;
	width: 14px;
	height: 14px;
	background: var(--ink-on-dark);
	border-radius: 50%;
	transition: transform var(--d-2) var(--ease);
}

.mz-toggle__input:checked + .mz-toggle__track {
	background: var(--brand);
}

.mz-toggle__input:checked + .mz-toggle__track .mz-toggle__thumb {
	transform: translateX(12px);
}

.mz-toggle__input:focus-visible + .mz-toggle__track {
	outline: 2px solid var(--border-focus);
	outline-offset: 2px;
}

.mz-toggle__label {
	flex: 1;
}

/* =========================================================
   Display prezzi B2B — IVA inclusa / esclusa / entrambi
   ========================================================= */
.mz-b2b-price {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
}

.mz-b2b-price--both {
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
}

.mz-b2b-price__primary {
	font-weight: 600;
	color: var(--ink-1);
}

.mz-b2b-price__secondary {
	font-size: .85em;
	color: var(--ink-3);
}

.mz-b2b-price__suffix,
.mz-b2b-price small {
	font-size: .72em;
	color: var(--ink-3);
	font-weight: 500;
}

/* Retail mode (hide prices ON) */
.mz-b2b-retail {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
}

.mz-b2b-retail__hint {
	font-size: .68em;
	color: var(--ink-3);
	font-weight: 500;
	letter-spacing: .02em;
}

.mz-b2b-hidden {
	color: var(--ink-3);
	font-style: italic;
}

/* =========================================================
   Pagina my-account → /impostazioni-b2b/
   Allineata al pattern delle altre sezioni "Officina": tipografia
   tema, niente card colorate, indici mono, descrizioni in --ink-2.
   ========================================================= */
.mz-b2b-prefs-page__lead {
	max-width: 70ch;
	color: var(--ink-2);
	font-size: var(--t-md, var(--t-sm));
	line-height: 1.55;
	margin: 0 0 var(--s-6, var(--s-5));
}

.mz-b2b-prefs-form__group {
	border: 0;
	padding: 0;
	margin: 0 0 var(--s-7, var(--s-6));
	border-top: 1px solid var(--border-soft);
	padding-top: var(--s-5);
}

.mz-b2b-prefs-form__group:first-of-type {
	border-top: 0;
	padding-top: 0;
}

.mz-b2b-prefs-form__legend {
	display: inline-flex;
	align-items: baseline;
	gap: var(--s-3);
	margin-bottom: var(--s-2);
	padding: 0;
}

.mz-b2b-prefs-form__num {
	font-size: var(--t-xs, 11px);
	color: var(--ink-3);
	letter-spacing: .08em;
}

.mz-b2b-prefs-form__title {
	font-size: var(--t-lg, 1.1rem);
	font-weight: 700;
	color: var(--ink-1);
	line-height: 1.2;
}

.mz-b2b-prefs-form__hint {
	max-width: 65ch;
	margin: 0 0 var(--s-4);
	color: var(--ink-2);
	font-size: var(--t-sm);
	line-height: 1.55;
}

/* Opzioni radio — card sottile, niente background pieno */
.mz-b2b-prefs-form__options {
	display: grid;
	gap: var(--s-2);
}

.mz-b2b-prefs-form__opt {
	display: flex;
	align-items: flex-start;
	gap: var(--s-3);
	padding: var(--s-3) var(--s-4);
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	cursor: pointer;
	transition: border-color 150ms ease-out, background-color 150ms ease-out;
}

.mz-b2b-prefs-form__opt:hover {
	border-color: var(--ink-3);
}

.mz-b2b-prefs-form__opt.is-on {
	border-color: var(--ink-1);
	background: var(--paper-2);
}

.mz-b2b-prefs-form__opt input[type="radio"] {
	margin-top: 3px;
	accent-color: var(--brand);
	flex-shrink: 0;
}

.mz-b2b-prefs-form__opt-body {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.mz-b2b-prefs-form__opt-label {
	font-weight: 600;
	color: var(--ink-1);
	font-size: var(--t-sm);
}

.mz-b2b-prefs-form__opt-desc {
	color: var(--ink-2);
	font-size: var(--t-xs, 12px);
	line-height: 1.45;
}

/* Toggle "Nascondi prezzi" — riusa il pattern del dropdown */
.mz-b2b-prefs-form__toggle {
	display: flex;
	align-items: flex-start;
	gap: var(--s-3);
	padding: var(--s-3) var(--s-4);
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	cursor: pointer;
	transition: border-color 150ms ease-out, background-color 150ms ease-out;
}

.mz-b2b-prefs-form__toggle:hover {
	border-color: var(--ink-3);
}

.mz-b2b-prefs-form__toggle.is-on {
	border-color: var(--ink-1);
	background: var(--paper-2);
}

.mz-b2b-prefs-form__toggle input[type="checkbox"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.mz-b2b-prefs-form__toggle-track {
	width: 36px;
	height: 20px;
	background: var(--border-strong);
	border-radius: 999px;
	position: relative;
	flex-shrink: 0;
	margin-top: 2px;
	transition: background-color var(--d-2) var(--ease);
}

.mz-b2b-prefs-form__toggle-thumb {
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	background: var(--ink-on-dark);
	border-radius: 50%;
	transition: transform var(--d-2) var(--ease);
}

.mz-b2b-prefs-form__toggle input:checked + .mz-b2b-prefs-form__toggle-track {
	background: var(--brand);
}

.mz-b2b-prefs-form__toggle input:checked + .mz-b2b-prefs-form__toggle-track .mz-b2b-prefs-form__toggle-thumb {
	transform: translateX(16px);
}

.mz-b2b-prefs-form__toggle-body {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.mz-b2b-prefs-form__toggle-label {
	font-weight: 600;
	color: var(--ink-1);
	font-size: var(--t-sm);
}

.mz-b2b-prefs-form__toggle-desc {
	color: var(--ink-2);
	font-size: var(--t-xs, 12px);
	line-height: 1.45;
}

/* Info aside */
.mz-b2b-prefs-page__info {
	margin: var(--s-6) 0 var(--s-5);
	padding: var(--s-4);
	border: 1px solid var(--border);
	background: var(--paper-2);
	border-radius: var(--r-2);
}

.mz-b2b-prefs-page__info-title {
	margin: 0 0 var(--s-2);
	font-size: var(--t-sm);
	font-weight: 700;
	color: var(--ink-1);
	letter-spacing: .02em;
}

.mz-b2b-prefs-page__info-list {
	margin: 0;
	padding-left: 1.2em;
	color: var(--ink-2);
	font-size: var(--t-xs, 12px);
	line-height: 1.55;
}

.mz-b2b-prefs-page__info-list li + li {
	margin-top: 4px;
}

.mz-b2b-prefs-form__actions {
	margin-top: var(--s-5);
}

/* =========================================================
   Retail mode — nasconde i label "IVA incl." hardcoded nei
   template (part-card, content-product, single-product) e
   ogni meta-info accessoria al prezzo. Il prezzo retail si
   spiega da solo: niente etichette aggiuntive.
   ========================================================= */
.mz-b2b-retail-mode .mz-price__vat:not(.mz-price__vat--x4),
.mz-b2b-retail-mode .mz-scheda__price-meta:not(.mz-scheda__price-meta--x4) {
	display: none !important;
}

/* Speculare: fuori dal retail mode, nascondiamo i label "(X4)" che
   esistono solo per supportare lo switch client-side senza reload. */
body:not(.mz-b2b-retail-mode) .mz-scheda__price-meta--x4,
body:not(.mz-b2b-retail-mode) .mz-price__vat--x4 {
	display: none !important;
}

/* Modalità IVA esclusa o entrambe — il nostro markup .mz-b2b-price
   include già i suoi label (+ IVA / IVA incl. / IVA escl.), quindi
   nascondiamo i label hardcoded del template per evitare il doppione. */
.mz-b2b-display-excl .mz-price__vat:not(.mz-price__vat--x4),
.mz-b2b-display-excl .mz-scheda__price-meta:not(.mz-scheda__price-meta--x4),
.mz-b2b-display-both .mz-price__vat:not(.mz-price__vat--x4),
.mz-b2b-display-both .mz-scheda__price-meta:not(.mz-scheda__price-meta--x4) {
	display: none !important;
}

/* =========================================================
   Multi-variant price markup — tutte le forme (incl/excl/retail/
   placeholder) coesistono nel DOM. Le body class decidono cosa
   mostrare, così i toggle dal dropdown account sono istantanei.
   Vedi manzo_b2b_render_multi_price() per la generazione.
   ========================================================= */
.mz-b2b-price--multi {
	display: inline-flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 6px;
}

/* Default: nascondi tutte le varianti, poi sotto le riveliamo */
.mz-b2b-price--multi .mz-b2b-price__primary,
.mz-b2b-price--multi .mz-b2b-price__secondary,
.mz-b2b-price--multi .mz-b2b-price__retail,
.mz-b2b-price--multi .mz-b2b-price__placeholder,
.mz-b2b-price--multi .mz-b2b-price__suffix-incl,
.mz-b2b-price--multi .mz-b2b-price__suffix-plus,
.mz-b2b-price--multi .mz-b2b-price__suffix-excl {
	display: none;
}

/* IVA inclusa (default) — solo il valore incl, senza suffisso
   ("IVA incl." è già reso dal mz-price__vat hardcoded nel template,
   evitiamo il doppione) */
.mz-b2b-display-incl .mz-b2b-price--multi .mz-b2b-price__primary {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
}

/* IVA esclusa — il valore excl con suffisso "+ IVA" */
.mz-b2b-display-excl .mz-b2b-price--multi .mz-b2b-price__secondary,
.mz-b2b-display-excl .mz-b2b-price--multi .mz-b2b-price__suffix-plus {
	display: inline-flex;
}

/* Entrambi — incl primario, excl secondario, stacked */
.mz-b2b-display-both .mz-b2b-price--multi {
	flex-direction: column;
	align-items: flex-start;
	gap: 2px;
}
.mz-b2b-display-both .mz-b2b-price--multi .mz-b2b-price__primary,
.mz-b2b-display-both .mz-b2b-price--multi .mz-b2b-price__secondary,
.mz-b2b-display-both .mz-b2b-price--multi .mz-b2b-price__suffix-incl,
.mz-b2b-display-both .mz-b2b-price--multi .mz-b2b-price__suffix-excl {
	display: inline-flex;
}
.mz-b2b-display-both .mz-b2b-price--multi .mz-b2b-price__primary {
	font-weight: 600;
	color: var(--ink-1);
}
.mz-b2b-display-both .mz-b2b-price--multi .mz-b2b-price__secondary {
	font-size: .85em;
	color: var(--ink-3);
}

/* Retail mode sovrascrive la display mode: prezzo × N su scheda,
   placeholder altrove. La precedenza è data dall'ordine di queste
   regole nel CSS (vincono perché vengono dopo). */
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__primary,
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__secondary,
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__suffix-incl,
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__suffix-plus,
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__suffix-excl {
	display: none !important;
}
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__retail {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
}
.mz-b2b-retail-mode .mz-b2b-price--multi .mz-b2b-price__placeholder {
	display: inline;
	color: var(--ink-3);
	font-style: italic;
}

/* =========================================================
   Price peek — toggle "occhio" che oscura il prezzo sulla
   scheda prodotto. Solo per utenti B2B con ruolo listino.
   Stato persistito in localStorage (per-browser, non per-utente)
   perché serve come maschera al volo davanti al cliente, non
   come preferenza salvata server-side. Il pulsante resta sempre
   visibile/cliccabile, vengono blurrati solo i fratelli.
   ========================================================= */
.mz-price-peek {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	margin: 0;
	padding: 0;
	background: transparent;
	border: 1px solid transparent;
	border-radius: var(--r-2);
	color: var(--ink-3);
	cursor: pointer;
	align-self: center;
	flex: 0 0 auto;
	transition:
		color 150ms var(--ease, ease-out),
		background-color 150ms var(--ease, ease-out),
		border-color 150ms var(--ease, ease-out);
}

.mz-price-peek:hover,
.mz-price-peek:focus-visible {
	color: var(--ink-1);
	background: var(--paper-2);
	border-color: var(--border);
	outline: none;
}

.mz-price-peek:focus-visible {
	box-shadow: 0 0 0 2px var(--paper), 0 0 0 4px var(--ink-1);
}

.mz-price-peek__icon {
	width: 18px;
	height: 18px;
	display: block;
}

/* Stato default: icona "occhio aperto" visibile, "occhio chiuso" nascosta. */
.mz-price-peek__icon--hide { display: none; }

/* Stato peeking (prezzo oscurato): inverti le icone, il pulsante diventa
   "premuto" così l'utente vede dove rimuovere la maschera senza cercare. */
.mz-scheda__price.is-peeking .mz-price-peek {
	color: var(--ink-1);
	background: var(--paper-2);
	border-color: var(--border);
}
.mz-scheda__price.is-peeking .mz-price-peek__icon--show { display: none; }
.mz-scheda__price.is-peeking .mz-price-peek__icon--hide { display: block; }

/* Blur sui fratelli del bottone (prezzo + meta). user-select e
   pointer-events disabilitati così il customer non riesce a copiare
   o selezionare il numero mascherato. La transizione su filter è
   GPU-friendly: niente reflow, niente jank. */
.mz-scheda__price.is-peeking > *:not(.mz-price-peek) {
	filter: blur(10px);
	user-select: none;
	pointer-events: none;
	transition: filter 180ms var(--ease, ease-out);
}

.mz-scheda__price--peekable > *:not(.mz-price-peek) {
	transition: filter 180ms var(--ease, ease-out);
}

/* Print: il peek è una maschera UI, non deve finire in stampa. */
@media print {
	.mz-price-peek { display: none !important; }
	.mz-scheda__price.is-peeking > *:not(.mz-price-peek) {
		filter: none !important;
	}
}

/* =========================================================
   B2B — nota privata sulla single product (riquadro pieghevole
   che salva la nota nei cart item data della riga).
   ========================================================= */
.mz-b2b-note {
	flex: 0 0 100%;
	width: 100%;
	margin: var(--s-2) 0;
}

.mz-b2b-note__panel {
	border: 1px solid var(--border);
	border-radius: var(--r-2);
	background: var(--paper-2);
	overflow: hidden;
	transition: border-color var(--d-1) var(--ease);
}

.mz-b2b-note__panel[open] {
	border-color: var(--ink-1);
}

.mz-b2b-note__summary {
	display: flex;
	align-items: center;
	gap: var(--s-2);
	padding: var(--s-3) var(--s-4);
	font-size: var(--t-sm);
	font-weight: 600;
	color: var(--ink-1);
	cursor: pointer;
	list-style: none;
	user-select: none;
}

.mz-b2b-note__summary::-webkit-details-marker { display: none; }

.mz-b2b-note__icon {
	display: inline-flex;
	color: var(--ink-3);
}

.mz-b2b-note__label {
	flex: 1 1 auto;
}

.mz-b2b-note__chev {
	color: var(--ink-3);
	transition: transform 150ms ease-out;
	font-size: 0.9em;
}

.mz-b2b-note__panel[open] .mz-b2b-note__chev {
	transform: rotate(180deg);
}

.mz-b2b-note__summary:hover {
	background: var(--paper-3);
}

.mz-b2b-note__body {
	padding: 0 var(--s-4) var(--s-4);
	border-top: 1px dashed var(--border);
	padding-top: var(--s-3);
}

.mz-b2b-note__hint {
	display: block;
	font-size: var(--t-xs);
	color: var(--ink-2);
	margin-bottom: var(--s-2);
	line-height: 1.4;
}

.mz-b2b-note__textarea {
	width: 100%;
	min-height: 84px;
	padding: var(--s-3);
	border: 1px solid var(--ctl-border);
	border-radius: var(--r-2);
	background: var(--ctl-bg);
	color: var(--ink-1);
	font: inherit;
	font-size: var(--t-sm);
	line-height: 1.45;
	resize: vertical;
	transition: border-color var(--d-1) var(--ease);
}

.mz-b2b-note__textarea:focus-visible {
	outline: 2px solid var(--border-focus);
	outline-offset: 2px;
	border-color: var(--ctl-border-h);
}

.mz-b2b-note__meta {
	display: flex;
	justify-content: flex-end;
	margin-top: var(--s-2);
}

.mz-b2b-note__counter {
	font-size: var(--t-xs);
	color: var(--ink-3);
	font-variant-numeric: tabular-nums;
}

/* ---------- Nota privata nel carrello / checkout ---------- */
.mz-b2b-cart-note-wrap {
	margin-top: var(--s-2);
}

.mz-b2b-cart-note-block {
	display: inline-flex;
	align-items: baseline;
	gap: var(--s-2);
	padding: var(--s-2) var(--s-3);
	background: var(--paper-2);
	border: 1px solid var(--border);
	border-radius: var(--r-1);
	font-size: var(--t-xs);
	color: var(--ink-2);
	line-height: 1.4;
	max-width: 100%;
}

.mz-b2b-cart-note-block__icon {
	flex-shrink: 0;
	color: var(--ink-3);
	position: relative;
	top: 1px;
}

.mz-b2b-cart-note-block__text {
	font-style: italic;
	word-break: break-word;
	flex: 1 1 auto;
}

.mz-b2b-cart-note-block__edit {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	gap: 3px;
	padding: 2px var(--s-2);
	margin-left: var(--s-2);
	background: none;
	border: 1px solid var(--border);
	border-radius: var(--r-1);
	font: 500 var(--t-xs)/1 var(--ff-ui);
	color: var(--ink-3);
	cursor: pointer;
	transition: color 120ms, border-color 120ms;
}
.mz-b2b-cart-note-block__edit:hover { color: var(--ink-1); border-color: var(--ink-2); }

.mz-b2b-cart-note-add {
	display: inline-flex;
	align-items: center;
	gap: var(--s-2);
	padding: 0;
	background: none;
	border: none;
	font-size: var(--t-xs);
	color: var(--ink-3);
	cursor: pointer;
	transition: color 120ms;
}
.mz-b2b-cart-note-add:hover { color: var(--ink-1); }

/* Editor inline */
.mz-b2b-cart-note-editor { margin-top: var(--s-2); }

.mz-b2b-cart-note-editor__ta {
	width: 100%;
	min-height: 60px;
	padding: var(--s-2) var(--s-3);
	border: 1px solid var(--ctl-border);
	border-radius: var(--r-2);
	background: var(--ctl-bg);
	color: var(--ink-1);
	font: inherit;
	font-size: var(--t-xs);
	line-height: 1.45;
	resize: vertical;
}
.mz-b2b-cart-note-editor__ta:focus-visible {
	outline: 2px solid var(--border-focus);
	outline-offset: 2px;
	border-color: var(--ctl-border-h);
}

.mz-b2b-cart-note-editor__foot {
	display: flex;
	align-items: center;
	gap: var(--s-2);
	margin-top: var(--s-2);
}

.mz-b2b-cart-note-editor__counter {
	flex: 1 1 auto;
	font-size: var(--t-xs);
	color: var(--ink-3);
	font-variant-numeric: tabular-nums;
}

.mz-b2b-cart-note-editor__cancel {
	padding: var(--s-2) var(--s-3);
	background: none;
	border: 1px solid var(--border);
	border-radius: var(--r-1);
	font: 500 var(--t-xs)/1 var(--ff-ui);
	color: var(--ink-2);
	cursor: pointer;
	transition: color 120ms, border-color 120ms;
}
.mz-b2b-cart-note-editor__cancel:hover { color: var(--ink-1); border-color: var(--ink-2); }

.mz-b2b-cart-note-editor__save {
	padding: var(--s-2) var(--s-4);
	background: var(--brand);
	border: 1px solid var(--brand);
	border-radius: var(--r-1);
	font: 700 var(--t-xs)/1 var(--ff-ui);
	color: var(--paper);
	cursor: pointer;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	transition: background-color var(--d-1) var(--ease), border-color var(--d-1) var(--ease);
}
.mz-b2b-cart-note-editor__save:hover { background: var(--brand-ink); border-color: var(--brand-ink); }


/* ============================================================
   Avviso "orario di taglio" evasione — testa del carrello B2B.
   Render: inc/b2b/cart-cutoff.php (woocommerce_before_cart_table).
   Stato default = informativo (brand); --past = oltre l'orario (accent/urgenza).
   ============================================================ */
.mz-b2b-cutoff {
	display: flex;
	align-items: flex-start;
	gap: var(--s-3);
	margin: 0 0 var(--s-5);
	padding: var(--s-4);
	background: var(--brand-tint);
	border: 1px solid var(--brand);
	border-radius: var(--r-2);
	font-family: var(--ff-ui);
}

.mz-b2b-cutoff__icon {
	flex: 0 0 auto;
	display: inline-flex;
	color: var(--brand-ink);
	margin-top: 1px;
}

.mz-b2b-cutoff__body { min-width: 0; }

.mz-b2b-cutoff__title {
	margin: 0;
	font-size: var(--t-base);
	font-weight: 700;
	color: var(--ink-1);
	line-height: 1.35;
}

.mz-b2b-cutoff__text {
	margin: var(--s-1) 0 0;
	font-size: var(--t-sm);
	color: var(--ink-2);
	line-height: var(--lh-sm);
	max-width: 70ch;
}

/* Oltre l'orario di taglio: tono d'urgenza. */
.mz-b2b-cutoff--past {
	background: var(--accent-tint);
	border-color: var(--accent);
}
.mz-b2b-cutoff--past .mz-b2b-cutoff__icon { color: var(--accent-ink); }
