/*
 * AS Product Detail — base styles (phone first). tablet.css and desktop.css add the larger layouts
 * with media attributes taken from the settings.
 *
 * Tokens (--aspd-*) are printed on body.aspd-page from the settings. Values reproduce autoolstore.com.
 * Selectors are prefixed with body.aspd-page so the child theme's global :is() overrides
 * (fonts / radii marked !important) do not leak into the layout.
 */

/* ---------- Tokens and page ---------- */
body.aspd-page {
	--aspd-gutter: var(--aspd-gutter-mob, 5vw);
	--aspd-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1.8l3.1 6.6 7.2.9-5.3 5 1.4 7.1L12 17.9l-6.4 3.5L7 14.3l-5.3-5 7.2-.9z'/%3E%3C/svg%3E");
	background: var(--aspd-page);
}
body.aspd-page .aspd {
	color: var(--aspd-body);
	font-family: var(--aspd-font-text);
	font-size: 16px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
body.aspd-page .aspd *,
body.aspd-page .aspd *::before,
body.aspd-page .aspd *::after,
body.aspd-page .aspd-snav *,
body.aspd-page .aspd-bar *,
body.aspd-page .aspd-dialog * {
	box-sizing: border-box;
}
/* The root spans the viewport so section backgrounds run edge to edge inside any theme container. */
body.aspd-page .aspd {
	position: relative;
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}
body.aspd-page {
	overflow-x: clip;
}
/* Dialogs and drawers lock page scrolling; reserving the scrollbar's gutter keeps the page from shifting sideways. */
html:has(> body.aspd-page) {
	scrollbar-gutter: stable;
	/* The theme / description CSS animate every browser jump (reload, back, #hash) with smooth scrolling, which
	   reads as the page dragging itself on open; frontend.js scrolls smoothly only where the user asked. */
	scroll-behavior: auto !important;
}
/* The layout manages its own spacing: drop the theme's content padding around it (Blocksy: 60px). */
body.aspd-page [data-vertical-spacing]:has(> article > .aspd),
body.aspd-page [data-vertical-spacing]:has(> .aspd) {
	padding-top: 0;
	padding-bottom: 0;
}
body.aspd-page .aspd-container {
	width: calc(100% - 2 * var(--aspd-gutter));
	max-width: var(--aspd-max);
	margin-left: auto;
	margin-right: auto;
}
body.aspd-page .aspd :is(h1, h2, h3) {
	letter-spacing: normal;
}
body.aspd-page .aspd :is(button, a) {
	-webkit-tap-highlight-color: transparent;
}
body.aspd-page .aspd :focus-visible,
body.aspd-page .aspd-snav :focus-visible,
body.aspd-page .aspd-bar :focus-visible,
body.aspd-page .aspd-dialog :focus-visible {
	outline: 2px solid var(--aspd-heading);
	outline-offset: 2px;
}

/* ---------- Buttons ---------- */
body.aspd-page :is(.aspd, .aspd-bar, .aspd-dialog) .aspd-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	min-height: 48px;
	margin: 0;
	padding: 0 24px;
	border: 1px solid var(--aspd-heading);
	border-radius: var(--aspd-r-button) !important;
	background: transparent;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 15px;
	font-weight: 600 !important;
	line-height: 1.1;
	letter-spacing: .04em;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, opacity .18s ease;
}
body.aspd-page :is(.aspd, .aspd-bar, .aspd-dialog) .aspd-btn--primary {
	border-color: var(--aspd-cta);
	background: var(--aspd-cta);
	color: var(--aspd-cta-ink);
	font-family: var(--aspd-font-text) !important;
}
body.aspd-page :is(.aspd, .aspd-bar, .aspd-dialog) .aspd-btn--primary:hover {
	filter: brightness(.96);
}
body.aspd-page :is(.aspd, .aspd-bar, .aspd-dialog) .aspd-btn--outline:hover {
	background: var(--aspd-heading);
	color: #fff;
}

/* ---------- Stars (CSS mask; --aspd-rating = fill %) ---------- */
body.aspd-page .aspd-stars {
	display: inline-block;
	flex: none;
	width: 81px;
	height: 15px;
	background: linear-gradient(90deg, var(--aspd-accent) var(--aspd-rating, 0%), var(--aspd-border) var(--aspd-rating, 0%));
	-webkit-mask: var(--aspd-star) left center / 16.2px 15px repeat-x;
	mask: var(--aspd-star) left center / 16.2px 15px repeat-x;
}
body.aspd-page .aspd-stars--small {
	width: 78px;
	height: 14px;
	-webkit-mask-size: 15.6px 14px;
	mask-size: 15.6px 14px;
}

/* ---------- Main: gallery + purchase column ---------- */
body.aspd-page .aspd-main {
	padding: 0 0 40px;
}
body.aspd-page .aspd-main__media {
	margin: 0 calc(-1 * var(--aspd-gutter)) 18px;
	min-width: 0;
}
body.aspd-page .aspd-main__info {
	min-width: 0;
}
body.aspd-page .aspd-block {
	margin-top: 0;
}

/* ---------- Gallery ---------- */
body.aspd-page .aspd-gallery {
	position: relative;
	user-select: none;
	-webkit-user-select: none;
}
body.aspd-page .aspd-gallery__media {
	position: relative;
	overflow: hidden;
	background: var(--aspd-media-bg);
}
body.aspd-page .aspd-gallery__track {
	display: flex;
	gap: 0;
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
	outline: none;
}
body.aspd-page .aspd-gallery__track::-webkit-scrollbar {
	display: none;
}
body.aspd-page .aspd-gallery__slide {
	position: relative;
	flex: 0 0 100%;
	aspect-ratio: 1 / 1;
	margin: 0;
	scroll-snap-align: start;
	background: var(--aspd-media-bg);
	overflow: hidden;
}
body.aspd-page .aspd-gallery__link,
body.aspd-page .aspd-gallery__play {
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0 !important;
	background: transparent;
	cursor: zoom-in;
}
body.aspd-page .aspd-gallery__img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: 100%;
	object-fit: var(--aspd-media-fit, contain);
	border-radius: 0;
	-webkit-user-drag: none;
	pointer-events: none;
}
body.aspd-page .aspd-gallery__play {
	position: relative;
	cursor: pointer;
	background: #000;
}
body.aspd-page .aspd-gallery__poster {
	object-fit: cover;
	opacity: .92;
}
body.aspd-page .aspd-gallery__play-icon {
	position: absolute;
	top: 50%;
	left: 50%;
	display: grid;
	place-items: center;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .9);
	color: var(--aspd-heading);
	transform: translate(-50%, -50%);
	box-shadow: 0 6px 24px rgba(0, 0, 0, .25);
}
body.aspd-page .aspd-gallery__play-icon .aspd-icon {
	width: 26px;
	height: 26px;
	margin-left: 3px;
}
body.aspd-page .aspd-gallery__slide iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
	background: #000;
}
body.aspd-page .aspd-gallery__arrow,
body.aspd-page .aspd-gallery__thumbs {
	display: none;
}
body.aspd-page .aspd-gallery__zoom {
	position: absolute;
	top: 20px;
	right: 20px;
	z-index: 9;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	margin: 0;
	padding: 0;
	border: 1px solid rgba(226, 232, 240, .8);
	border-radius: 999px !important;
	background: rgba(255, 255, 255, .94);
	color: var(--aspd-heading);
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	cursor: pointer;
}
body.aspd-page .aspd-gallery__zoom .aspd-icon {
	width: 17px;
	height: 17px;
}
body.aspd-page .aspd-gallery__dots {
	position: absolute;
	left: 50%;
	bottom: 15px;
	z-index: 12;
	max-width: 138px;
	padding: 2px 6px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .62);
	transform: translateX(-50%);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
	overflow: hidden;
	pointer-events: none;
}
body.aspd-page .aspd-gallery__dots-track {
	display: flex;
	transition: transform .25s ease;
}
body.aspd-page .aspd-gallery__dot {
	position: relative;
	flex: 0 0 18px;
	height: 18px;
}
body.aspd-page .aspd-gallery__dot::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 6px;
	height: 6px;
	border-radius: 999px;
	background: rgba(26, 29, 32, .28);
	transform: translate(-50%, -50%);
	transition: width .2s ease, background-color .2s ease;
}
body.aspd-page .aspd-gallery__dot.is-active::before {
	width: 14px;
	background: var(--aspd-heading);
}
body.aspd-page .aspd-gallery__dot.is-small::before {
	width: 4px;
	height: 4px;
}
body.aspd-page .aspd-gallery__counter {
	position: absolute;
	right: 14px;
	bottom: 14px;
	z-index: 12;
	min-width: 40px;
	padding: 4px 10px;
	border-radius: 999px;
	background: rgba(26, 29, 32, .72);
	color: #fff;
	font-family: var(--aspd-font-text);
	font-size: 11px;
	font-weight: 600;
	line-height: 16px;
	letter-spacing: .04em;
	text-align: center;
	pointer-events: none;
}

/* ---------- Breadcrumbs ---------- */
body.aspd-page .aspd-crumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 0;
	margin: 0 0 9px;
	color: var(--aspd-text);
	font-family: var(--aspd-font-text);
	font-size: 9px;
	font-weight: 400;
	line-height: 1.2;
	letter-spacing: .08em;
	text-transform: uppercase;
}
body.aspd-page .aspd-crumbs__item {
	display: inline-flex;
	align-items: center;
}
body.aspd-page .aspd-crumbs a {
	color: inherit;
	text-decoration: none;
}
body.aspd-page .aspd-crumbs a:hover {
	color: var(--aspd-heading);
}
body.aspd-page .aspd-crumbs .aspd-icon {
	width: 8px;
	height: 8px;
	margin: 0 8px;
	stroke-width: 3;
}

/* ---------- Title, rating, price ---------- */
body.aspd-page .aspd .aspd-title {
	margin: 0 0 12px;
	padding: 0;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 24px;
	font-weight: 700 !important;
	line-height: 1.15;
	letter-spacing: -.02em;
	text-transform: none;
}
body.aspd-page .aspd-rating {
	display: flex;
	width: fit-content;
	align-items: center;
	gap: 10px;
	margin: 0 0 16px;
	line-height: 1;
}
body.aspd-page .aspd-rating__link {
	display: flex;
	align-items: center;
	min-height: 15px;
	color: var(--aspd-text);
	font-family: var(--aspd-font-text);
	font-size: 12px;
	font-weight: 500;
	line-height: 1;
	text-decoration: none;
	text-transform: uppercase;
}
body.aspd-page .aspd-rating__link:hover {
	color: var(--aspd-heading);
}
body.aspd-page .aspd .aspd-price {
	display: block;
	margin: 0 0 20px;
	color: var(--aspd-text);
	font-family: var(--aspd-font-text);
	font-size: 20px;
	font-weight: 700;
	line-height: 1;
}
body.aspd-page .aspd .aspd-price :is(.amount, .amount bdi, .woocommerce-Price-currencySymbol, ins, .wcpbc-price) {
	color: var(--aspd-price, var(--aspd-accent));
	font-family: var(--aspd-font-display) !important;
	font-size: 23px;
	font-weight: 600 !important;
	line-height: 1;
	letter-spacing: .04em;
	text-decoration: none;
	background: none;
}
body.aspd-page .aspd .aspd-price del,
body.aspd-page .aspd .aspd-price del :is(.amount, .amount bdi, .woocommerce-Price-currencySymbol) {
	color: var(--aspd-text);
	font-size: .6em;
	opacity: .7;
}
body.aspd-page .aspd .aspd-price del {
	margin-right: 8px;
	font-size: 16px;
}
body.aspd-page .aspd .aspd-price .screen-reader-text + .amount,
body.aspd-page .aspd .aspd-price ins {
	text-decoration: none;
}

/* ---------- Key features ---------- */
body.aspd-page .aspd-kf {
	display: grid;
	gap: 9px;
	margin: 0 0 18px;
	padding: 14px 0;
	border-top: 1px solid rgba(226, 232, 240, .82);
	border-bottom: 1px solid rgba(226, 232, 240, .7);
}
body.aspd-page .aspd-kf__head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 8px 12px;
}
body.aspd-page .aspd .aspd-kf__title {
	margin: 0;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 13px;
	font-weight: 600 !important;
	line-height: 1.2;
	letter-spacing: .04em;
	text-transform: uppercase;
}
body.aspd-page .aspd .aspd-kf__more {
	display: flex;
	align-items: center;
	flex: none;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0 !important;
	background: none;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 12px;
	font-weight: 600 !important;
	line-height: 1.2;
	letter-spacing: .04em;
	text-transform: uppercase;
	cursor: pointer;
}
body.aspd-page .aspd .aspd-kf__more:hover {
	color: var(--aspd-accent);
}
body.aspd-page .aspd-kf__list {
	display: grid;
	gap: 3px;
	margin: 0;
	padding: 0;
	list-style: none;
}
body.aspd-page .aspd-kf__item {
	display: flex;
	align-items: center;
	min-height: 22px;
	margin: 0;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.45;
}
body.aspd-page .aspd-kf__item::before {
	content: "";
	flex: none;
	width: 5px;
	height: 5px;
	margin-right: 8px;
	border-radius: 999px;
	background: var(--aspd-accent);
}
body.aspd-page .aspd-kf__item.is-over-mob {
	display: none;
}
body.aspd-page .aspd-short {
	margin: 0 0 18px;
	color: var(--aspd-text);
	font-size: 15px;
	line-height: 1.7;
}

/* ---------- Purchase form ---------- */
body.aspd-page .aspd-buy {
	margin: 0 0 14px;
}
body.aspd-page .aspd-buy form.cart {
	margin: 0;
	padding: 0;
	border: 0;
}
body.aspd-page .aspd-buy table.variations {
	display: block;
	width: 100%;
	margin: 0 0 20px;
	border: 0;
	border-collapse: collapse;
	background: none;
}
body.aspd-page .aspd-buy table.variations :is(tbody, tr, th, td) {
	display: block;
	width: 100%;
	padding: 0;
	border: 0;
	background: none;
	text-align: left;
}
body.aspd-page .aspd-buy table.variations tr {
	position: relative;
}
body.aspd-page .aspd-buy table.variations tr + tr {
	margin-top: 21px;
}
body.aspd-page .aspd-buy table.variations th.label {
	display: flex;
	align-items: baseline;
	gap: 8px;
	padding-right: 120px;
}
body.aspd-page .aspd .aspd-buy table.variations th.label label {
	display: flex;
	margin: 0 0 8px;
	color: var(--aspd-text);
	font-family: var(--aspd-font-display) !important;
	font-size: 12px;
	font-weight: 600 !important;
	line-height: 1.3;
	letter-spacing: .08em;
	text-transform: uppercase;
	cursor: default;
}
body.aspd-page .aspd-buy .reset_variations {
	display: none !important;
}
body.aspd-page .aspd-options-field {
	position: static;
}
body.aspd-page .aspd-options__select {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}
body.aspd-page .aspd-options {
	display: grid;
	grid-template-columns: repeat(var(--aspd-option-cols, 2), minmax(0, 1fr));
	gap: 8px;
}
body.aspd-page .aspd .aspd-option {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 56px;
	margin: 0;
	padding: 10px;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card) !important;
	background: var(--aspd-surface);
	color: var(--aspd-heading);
	text-align: center;
	cursor: pointer;
	transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
body.aspd-page .aspd .aspd-option__label {
	display: block;
	max-width: 100%;
	font-family: var(--aspd-font-display) !important;
	font-size: 13px;
	font-weight: 600 !important;
	line-height: 1.22;
	letter-spacing: .04em;
	text-transform: uppercase;
	overflow-wrap: anywhere;
}
body.aspd-page .aspd .aspd-option:hover {
	border-color: var(--aspd-heading);
}
body.aspd-page .aspd .aspd-option[aria-pressed="true"] {
	border-color: var(--aspd-accent);
	background: var(--aspd-selected);
	box-shadow: inset 0 0 0 1px var(--aspd-accent);
}
body.aspd-page .aspd .aspd-option.is-unavailable {
	color: rgba(26, 29, 32, .4);
	background: repeating-linear-gradient(135deg, var(--aspd-surface) 0 6px, var(--aspd-surface-alt) 6px 7px);
}
body.aspd-page .aspd .aspd-option.is-unavailable .aspd-option__label {
	text-decoration: line-through;
}
body.aspd-page .aspd .aspd-option.is-unavailable:hover {
	border-color: var(--aspd-border);
}
body.aspd-page .aspd .aspd-options__clear {
	position: absolute;
	top: 0;
	right: 0;
	display: flex;
	margin: 0;
	padding: 0;
	border: 0;
	border-bottom: 1px solid currentColor;
	border-radius: 0 !important;
	background: none;
	color: var(--aspd-text);
	font-family: var(--aspd-font-display) !important;
	font-size: 12px;
	font-weight: 600 !important;
	line-height: 1.35;
	text-transform: uppercase;
	cursor: pointer;
}
body.aspd-page .aspd .aspd-options__clear[hidden] {
	display: none;
}
body.aspd-page .aspd .aspd-options__clear:hover {
	color: var(--aspd-heading);
}
body.aspd-page .aspd-buy .single_variation_wrap .woocommerce-variation :is(.woocommerce-variation-price, .woocommerce-variation-description) {
	display: none;
}
body.aspd-page .aspd-buy .woocommerce-variation-availability p.stock,
body.aspd-page .aspd-buy > form.cart > p.stock,
body.aspd-page .aspd-buy > p.stock {
	margin: 0 0 12px;
	color: var(--aspd-text);
	font-size: 13px;
	font-weight: 600;
}
body.aspd-page .aspd-buy p.stock.out-of-stock {
	color: #b42318;
}
/* Cart actions row: quantity + add to cart. Blocksy wraps them in .ct-cart-actions, plain WooCommerce does not;
   anything else other plugins print in the form (service plans, notices…) takes a full row above. */
body.aspd-page .aspd-buy :is(.ct-cart-actions, form.cart:not(.variations_form):not(.grouped_form), .woocommerce-variation-add-to-cart) {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
}
body.aspd-page .aspd-buy :is(.ct-cart-actions, form.cart:not(.variations_form):not(.grouped_form), .woocommerce-variation-add-to-cart) > * {
	flex: 1 1 100%;
	min-width: 0;
	margin-bottom: 0;
}
body.aspd-page .aspd-buy :is(.ct-cart-actions, form.cart:not(.variations_form):not(.grouped_form), .woocommerce-variation-add-to-cart) > .quantity {
	flex: 0 0 auto;
}
/* AUTOBOSS Service Plans picker (when enabled): last row of the purchase block, under add to cart. */
body.aspd-page .aspd-buy :is(.ct-cart-actions, form.cart:not(.variations_form):not(.grouped_form), .woocommerce-variation-add-to-cart) > .absp-wrap {
	order: 99;
	margin: 4px 0 0 !important;
}
body.aspd-page .aspd-buy .ct-variation-swatches {
	display: block;
}
/* Option cards replace Blocksy's own swatches; the hidden select keeps driving both. */
body.aspd-page .aspd-buy .ct-variation-swatches:has(> .aspd-options-field) > .ct-swatch-container {
	display: none;
}
body.aspd-page .aspd-options-field {
	width: 100%;
	font-family: var(--aspd-font-text);
}
body.aspd-page .aspd-buy .quantity {
	position: relative;
	display: flex;
	flex: none;
	width: auto;
	max-width: 100%;
	height: auto;
	min-height: 56px;
	margin: 0;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card) !important;
	background: var(--aspd-surface);
	overflow: hidden;
}
body.aspd-page .aspd-buy .quantity :is(.ct-increase, .ct-decrease) {
	display: none !important;
}
body.aspd-page #aspd-purchase .aspd-buy .quantity input.qty {
	order: 2;
	width: 64px;
	height: auto;
	min-height: 54px;
	margin: 0;
	padding: 0 6px;
	border: 0;
	border-left: 1px solid var(--aspd-border);
	border-right: 1px solid var(--aspd-border);
	border-radius: 0 !important;
	background: var(--aspd-surface);
	box-shadow: none;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text) !important;
	font-size: 16px;
	font-weight: 600 !important;
	line-height: 1;
	text-align: center;
	-moz-appearance: textfield;
	appearance: textfield;
}
body.aspd-page .aspd-buy .quantity .qty::-webkit-inner-spin-button,
body.aspd-page .aspd-buy .quantity .qty::-webkit-outer-spin-button {
	margin: 0;
	-webkit-appearance: none;
}
body.aspd-page .aspd .aspd-qty__btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	min-height: 54px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0 !important;
	background: var(--aspd-surface);
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 20px;
	font-weight: 400 !important;
	line-height: 1;
	cursor: pointer;
}
body.aspd-page .aspd .aspd-qty__btn--minus {
	order: 1;
}
body.aspd-page .aspd .aspd-qty__btn--plus {
	order: 3;
}
body.aspd-page .aspd .aspd-qty__btn:hover {
	background: var(--aspd-surface-alt);
}
body.aspd-page #aspd-purchase .aspd-buy .single_add_to_cart_button {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 56px;
	height: auto;
	margin: 0;
	padding: 5px 20px;
	border: 0;
	border-radius: var(--aspd-r-button) !important;
	background: var(--aspd-cta);
	box-shadow: none;
	color: var(--aspd-cta-ink);
	font-family: var(--aspd-font-text) !important;
	font-size: 18px;
	font-weight: 600 !important;
	line-height: 1;
	letter-spacing: .04em;
	text-transform: uppercase;
	cursor: pointer;
	transition: opacity .18s ease, filter .18s ease;
}
body.aspd-page #aspd-purchase .aspd-buy .single_add_to_cart_button:hover {
	filter: brightness(.96);
}
body.aspd-page #aspd-purchase .aspd-buy .single_add_to_cart_button:is(.disabled, :disabled) {
	opacity: .5;
	cursor: not-allowed;
	filter: none;
}
body.aspd-page #aspd-purchase .aspd-buy .single_add_to_cart_button.loading {
	opacity: .75;
	pointer-events: none;
}
body.aspd-page #aspd-purchase .aspd-buy .single_add_to_cart_button.loading::after {
	content: "";
	width: 14px;
	height: 14px;
	margin-left: 10px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: aspd-spin .7s linear infinite;
}
body.aspd-page .aspd-buy .added_to_cart {
	display: none;
}
body.aspd-page .aspd-buy.is-attention table.variations {
	animation: aspd-shake .45s ease;
}
/* Grouped products: WooCommerce's table, tidied. */
body.aspd-page .aspd-buy table.group_table {
	width: 100%;
	margin: 0 0 16px;
	border-collapse: collapse;
}
body.aspd-page .aspd-buy table.group_table td {
	padding: 10px 8px;
	border-bottom: 1px solid var(--aspd-border);
	vertical-align: middle;
}

/* ---------- Quote, trust, actions, meta ---------- */
body.aspd-page .aspd-quote {
	margin: 0 0 14px;
}
body.aspd-page .aspd .aspd-quote__btn {
	min-height: 48px;
}
body.aspd-page .aspd-trust {
	position: relative;
	display: grid;
	grid-template-columns: 1fr;
	margin: 0 0 35px;
	padding: 0;
	border: 3px solid var(--aspd-border);
	background: var(--aspd-surface-alt);
	list-style: none;
}
body.aspd-page .aspd-trust__item {
	position: relative;
	display: grid;
	grid-template-columns: 30px minmax(0, 1fr);
	align-items: center;
	column-gap: 10px;
	margin: 0;
	padding: 10px 13px;
	border-bottom: 1px solid var(--aspd-border);
	text-align: left;
}
body.aspd-page .aspd-trust__item:last-child {
	border-bottom: 0;
}
body.aspd-page .aspd-trust__icon {
	position: relative;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border: 1px solid rgba(74, 85, 104, .48);
	background: rgba(74, 85, 104, .07);
	color: var(--aspd-text);
}
body.aspd-page .aspd-trust__icon::after {
	content: "";
	position: absolute;
	inset: 3px;
	border: 1px solid rgba(74, 85, 104, .14);
	pointer-events: none;
}
body.aspd-page .aspd-trust__icon .aspd-icon {
	position: relative;
	width: 18px;
	height: 18px;
	stroke-width: 1.7;
}
body.aspd-page .aspd-trust__copy {
	min-width: 0;
}
body.aspd-page .aspd .aspd-trust__title {
	display: block;
	color: var(--aspd-text);
	font-family: var(--aspd-font-display) !important;
	font-size: 10.75px;
	font-weight: 600 !important;
	line-height: 1.25;
	letter-spacing: .065em;
	text-transform: uppercase;
}
body.aspd-page .aspd .aspd-trust__desc {
	display: block;
	margin-top: 2px;
	color: rgba(74, 85, 104, .6);
	font-family: var(--aspd-font-display) !important;
	font-size: 10.5px;
	font-weight: 400 !important;
	line-height: 1.35;
	letter-spacing: .005em;
}
body.aspd-page .aspd-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin: 0;
}
body.aspd-page .aspd .aspd-actions > button {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 40px;
	margin: 0;
	padding: 5px 15px;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card) !important;
	background: transparent;
	color: var(--aspd-text);
	cursor: pointer;
}
body.aspd-page .aspd .aspd-actions > button:hover {
	border-color: var(--aspd-heading);
	color: var(--aspd-heading);
}
body.aspd-page .aspd .aspd-actions .ct-label {
	font-family: var(--aspd-font-text);
	font-size: 14px;
	font-weight: 500;
	line-height: 1.65;
}
body.aspd-page .aspd .aspd-actions .ct-icon-container svg {
	width: 14px;
	height: 14px;
}
body.aspd-page .aspd .aspd-actions .ct-tooltip,
body.aspd-page .aspd .aspd-actions .ct-label {
	display: none;
}
body.aspd-page .aspd .aspd-actions > button {
	min-width: 46px;
	padding: 5px 15px;
}
body.aspd-page .aspd-meta {
	display: grid;
	gap: 6px;
	margin: 0 0 24px;
	color: var(--aspd-text);
	font-size: 13px;
}
body.aspd-page .aspd-meta > div {
	display: flex;
	gap: 8px;
}
body.aspd-page .aspd-meta :is(dt, dd) {
	margin: 0;
}
body.aspd-page .aspd-meta dt {
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .06em;
}
body.aspd-page .aspd-meta a {
	color: inherit;
}
body.aspd-page .aspd-custom,
body.aspd-page .aspd-hook {
	margin: 0 0 24px;
}

/* ---------- Description ---------- */
body.aspd-page .aspd-description {
	margin-top: 60px;
	background: var(--aspd-surface);
}
body.aspd-page .aspd-description.is-contained .aspd-description__body {
	width: calc(100% - 2 * var(--aspd-gutter));
	max-width: min(var(--aspd-max), 960px);
	margin: 0 auto;
	padding: 48px 0;
	color: var(--aspd-text);
	line-height: 1.75;
}
body.aspd-page .aspd-description.is-contained .aspd-description__body img {
	max-width: 100%;
	height: auto;
}
body.aspd-page .aspd-description.is-full .aspd-description__body {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
}
body.aspd-page .aspd-description.is-full .aspd-description__body > :is(h2.aspd-description__title, .aspd-description__attributes) {
	width: calc(100% - 2 * var(--aspd-gutter));
	max-width: var(--aspd-max);
	margin-left: auto;
	margin-right: auto;
}
/* Designed AUTOOL content sizes its sections from these variables; align them with the layout container. */
body.aspd-page #tab-description {
	--autool-single-container-width: calc(100% - 2 * var(--aspd-gutter));
	--autool-single-container-max: var(--aspd-max);
}
body.aspd-page #tab-description .autool-description,
body.aspd-page #tab-description .autool-page-shell {
	--autool-product-content: var(--aspd-max);
	--autool-product-wide: var(--aspd-max);
	--autool-product-gutter: var(--aspd-gutter);
}
body.aspd-page .aspd-description__body > :first-child {
	margin-top: 0;
}
body.aspd-page .aspd-description__body > :last-child {
	margin-bottom: 0;
}
body.aspd-page .aspd-description__attributes {
	padding: 40px 0;
}
body.aspd-page .aspd-description__attributes table {
	width: 100%;
	border-collapse: collapse;
}
body.aspd-page .aspd-description__attributes :is(th, td) {
	padding: 12px 14px;
	border-bottom: 1px solid var(--aspd-border);
	text-align: left;
	vertical-align: top;
}
body.aspd-page .aspd-description__attributes th {
	width: 32%;
	color: var(--aspd-heading);
	font-weight: 600;
}
body.aspd-page .aspd-description__attributes td p {
	margin: 0;
}

/* ---------- Section titles ---------- */
body.aspd-page .aspd .aspd-section-title {
	margin: 0 0 22px;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 22px;
	font-weight: 800 !important;
	line-height: 1.15;
	letter-spacing: .05em;
	text-transform: uppercase;
}

/* ---------- Reviews ---------- */
body.aspd-page .aspd-reviews {
	padding: 40px 0 72px;
	border-top: 1px solid var(--aspd-border);
	color: var(--aspd-text);
}
body.aspd-page .aspd-description + .aspd-reviews {
	margin-top: 0;
}
body.aspd-page .aspd-reviews__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: start;
	gap: 20px;
}
body.aspd-page .aspd-reviews__summary {
	padding: 18px;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card);
	background: var(--aspd-surface-alt);
}
body.aspd-page .aspd-reviews__score {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: center;
	gap: 16px;
	margin: 0 0 24px;
}
body.aspd-page .aspd-reviews__score-main {
	display: grid;
	justify-items: start;
}
body.aspd-page .aspd .aspd-reviews__average {
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 56px;
	font-weight: 800 !important;
	line-height: 1;
}
body.aspd-page .aspd-reviews__score .aspd-stars {
	width: 73px;
	height: 13px;
	margin-top: 8px;
	background: linear-gradient(90deg, #e5a30f var(--aspd-rating, 0%), var(--aspd-border) var(--aspd-rating, 0%));
	-webkit-mask-size: 14.6px 13px;
	mask-size: 14.6px 13px;
}
body.aspd-page .aspd-reviews__based {
	margin-top: 9px;
	color: var(--aspd-text);
	font-size: 12px;
	line-height: 1.35;
	letter-spacing: .06em;
	text-transform: uppercase;
}
body.aspd-page .aspd-reviews__bars {
	display: flex;
	flex-direction: column;
	gap: 8px;
}
body.aspd-page .aspd-reviews__bar {
	display: grid;
	grid-template-columns: 30px 12px minmax(0, 1fr) 24px;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	line-height: 1;
}
body.aspd-page .aspd-reviews__bar-label {
	text-align: right;
}
body.aspd-page .aspd-reviews__bar-icon {
	color: #e5a30f;
}
body.aspd-page .aspd-reviews__bar-track {
	position: relative;
	display: block;
	height: 8px;
	background: var(--aspd-surface);
	overflow: hidden;
}
body.aspd-page .aspd-reviews__bar-fill {
	display: block;
	height: 100%;
	background: var(--aspd-accent);
}
body.aspd-page .aspd-reviews__actions {
	display: flex;
	flex-direction: column;
	gap: 12px;
}
body.aspd-page .aspd-reviews__list {
	container-type: inline-size;
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
}
body.aspd-page .aspd-review {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: start;
	gap: 16px;
	padding: 20px 20px 40px;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card);
	background: var(--aspd-surface);
}
body.aspd-page .aspd .aspd-review__avatar {
	display: none;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 1px solid var(--aspd-heading);
	background: var(--aspd-heading);
	color: var(--aspd-accent);
	font-family: var(--aspd-font-display) !important;
	font-size: 14px;
	font-weight: 600 !important;
	line-height: 1;
	letter-spacing: .06em;
}
body.aspd-page .aspd-review__body {
	min-width: 0;
}
/* Wide cards put the stars beside the reviewer; narrow ones (phone, tablet column) stack them on top. */
@container (min-width: 560px) {
	body.aspd-page .aspd .aspd-reviews__list .aspd-review__head {
		flex-direction: row;
		justify-content: space-between;
	}
}
body.aspd-page .aspd-review__head {
	display: flex;
	flex-direction: column-reverse;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px 16px;
	margin: 0 0 12px;
}
body.aspd-page .aspd-review__who {
	display: grid;
	gap: 3px;
	min-width: 0;
}
body.aspd-page .aspd-review__name-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
}
body.aspd-page .aspd .aspd-review__name {
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 14px;
	font-weight: 600 !important;
	line-height: 1.35;
	letter-spacing: .06em;
	text-transform: uppercase;
}
body.aspd-page .aspd-review__verified {
	display: inline-flex;
	align-items: center;
	min-height: 22px;
	padding: 0 7px;
	border: 1px solid rgba(21, 128, 61, .28);
	background: #edf8ef;
	color: #15803d;
	font-family: var(--aspd-font-display) !important;
	font-size: 10px;
	font-weight: 600 !important;
	line-height: 1;
	letter-spacing: .06em;
	text-transform: uppercase;
	white-space: nowrap;
}
body.aspd-page .aspd-review__date {
	color: var(--aspd-text);
	font-size: 12px;
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: .04em;
	text-transform: uppercase;
}
body.aspd-page .aspd .aspd-review__title {
	margin: 0 0 26.8px;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 16px;
	font-weight: 700 !important;
	line-height: 1.3;
	letter-spacing: .02em;
}
body.aspd-page .aspd-review__text {
	color: var(--aspd-text);
	font-size: 16px;
	line-height: 1.7;
	overflow-wrap: anywhere;
}
body.aspd-page .aspd-review__text p {
	margin: 0 0 .8em;
}
body.aspd-page .aspd-review__text p:last-child {
	margin-bottom: 0;
}
body.aspd-page .aspd-review__photos {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 14px;
}
body.aspd-page .aspd-review__photo {
	display: block;
	width: 72px;
	height: 72px;
	border: 1px solid var(--aspd-border);
	overflow: hidden;
	cursor: zoom-in;
}
body.aspd-page .aspd-review__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
body.aspd-page .aspd-review__votes {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 24px 0 0;
	padding: 12px 0 0;
	border-top: 1px dashed var(--aspd-border);
}
body.aspd-page .aspd .aspd-review__vote {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	min-width: 34px;
	height: 34px;
	margin: 0;
	padding: 0 8px;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card) !important;
	background: var(--aspd-surface);
	color: var(--aspd-text);
	font-size: 12px;
	line-height: 1;
	cursor: pointer;
}
body.aspd-page .aspd .aspd-review__vote .aspd-icon {
	width: 15px;
	height: 15px;
}
body.aspd-page .aspd .aspd-review__vote [data-count]:empty {
	display: none;
}
body.aspd-page .aspd .aspd-review__vote:hover,
body.aspd-page .aspd .aspd-review__vote.is-mine {
	border-color: var(--aspd-heading);
	color: var(--aspd-heading);
}
body.aspd-page .aspd .aspd-review__vote.is-mine {
	background: var(--aspd-selected);
}
body.aspd-page .aspd-reviews__empty {
	padding: 24px;
	border: 1px solid var(--aspd-border);
	background: var(--aspd-surface);
}
body.aspd-page .aspd-reviews__empty-icon {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	margin-bottom: 12px;
	border: 1px solid rgba(254, 181, 17, .55);
	background: #fff8e6;
	color: var(--aspd-accent);
}
body.aspd-page .aspd-reviews__empty-icon .aspd-icon {
	width: 16px;
	height: 16px;
}
body.aspd-page .aspd .aspd-reviews__empty-title {
	margin: 0 0 6px;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 16px;
	font-weight: 700 !important;
	letter-spacing: .06em;
	text-transform: uppercase;
}
body.aspd-page .aspd-reviews__empty-text {
	margin: 0;
	font-size: 14px;
}
body.aspd-page .aspd-reviews__empty > .aspd-btn {
	margin-top: 20px;
}

/* ---------- Section head (title + count + "See all"), chips ---------- */
body.aspd-page .aspd-section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 16px;
	margin: 0 0 22px;
}
body.aspd-page .aspd .aspd-section-head .aspd-section-title {
	margin: 0;
}
body.aspd-page .aspd-section-count {
	margin-left: 8px;
	color: var(--aspd-text);
	font-weight: 400;
}
body.aspd-page .aspd-section-head__end {
	display: flex;
	align-items: center;
	gap: 16px;
}
body.aspd-page .aspd .aspd-link-more {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: var(--aspd-heading);
	font-size: 14px;
	font-weight: 500;
	text-decoration: underline;
	text-underline-offset: 3px;
}
body.aspd-page .aspd .aspd-link-more .aspd-icon {
	width: 14px;
	height: 14px;
	stroke-width: 2.2;
}
body.aspd-page .aspd .aspd-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 36px;
	margin: 0;
	padding: 0 14px;
	border: 1px solid var(--aspd-border);
	border-radius: 999px !important;
	background: var(--aspd-surface);
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text);
	font-size: 14px;
	line-height: 1;
	cursor: pointer;
}
body.aspd-page .aspd .aspd-chip em {
	color: var(--aspd-text);
	font-style: normal;
}
body.aspd-page .aspd .aspd-chip:hover,
body.aspd-page .aspd .aspd-chip.is-on {
	border-color: var(--aspd-heading);
}

/* ---------- Reviews: preview counts per device, fade into "View all" ---------- */
body.aspd-page .aspd-reviews__main {
	position: relative;
	min-width: 0;
}
body.aspd-page .aspd-reviews__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 8px;
}
body.aspd-page .aspd-reviews__item.is-over-mob {
	display: none;
}
body.aspd-page .aspd-reviews.is-expanded .aspd-reviews__item {
	display: block;
}
body.aspd-page .aspd-reviews__more {
	position: relative;
	z-index: 1;
	display: none;
	justify-content: center;
	padding-top: 24px;
	pointer-events: none;
}
body.aspd-page .aspd-reviews.has-more-mob .aspd-reviews__more {
	display: flex;
}
body.aspd-page .aspd-reviews__more .aspd-btn {
	width: auto;
	min-width: 220px;
	pointer-events: auto;
}
/* The last visible preview dissolves into the page background; the button sits on the fade. */
body.aspd-page .aspd-reviews.is-fade.has-more-mob:not(.is-expanded) .aspd-reviews__more {
	margin-top: -132px;
	padding-top: 108px;
	background: linear-gradient(to bottom, color-mix(in srgb, var(--aspd-page) 0%, transparent) 0, color-mix(in srgb, var(--aspd-page) 88%, transparent) 46%, var(--aspd-page) 72%);
}
body.aspd-page .aspd-reviews__hint {
	margin: 10px 0 0;
	color: var(--aspd-text);
	font-size: 13px;
	line-height: 1.5;
	text-align: center;
}
body.aspd-page .aspd-reviews__bar {
	min-height: 20px;
}
body.aspd-page button.aspd-reviews__bar {
	width: 100%;
	margin: 0;
	padding: 0;
	line-height: 1;
	border: 0;
	border-radius: 4px !important;
	background: none;
	color: inherit;
	font-family: inherit;
	font-size: 13px;
	text-align: inherit;
	cursor: pointer;
}
body.aspd-page button.aspd-reviews__bar:hover .aspd-reviews__bar-label {
	text-decoration: underline;
}
body.aspd-page .aspd-reviews__average small {
	margin-left: 4px;
	color: var(--aspd-text);
	font-size: .4em;
	font-weight: 400;
}

/* ---------- You may also like ---------- */
body.aspd-page .aspd-related {
	padding: 40px 0 56px;
	border-top: 1px solid var(--aspd-border);
}
body.aspd-page .aspd-related__cards > ul {
	display: grid !important;
	grid-template-columns: repeat(var(--aspd-rel-grid-mob, 2), minmax(0, 1fr));
	gap: 16px;
	width: auto;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}
body.aspd-page .aspd-related__cards > ul::before,
body.aspd-page .aspd-related__cards > ul::after {
	display: none !important;
}
body.aspd-page .aspd-related__cards > ul > li {
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	float: none !important;
}
/* Carousel: one row; fractional columns let the next card peek in. */
body.aspd-page .aspd-related.is-carousel .aspd-related__cards > ul {
	grid-template-columns: none;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - (var(--aspd-rel-cols-mob, 2.2) - 1) * 12px) / var(--aspd-rel-cols-mob, 2.2));
	gap: 12px;
	/* Room for the cards' hover lift and scale (≈ 9 px up, 6 px aside); the negative margin keeps alignment. */
	margin: -16px -12px -8px !important;
	padding: 16px 12px 20px !important;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-padding: 0 12px;
	scrollbar-width: none;
}
body.aspd-page .aspd-related.is-carousel .aspd-related__cards > ul::-webkit-scrollbar {
	display: none;
}
body.aspd-page .aspd-related.is-carousel .aspd-related__cards > ul > li {
	scroll-snap-align: start;
}
/* Phones swipe the row; arrows appear from tablet up (tablet.css). */
body.aspd-page .aspd .aspd-rail-nav {
	display: none;
	gap: 8px;
}
body.aspd-page .aspd .aspd-rail-nav[hidden] {
	display: none;
}
body.aspd-page .aspd .aspd-rail-btn {
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	margin: 0;
	padding: 0;
	border: 1px solid var(--aspd-border);
	border-radius: 50% !important;
	background: var(--aspd-surface);
	color: var(--aspd-heading);
	cursor: pointer;
}
body.aspd-page .aspd .aspd-rail-btn:hover:not(:disabled) {
	border-color: var(--aspd-heading);
}
body.aspd-page .aspd .aspd-rail-btn:disabled {
	opacity: .35;
	cursor: default;
}
body.aspd-page .aspd .aspd-rail-btn .aspd-icon {
	width: 16px;
	height: 16px;
	stroke-width: 2.2;
}

/* ---------- Section nav ---------- */
body.aspd-page .aspd-snav {
	position: fixed;
	top: var(--aspd-snav-top, 0px);
	left: 0;
	right: 0;
	z-index: 140;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 60px;
	padding: 7px 10px 6px;
	border-bottom: 1px solid #c6ccd3;
	background: rgba(255, 255, 255, .98);
	box-shadow: 0 10px 24px -22px rgba(26, 29, 32, .64);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
	opacity: 0;
	transform: translateY(-100%);
	pointer-events: none;
	transition: opacity .22s ease, transform .22s ease;
}
body.aspd-page .aspd-snav[hidden] {
	display: none;
}
body.aspd-page .aspd-snav.is-visible {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}
body.aspd-page .aspd-snav__scroll {
	overscroll-behavior-x: contain;
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--aspd-max);
	overflow-x: auto;
	scrollbar-width: none;
	text-align: center;
	-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--aspd-fade-l, 0px), #000 calc(100% - var(--aspd-fade-r, 0px)), transparent 100%);
	mask-image: linear-gradient(90deg, transparent 0, #000 var(--aspd-fade-l, 0px), #000 calc(100% - var(--aspd-fade-r, 0px)), transparent 100%);
}
body.aspd-page .aspd-snav__scroll::-webkit-scrollbar {
	display: none;
}
body.aspd-page .aspd-snav.has-fade-left .aspd-snav__scroll {
	--aspd-fade-l: 40px;
}
body.aspd-page .aspd-snav.has-fade-right .aspd-snav__scroll {
	--aspd-fade-r: 40px;
}
body.aspd-page .aspd-snav .aspd-snav__arrow {
	position: absolute;
	top: 0;
	bottom: 0;
	z-index: 3;
	display: grid;
	place-items: center;
	width: 40px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0 !important;
	color: var(--aspd-heading);
	cursor: pointer;
}
body.aspd-page .aspd-snav .aspd-snav__arrow[hidden] {
	display: none;
}
body.aspd-page .aspd-snav .aspd-snav__arrow--prev {
	left: 0;
	justify-content: start;
	padding-left: 6px;
	background: linear-gradient(90deg, #fff 55%, rgba(255, 255, 255, 0));
}
body.aspd-page .aspd-snav .aspd-snav__arrow--next {
	right: 0;
	justify-content: end;
	padding-right: 6px;
	background: linear-gradient(270deg, #fff 55%, rgba(255, 255, 255, 0));
}
body.aspd-page .aspd-snav__arrow .aspd-icon {
	width: 18px;
	height: 18px;
	stroke-width: 2;
}
body.aspd-page .aspd-snav__links {
	position: relative;
	display: inline-flex;
	justify-content: center;
	gap: 6px;
	white-space: nowrap;
}
/* Sliding active marker (frontend.js); presets that use it give it a look. */
body.aspd-page .aspd-snav__ink {
	display: none;
}
body.aspd-page .aspd-snav__link {
	display: flex;
	align-items: center;
	min-height: 38px;
	padding: 0 13px;
	border: 1px solid transparent;
	color: #3f4958;
	font-family: var(--aspd-font-display);
	font-size: 11.5px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: .04em;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
body.aspd-page .aspd-snav__link:hover {
	color: var(--aspd-heading);
}
body.aspd-page .aspd-snav__link.is-active {
	border-color: #ebd7a4;
	background: #fff6e2;
	color: var(--aspd-heading);
}
body.aspd-page .aspd-snav__dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 6px;
	margin-top: 2px;
}
body.aspd-page .aspd-snav__dot {
	display: block;
	width: 5px;
	height: 5px;
	border-radius: 999px;
	background: rgba(74, 85, 104, .26);
}
body.aspd-page .aspd-snav__dot.is-active {
	background: var(--aspd-accent);
}

/* ---------- Gallery: specification card (last slide), Specs thumbnail, full list dialog ---------- */
body.aspd-page .aspd-gallery__slide--specs {
	background: var(--aspd-media-bg);
	cursor: default;
}
body.aspd-page .aspd-specs-card {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 14px;
	height: 100%;
	padding: 24px 20px 48px;
}
body.aspd-page .aspd-specs-card__title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text);
	font-size: 16px;
	font-weight: 700;
	line-height: 22px;
}
body.aspd-page .aspd-specs-card__title .aspd-icon {
	width: 20px;
	height: 20px;
	color: var(--aspd-accent);
}
body.aspd-page .aspd-specs-card__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px;
	margin: 0;
	padding: 0;
}
body.aspd-page .aspd-specs-card__item {
	display: flex;
	flex-direction: column-reverse;
	justify-content: center;
	gap: 4px;
	min-width: 0;
	min-height: 72px;
	padding: 12px;
	border-radius: var(--aspd-r-card);
	background: #fff;
	box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
body.aspd-page .aspd-specs-card__item dt {
	margin: 0;
	overflow: hidden;
	color: var(--aspd-text);
	font-size: 12px;
	font-weight: 400;
	line-height: 16px;
	white-space: nowrap;
	text-overflow: ellipsis;
}
body.aspd-page .aspd-specs-card__item dd {
	display: -webkit-box;
	margin: 0;
	overflow: hidden;
	color: var(--aspd-heading);
	font-size: 14px;
	font-weight: 600;
	line-height: 19px;
	overflow-wrap: anywhere;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}
/* Phones: the square slide holds four tiles; the rest are behind "View all". */
body.aspd-page .aspd-specs-card__item:nth-child(n+5) {
	display: none;
}
/* Odd count: the last tile spans the row instead of leaving a hole. */
body.aspd-page .aspd-specs-card__grid[data-tiles="3"] .aspd-specs-card__item:last-child,
body.aspd-page .aspd-specs-card__grid[data-tiles="5"] .aspd-specs-card__item:last-child,
body.aspd-page .aspd-specs-card__grid[data-tiles="7"] .aspd-specs-card__item:last-child,
body.aspd-page .aspd-specs-card__grid[data-tiles="9"] .aspd-specs-card__item:last-child,
body.aspd-page .aspd-specs-card__grid[data-tiles="11"] .aspd-specs-card__item:last-child {
	grid-column: 1 / -1;
}
body.aspd-page .aspd .aspd-specs-card__all {
	display: inline-flex;
	align-items: center;
	align-self: center;
	gap: 4px;
	min-height: 38px;
	margin: 2px 0 0;
	padding: 0 12px 0 16px;
	border: 1px solid var(--aspd-border);
	border-radius: 999px !important;
	background: #fff;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text) !important;
	font-size: 14px;
	font-weight: 600 !important;
	line-height: 1;
	letter-spacing: 0;
	text-transform: none;
	cursor: pointer;
	transition: border-color .15s ease, box-shadow .15s ease;
}
body.aspd-page .aspd .aspd-specs-card__all:hover {
	border-color: var(--aspd-heading);
	box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}
body.aspd-page .aspd-specs-card__all .aspd-icon {
	width: 16px;
	height: 16px;
	stroke-width: 2.2;
}
/* No full-screen view of the card. */
body.aspd-page .aspd-gallery.is-on-specs .aspd-gallery__zoom {
	opacity: 0;
	pointer-events: none;
}
body.aspd-page .aspd .aspd-gallery__thumb.is-specs {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	color: var(--aspd-heading);
}
body.aspd-page .aspd-gallery__thumb.is-specs .aspd-icon {
	width: 20px;
	height: 20px;
}
body.aspd-page .aspd-gallery__thumb-label {
	max-width: 100%;
	overflow: hidden;
	font-family: var(--aspd-font-text);
	font-size: 11px;
	font-weight: 600;
	line-height: 13px;
	white-space: nowrap;
	text-overflow: ellipsis;
}
body.aspd-page .aspd-specs-list {
	margin: 0;
	padding: 0;
}
body.aspd-page .aspd-specs-list__row {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
	gap: 16px;
	padding: 12px 0;
	border-bottom: 1px solid var(--aspd-border);
}
body.aspd-page .aspd-specs-list__row:first-child {
	padding-top: 0;
}
body.aspd-page .aspd-specs-list__row:last-child {
	border-bottom: 0;
}
body.aspd-page .aspd-specs-list dt {
	margin: 0;
	color: var(--aspd-text);
	font-size: 14px;
	font-weight: 400;
	line-height: 20px;
}
body.aspd-page .aspd-specs-list dd {
	margin: 0;
	color: var(--aspd-heading);
	font-size: 14px;
	font-weight: 500;
	line-height: 20px;
	overflow-wrap: anywhere;
}

/* ---------- Sticky purchase bar (phone layout) ---------- */
body.aspd-page .aspd-bar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 120; /* above the theme's bottom drawer layer (Blocksy .ct-drawer-inner, 100), below the section nav */
	padding: 6px 0 calc(6px + env(safe-area-inset-bottom, 0px));
	border-top: 1px solid rgba(26, 29, 32, .1);
	background: #fff;
	-webkit-backdrop-filter: blur(16px);
	backdrop-filter: blur(16px);
	transform: translateY(110%);
	transition: transform .28s ease;
}
body.aspd-page .aspd-bar.is-visible {
	transform: none;
}
body.aspd-page .aspd-bar__inner {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: center;
	gap: 12px;
}
body.aspd-page .aspd-bar__product {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
}
body.aspd-page .aspd-bar__media,
body.aspd-page .aspd-bar__title {
	display: none;
}
body.aspd-page .aspd-bar__copy {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}
body.aspd-page .aspd-bar .aspd-bar__price,
body.aspd-page .aspd-bar .aspd-bar__price :is(.amount, bdi, .woocommerce-Price-currencySymbol, ins, del, .wcpbc-price) {
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 17px;
	font-weight: 800 !important;
	line-height: 1;
	letter-spacing: .04em;
	text-decoration: none;
	white-space: nowrap;
}
body.aspd-page .aspd-bar .aspd-bar__price del {
	display: none;
}
body.aspd-page .aspd-bar__actions {
	display: flex;
	gap: 8px;
}
body.aspd-page .aspd-bar .aspd-bar__btn {
	min-height: 44px;
	padding: 10px 14px;
	font-size: 12px;
	letter-spacing: .02em;
}
body.aspd-page .aspd-bar .aspd-bar__btn.aspd-btn--primary {
	border-color: var(--aspd-accent);
	background: color-mix(in srgb, var(--aspd-accent) 88%, transparent);
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-weight: 800 !important;
}
/* Keep floating theme elements (back to top, chat) above the bar while it shows. */
body.aspd-page.aspd-bar-on .ct-back-to-top {
	transform: translateY(-58px);
}
/* Room at the end of the page so the bar never covers the footer's last lines. */
body.aspd-page.aspd-bar-on {
	padding-bottom: var(--aspd-bar-h, 0px);
}
body.aspd-page.aspd-own-bar .ct-floating-bar {
	display: none !important;
}
/* The theme still reserves its hidden floating bar's height at the page end; our padding above replaces it. */
body.aspd-page.aspd-own-bar .ct-drawer-canvas[data-floating-bar] {
	--floating-bar-height: 0px;
	--floating-bar-parent-height: 0px;
}

/* ---------- Dialogs ---------- */
body.aspd-page .aspd-dialog {
	width: min(780px, calc(100vw - 40px));
	max-width: none;
	max-height: calc(100dvh - 90px);
	margin: auto;
	padding: 0;
	border: 0;
	border-radius: var(--aspd-r-card);
	background: #fff;
	color: var(--aspd-text);
	font-family: var(--aspd-font-text);
	box-shadow: 0 24px 64px rgba(15, 23, 42, .22);
	overflow: hidden;
}
body.aspd-page .aspd-dialog::backdrop {
	background: rgba(244, 246, 248, .45);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
}
body.aspd-page .aspd-dialog[open] {
	display: flex;
	animation: aspd-pop .2s ease;
}
body.aspd-page .aspd-dialog__frame {
	display: flex;
	flex-direction: column;
	width: 100%;
	max-height: inherit;
}
body.aspd-page .aspd-dialog__head {
	position: relative;
	display: flex;
	align-items: center;
	gap: 10px;
	flex: none;
	padding: 12px 20px;
	border-bottom: 2px solid var(--aspd-accent);
	background: linear-gradient(180deg, #fff 0%, #fbfbfa 100%);
}
body.aspd-page .aspd-dialog__icon {
	display: grid;
	place-items: center;
	flex: none;
	width: 34px;
	height: 34px;
	border: 1px solid rgba(254, 181, 17, .55);
	background: #fff8e6;
	color: #c98900;
}
body.aspd-page .aspd-dialog__icon .aspd-icon {
	width: 17px;
	height: 17px;
}
body.aspd-page .aspd-dialog .aspd-dialog__title {
	flex: 1 1 auto;
	margin: 0;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-display) !important;
	font-size: 22px;
	font-weight: 700 !important;
	line-height: 1.1;
	letter-spacing: .04em;
	text-transform: uppercase;
}
body.aspd-page .aspd-dialog__title em {
	color: #e5a30f;
	font-style: normal;
}
body.aspd-page .aspd-dialog .aspd-dialog__close {
	display: grid;
	place-items: center;
	flex: none;
	width: 36px;
	height: 36px;
	margin: 0;
	padding: 0;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card) !important;
	background: #fff;
	color: var(--aspd-heading);
	cursor: pointer;
}
body.aspd-page .aspd-dialog__close:hover {
	border-color: var(--aspd-heading);
}
body.aspd-page .aspd-dialog__close .aspd-icon {
	width: 16px;
	height: 16px;
}
body.aspd-page .aspd-dialog__body {
	flex: 1 1 auto;
	padding: 20px;
	overflow-y: auto;
	overscroll-behavior: contain;
}
body.aspd-page .aspd-kf-full {
	color: var(--aspd-text);
	font-size: 14.5px;
	line-height: 1.5;
}
body.aspd-page .aspd-kf-full ul {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}
body.aspd-page .aspd-kf-full li {
	margin: 0;
}
body.aspd-page .aspd-kf-full strong {
	color: var(--aspd-heading);
	font-weight: 700;
}
body.aspd-page .aspd-dialog--quote {
	width: min(720px, calc(100vw - 40px));
}
body.aspd-page .aspd-dialog--review #reply-title {
	display: block;
	margin: 0 0 14px;
	color: var(--aspd-heading);
	font-size: 15px;
	font-weight: 600;
}
body.aspd-page .aspd-dialog--review .comment-form p,
body.aspd-page .aspd-dialog--review .comment-form-rating {
	margin: 0 0 14px;
}
body.aspd-page .aspd-dialog--review .comment-form label {
	display: block;
	margin: 0 0 6px;
	color: var(--aspd-heading);
	font-size: 13px;
	font-weight: 600;
}
body.aspd-page .aspd-dialog--review .comment-form :is(input[type="text"], input[type="email"], textarea, select) {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--aspd-border);
	border-radius: var(--aspd-r-card) !important;
	background: #fff;
	font: inherit;
}
body.aspd-page .aspd-dialog--review .comment-form .form-submit input[type="submit"] {
	min-height: 48px;
	padding: 0 28px;
	border: 0;
	border-radius: var(--aspd-r-button) !important;
	background: var(--aspd-accent);
	color: var(--aspd-accent-ink);
	font-family: var(--aspd-font-text);
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	cursor: pointer;
}
body.aspd-page .aspd-dialog--review p.stars a {
	color: var(--aspd-accent);
}
html.aspd-lock,
html.aspd-lock body {
	overflow: hidden;
}

@keyframes aspd-pop {
	from { opacity: 0; transform: translateY(8px) scale(.985); }
	to { opacity: 1; transform: none; }
}
@keyframes aspd-spin {
	to { transform: rotate(360deg); }
}
@keyframes aspd-shake {
	0%, 100% { transform: none; }
	25% { transform: translateX(-6px); }
	50% { transform: translateX(5px); }
	75% { transform: translateX(-3px); }
}
@media (prefers-reduced-motion: reduce) {
	body.aspd-page :is(.aspd, .aspd-snav, .aspd-bar, .aspd-dialog) * {
		animation: none !important;
		transition: none !important;
		scroll-behavior: auto !important;
	}
}

/* ---------- Price: current and original on one baseline; region price skeleton (as autoboss.com) ---------- */
body.aspd-page .aspd .aspd-price,
body.aspd-page .aspd .aspd-price .wcpbc-price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 10px;
	row-gap: 4px;
}
body.aspd-page .aspd .aspd-price .wcpbc-price {
	display: inline-flex;
}
/* Sale prices come wrapped in .sale-price (made a flex row elsewhere): align the texts, not the boxes. */
body.aspd-page :is(.aspd .aspd-price, .aspd-bar__price) :is(.sale-price, .price) {
	display: inline-flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 10px;
	row-gap: 4px;
}
body.aspd-page :is(.aspd .aspd-price, .aspd-bar__price) ins {
	order: -1;
}
body.aspd-page .aspd .aspd-price del {
	margin-right: 0;
}
/* While the country price is read, the price keeps its own box (no layout shift), a skeleton of the same
   size sits in it and the confirmed price fades in. No placeholder dots, no fabricated number. */
body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price {
	position: relative;
}
/* The price-by-country plugin collapses the loading price (display: none on every child); keep its box. */
body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price.loading :not(.wcpbc-placeholder) {
	display: revert !important;
	visibility: hidden;
}
body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price.loading {
	visibility: hidden;
}
body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price .wcpbc-placeholder {
	display: none !important;
}
body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price.loading::after {
	content: "";
	position: absolute;
	inset: 12% 0;
	border-radius: 4px;
	background: var(--aspd-heading) linear-gradient(100deg, transparent 25%, rgba(255, 255, 255, .55) 50%, transparent 75%) no-repeat;
	background-size: 200% 100%;
	opacity: .12;
	visibility: visible;
	animation: aspd-price-shimmer 1.4s ease-in-out infinite;
}
body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price:not(.loading) {
	animation: aspd-price-in .2s ease-out;
}
@keyframes aspd-price-shimmer {
	from { background-position: 150% 0; }
	to { background-position: -50% 0; }
}
@keyframes aspd-price-in {
	from { opacity: 0; }
	to { opacity: 1; }
}

/* ---------- Rating line: average · stars · count, one link to the reviews ---------- */
body.aspd-page .aspd a.aspd-rating {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: auto;
	color: var(--aspd-heading);
	text-decoration: none;
}
body.aspd-page .aspd .aspd-rating__avg {
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text);
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
}
body.aspd-page .aspd a.aspd-rating:hover .aspd-rating__link {
	color: var(--aspd-heading);
	text-decoration: underline;
}

/* ---------- Key features: name + one-line description ---------- */
/* One-line descriptions must not widen the column: grid track and items may shrink below their text. */
body.aspd-page .aspd-kf,
body.aspd-page .aspd-kf__list {
	grid-template-columns: minmax(0, 1fr);
	min-width: 0;
}
body.aspd-page .aspd-kf__item {
	min-width: 0;
}
body.aspd-page .aspd-kf__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
}
body.aspd-page .aspd-kf__desc {
	display: none;
}

@media (prefers-reduced-motion: reduce) {
	body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price::after,
	body.aspd-page :is(.aspd-price, .aspd-bar__price) .wcpbc-price {
		animation: none !important;
	}
}

/* ---------- Gallery: first-image play, video player, media switch ---------- */
/* Phone: top-left, clear of the dots and counter at the bottom; tablet and up: bottom-left (tablet.css). */
body.aspd-page .aspd .aspd-gallery__first-play {
	position: absolute;
	left: 16px;
	top: 16px;
	z-index: 6;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 40px;
	margin: 0;
	padding: 4px 16px 4px 4px;
	border: 0;
	border-radius: 999px !important;
	background: rgba(25, 25, 25, .78);
	color: #fff;
	font-family: var(--aspd-font-text);
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	cursor: pointer;
	transition: opacity .2s ease, background-color .15s ease;
}
body.aspd-page .aspd .aspd-gallery__first-play:hover {
	background: rgba(25, 25, 25, .92);
}
body.aspd-page .aspd-gallery__first-play-icon {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: #fff;
	color: #191919;
}
body.aspd-page .aspd-gallery__first-play-icon .aspd-icon {
	width: 14px;
	height: 14px;
	margin-left: 2px;
}
body.aspd-page .aspd-gallery:not([data-index="0"]) .aspd-gallery__first-play,
body.aspd-page .aspd-gallery[data-mode="video"] .aspd-gallery__first-play {
	opacity: 0;
	pointer-events: none;
}
body.aspd-page .aspd-gallery__player {
	position: absolute;
	inset: 0;
	z-index: 7;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: minmax(0, 1fr);
	place-items: center;
	min-width: 0;
	min-height: 0;
	overflow: hidden;
	background: #000;
}
body.aspd-page .aspd-gallery__player[hidden] {
	display: none;
}
/* The phone gallery is full bleed, but its video keeps a safe gutter. Explicit
   grid sizing + an out-of-flow iframe avoid intrinsic player sizes widening it. */
body.aspd-page .aspd-gallery__stage {
	position: relative;
	width: calc(100% - 2 * var(--aspd-gutter));
	min-width: 0;
	max-width: 100%;
	min-height: 0;
	max-height: 100%;
	aspect-ratio: 16 / 9;
	margin: auto;
}
body.aspd-page .aspd-gallery__stage iframe {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	min-width: 0;
	max-width: 100%;
	height: 100%;
	max-height: 100%;
	margin: 0;
	border: 0;
}
body.aspd-page .aspd .aspd-gallery__poster {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0 !important;
	background: #000;
	cursor: pointer;
}
body.aspd-page .aspd-gallery__poster img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .9;
}
body.aspd-page .aspd-gallery__player .aspd-gallery__arrow.is-video {
	display: flex;
}
/* Phone: the video arrows float over the player, centred on its edges (tablet.css takes over from tablet up).
   Out of the grid flow, so the 16:9 stage stays centred instead of being pushed up. */
body.aspd-page .aspd-gallery__arrow.is-video {
	position: absolute;
	top: 50%;
	z-index: 8;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	margin: -18px 0 0;
	padding: 0;
	border: 0;
	border-radius: 50% !important;
	background: rgba(255, 255, 255, .92);
	box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
	color: #191919;
	cursor: pointer;
}
body.aspd-page .aspd-gallery__arrow.is-video .aspd-icon {
	width: 18px;
	height: 18px;
	stroke-width: 2.2;
}
body.aspd-page .aspd-gallery__arrow--prev.is-video {
	left: 12px;
}
body.aspd-page .aspd-gallery__arrow--next.is-video {
	right: 12px;
}
body.aspd-page .aspd-gallery__player .aspd-gallery__counter.is-video {
	display: block;
	z-index: 8;
}
body.aspd-page .aspd-gallery[data-mode="video"] .aspd-gallery__media > :is(.aspd-gallery__arrow, .aspd-gallery__zoom, .aspd-gallery__dots, .aspd-gallery__counter) {
	display: none;
}
body.aspd-page .aspd-gallery__videos {
	display: none; /* Phone: arrows + counter only; the row shows from tablet up (tablet.css), like the image thumbnails. */
	gap: 8px;
	margin: 12px 0 0;
	overflow-x: auto;
	scrollbar-width: none;
}
body.aspd-page .aspd-gallery__videos[hidden],
body.aspd-page .aspd-gallery__thumbs[hidden] {
	display: none !important;
}
body.aspd-page .aspd .aspd-gallery__videos .aspd-gallery__thumb {
	display: block;
	flex: 0 0 auto;
	width: calc(var(--aspd-thumb, 60px) * 16 / 9);
	height: var(--aspd-thumb, 60px);
}
body.aspd-page .aspd-gallery__modes {
	display: flex;
	justify-content: center;
	margin: 16px 0 0;
}
body.aspd-page .aspd-gallery__modes[hidden] {
	display: none;
}
body.aspd-page .aspd-gallery__modes {
	--aspd-modes-bg: #f2f2f2;
}
body.aspd-page .aspd-gallery__modes::before {
	content: none;
}
body.aspd-page .aspd-gallery__modes > .aspd-mode:first-child {
	margin-left: 0;
}
body.aspd-page .aspd .aspd-mode {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	min-height: 28px;
	margin: 0;
	padding: 0 12px;
	border: 0;
	border-radius: 999px !important;
	background: transparent;
	color: var(--aspd-text);
	font-family: var(--aspd-font-text);
	font-size: 13px;
	font-weight: 500;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}
body.aspd-page .aspd .aspd-mode[hidden] {
	display: none;
}
body.aspd-page .aspd .aspd-mode .aspd-icon {
	width: 14px;
	height: 14px;
	stroke-width: 1.8;
}
body.aspd-page .aspd .aspd-mode em {
	color: var(--aspd-text);
	font-family: var(--aspd-font-num, inherit);
	font-size: 11px;
	font-style: normal;
	font-weight: 400;
}
body.aspd-page .aspd .aspd-mode:hover {
	color: var(--aspd-heading);
}
body.aspd-page .aspd .aspd-mode.is-on {
	background: var(--aspd-surface);
	box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
	color: var(--aspd-heading);
}
/* Segmented track around the pills. */
body.aspd-page .aspd-gallery__modes {
	width: max-content;
	max-width: 100%;
	margin: 12px auto 0;
	padding: 3px;
	border-radius: 999px !important;
	background: var(--aspd-modes-bg);
	gap: 2px;
}
/* Phone (full-bleed gallery): the video row keeps the page gutter; thumbnails styled here as the image
   thumbnails only exist from tablet up. */
body.aspd-page .aspd-gallery__videos {
	padding: 0 var(--aspd-gutter);
}
body.aspd-page .aspd .aspd-gallery__videos .aspd-gallery__thumb {
	position: relative;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: var(--aspd-r-card) !important;
	background: #000;
	box-shadow: inset 0 0 0 1px var(--aspd-border);
	overflow: hidden;
	cursor: pointer;
}
body.aspd-page .aspd .aspd-gallery__videos .aspd-gallery__thumb.is-active {
	box-shadow: 0 0 0 2px var(--aspd-heading);
}
body.aspd-page .aspd-gallery__videos .aspd-gallery__thumb-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
body.aspd-page .aspd-gallery__videos .aspd-gallery__thumb-play {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: rgba(0, 0, 0, .28);
	color: #fff;
}
body.aspd-page .aspd-gallery__videos .aspd-gallery__thumb-play .aspd-icon {
	width: 16px;
	height: 16px;
}

/* ---------- Sticky bar, autoboss.com style (phone / tablet: icons + joined Add to cart | Buy now) ---------- */
body.aspd-page .aspd-bar.is-autoboss {
	padding: 6px 0 calc(6px + env(safe-area-inset-bottom, 0px));
	border-top: 0;
	background: #fff;
	box-shadow: 0 -1px 0 #eee;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__inner {
	display: flex;
	align-items: center;
	gap: 4px;
	width: 100%;
	max-width: none;
	padding: 0 8px 0 4px;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__product {
	display: none;
}
body.aspd-page .aspd-bar__icons {
	display: flex;
	flex: none;
	gap: 2px;
}
body.aspd-page .aspd-bar .aspd-bar__icon {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	width: 44px;
	height: 44px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 8px !important;
	background: none;
	color: #333;
	font-family: var(--aspd-font-text);
	font-size: 11px;
	font-weight: 400;
	line-height: 14px;
	text-decoration: none;
	cursor: pointer;
}
body.aspd-page .aspd-bar .aspd-bar__icon > span:last-child {
	color: #666;
	white-space: nowrap;
}
body.aspd-page .aspd-bar .aspd-bar__icon:hover {
	color: #000;
}
body.aspd-page .aspd-bar .aspd-bar__icon .aspd-icon {
	width: 20px;
	height: 20px;
}
body.aspd-page .aspd-bar__icon-box {
	position: relative;
	display: block;
	height: 20px;
}
body.aspd-page .aspd-bar__count {
	position: absolute;
	top: -6px;
	left: 12px;
	min-width: 16px;
	height: 16px;
	padding: 0 4px;
	border-radius: 8px;
	background: #fdb016;
	color: #191919;
	font-size: 10px;
	font-weight: 600;
	line-height: 16px;
	text-align: center;
}
body.aspd-page .aspd-bar__count[hidden] {
	display: none;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions {
	display: flex;
	flex: 1 1 auto;
	gap: 0;
	min-width: 0;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions .aspd-bar__btn {
	flex: 1 1 0;
	width: auto;
	min-width: 0;
	min-height: 40px;
	padding: 0 8px;
	border: 0;
	border-radius: 12px !important;
	font-family: var(--aspd-font-text) !important;
	font-size: 15px;
	font-weight: 600 !important;
	letter-spacing: 0;
	text-transform: none;
	filter: none;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions.has-second .aspd-bar__btn.aspd-bar__btn--cart {
	border-radius: 12px 0 0 12px !important;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions .aspd-bar__btn.aspd-bar__btn--cart {
	background: linear-gradient(90deg, #fbbf47, #fdb016);
	color: #212529;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions .aspd-bar__btn.aspd-bar__btn--buy {
	border-radius: 0 12px 12px 0 !important;
	background: linear-gradient(90deg, #4d5154, #212529);
	color: #fff;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions a.aspd-bar__btn {
	text-decoration: none;
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions .aspd-bar__btn:hover {
	filter: brightness(.96);
}
body.aspd-page .aspd-bar.is-autoboss .aspd-bar__actions .aspd-bar__btn:disabled {
	opacity: .6;
}
body.aspd-page .aspd-bar__fav {
	display: none;
}

/* ---------- Key features: names reveal their description on demand ---------- */
body.aspd-page .aspd .aspd-kf__name {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0 !important;
	background: none;
	color: inherit;
	font: inherit;
	text-align: left;
}
body.aspd-page .aspd button.aspd-kf__name {
	cursor: pointer;
}
body.aspd-page .aspd button.aspd-kf__name .aspd-icon {
	flex: none;
	width: 14px;
	height: 14px;
	color: var(--aspd-text);
	stroke-width: 2.2;
	transition: transform .2s ease;
}
body.aspd-page .aspd button.aspd-kf__name[aria-expanded="true"] .aspd-icon {
	transform: rotate(90deg);
}
body.aspd-page .aspd button.aspd-kf__name:hover {
	text-decoration: underline;
	text-underline-offset: 2px;
}
body.aspd-page .aspd .aspd-kf__desc[hidden] {
	display: none !important;
}

/* ---------- Rating line: stars · score · count ---------- */
body.aspd-page .aspd-rating__sep::before {
	content: "·";
	color: var(--aspd-text);
}

/* ---------- Gallery edges (tablet / desktop): a soft shade where more images continue ---------- */
body.aspd-page .aspd-gallery__media::before,
body.aspd-page .aspd-gallery__media::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	z-index: 3;
	display: none;
	width: 64px;
	opacity: 0;
	pointer-events: none;
	transition: opacity .25s ease;
}
body.aspd-page .aspd-gallery__media::before {
	left: 0;
	background: linear-gradient(to right, rgba(25, 25, 25, .14), rgba(25, 25, 25, 0));
}
body.aspd-page .aspd-gallery__media::after {
	right: 0;
	background: linear-gradient(to left, rgba(25, 25, 25, .14), rgba(25, 25, 25, 0));
}
body.aspd-page .aspd-gallery__media.has-more-prev::before,
body.aspd-page .aspd-gallery__media.has-more-next::after {
	opacity: 1;
}
body.aspd-page .aspd-gallery[data-mode="video"] .aspd-gallery__media::before,
body.aspd-page .aspd-gallery[data-mode="video"] .aspd-gallery__media::after {
	opacity: 0;
}

/* ---------- Phone dots: graded by distance from the active image ---------- */
body.aspd-page .aspd-gallery__dot[data-d]::before {
	transition: width .2s ease, height .2s ease, opacity .2s ease, background-color .2s ease;
}
body.aspd-page .aspd-gallery__dot[data-d="1"]::before {
	width: 6px;
	height: 6px;
	opacity: .9;
}
body.aspd-page .aspd-gallery__dot[data-d="2"]::before {
	width: 5px;
	height: 5px;
	opacity: .6;
}
body.aspd-page .aspd-gallery__dot[data-d="3"]::before {
	width: 4px;
	height: 4px;
	opacity: .35;
}
body.aspd-page .aspd-gallery__dot[data-d="out"]::before {
	opacity: 0;
}

/* Narrow phones (autoboss.com): Home gives way first, then the labels. */
@media (max-width: 360px) {
	body.aspd-page .aspd-bar .aspd-bar__icon--home {
		display: none;
	}
}

/* ---------- Phone purchase sheet (autoboss.com) ---------- */
/* With the sheet the form lives there on phones; hidden in the page from the first paint, so moving it in
   does not shrink the purchase area later (that jump was visible when the browser restored the scroll). */
body.aspd-page .aspd-buy--sheet:not([data-aspd-sheet-slot] > *) {
	display: none;
}
body.aspd-page .aspd-buy-row[hidden],
body.aspd-page .aspd-sheet__qty-label {
	display: none !important;
}
body.aspd-page .aspd .aspd-buy-row {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	min-height: 48px;
	margin: 0 0 16px;
	padding: 12px 0;
	border: 0;
	border-top: 1px solid var(--aspd-border);
	border-bottom: 1px solid var(--aspd-border);
	border-radius: 0 !important;
	background: none;
	color: var(--aspd-heading);
	font-family: var(--aspd-font-text) !important;
	font-size: 14px;
	font-weight: 400 !important;
	line-height: 20px;
	letter-spacing: 0;
	text-align: left;
	text-transform: none;
	cursor: pointer;
}
/* Key features right above: one shared hairline instead of two. */
body.aspd-page .aspd .aspd-kf:has(+ .aspd-buy-row:not([hidden])) {
	margin-bottom: 0;
	border-bottom: 0;
}
body.aspd-page .aspd-buy-row__icon {
	display: grid;
	flex: none;
	color: var(--aspd-text);
}
body.aspd-page .aspd-buy-row__icon .aspd-icon {
	width: 18px;
	height: 18px;
}
body.aspd-page .aspd-buy-row__text {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
body.aspd-page .aspd-buy-row:not(.is-chosen) .aspd-buy-row__text {
	color: var(--aspd-text);
}
body.aspd-page .aspd-buy-row__chev {
	display: grid;
	flex: none;
	color: var(--aspd-text);
}
body.aspd-page .aspd-buy-row__chev .aspd-icon {
	width: 16px;
	height: 16px;
}

body.aspd-page .aspd-dialog.aspd-sheet {
	width: 100%;
	max-width: none;
	max-height: 86dvh;
	margin: auto 0 0;
	border-radius: 16px 16px 0 0;
	box-shadow: 0 -8px 40px rgba(15, 23, 42, .18);
}
body.aspd-page .aspd-dialog.aspd-sheet::backdrop {
	background: rgba(0, 0, 0, .45);
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
}
body.aspd-page .aspd-dialog.aspd-sheet[open] {
	animation: aspd-sheet-up .24s ease;
}
body.aspd-page .aspd-sheet__frame {
	transition: transform .2s ease;
}
body.aspd-page .aspd-sheet__head {
	position: relative;
	display: flex;
	align-items: center;
	gap: 12px;
	flex: none;
	padding: 22px 16px 12px;
	touch-action: none;
}
body.aspd-page .aspd-sheet__handle {
	position: absolute;
	top: 6px;
	left: 50%;
	width: 36px;
	height: 4px;
	margin-left: -18px;
	border-radius: 2px;
	background: #ddd;
}
body.aspd-page .aspd-sheet__media {
	flex: none;
	width: 80px;
	height: 80px;
	overflow: hidden;
	border: 1px solid var(--aspd-border);
	border-radius: 10px;
	background: var(--aspd-media-bg, #f5f5f5);
}
body.aspd-page .aspd-sheet .aspd-sheet__img {
	display: block;
	width: 100%;
	max-width: none;
	height: 100%;
	margin: 0;
	object-fit: contain;
}
body.aspd-page .aspd-sheet__summary {
	flex: 1 1 auto;
	min-width: 0;
}
body.aspd-page .aspd-sheet .aspd-sheet__price,
body.aspd-page .aspd-sheet .aspd-sheet__price :is(.amount, bdi, .woocommerce-Price-currencySymbol, ins) {
	color: var(--aspd-price, var(--aspd-heading));
	font-family: var(--aspd-font-num, var(--aspd-font-text)) !important;
	font-size: 22px;
	font-weight: 700 !important;
	line-height: 28px;
	text-decoration: none;
}
body.aspd-page .aspd-sheet .aspd-sheet__price del,
body.aspd-page .aspd-sheet .aspd-sheet__price del :is(.amount, bdi, .woocommerce-Price-currencySymbol) {
	color: var(--aspd-text);
	font-size: 13px;
	font-weight: 400 !important;
	text-decoration: line-through;
}
body.aspd-page .aspd-sheet__price .sale-price,
body.aspd-page .aspd-sheet__price.price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0 8px;
	margin: 0;
}
body.aspd-page .aspd-sheet__price ins {
	order: -1;
}
body.aspd-page .aspd-sheet__chosen {
	display: -webkit-box;
	margin: 2px 0 0;
	overflow: hidden;
	color: var(--aspd-text);
	font-size: 12px;
	line-height: 17px;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}
body.aspd-page .aspd-sheet__chosen:empty {
	display: none;
}
body.aspd-page .aspd-sheet .aspd-dialog__close {
	align-self: flex-start;
	width: 32px;
	height: 32px;
	margin: -6px -4px 0 0;
	border: 0;
	border-radius: 50% !important;
	background: none;
}
body.aspd-page .aspd-sheet__body {
	flex: 1 1 auto;
	min-height: 120px;
	padding: 4px 16px 16px;
	overflow-y: auto;
	overscroll-behavior: contain;
}
body.aspd-page .aspd-sheet__body .aspd-buy {
	margin: 0;
}
/* The sheet's own buttons act for the form: its add to cart button stays hidden but in place for plugins. */
body.aspd-page .aspd-sheet .single_add_to_cart_button {
	display: none !important;
}
body.aspd-page .aspd-sheet .aspd-buy :has(> .aspd-sheet__qty-label) {
	flex-wrap: nowrap;
	align-items: center;
	justify-content: space-between;
}
body.aspd-page .aspd-sheet .aspd-buy :is(.ct-cart-actions, form.cart:not(.variations_form):not(.grouped_form), .woocommerce-variation-add-to-cart) > .aspd-sheet__qty-label {
	display: block !important;
	flex: 1 1 auto;
	align-self: center;
	width: auto;
	order: 0;
	color: var(--aspd-heading);
	font-size: 14px;
	font-weight: 600;
}
#aspd-purchase .aspd-sheet tr:has([data-aspd-options].is-missing) :is(th, .label) label {
	color: #b42318;
}
#aspd-purchase .aspd-sheet [data-aspd-options].is-missing .aspd-option {
	border-color: rgba(180, 35, 24, .45);
}
body.aspd-page .aspd-sheet__foot {
	flex: none;
	padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 0px));
	border-top: 1px solid #f0f0f0;
	background: #fff;
}
body.aspd-page .aspd-sheet__msg {
	margin: 0 4px 8px;
	color: #b42318;
	font-size: 13px;
	line-height: 18px;
}
body.aspd-page .aspd-sheet__actions {
	display: flex;
}
body.aspd-page .aspd-sheet .aspd-sheet__btn {
	flex: 1 1 0;
	min-width: 0;
	min-height: 48px;
	padding: 0 8px;
	border: 0;
	border-radius: 12px !important;
	font-family: var(--aspd-font-text) !important;
	font-size: 15px;
	font-weight: 600 !important;
	letter-spacing: 0;
	text-transform: none;
}
body.aspd-page .aspd-sheet:not([data-mode]) .aspd-sheet__actions.has-buy .aspd-sheet__btn--cart {
	border-radius: 12px 0 0 12px !important;
}
body.aspd-page .aspd-sheet:not([data-mode]) .aspd-sheet__actions.has-buy .aspd-sheet__btn--buy {
	border-radius: 0 12px 12px 0 !important;
}
body.aspd-page .aspd-sheet[data-mode="cart"] .aspd-sheet__btn--buy,
body.aspd-page .aspd-sheet[data-mode="buy"] .aspd-sheet__btn--cart {
	display: none;
}
body.aspd-page .aspd-sheet .aspd-sheet__btn--cart {
	background: linear-gradient(90deg, #fbbf47, #fdb016);
	color: #212529;
}
body.aspd-page .aspd-sheet .aspd-sheet__btn--buy {
	background: linear-gradient(90deg, #4d5154, #212529);
	color: #fff;
}
body.aspd-page .aspd-sheet .aspd-sheet__btn:disabled {
	opacity: .6;
}
@keyframes aspd-sheet-up {
	from {
		transform: translateY(40px);
		opacity: 0;
	}
}

/* Phones: the bottom bar's Request bulk replaces the purchase area's quote button. */
body.aspd-page .aspd .aspd-quote.is-bar-on-phone {
	display: none;
}

/* 2.0.5 Dialog exit: dialogs.close() adds .is-closing and waits for this before the native close, so dialogs leave
   the way they came in. On phones the purchase sheet slides down while the side cart rises after Add to cart. */
body.aspd-page .aspd-dialog.is-closing[open] {
	animation: aspd-dialog-out .18s ease-in forwards;
	pointer-events: none;
}
body.aspd-page .aspd-dialog.aspd-sheet.is-closing[open],
body.aspd-style-site .aspd-dialog.is-closing[open] {
	animation: aspd-sheet-out .24s cubic-bezier(.4, 0, 1, 1) forwards;
}
body.aspd-page .aspd-dialog.is-closing::backdrop {
	animation: aspd-backdrop-out .24s ease forwards;
}
@keyframes aspd-dialog-out {
	to { transform: scale(.98); opacity: 0; }
}
@keyframes aspd-sheet-out {
	to { transform: translateY(100%); }
}
@keyframes aspd-backdrop-out {
	to { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
	body.aspd-page .aspd-dialog.is-closing[open],
	body.aspd-page .aspd-dialog.is-closing::backdrop {
		animation: none !important;
	}
}

/* 2.0.9 Add to cart feedback, one style for the purchase-area, phone sheet and desktop sticky-bar buttons, after
   the side cart's (autoboss-side-cart buttonFeedback): the label stays and says what is happening ("Adding…",
   "Processing…") after a 14px spinner, the button never fades, success draws a tick before "Added to cart";
   pressing lays a light dark overlay. States come from frontend.js cta-feedback ([data-aspd-cta]). */
body.aspd-page :is(#aspd-purchase .single_add_to_cart_button, .aspd-sheet .aspd-sheet__btn, .aspd-bar .aspd-bar__btn) {
	-webkit-tap-highlight-color: transparent;
	touch-action: manipulation;
}
body.aspd-page :is(#aspd-purchase .single_add_to_cart_button, .aspd-sheet .aspd-sheet__btn, .aspd-bar .aspd-bar__btn):not([data-aspd-cta]):not(:disabled):not(.disabled):active {
	box-shadow: inset 0 0 0 999px rgba(0, 0, 0, .08) !important;
}
body.aspd-page :is(#aspd-purchase .aspd-buy .single_add_to_cart_button, .aspd-sheet .aspd-sheet__btn, .aspd-bar .aspd-bar__btn)[data-aspd-cta] {
	gap: 8px;
	opacity: 1 !important;
	pointer-events: auto;
	cursor: progress;
	white-space: nowrap;
}
body.aspd-page :is(#aspd-purchase .aspd-buy .single_add_to_cart_button, .aspd-sheet .aspd-sheet__btn, .aspd-bar .aspd-bar__btn)[data-aspd-cta="done"] {
	cursor: default;
}
/* The old trailing spinner of the purchase button gives way to the leading one. */
body.aspd-page #aspd-purchase .aspd-buy .single_add_to_cart_button[data-aspd-cta]::after {
	content: none;
	display: none;
}
body.aspd-page .aspd-cta__spin {
	display: inline-block;
	flex: 0 0 14px;
	box-sizing: border-box;
	width: 14px;
	height: 14px;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	vertical-align: -2px;
	animation: aspd-spin .7s linear infinite;
}
body.aspd-page .aspd-cta__check {
	display: inline-block;
	flex: none;
	width: 16px;
	height: 16px;
	vertical-align: -3px;
}
body.aspd-page .aspd-cta__check path {
	stroke-dasharray: 26;
	stroke-dashoffset: 0;
	animation: aspd-cta-check .32s ease-out both;
}
body.aspd-page .aspd-cta__label {
	overflow: hidden;
	text-overflow: ellipsis;
}
@keyframes aspd-cta-check {
	from { stroke-dashoffset: 26; }
	to { stroke-dashoffset: 0; }
}
@media (prefers-reduced-motion: reduce) {
	body.aspd-page :is(.aspd-cta__spin, .aspd-cta__check path) {
		animation: none !important;
	}
}

/* 2.0.8 Phone gallery dots: one dot per image, nothing clipped. The pill no longer hides overflow or slides a
   track (WebKit could cut the row off: overflow + radius + backdrop-filter + transform); dots outside the
   fitted window are display:none and a cut end shows a smaller dot (frontend.js paintDots). */
body.aspd-page .aspd-gallery__media > .aspd-gallery__dots {
	max-width: none;
	padding: 3px 8px;
	overflow: visible;
}
body.aspd-page .aspd-gallery__dots > .aspd-gallery__dots-track {
	align-items: center;
	gap: 6px;
	transform: none !important;
	transition: none;
}
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot {
	flex: none;
	width: 6px;
	height: 18px;
	transition: width .2s ease;
}
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot::before,
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot.is-active::before {
	width: 100%;
	height: 6px;
	opacity: 1;
}
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot.is-active {
	width: 16px;
}
body.aspd-page .aspd-gallery__dots.is-dense > .aspd-gallery__dots-track {
	gap: 4px;
}
body.aspd-page .aspd-gallery__dots.is-dense .aspd-gallery__dot {
	width: 5px;
}
body.aspd-page .aspd-gallery__dots.is-dense .aspd-gallery__dot::before {
	height: 5px;
}
body.aspd-page .aspd-gallery__dots.is-dense .aspd-gallery__dot.is-active {
	width: 14px;
}
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot[data-d="edge"] {
	width: 4px;
}
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot[data-d="edge"]::before {
	height: 4px;
	opacity: .7;
}
body.aspd-page .aspd-gallery__dots .aspd-gallery__dot[data-d="out"] {
	display: none;
}

/* Purchase accent: reuse the global theme role tokens, including proxy buttons. */
body.aspd-page :is(#aspd-purchase .aspd-buy .single_add_to_cart_button, .aspd-sheet .aspd-sheet__btn--cart, .aspd-bar [data-aspd-bar-atc]) {
	background: var(--as-yellow, #feb511) !important;
	border-color: var(--as-yellow, #feb511) !important;
	color: var(--as-ink, #191919) !important;
}
@media (hover: hover) {
	body.aspd-page :is(#aspd-purchase .aspd-buy .single_add_to_cart_button, .aspd-sheet .aspd-sheet__btn--cart, .aspd-bar [data-aspd-bar-atc]):not(:disabled):not(.disabled):hover {
		background: var(--as-yellow-hover, #f2a900) !important;
		border-color: var(--as-yellow-hover, #f2a900) !important;
	}
}
