/* Mattadent – zakup z listy produktów 1.6.0
   Blocksy może wstawić .ct-cart-actions wewnątrz naszego rzędu.
   Ten CSS obsługuje obie struktury bez zmiany funkcjonalności WooCommerce. */

.woocommerce ul.products li.product .mattadent-buybox,
.woocommerce-page ul.products li.product .mattadent-buybox {
	--md-gold: var(--theme-palette-color-2, #a88743);
	--md-gold-hover: var(--theme-palette-color-4, #4a4038);
	--md-text: var(--theme-palette-color-3, #4a4038);
	--md-border: var(--theme-palette-color-5, #ddd4c7);
	--md-disabled: var(--theme-palette-color-6, #eee6d8);
	--md-field: var(--theme-palette-color-7, #f7f4ef);
	--md-white: var(--theme-palette-color-8, #fff);

	width: 100% !important;
	max-width: none !important;
	min-width: 0 !important;
	margin: 12px 0 0 !important;
	box-sizing: border-box !important;
	color: var(--md-text);
}

.mattadent-buybox form,
.mattadent-buybox .single_variation_wrap,
.mattadent-buybox .single_variation {
	width: 100% !important;
	max-width: none !important;
	min-width: 0 !important;
	margin: 0 !important;
	box-sizing: border-box !important;
}

/* Warianty */
.mattadent-buybox table.variations {
	width: 100% !important;
	margin: 0 0 8px !important;
	border: 0 !important;
}

.mattadent-buybox table.variations tr,
.mattadent-buybox table.variations th,
.mattadent-buybox table.variations td {
	display: block !important;
	width: 100% !important;
	padding: 0 !important;
	border: 0 !important;
}

.mattadent-buybox table.variations th.label {
	margin: 0 0 6px !important;
	text-align: left;
	font-size: 14px;
	font-weight: 600;
	color: var(--md-text);
}

.mattadent-buybox table.variations td.value {
	margin: 0 0 8px !important;
}

.mattadent-buybox table.variations select {
	display: block !important;
	width: 100% !important;
	max-width: none !important;
	min-height: 44px;
	margin: 0 !important;
	background: var(--md-field) !important;
	color: var(--md-text) !important;
	border: 1px solid var(--md-border) !important;
	box-shadow: none !important;
}

.mattadent-buybox table.variations select:focus {
	border-color: var(--md-gold) !important;
	outline: none !important;
}

.mattadent-buybox .reset_variations {
	display: inline-block;
	margin: 5px 0 8px !important;
	font-size: 13px;
	color: var(--md-text);
}

.mattadent-buybox .woocommerce-variation-description {
	display: none !important;
}

.mattadent-buybox .woocommerce-variation-price {
	margin: 4px 0 8px;
	font-weight: 600;
	color: var(--md-text);
}

/* Główny rząd */
.mattadent-buybox .mattadent-buyrow {
	display: grid !important;
	grid-template-columns: 120px minmax(0, 1fr) !important;
	gap: 8px !important;
	width: 100% !important;
	max-width: none !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	align-items: stretch !important;
	box-sizing: border-box !important;
}

/* Wrapper Blocksy zajmuje CAŁY rząd i sam dostaje tę samą siatkę. */
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions {
	grid-column: 1 / -1 !important;
	display: grid !important;
	grid-template-columns: 120px minmax(0, 1fr) !important;
	gap: 8px !important;
	width: 100% !important;
	max-width: none !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	align-items: stretch !important;
	box-sizing: border-box !important;
}

/* Ilość */
.mattadent-buybox .mattadent-buyrow > .quantity,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .quantity {
	grid-column: 1 !important;
	width: 120px !important;
	min-width: 120px !important;
	max-width: 120px !important;
	min-height: 44px;
	margin: 0 !important;
	background: var(--md-field) !important;
	border: 1px solid var(--md-border) !important;
	box-sizing: border-box !important;
}

.mattadent-buybox .quantity input.qty {
	min-width: 0 !important;
	min-height: 42px;
	background: var(--md-field) !important;
	color: var(--md-text) !important;
}

/* Przycisk */
.mattadent-buybox .mattadent-buyrow > .button,
.mattadent-buybox .mattadent-buyrow > .single_add_to_cart_button,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .button,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .single_add_to_cart_button {
	grid-column: 2 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	min-height: 44px;
	margin: 0 !important;
	padding: 0 14px !important;
	background: var(--md-gold) !important;
	border: 1px solid var(--md-gold) !important;
	color: var(--md-white) !important;
	box-sizing: border-box !important;
	box-shadow: none !important;
	white-space: nowrap !important;
	text-align: center;
}

.mattadent-buybox .mattadent-buyrow > .button:hover,
.mattadent-buybox .mattadent-buyrow > .single_add_to_cart_button:hover,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .button:hover,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .single_add_to_cart_button:hover {
	background: var(--md-gold-hover) !important;
	border-color: var(--md-gold-hover) !important;
	color: var(--md-white) !important;
}

.mattadent-buybox .single_add_to_cart_button.disabled,
.mattadent-buybox .single_add_to_cart_button.wc-variation-selection-needed,
.mattadent-buybox .single_add_to_cart_button:disabled {
	background: var(--md-disabled) !important;
	border-color: var(--md-border) !important;
	color: var(--md-text) !important;
	opacity: .65 !important;
	cursor: not-allowed;
}

.mattadent-buybox .mattadent-more-button,
.mattadent-buybox .mattadent-buyrow--single > .button {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100% !important;
	min-height: 44px;
	margin: 0 !important;
	background: var(--md-gold) !important;
	border: 1px solid var(--md-gold) !important;
	color: var(--md-white) !important;
}

@media (max-width: 600px) {
	.mattadent-buybox .mattadent-buyrow,
	.mattadent-buybox .mattadent-buyrow > .ct-cart-actions {
		grid-template-columns: 105px minmax(0, 1fr) !important;
	}

	.mattadent-buybox .mattadent-buyrow > .quantity,
	.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .quantity {
		width: 105px !important;
		min-width: 105px !important;
		max-width: 105px !important;
	}
}


/* =========================================================
   1.6.1 — finalne ujednolicenie wymiarów
   ========================================================= */

/* Nie pokazujemy linku "Wyczyść" na kartach archiwum.
   Zmianę wariantu nadal można zrobić normalnie z listy rozwijanej. */
.mattadent-buybox .reset_variations {
	display: none !important;
}

/* Jedna wysokość dla wszystkich kontrolek */
.mattadent-buybox table.variations select,
.mattadent-buybox .mattadent-buyrow > .quantity,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .quantity,
.mattadent-buybox .mattadent-buyrow > .button,
.mattadent-buybox .mattadent-buyrow > .single_add_to_cart_button,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .button,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .single_add_to_cart_button {
	height: 44px !important;
	min-height: 44px !important;
	max-height: 44px !important;
}

/* Spójna typografia przycisków */
.mattadent-buybox .mattadent-buyrow .button,
.mattadent-buybox .mattadent-buyrow .single_add_to_cart_button {
	font-size: 14px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/* Pole ilości zawsze dokładnie 120 px */
.mattadent-buybox .mattadent-buyrow > .quantity,
.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .quantity {
	flex: 0 0 120px !important;
}

/* Wyrównanie licznika w pionie */
.mattadent-buybox .quantity,
.mattadent-buybox .quantity input.qty,
.mattadent-buybox .quantity button,
.mattadent-buybox .quantity .ct-increase,
.mattadent-buybox .quantity .ct-decrease {
	align-items: center !important;
}

/* Po ukryciu "Wyczyść" nie zostawiamy pustego odstępu */
.mattadent-buybox table.variations,
.mattadent-buybox table.variations td.value {
	margin-bottom: 8px !important;
}

/* Telefon */
@media (max-width: 600px) {
	.mattadent-buybox .mattadent-buyrow > .quantity,
	.mattadent-buybox .mattadent-buyrow > .ct-cart-actions > .quantity {
		flex-basis: 105px !important;
	}
}


/* 1.6.2 — aktualnie oglądana kategoria w panelu */
.ct-sidebar .wc-block-product-categories-list a.mattadent-current-category,
.ct-sidebar .wc-block-product-categories-list a.mattadent-current-category
	.wc-block-product-categories-list-item__name {
	color: var(--theme-palette-color-1) !important;
	font-weight: 700 !important;
}




/* =========================================================
   1.7.1 — dyskretne potwierdzenie dodania do koszyka
   ========================================================= */

.mattadent-buybox .single_add_to_cart_button {
	position: relative !important;
	overflow: hidden !important;
	transition:
		background-color .18s ease,
		border-color .18s ease,
		transform .16s ease,
		opacity .16s ease !important;
}

.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading {
	opacity: .72 !important;
	cursor: wait !important;
}

.mattadent-buybox .single_add_to_cart_button.mattadent-is-added {
	background: var(--theme-palette-color-4, #4a4038) !important;
	border-color: var(--theme-palette-color-4, #4a4038) !important;
	transform: scale(.985);
}

/* Zamiast napisu "Dodano" pojawia się tylko mały znak ✓ po prawej. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-added::after {
	content: "✓";
	position: absolute;
	right: 11px;
	top: 50%;
	width: 20px;
	height: 20px;
	display: flex;
	align-items: center;
	justify-content: center;
	transform: translateY(-50%) scale(1);
	border: 1px solid currentColor;
	border-radius: 50%;
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
	animation: mattadent-check-in .22s ease both;
}

.mattadent-buybox .single_add_to_cart_button.mattadent-is-error {
	opacity: .68 !important;
}

/* WooCommerce/Blocksy nie dokłada szarego "Zobacz koszyk" pod przyciskiem. */
.woocommerce ul.products li.product a.added_to_cart.wc-forward,
.woocommerce-page ul.products li.product a.added_to_cart.wc-forward,
.mattadent-buybox a.added_to_cart.wc-forward {
	display: none !important;
}

/* Krótki puls koszyka w nagłówku. */
.ct-cart-item.mattadent-cart-pulse {
	animation: mattadent-cart-pulse .58s ease;
}

@keyframes mattadent-check-in {
	from { opacity: 0; transform: translateY(-50%) scale(.55); }
	to   { opacity: 1; transform: translateY(-50%) scale(1); }
}

@keyframes mattadent-cart-pulse {
	0%   { transform: scale(1); }
	38%  { transform: scale(1.10); }
	68%  { transform: scale(.98); }
	100% { transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
	.mattadent-buybox .single_add_to_cart_button,
	.ct-cart-item.mattadent-cart-pulse {
		transition: none !important;
		animation: none !important;
	}
}


/* =========================================================
   1.7.2 — szybsze odczucie działania
   ========================================================= */

/* Natychmiast po kliknięciu przycisk reaguje, zanim serwer skończy żądanie. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading {
	opacity: .88 !important;
	transform: scale(.99);
	pointer-events: none !important;
	padding-right: 42px !important;
}

/* Mały, subtelny loader po prawej stronie. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading::after {
	content: "";
	position: absolute;
	right: 14px;
	top: 50%;
	width: 15px;
	height: 15px;
	margin-top: -8px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: mattadent-button-spin .55s linear infinite;
	box-sizing: border-box;
}

@keyframes mattadent-button-spin {
	to { transform: rotate(360deg); }
}

/* Po sukcesie wracamy do zwykłego paddingu i pokazujemy dyskretny ✓. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-added {
	padding-right: 42px !important;
}

@media (prefers-reduced-motion: reduce) {
	.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading::after {
		animation: none !important;
	}
}


/* 1.7.3 — kosmetyka szybkiego trybu */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading {
	transition-duration: .12s !important;
}


/* =========================================================
   1.7.5 — wyraźniejsza, ale nadal elegancka animacja
   ========================================================= */

/* Kliknięcie: koszyk reaguje od razu, jeszcze przed odpowiedzią serwera. */
.ct-cart-item.mattadent-cart-kick {
	animation: mattadent-cart-kick .48s cubic-bezier(.2,.8,.2,1);
}

/* Sukces: krótkie zaakcentowanie po zapisaniu w koszyku. */
.ct-cart-item.mattadent-cart-success {
	animation: mattadent-cart-success .68s ease;
}

@keyframes mattadent-cart-kick {
	0%   { transform: translateY(0) scale(1); }
	35%  { transform: translateY(-4px) scale(1.12); }
	65%  { transform: translateY(1px) scale(.98); }
	100% { transform: translateY(0) scale(1); }
}

@keyframes mattadent-cart-success {
	0%   { transform: scale(1); }
	32%  { transform: scale(1.14); }
	55%  { transform: scale(1.03); }
	78%  { transform: scale(1.08); }
	100% { transform: scale(1); }
}

/* Sam przycisk ma odrobinę mocniejszą reakcję podczas oczekiwania. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading {
	transform: scale(.975) !important;
}

.mattadent-buybox .single_add_to_cart_button.mattadent-is-added {
	transform: scale(1) !important;
}

@media (prefers-reduced-motion: reduce) {
	.ct-cart-item.mattadent-cart-kick,
	.ct-cart-item.mattadent-cart-success {
		animation: none !important;
	}
}


/* =========================================================
   1.7.6 — spokojniejsza animacja w stylu Blocksy
   ========================================================= */

/* Nie animujemy koszyka przy samym kliknięciu.
   Jedna animacja dopiero po faktycznym dodaniu produktu. */
.ct-cart-item.mattadent-cart-kick {
	animation: none !important;
}

/* Jeden miękki "bump" zamiast dwóch ruchów. */
.ct-cart-item.mattadent-cart-soft-bump {
	animation: mattadent-cart-soft-bump .62s cubic-bezier(.22,.7,.25,1);
	transform-origin: center center;
}

@keyframes mattadent-cart-soft-bump {
	0%   { transform: scale(1); }
	42%  { transform: scale(1.085); }
	72%  { transform: scale(.992); }
	100% { transform: scale(1); }
}

/* Loader wolniejszy i lżejszy optycznie. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading::after {
	width: 14px !important;
	height: 14px !important;
	margin-top: -7px !important;
	border-width: 1.5px !important;
	animation: mattadent-button-spin-soft .9s linear infinite !important;
	opacity: .9;
}

@keyframes mattadent-button-spin-soft {
	to { transform: rotate(360deg); }
}

/* Sam przycisk mniej "wciska się" podczas oczekiwania. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading {
	transform: scale(.992) !important;
	opacity: .92 !important;
}

/* Po sukcesie mały ✓ pozostaje, ale bez dodatkowego szarpnięcia. */
.mattadent-buybox .single_add_to_cart_button.mattadent-is-added {
	transform: none !important;
}

@media (prefers-reduced-motion: reduce) {
	.ct-cart-item.mattadent-cart-soft-bump {
		animation: none !important;
	}
	.mattadent-buybox .single_add_to_cart_button.mattadent-is-loading::after {
		animation: none !important;
	}
}


/* =========================================================
   1.8.0 — poprawne kursory w kontrolce ilości
   Pole liczby jest edytowalne, a +/- są przyciskami.
   Reguły są celowo ograniczone do modułu Mattadent.
   ========================================================= */

.mattadent-buybox .quantity input.qty:not(:disabled):not([readonly]) {
    cursor: text !important;
    pointer-events: auto !important;
    -webkit-user-select: text;
    user-select: text;
}

.mattadent-buybox .quantity button:not(:disabled),
.mattadent-buybox .quantity .ct-increase:not(.disabled),
.mattadent-buybox .quantity .ct-decrease:not(.disabled) {
    cursor: pointer !important;
}

/* Nie nadpisujemy semantyki naprawdę zablokowanych kontrolek. */
.mattadent-buybox .quantity input.qty:disabled,
.mattadent-buybox .quantity input.qty[readonly],
.mattadent-buybox .quantity button:disabled {
    cursor: not-allowed !important;
}


/* =========================================================
   1.8.7 — WARIANTY: ORYGINALNA MECHANIKA WOOCOMMERCE
   Zmieniamy wyłącznie wygląd natywnego selecta.
   ========================================================= */

.mattadent-buybox table.variations select {
    width: 100% !important;
    min-height: 44px !important;
    padding: 0 38px 0 13px !important;

    background-color: var(--md-field) !important;
    color: var(--md-text) !important;

    border: 1px solid var(--md-border) !important;
    border-radius: 3px !important;

    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;

    box-shadow: none !important;
    cursor: pointer;

    transition:
        border-color .18s ease,
        background-color .18s ease,
        box-shadow .18s ease !important;
}

.mattadent-buybox table.variations select:hover {
    border-color: var(--md-gold) !important;
}

.mattadent-buybox table.variations select:focus {
    background-color: var(--md-white) !important;
    border-color: var(--md-gold) !important;
    box-shadow: 0 0 0 3px rgba(190, 151, 78, .10) !important;
    outline: none !important;
}

/* Kolory pozycji tam, gdzie przeglądarka pozwala je stylować. */
.mattadent-buybox table.variations select option {
    background: var(--md-field);
    color: var(--md-text);
}

/* Niedostępne warianty pozostają czytelnie wygaszone. */
.mattadent-buybox table.variations select option:disabled {
    color: rgba(74, 64, 56, .45);
}


/* =========================================================
   1.9.0 — WARIANTY: NATYWNY SELECT, TYLKO PEWNE STYLE
   Otwarta lista opcji pozostaje kontrolką systemową Windows/Chrome.
   ========================================================= */

.mattadent-buybox table.variations select {
    width: 100% !important;
    height: 44px !important;
    min-height: 44px !important;
    padding: 0 38px 0 13px !important;

    background-color: var(--md-field) !important;
    color: var(--md-text) !important;
    border: 1px solid var(--md-border) !important;
    border-radius: 4px !important;

    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1.2 !important;

    box-shadow: none !important;
    cursor: pointer !important;

    transition:
        border-color .18s ease,
        box-shadow .18s ease,
        background-color .18s ease !important;
}

.mattadent-buybox table.variations select:hover {
    border-color: var(--md-gold) !important;
}

.mattadent-buybox table.variations select:focus,
.mattadent-buybox table.variations select:focus-visible {
    background-color: var(--md-field) !important;
    border-color: var(--md-gold) !important;
    box-shadow: 0 0 0 2px rgba(185, 154, 92, .10) !important;
    outline: none !important;
}

/* Kolory tekstu opcji mogą być honorowane przez część przeglądarek,
   ale nie próbujemy nadpisywać systemowego zaznaczenia ani kursora
   wewnątrz otwartej listy. */
.mattadent-buybox table.variations select option {
    background: var(--md-field);
    color: var(--md-text);
}

.mattadent-buybox table.variations select option:disabled {
    color: rgba(74, 64, 56, .42);
}


/* =========================================================
   1.9.6 — WARIANTY: STABILNY PICKER NAD STRONĄ
   - nie zmienia wysokości kart
   - nie jest przycinany przez grid / produkt
   - pełna lista w dół, jeśli mieści się w viewport
   - jeśli nie: pełna lista w górę
   - dopiero gdy nie mieści się nigdzie: wewnętrzny scroll
   ========================================================= */

/* Zamknięte pole — wygląd Mattadent, logika nadal natywna WooCommerce. */
.mattadent-buybox table.variations select {
	width: 100% !important;
	height: 44px !important;
	min-height: 44px !important;
	padding: 0 38px 0 13px !important;

	background: var(--md-field) !important;
	color: var(--md-text) !important;

	border: 1px solid var(--md-border) !important;
	border-radius: 4px !important;

	font-size: 14px !important;
	font-weight: 500 !important;

	cursor: pointer !important;
	box-shadow: none !important;

	transition:
		border-color .18s ease,
		box-shadow .18s ease !important;
}

.mattadent-buybox table.variations select:hover,
.mattadent-buybox table.variations select:focus {
	border-color: var(--md-gold) !important;
	outline: none !important;
}

/* Dropdown dopinany bezpośrednio do BODY — poza kartami produktu. */
.md-variant-overlay {
	position: fixed !important;
	z-index: 2147483000 !important;

	box-sizing: border-box;
	overflow-y: auto;
	overscroll-behavior: contain;

	padding: 4px;

	background: var(--theme-palette-color-7);
	color: var(--theme-palette-color-3);

	border: 1px solid var(--theme-palette-color-5);
	border-radius: 4px;

	box-shadow: 0 8px 22px rgba(0, 0, 0, .11);

	scrollbar-width: thin;
	scrollbar-color: var(--theme-palette-color-5) transparent;
}

.md-variant-overlay::-webkit-scrollbar {
	width: 7px;
}

.md-variant-overlay::-webkit-scrollbar-track {
	background: transparent;
}

.md-variant-overlay::-webkit-scrollbar-thumb {
	background: var(--theme-palette-color-5);
	border-radius: 10px;
	border: 2px solid var(--theme-palette-color-7);
}

.md-variant-overlay-option {
	width: 100%;
	min-height: 34px;
	margin: 0;
	padding: 7px 34px 7px 10px;

	position: relative;
	display: flex;
	align-items: center;

	background: transparent;
	color: var(--theme-palette-color-3);

	border: 0;
	border-radius: 3px;

	font: inherit;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.3;
	text-align: left;

	cursor: pointer;

	transition:
		background-color .12s ease,
		color .12s ease;
}

.md-variant-overlay-option:hover,
.md-variant-overlay-option:focus-visible {
	background: var(--theme-palette-color-6);
	color: var(--theme-palette-color-3);
	outline: none;
}

.md-variant-overlay-option.is-selected {
	background: var(--theme-palette-color-6);
	color: var(--theme-palette-color-3);
	font-weight: 600;
	box-shadow: inset 3px 0 0 var(--theme-palette-color-1);
}

.md-variant-overlay-check {
	position: absolute;
	right: 10px;
	top: 50%;
	transform: translateY(-50%);

	color: var(--theme-palette-color-1);
	font-weight: 700;

	opacity: 0;
}

.md-variant-overlay-option.is-selected .md-variant-overlay-check {
	opacity: 1;
}

.md-variant-overlay-option:disabled {
	opacity: .42;
	cursor: not-allowed;
}
