/* MOD Single Add To Cart — scoped WooCommerce purchase form. */
.mod-single-add-to-cart {
	--mod-atc-gap: 14px;
	--mod-atc-purchase-gap: 10px;
	box-sizing: border-box;
	max-width: 100%;
}
.mod-single-add-to-cart *,
.mod-single-add-to-cart *::before,
.mod-single-add-to-cart *::after { box-sizing: border-box; }

.mod-single-add-to-cart form.cart,
.mod-single-add-to-cart form.variations_form {
	margin: 0 !important;
	width: 100%;
	max-width: 100%;
}

.mod-single-add-to-cart form.cart:not(.variations_form),
.mod-single-add-to-cart .woocommerce-variation-add-to-cart {
	gap: var(--mod-atc-purchase-gap);
}

.mod-single-add-to-cart .variations {
	display: grid;
	gap: var(--mod-atc-variation-gap, 14px);
	width: 100%;
	margin: 0 0 var(--mod-atc-gap) !important;
	border: 0;
}
.mod-single-add-to-cart .variations tbody { display: contents; }
.mod-single-add-to-cart .variations tr {
	display: grid;
	grid-template-columns: minmax(80px, auto) minmax(0, 1fr);
	gap: 12px;
	align-items: start;
	width: 100%;
}
.mod-single-add-to-cart .variations th,
.mod-single-add-to-cart .variations td {
	display: block;
	padding: 0 !important;
	border: 0 !important;
	min-width: 0;
	width: auto;
	text-align: start;
}
.mod-single-add-to-cart .variations th.label,
.mod-single-add-to-cart .variations th.label label {
	line-height: 1.35;
	margin: 0;
}
.mod-single-add-to-cart .variations select {
	display: block;
	width: 100% !important;
	max-width: 100%;
	min-width: 0;
	margin: 0 !important;
	appearance: auto;
}
.mod-single-add-to-cart .reset_variations {
	display: inline-flex;
	margin-top: 9px;
	text-decoration: none;
}

.mod-single-add-to-cart .single_variation_wrap {
	display: grid;
	gap: var(--mod-atc-gap);
	width: 100%;
}
.mod-single-add-to-cart .single_variation {
	display: grid;
	gap: 8px;
	min-height: 0;
}
.mod-single-add-to-cart .woocommerce-variation-price .price,
.mod-single-add-to-cart .mod-atc-price .price { margin: 0; }
.mod-single-add-to-cart .woocommerce-variation-description > :first-child { margin-top: 0; }
.mod-single-add-to-cart .woocommerce-variation-description > :last-child { margin-bottom: 0; }
.mod-single-add-to-cart.mod-atc-has-selected-variation .mod-atc-base-price { display: none; }

.mod-single-add-to-cart .mod-atc-purchase-row,
.mod-single-add-to-cart form.cart:not(.variations_form),
.mod-single-add-to-cart .woocommerce-variation-add-to-cart {
	width: 100%;
}

.mod-single-add-to-cart .quantity.mod-atc-quantity {
	display: inline-grid !important;
	grid-template-columns: auto minmax(44px, 1fr) auto;
	align-items: stretch;
	width: auto;
	min-width: 118px;
	padding: 0 !important;
	margin: 0 !important;
	border: 1px solid #d1d5db;
	border-radius: 8px;
	background: #fff;
	overflow: hidden;
}
.mod-single-add-to-cart .mod-atc-quantity input.qty {
	appearance: textfield !important;
	-webkit-appearance: none !important;
	width: 100% !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 8px !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent;
	text-align: center;
	box-shadow: none !important;
}
.mod-single-add-to-cart .mod-atc-quantity input.qty::-webkit-inner-spin-button,
.mod-single-add-to-cart .mod-atc-quantity input.qty::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.mod-single-add-to-cart .mod-atc-quantity button {
	appearance: none !important;
	-webkit-appearance: none !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 42px !important;
	min-width: 42px !important;
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: #f8fafc;
	color: #111827;
	font: inherit;
	font-weight: 700;
	line-height: 1 !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: color .2s ease, background-color .2s ease;
}
.mod-single-add-to-cart .mod-atc-quantity button:disabled {
	opacity: .4;
	cursor: not-allowed;
}
.mod-single-add-to-cart .mod-atc-quantity button:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: -3px;
}

.mod-single-add-to-cart .single_add_to_cart_button {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px;
	min-width: 0;
	margin: 0 !important;
}
.mod-single-add-to-cart .single_add_to_cart_button .mod-el-button__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
}
.mod-single-add-to-cart .single_add_to_cart_button .mod-el-button__icon svg {
	display: block;
	width: 1em;
	height: 1em;
	fill: currentColor;
}

.mod-single-add-to-cart.mod-atc-hide-price .mod-atc-price,
.mod-single-add-to-cart.mod-atc-hide-price .woocommerce-variation-price,
.mod-single-add-to-cart.mod-atc-hide-availability .stock,
.mod-single-add-to-cart.mod-atc-hide-availability .woocommerce-variation-availability,
.mod-single-add-to-cart.mod-atc-hide-description .woocommerce-variation-description,
.mod-single-add-to-cart.mod-atc-hide-reset .reset_variations,
.mod-single-add-to-cart.mod-atc-hide-quantity .quantity,
.mod-single-add-to-cart.mod-atc-hide-button .single_add_to_cart_button,
.mod-single-add-to-cart.mod-atc-hide-quantity-buttons .mod-atc-qty-button {
	display: none !important;
}
.mod-single-add-to-cart.mod-atc-hide-variations .variations { display: none !important; }

.mod-single-add-to-cart .single_add_to_cart_button.disabled,
.mod-single-add-to-cart .single_add_to_cart_button:disabled {
	cursor: not-allowed !important;
}

@media (max-width: 767px) {
	.mod-single-add-to-cart .variations tr {
		grid-template-columns: 1fr;
		gap: 7px;
	}
	.mod-single-add-to-cart .variations th.label { width: 100% !important; }
}

@media (prefers-reduced-motion: reduce) {
	.mod-single-add-to-cart *,
	.mod-single-add-to-cart *::before,
	.mod-single-add-to-cart *::after { transition: none !important; }
}

/* v0.5.6: detailed variation label layout. */
.mod-single-add-to-cart {
	--mod-atc-label-width: auto;
	--mod-atc-label-gap: 12px;
	--mod-atc-qty-button-width: 42px;
	--mod-atc-qty-separate-gap: 8px;
}
.mod-single-add-to-cart .variations tr {
	grid-template-columns: minmax(0,var(--mod-atc-label-width)) minmax(0,1fr);
	column-gap: var(--mod-atc-label-gap);
}
.mod-single-add-to-cart .variations th.label {
	width: var(--mod-atc-label-width) !important;
	max-width: 100%;
}
.mod-single-add-to-cart .variations td.value { min-width: 0; overflow: visible; }
.mod-single-add-to-cart .reset_variations {
	align-items: center;
	justify-content: center;
	line-height: 1.2;
	transition: color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease;
}

/* Quantity modes. */
.mod-single-add-to-cart .quantity.mod-atc-quantity--attached {
	gap: 0;
}
.mod-single-add-to-cart .quantity.mod-atc-quantity--separate {
	display: grid !important;
	grid-template-columns: var(--mod-atc-qty-button-width) minmax(44px,1fr) var(--mod-atc-qty-button-width);
	gap: var(--mod-atc-qty-separate-gap);
	border: 0 !important;
	background: transparent !important;
	overflow: visible;
}
.mod-single-add-to-cart .mod-atc-quantity--separate input.qty,
.mod-single-add-to-cart .mod-atc-quantity--separate button {
	border: 1px solid #d1d5db !important;
	border-radius: 8px !important;
}
.mod-single-add-to-cart .mod-atc-quantity--separate input.qty { background: #fff; }
.mod-single-add-to-cart .mod-atc-quantity button {
	width: var(--mod-atc-qty-button-width) !important;
	min-width: var(--mod-atc-qty-button-width) !important;
}
.mod-single-add-to-cart .quantity.mod-atc-quantity-native {
	display: inline-flex !important;
	width: auto;
}

/* Scope shared button effects to Woo purchase buttons and defeat Woo theme resets. */
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button {
	position: relative !important;
	overflow: hidden;
	isolation: isolate;
}
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew {
	transform: none !important;
	clip-path: polygon(var(--mod-button-cut,18px) 0,100% 0,calc(100% - var(--mod-button-cut,18px)) 100%,0 100%) !important;
	border-color: transparent !important;
}
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew .mod-el-button__text,
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew .mod-el-button__icon { transform:none !important; }
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--hover-fill::before { display:block !important; }

@media (max-width:767px) {
	.mod-single-add-to-cart .variations tr {
		grid-template-columns: 1fr;
		column-gap: 0;
	}
	.mod-single-add-to-cart .variations th.label { width:100% !important; }
}

/* v0.5.7: purchase presets, selected summary, stock styling, and label alignment stabilization. */
.mod-single-add-to-cart {
	--mod-atc-control-height: 50px;
	--mod-atc-qty-input-width: 64px;
	--mod-atc-selected-prefix-gap: 8px;
	--mod-atc-selected-suffix-gap: 10px;
	--mod-atc-qty-cut: 14px;
}

/* Each label aligns only against its own choices row. Do not stretch it to the
 * table/grid height: third-party Woo table CSS can otherwise make center/bottom
 * alignment drift far below the matching swatches. */
.mod-single-add-to-cart .variations tbody { display: block; width: 100%; }
.mod-single-add-to-cart .variations tr { align-items: start; }
.mod-single-add-to-cart .variations th.label {
	display: block !important;
	align-self: start;
	height: auto;
	min-height: 0;
}
.mod-single-add-to-cart .variations th.label label {
	display: block;
	width: 100%;
}
.mod-single-add-to-cart .variations td.value { align-self: start; }

/* Selected values are summarized once, immediately above the quantity row.
 * The legacy per-label value remains in the DOM for compatibility but is
 * hidden inside widgets that opt into the new summary. */
.mod-atc-selected-summary-enabled .mod-swatch-selected-value { display: none !important; }
.mod-atc-selected-summary {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	width: 100%;
	min-width: 0;
	line-height: 1.45;
}
.mod-atc-selected-summary[hidden] { display: none !important; }
.mod-atc-selected-summary__prefix,
.mod-atc-selected-summary__values,
.mod-atc-selected-summary__suffix { min-width: 0; }
.mod-atc-selected-summary__values {
	margin-inline-start: var(--mod-atc-selected-prefix-gap);
	font-weight: 700;
}
.mod-atc-selected-summary__suffix {
	margin-inline-start: var(--mod-atc-selected-suffix-gap);
}

/* Shared control height. Elementor-generated per-widget controls can override
 * these values because they include the Elementor wrapper selector. */
.mod-single-add-to-cart .mod-atc-quantity,
.mod-single-add-to-cart .mod-atc-quantity input.qty,
.mod-single-add-to-cart .mod-atc-quantity button,
.mod-single-add-to-cart .single_add_to_cart_button {
	min-height: var(--mod-atc-control-height);
	height: var(--mod-atc-control-height);
}
.mod-single-add-to-cart .quantity.mod-atc-quantity--attached {
	grid-template-columns: var(--mod-atc-qty-button-width) minmax(var(--mod-atc-qty-input-width), 1fr) var(--mod-atc-qty-button-width);
}
.mod-single-add-to-cart .quantity.mod-atc-quantity--separate {
	grid-template-columns: var(--mod-atc-qty-button-width) var(--mod-atc-qty-input-width) var(--mod-atc-qty-button-width);
	width: max-content;
	max-width: 100%;
}
.mod-single-add-to-cart .mod-atc-quantity input.qty:focus {
	outline-style: solid;
	outline-width: 2px;
	outline-offset: 1px;
}

/* Preset 1 — Solid Squares. */
.mod-single-add-to-cart.mod-atc-preset-solid .quantity.mod-atc-quantity {
	border-radius: 0;
	overflow: hidden;
}
.mod-single-add-to-cart.mod-atc-preset-solid .mod-atc-quantity input.qty,
.mod-single-add-to-cart.mod-atc-preset-solid .mod-atc-quantity button,
.mod-single-add-to-cart.mod-atc-preset-solid .single_add_to_cart_button {
	border-radius: 0 !important;
}

/* Preset 2 — Round quantity controls and a curved Add To Cart button. */
.mod-single-add-to-cart.mod-atc-preset-round .quantity.mod-atc-quantity--separate {
	grid-template-columns: repeat(3, var(--mod-atc-control-height));
	gap: var(--mod-atc-qty-separate-gap);
	width: max-content !important;
	border: 0 !important;
	background: transparent !important;
}
.mod-single-add-to-cart.mod-atc-preset-round .mod-atc-quantity input.qty,
.mod-single-add-to-cart.mod-atc-preset-round .mod-atc-quantity button {
	width: var(--mod-atc-control-height) !important;
	min-width: var(--mod-atc-control-height) !important;
	max-width: var(--mod-atc-control-height) !important;
	border-radius: 50% !important;
	padding: 0 !important;
}
.mod-single-add-to-cart.mod-atc-preset-round .single_add_to_cart_button {
	border-radius: 999px !important;
}

/* Preset 3 — Every purchase control uses the same crisp cut geometry. */
.mod-single-add-to-cart.mod-atc-preset-skew .quantity.mod-atc-quantity--separate {
	border: 0 !important;
	background: transparent !important;
	overflow: visible;
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-quantity input.qty,
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-quantity button {
	transform: none !important;
	border-radius: 0 !important;
	clip-path: polygon(var(--mod-atc-qty-cut, 14px) 0, 100% 0, calc(100% - var(--mod-atc-qty-cut, 14px)) 100%, 0 100%) !important;
}
.mod-single-add-to-cart.mod-atc-preset-skew .single_add_to_cart_button {
	transform: none !important;
	border-radius: 0 !important;
	clip-path: polygon(var(--mod-button-cut, 18px) 0, 100% 0, calc(100% - var(--mod-button-cut, 18px)) 100%, 0 100%) !important;
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-quantity input.qty {
	padding-inline: calc(var(--mod-atc-qty-cut, 14px) + 4px) !important;
}

/* Stock is a standalone style target. */
.mod-single-add-to-cart .woocommerce-variation-availability,
.mod-single-add-to-cart .woocommerce-variation-availability .stock,
.mod-single-add-to-cart > .stock {
	box-sizing: border-box;
}


/* v0.5.8: unified preset set controls, minimal color frame, and variation actions. */
.mod-single-add-to-cart {
	--mod-atc-set-minus-width: 50px;
	--mod-atc-set-input-width: 64px;
	--mod-atc-set-plus-width: 50px;
	--mod-atc-set-gap-one: 8px;
	--mod-atc-set-gap-two: 8px;
	--mod-swatch-minimal-selected-width: 2px;
	--mod-swatch-minimal-padding: 4px;
}

/* Preset sets use three independently sized controls. */
.mod-single-add-to-cart[class*="mod-atc-preset-"]:not(.mod-atc-preset-classic) .quantity.mod-atc-quantity--separate {
	display: grid !important;
	grid-template-columns: var(--mod-atc-set-minus-width) var(--mod-atc-set-gap-one) var(--mod-atc-set-input-width) var(--mod-atc-set-gap-two) var(--mod-atc-set-plus-width) !important;
	column-gap: 0 !important;
	width: max-content !important;
	max-width: 100%;
}
.mod-single-add-to-cart[class*="mod-atc-preset-"]:not(.mod-atc-preset-classic) .mod-atc-qty-minus {
	width: var(--mod-atc-set-minus-width) !important;
	min-width: var(--mod-atc-set-minus-width) !important;
	grid-column: 1;
}
.mod-single-add-to-cart[class*="mod-atc-preset-"]:not(.mod-atc-preset-classic) .mod-atc-quantity input.qty {
	width: var(--mod-atc-set-input-width) !important;
	min-width: var(--mod-atc-set-input-width) !important;
	margin: 0 !important;
	grid-column: 3;
}
.mod-single-add-to-cart[class*="mod-atc-preset-"]:not(.mod-atc-preset-classic) .mod-atc-qty-plus {
	width: var(--mod-atc-set-plus-width) !important;
	min-width: var(--mod-atc-set-plus-width) !important;
	margin: 0 !important;
	grid-column: 5;
}
.mod-single-add-to-cart.mod-atc-preset-round .quantity.mod-atc-quantity--separate {
	grid-template-columns: var(--mod-atc-set-minus-width) var(--mod-atc-set-gap-one) var(--mod-atc-set-input-width) var(--mod-atc-set-gap-two) var(--mod-atc-set-plus-width) !important;
}
.mod-single-add-to-cart.mod-atc-preset-round .mod-atc-quantity input.qty,
.mod-single-add-to-cart.mod-atc-preset-round .mod-atc-quantity button {
	max-width: none !important;
	border-radius: 999px !important;
}
.mod-single-add-to-cart.mod-atc-preset-solid .quantity.mod-atc-quantity--separate {
	border: 0 !important;
	background: transparent !important;
	overflow: visible;
}
.mod-single-add-to-cart.mod-atc-preset-solid .mod-atc-quantity input.qty,
.mod-single-add-to-cart.mod-atc-preset-solid .mod-atc-quantity button {
	border-radius: 0 !important;
}

/* Minimal color swatch: transparent at rest; the configured selected border
 * appears only on the active color. */
.mod-single-add-to-cart.mod-swatch-frame-minimal .mod-swatch--color {
	background: transparent !important;
	border-color: transparent !important;
	box-shadow: none !important;
	padding: var(--mod-swatch-minimal-padding) !important;
}
.mod-single-add-to-cart.mod-swatch-frame-minimal .mod-swatch--color:hover,
.mod-single-add-to-cart.mod-swatch-frame-minimal .mod-swatch--color:focus-visible {
	background: transparent !important;
	border-color: var(--mod-swatch-hover-border) !important;
}
.mod-single-add-to-cart.mod-swatch-frame-minimal .mod-swatch--color.is-selected,
.mod-single-add-to-cart.mod-swatch-frame-minimal .mod-swatch--color[aria-checked="true"] {
	background: transparent !important;
	border-style: solid !important;
	border-width: var(--mod-swatch-minimal-selected-width) !important;
	border-color: var(--mod-swatch-selected-border) !important;
}

/* Reset and stock share one compact row directly below the variation choices. */
.mod-atc-variation-actions {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	width: 100%;
	min-width: 0;
}
.mod-atc-variation-actions[hidden] { display: none !important; }
.mod-atc-variation-actions .reset_variations { margin: 0; flex: 0 1 auto; }
.mod-atc-stock-summary {
	display: inline-flex;
	align-items: center;
	justify-content: flex-end;
	min-width: 0;
	margin-inline-start: auto;
}
.mod-atc-stock-summary[hidden] { display: none !important; }
.mod-atc-stock-inline-actions .single_variation .woocommerce-variation-availability { display: none !important; }
.mod-atc-hide-availability .mod-atc-stock-summary { display: none !important; }

@media (max-width: 767px) {
	.mod-atc-variation-actions { flex-wrap: wrap; }
}


/* v0.5.9: product-type header messages, reliable variation spacing,
 * gated variable-product purchase row, and durable polygon borders. */
.mod-atc-header-message {
	display: block;
	width: 100%;
	min-width: 0;
	margin: 0 0 var(--mod-atc-header-gap, 14px);
}

/* The tbody must own the row gap. A block tbody breaks the grid gap on the
 * outer table, which is why Gap Between Attributes previously appeared idle. */
.mod-single-add-to-cart .variations tbody {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr);
	row-gap: var(--mod-atc-variation-gap, 14px);
	width: 100%;
}
.mod-single-add-to-cart .variations tr {
	margin: 0 !important;
}

/* Variable products expose purchase controls only after WooCommerce resolves
 * a real variation. Simple products never receive this gate class. */
.mod-single-add-to-cart.mod-atc-gate-purchase:not(.mod-atc-variation-ready) .woocommerce-variation-add-to-cart,
.mod-single-add-to-cart.mod-atc-gate-purchase:not(.mod-atc-variation-ready) .mod-atc-purchase-row {
	display: none !important;
}

/* Skew is a permanent MOD geometry rule: slanted controls must retain every
 * edge. A mask-based hollow polygon can erase the diagonal sides in Chromium,
 * especially at responsive widths. v0.5.10 uses an inset SVG polygon whose
 * complete stroke remains inside the clipped control. */
.mod-single-add-to-cart {
	--mod-atc-skew-outline-width: 1px;
	--mod-atc-skew-input-border-color: #d1d5db;
	--mod-atc-skew-input-focus-border-color: #111827;
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-qty-button,
.mod-single-add-to-cart.mod-atc-preset-skew .single_add_to_cart_button,
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-skew-input-shell {
	position: relative;
	isolation: isolate;
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-skew-outline-ready::after {
	content: none !important;
	display: none !important;
}
.mod-single-add-to-cart .mod-atc-skew-outline {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	max-height: none;
	z-index: 9;
	overflow: visible;
	pointer-events: none;
	user-select: none;
}
.mod-single-add-to-cart .mod-atc-skew-outline polygon {
	fill: none;
	stroke: var(--mod-atc-skew-runtime-border-color, var(--mod-atc-skew-border-color, #d1d5db));
	stroke-linejoin: miter;
	stroke-linecap: square;
	shape-rendering: geometricPrecision;
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-skew-input-shell {
	grid-column: 3;
	width: var(--mod-atc-set-input-width) !important;
	min-width: var(--mod-atc-set-input-width) !important;
	height: var(--mod-atc-control-height);
	clip-path: polygon(var(--mod-atc-qty-cut, 14px) 0, 100% 0, calc(100% - var(--mod-atc-qty-cut, 14px)) 100%, 0 100%);
	--mod-atc-skew-border-color: var(--mod-atc-skew-input-border-color);
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-skew-input-shell:focus-within {
	--mod-atc-skew-border-color: var(--mod-atc-skew-input-focus-border-color, var(--mod-atc-skew-input-border-color));
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-skew-input-shell input.qty {
	position: relative;
	z-index: 2;
	grid-column: auto !important;
	width: 100% !important;
	min-width: 0 !important;
	height: 100% !important;
	clip-path: inherit !important;
	border-color: transparent !important;
}

/* v0.5.11: single-source skew outline, carousel-style hover fill, and purchase notification. */
/* The SVG is the only visible border in Full Skew Set. Native borders stay
 * transparent (while retaining their configured width for layout and runtime
 * measurement), preventing doubled horizontal lines and uneven corners. */
.mod-single-add-to-cart.mod-atc-preset-skew .quantity.mod-atc-quantity .mod-atc-qty-button.mod-atc-skew-outline-ready,
.mod-single-add-to-cart.mod-atc-preset-skew .quantity.mod-atc-quantity .mod-atc-skew-input-shell.mod-atc-skew-outline-ready,
.mod-single-add-to-cart.mod-atc-preset-skew .quantity.mod-atc-quantity .mod-atc-skew-input-shell.mod-atc-skew-outline-ready input.qty,
.mod-single-add-to-cart.mod-atc-preset-skew .single_add_to_cart_button.mod-atc-skew-outline-ready {
	border-color: transparent !important;
	outline-color: transparent !important;
}
.mod-single-add-to-cart.mod-atc-preset-skew .mod-atc-skew-input-shell.mod-atc-skew-outline-ready input.qty {
	box-shadow: none !important;
}
.mod-single-add-to-cart .mod-atc-skew-outline {
	inset: 0;
	z-index: 20;
	shape-rendering: auto;
}
.mod-single-add-to-cart .mod-atc-skew-outline polygon {
	stroke-linejoin: round;
	stroke-linecap: butt;
	shape-rendering: geometricPrecision;
}

/* Match MOD Product Carousel: a skew button starts with a narrow strip that
 * follows the slanted edge, then the same polygon fills the whole button. */
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-left::before,
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-right::before {
	inset: 0 !important;
	width: 100% !important;
	height: 100% !important;
	transition: clip-path var(--mod-button-fill-speed, 280ms) ease !important;
}
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-left::before {
	clip-path: polygon(
		var(--mod-button-cut, 18px) 0,
		calc(var(--mod-button-cut, 18px) + var(--mod-button-hover-fill-start, 2px)) 0,
		var(--mod-button-hover-fill-start, 2px) 100%,
		0 100%
	);
}
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-right::before {
	clip-path: polygon(
		calc(100% - var(--mod-button-hover-fill-start, 2px)) 0,
		100% 0,
		calc(100% - var(--mod-button-cut, 18px)) 100%,
		calc(100% - var(--mod-button-cut, 18px) - var(--mod-button-hover-fill-start, 2px)) 100%
	);
}
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-left:hover::before,
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-right:hover::before,
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-left:focus-visible::before,
.mod-single-add-to-cart .single_add_to_cart_button.mod-el-button--skew.mod-el-button--hover-fill-right:focus-visible::before {
	clip-path: polygon(
		var(--mod-button-cut, 18px) 0,
		100% 0,
		calc(100% - var(--mod-button-cut, 18px)) 100%,
		0 100%
	);
}

/* Purchase notification portal. The Elementor wrapper classes are copied to
 * the portal host so all scoped style controls continue to apply after it is
 * moved to body level. */
.mod-atc-notification-portal {
	position: fixed;
	inset: 0;
	z-index: 1000000;
	display: grid;
	place-items: center;
	padding: clamp(16px, 4vw, 48px);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity .24s ease, visibility .24s ease;
}
.mod-atc-notification__scope { display: contents; }
.mod-atc-notification-portal[hidden] { display: none !important; }
.mod-atc-notification-portal.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}
.mod-atc-notification__overlay {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .62);
}
.mod-atc-notification__dialog {
	--mod-atc-notification-gap: 16px;
	position: relative;
	z-index: 1;
	display: grid;
	gap: var(--mod-atc-notification-gap);
	width: min(520px, 100%);
	max-width: 100%;
	max-height: calc(100dvh - 32px);
	overflow: auto;
	padding: 32px;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 24px 80px rgba(0, 0, 0, .28);
	transform: translateY(14px) scale(.98);
	transition: transform .24s ease;
}
.mod-atc-notification-portal.is-open .mod-atc-notification__dialog {
	transform: translateY(0) scale(1);
}
.mod-atc-notification__content {
	display: grid;
	gap: var(--mod-atc-notification-gap);
	min-width: 0;
	text-align: center;
}
.mod-atc-notification__title {
	margin: 0;
	font-size: clamp(22px, 3vw, 32px);
	font-weight: 800;
	line-height: 1.2;
	color: #111827;
}
.mod-atc-notification__message {
	margin: 0;
	font-size: 17px;
	line-height: 1.7;
	color: #374151;
}
.mod-atc-notification__highlight { font-weight: 800; color: var(--mod-ct-primary, #c1121f); }
.mod-atc-notification__actions {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 100%;
}
.mod-atc-notification__close-icon {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	min-width: 0;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: #f3f4f6;
	color: #111827;
	font: inherit;
	font-size: 24px;
	line-height: 1;
	cursor: pointer;
	transition: color .2s ease, background-color .2s ease, transform .2s ease;
}
.mod-atc-notification__close-icon:hover { background: #e5e7eb; transform: rotate(4deg); }
.mod-atc-notification__close-icon:focus-visible,
.mod-atc-notification__close-button:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
body.mod-atc-notification-open { overflow: hidden !important; }

/* Editor-only, non-modal style preview. */
.mod-atc-notification-preview {
	position: relative;
	display: grid;
	place-items: center;
	width: 100%;
	margin-top: 24px;
	padding: 28px;
	border: 1px dashed #a7a7a7;
	background: rgba(0, 0, 0, .08);
}
.mod-atc-notification-preview .mod-atc-notification__dialog {
	position: relative;
	transform: none;
}

@media (max-width: 767px) {
	.mod-atc-notification-portal { padding: 14px; }
	.mod-atc-notification__dialog { padding: 26px 20px; max-height: calc(100dvh - 28px); }
}
@media (prefers-reduced-motion: reduce) {
	.mod-atc-notification-portal,
	.mod-atc-notification__dialog,
	.mod-atc-notification__close-icon { transition: none !important; }
}
