/**
 * ab-vehicles — vehicle detail design system.
 *
 * Direction: premium industrial catalogue. Graphite ink on a light page, one sharp
 * amber accent reserved for actions and live status, hairline rules instead of
 * boxes, tabular numerals for every figure, and a responsive layout that turns the
 * two column desktop view into a single column with a persistent action bar on phones.
 *
 * Sections are intentionally distinct: gallery (hero + rail), title block, price card
 * (sticky), specification grid (hairline cells), feature chips, logistics timeline,
 * certificate cards, video cards, editorial description, dark CTA band.
 *
 * Tokens first, components second, breakpoints last.
 */

/* ------------------------------------------------------------------ tokens
 *
 * The sticky action bar and the lightbox are emitted outside .abv-page (they must escape
 * the inline-size container so position:fixed keeps working), but they still need the same
 * design tokens — hence the shared selector list.
 */
.abv-page,
.abv-stickybar,
.abv-lightbox {
	--abv-ink: #0f1216;
	--abv-ink-2: #333b44;
	/* ink-3 / ink-4 stay above WCAG AA (4.5:1) on both white and the tinted card surface —
	   checked with work/tools/check-contrast.py; the muted tone is for small uppercase labels */
	--abv-ink-3: #4d5763;
	--abv-ink-4: #626c78;
	--abv-line: #e2e6ea;
	--abv-line-strong: #cbd2d9;
	--abv-surface: #ffffff;
	--abv-surface-2: #f6f7f9;
	--abv-surface-3: #eceff2;
	--abv-accent: #b45309;
	--abv-accent-ink: #ffffff;
	--abv-accent-soft: #fdf6ec;
	--abv-good: #0e7a45;
	--abv-warn: #b42318;
	--abv-radius: 4px;
	--abv-radius-lg: 8px;
	--abv-shadow: 0 1px 2px rgba(15, 18, 22, .06), 0 8px 24px -12px rgba(15, 18, 22, .18);
	--abv-font: "Inter Tight", "Roboto Flex", "Helvetica Neue", "Segoe UI", system-ui, -apple-system, "Noto Sans", sans-serif;
	--abv-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, monospace;
	--abv-gap: 24px;
	--abv-max: 1240px;

	color: var(--abv-ink-2);
	font-family: var(--abv-font);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

.abv-page *,
.abv-page *::before,
.abv-page *::after,
.abv-stickybar *,
.abv-lightbox * { box-sizing: border-box; }

.abv-page img { max-width: 100%; height: auto; display: block; }
/* 3.39.0 - links inherit their context colour, but buttons own theirs
   (variant rules + Elementor Style controls; the old bare selector beat them at 0,1,1) */
.abv-page a:not(.abv-btn) { color: inherit; }

.abv-page {
	/* Layout decisions inside the detail layout query this container (see the breakpoints
	   section at the bottom of the file) instead of the viewport: a theme may hand us a
	   narrow column on a wide screen, and the two column layout must not be squeezed into it. */
	container: abv / inline-size;
	position: relative;
}

/* A widget dropped into an Elementor container wraps its block in .abv-page.abv-single. That
   inner wrapper must NOT be a size container: it sits inside the template's .e-con.abv-page (which
   already is one), and a contained subtree stops contributing its block size to the Elementor
   widget box — the gallery widget then reported the height of its photos only, so the title block
   painted over the thumbnails on phones. */
.abv-page .abv-page { container-type: normal; }

.abv-wrap-inner {
	margin: 0 auto;
	max-width: var(--abv-max);
	padding: 0 20px;
}

/* -------------------------------------------------------------- type scale */

.abv-eyebrow {
	margin: 0 0 6px;
	color: var(--abv-ink-4);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.abv-h1 {
	margin: 0 0 10px;
	color: var(--abv-ink);
	font-size: clamp(26px, 3.4vw, 40px);
	font-weight: 650;
	letter-spacing: -.02em;
	line-height: 1.15;
}

.abv-sec-title {
	margin: 0;
	color: var(--abv-ink);
	font-size: 19px;
	font-weight: 650;
	letter-spacing: -.01em;
}

.abv-lead {
	margin: 0;
	color: var(--abv-ink-3);
	font-size: 16px;
}

.abv-num { font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------------------- hero */
.abv-hero { padding: 24px 0 0; }

.abv-hero-grid {
	display: grid;
	gap: 10px;
	grid-template-columns: minmax(0, 1fr);
}

/* Thumbnail carousel: a rail with arrows, either beside the main image (vertical) or under it
   (horizontal). The rail scrolls, pages with the arrows and keeps the active thumb in view. */
.abv-grail-wrap {
	position: relative;
	display: grid;
	gap: 8px;
	min-width: 0;
}

.abv-grail-wrap[data-orient="vertical"] { grid-template-rows: auto minmax(0, 1fr) auto; }
.abv-grail-wrap[data-orient="horizontal"] { grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; }

/* Left / right rails live in their own grid column *outside* the photo. The rail column is a
   positioned shell whose content is absolute, so a tall rail can never stretch the row and the
   thumbnails can never sit on top of the main image. */
.abv-hero-thumbs-right .abv-hero-grid,
.abv-hero-thumbs-left .abv-hero-grid { align-items: start; }

.abv-hero-thumbs-right .abv-grail-wrap,
.abv-hero-thumbs-left .abv-grail-wrap {
	height: 100%;
	min-height: 0;
	max-height: 100%;
	overflow: hidden;
}

/* The rail lives in the middle grid row: the prev / next buttons keep their own rows, so the
   arrows can never sit on top of the first or last thumbnail. `contain: size` stops the long
   thumbnail list from stretching the hero row — the rail simply follows the main photo height. */
.abv-hero-thumbs-right .abv-grail-wrap,
.abv-hero-thumbs-left .abv-grail-wrap {
	contain: size;
	height: 100%;
	min-height: 0;
	overflow: hidden;
}

.abv-hero-thumbs-right .abv-grail-wrap > .abv-grail,
.abv-hero-thumbs-left .abv-grail-wrap > .abv-grail {
	position: static;
	min-height: 0;
	overscroll-behavior: contain;
}

.abv-gmain {
	position: relative;
	overflow: hidden;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface-3);
	cursor: zoom-in;
}

.abv-gmain img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	transition: transform .5s cubic-bezier(.2, .7, .2, 1);
}

.abv-gmain:hover img { transform: scale(1.02); }

.abv-gmain-empty {
	display: grid;
	min-height: 280px;
	place-items: center;
	color: var(--abv-ink-4);
	font-size: 13px;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.abv-gcount {
	position: absolute;
	right: 12px;
	bottom: 12px;
	padding: 4px 10px;
	border-radius: 999px;
	background: rgba(15, 18, 22, .72);
	color: #fff;
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	backdrop-filter: blur(6px);
}

.abv-grail {
	display: flex;
	gap: 10px;
	overflow-x: auto;
	overflow-y: hidden;
	padding-bottom: 4px;
	scrollbar-width: thin;
	scroll-snap-type: x proximity;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
}

.abv-grail-wrap[data-orient="vertical"] .abv-grail {
	flex-direction: column;
	overflow-y: auto;
	overflow-x: hidden;
	padding-bottom: 0;
	padding-right: 2px;
	scroll-snap-type: y proximity;
}

.abv-grail button {
	flex: 0 0 auto;
	width: 84px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius);
	background: none;
	cursor: pointer;
	overflow: hidden;
	padding: 0;
	scroll-snap-align: start;
	transition: border-color .16s ease, box-shadow .16s ease;
}

.abv-grail-wrap[data-orient="horizontal"] .abv-grail button { width: 92px; }
.abv-grail-wrap[data-orient="vertical"] .abv-grail button { width: 100%; }

/* carousel arrows */
/* Thumbnail scroll arrows: a small standalone chevron above/below the rail (like the reference
   site), not a full-width bar. */
.abv-grail-nav {
	display: grid;
	place-items: center;
	width: 34px;
	height: 24px;
	margin: 0 auto;
	padding: 0;
	border: 1px solid var(--abv-line);
	border-radius: 7px;
	background: var(--abv-surface);
	color: var(--abv-ink-3);
	cursor: pointer;
	transition: color .16s ease, border-color .16s ease, background-color .16s ease;
}

.abv-grail-wrap[data-orient="horizontal"] .abv-grail-nav { width: 26px; height: 100%; min-height: 44px; }
.abv-grail-nav:hover { color: var(--abv-ink); border-color: var(--abv-ink); }
.abv-grail-nav[disabled] { opacity: .35; cursor: default; }

/* main image arrows */
.abv-gnav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, .5);
	border-radius: 999px;
	background: rgba(15, 18, 22, .55);
	color: #fff;
	cursor: pointer;
	opacity: 0;
	transition: opacity .18s ease, background-color .18s ease;
}

.abv-gmain:hover .abv-gnav,
.abv-gmain:focus-within .abv-gnav { opacity: 1; }
.abv-gnav:hover { background: rgba(15, 18, 22, .8); }
.abv-gnav-prev { left: 12px; }
.abv-gnav-next { right: 12px; }

.abv-grail img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }

.abv-grail button[aria-current="true"] {
	border-color: var(--abv-ink);
	box-shadow: 0 0 0 1px var(--abv-ink);
}

/* ---------------------------------------------------------------- title bar */
.abv-head {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 14px;
	padding: 10px 0 12px;
	border-bottom: 1px solid var(--abv-line);
}

.abv-pills { display: flex; flex-wrap: wrap; gap: 8px; }

.abv-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	border: 1px solid var(--abv-line-strong);
	border-radius: 999px;
	background: var(--abv-surface);
	color: var(--abv-ink-2);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .01em;
}

.abv-pill-accent {
	border-color: transparent;
	background: var(--abv-accent-soft);
	color: var(--abv-accent);
}

.abv-pill-status { border-color: var(--abv-line-strong); }

.abv-facts {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 26px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.abv-facts li {
	display: flex;
	align-items: baseline;
	gap: 8px;
	color: var(--abv-ink-2);
	font-size: 14px;
}

.abv-facts svg { align-self: center; flex: none; color: var(--abv-ink-4); }
.abv-facts b { color: var(--abv-ink); font-weight: 600; }
.abv-facts span { color: var(--abv-ink-4); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }

/* ------------------------------------------------------------------ layout */
.abv-cols {
	display: grid;
	gap: 28px;
	grid-template-columns: minmax(0, 1fr);
	padding: 24px 0 48px;
}

/* minmax(0, 1fr) everywhere a single column is meant: an auto sized track would be sized by
   the widest min-content of its children and push the layout past the container */
.abv-main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; min-width: 0; container: maincol / inline-size; }
.abv-aside { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-content: start; min-width: 0; container: asidecol / inline-size; }

.abv-sec { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }

.abv-sec-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding-bottom: 12px;
	border-bottom: 0;
	position: relative;
}

/* 3.40.0 - the section rule: the title's accent bar fades into a hairline across the page */
.abv-sec-head::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	border-radius: 2px;
	background: linear-gradient(90deg, var(--abv-accent) 0, rgba(180, 83, 9, .30) 22%, var(--abv-line) 52%, transparent 100%);
}

/* ------------------------------------------------------------------ specs */
.abv-specs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1px;
	margin: 0;
	background: transparent;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	overflow: hidden;
}

.abv-specs > div {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
	padding: 14px 16px;
	background: var(--abv-surface);
	/* hairlines are drawn by the cells, not by the container: an odd number of rows would
	   otherwise leave the container background showing as a grey block in the last cell */
	box-shadow: 1px 0 0 var(--abv-line), 0 1px 0 var(--abv-line);
}

.abv-specs > div > div { min-width: 0; }

.abv-specs svg { flex: none; color: var(--abv-ink-4); }

.abv-specs dt {
	margin: 0;
	color: var(--abv-ink-3);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
}

.abv-specs dd {
	margin: 2px 0 0;
	color: var(--abv-ink);
	font-size: 15px;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	overflow-wrap: break-word;
}

/* ---------------------------------------------------------------- features */
.abv-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }

.abv-chips li {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius);
	background: var(--abv-surface);
	color: var(--abv-ink-2);
	font-size: 14px;
}

.abv-chips svg { flex: none; color: var(--abv-good); }

/* --------------------------------------------------------------- timeline */
.abv-steps {
	display: grid;
	gap: 18px;
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: abv-step;
}

.abv-steps li {
	position: relative;
	padding: 14px 16px 14px 56px;
	color: var(--abv-ink-2);
	font-size: 14px;
	background: var(--abv-surface-2);
	border: 1px solid var(--abv-line);
	border-radius: 10px;
}

.abv-steps li::before {
	counter-increment: abv-step;
	content: counter(abv-step);
	position: absolute;
	top: 0;
	left: 0;
	display: grid;
	width: 26px;
	height: 26px;
	border: 1px solid var(--abv-line-strong);
	border-radius: 999px;
	background: var(--abv-surface);
	color: var(--abv-ink);
	font-size: 12px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	place-items: center;
}

.abv-steps b { display: block; color: var(--abv-ink); font-size: 15px; font-weight: 650; }
.abv-steps span { color: var(--abv-ink-3); }

/* ------------------------------------------------------------ certificates */
.abv-certs { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr)); }

.abv-cert {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	text-decoration: none;
	transition: border-color .2s ease, transform .2s ease;
}

.abv-cert:hover { border-color: var(--abv-ink-4); transform: translateY(-1px); }

.abv-cert-logo {
	flex: none;
	width: 44px;
	height: 44px;
	border-radius: var(--abv-radius);
	background: var(--abv-surface-2);
	object-fit: contain;
}

.abv-video-badge svg { flex: none; }

.abv-cert-logo-empty {
	display: grid;
	place-items: center;
	color: var(--abv-ink-4);
}

.abv-cert-body { flex: 1; min-width: 0; }
.abv-cert b { display: block; color: var(--abv-ink); font-size: 15px; font-weight: 600; letter-spacing: 0; text-transform: none; }
.abv-cert-meta { color: var(--abv-ink-4); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }

/* ------------------------------------------------------------------ videos */
.abv-videos { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(260px, 100%), 1fr)); }

.abv-video {
	position: relative;
	display: block;
	overflow: hidden;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface-3);
	text-decoration: none;
}

/* width:100% keeps the poster box the right size before the image loads — otherwise a lazy
   loaded poster sits in a zero height box and never triggers its own load */
.abv-video img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }

.abv-video-poster {
	display: grid;
	place-items: center;
	aspect-ratio: 16 / 9;
	color: var(--abv-ink-4);
}

.abv-video-badge {
	position: absolute;
	left: 12px;
	bottom: 12px;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 10px;
	border-radius: 999px;
	background: rgba(15, 18, 22, .76);
	color: #fff;
	font-size: 13px;
	backdrop-filter: blur(6px);
}

/* ------------------------------------------------------- key figures strip */
.abv-metrics {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 1px;
	margin: 0;
	padding: 0;
	background: var(--abv-line);
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	overflow: hidden;
}

.abv-metrics > div {
	display: grid;
	gap: 6px;
	padding: 16px 18px;
	background: var(--abv-surface-2);
}

.abv-metrics dt {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--abv-ink-3);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.abv-metrics dd {
	margin: 0;
	color: var(--abv-ink);
	font-size: 26px;
	font-weight: 650;
	letter-spacing: -.02em;
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

.abv-metrics dd span {
	margin-left: 6px;
	color: var(--abv-ink-3);
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0;
}

/* ------------------------------------------------------------- description */
.abv-desc {
	max-width: 68ch;
	color: var(--abv-ink-2);
	font-size: 16px;
}

.abv-desc > * + * { margin-top: 1em; }
.abv-desc h2, .abv-desc h3 { color: var(--abv-ink); font-size: 18px; }

/* -------------------------------------------------------------- price card */
.abv-pricecard {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 16px;
	padding: 20px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	box-shadow: var(--abv-shadow);
}

.abv-pc-price {
	color: var(--abv-ink);
	font-size: clamp(26px, 3.6vw, 34px);
	font-weight: 650;
	letter-spacing: -.02em;
	line-height: 1.05;
	font-variant-numeric: tabular-nums;
}

.abv-pc-row { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.abv-pc-was { color: var(--abv-ink-4); font-size: 15px; text-decoration: line-through; }

.abv-pc-save {
	padding: 3px 8px;
	border-radius: 999px;
	background: #eaf6ef;
	color: var(--abv-good);
	font-size: 12px;
	font-weight: 700;
}

.abv-pc-note { margin: 0; color: var(--abv-ink-3); font-size: 13px; }

.abv-terms { display: grid; gap: 1px; margin: 0; background: var(--abv-line); border: 1px solid var(--abv-line); border-radius: var(--abv-radius); overflow: hidden; }

.abv-terms > div {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 12px;
	background: var(--abv-surface);
}

.abv-terms dt { flex: none; }
.abv-terms dd { min-width: 0; text-align: right; overflow-wrap: break-word; }

.abv-terms dt { color: var(--abv-ink-3); font-size: 13px; }
.abv-terms dd { margin: 0; color: var(--abv-ink); font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; }

/* ----------------------------------------------------------------- buttons */
.abv-btns { display: grid; gap: 10px; }

.abv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 46px;
	padding: 12px 18px;
	border: 1px solid transparent;
	border-radius: var(--abv-radius);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
	transition: transform .16s ease, background-color .2s ease, border-color .2s ease;
}

.abv-btn:active { transform: translateY(1px); }

/* Theme stylesheets commonly force `svg { width: 100% }`, which stretched the button glyph and
   pushed the label to the right. `width:auto` makes the attribute size authoritative again. */
.abv-btn > svg,
.abv-cbtn > svg,
.abv-params-btn > svg {
	width: auto;
	height: auto;
	max-width: none;
	flex: 0 0 auto;
}

.abv-btn > span { flex: 0 0 auto; min-width: 0; }

.abv-btn-primary { background: var(--abv-ink); color: #fff; }
.abv-btn-primary:hover { background: #1c2229; }

/* ------------------------------------------------------------------ prices */

/* WhatsApp is the primary contact action everywhere it appears, and it is green. */
.abv-btn-wa { --abv-btn-glow: rgba(21, 128, 61, .6); background: linear-gradient(135deg, #22c55e, #15803d); border-color: transparent; color: #fff; }
.abv-btn-wa:hover { --abv-btn-glow: rgba(21, 128, 61, .8); background: linear-gradient(135deg, #2fd36b, #189349); border-color: transparent; color: #fff; }

.abv-pc-price { white-space: normal; }

/* ------------------------------------------------------------------ prices */

.abv-btn-accent { background: var(--abv-accent); color: var(--abv-accent-ink); }
.abv-btn-accent:hover { background: #9a4708; }

.abv-btn-ghost { --abv-btn-glow: rgba(15, 23, 42, .22); border-color: var(--abv-line-strong); background: var(--abv-surface); color: var(--abv-ink); }
.abv-btn-ghost:hover { border-color: var(--abv-ink); }

.abv-page a:focus-visible,
.abv-page button:focus-visible {
	outline: 2px solid var(--abv-accent);
	outline-offset: 2px;
}

/* ----------------------------------------------------------- contact strip */
.abv-contact {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
	padding: 16px 20px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface-2);
}

.abv-contact p { margin: 0; color: var(--abv-ink-3); font-size: 13px; }
.abv-contact b { display: block; color: var(--abv-ink); font-size: 15px; }

/* --------------------------------------------------------------- CTA band */
.abv-cta-band {
	position: relative;
	overflow: hidden;
	/* 3.46.6 - the page row-gap is zeroed for the tight top; the band keeps its standing
	   distance to the section above (was 12px margin + container gap) */
	margin-top: 40px;
	padding: 44px 0;
	/* 3.43.0 - deep navy gradient with an ambient glow instead of the flat fill */
	background: linear-gradient(135deg, #0d1521 0%, #172334 55%, #101a28 100%);
	color: rgba(255, 255, 255, .74);
}

.abv-cta-band::before {
	content: '';
	position: absolute;
	inset: 0 0 auto 0;
	height: 3px;
	pointer-events: none;
	background: linear-gradient(90deg, var(--abv-accent), rgba(180, 83, 9, .25) 30%, transparent 70%);
}

.abv-cta-band::after {
	content: '';
	position: absolute;
	inset: 0;
	pointer-events: none;
	background:
		radial-gradient(58% 80% at 90% 50%, rgba(34, 197, 94, .14), transparent 62%),
		radial-gradient(46% 70% at 0% 0%, rgba(255, 255, 255, .05), transparent 60%);
}

.abv-cta-band .abv-wrap-inner { position: relative; z-index: 1; }

.abv-cta-band .abv-wrap-inner { display: grid; gap: 20px; }
.abv-cta-band h2 { position: relative; margin: 0; padding-left: 14px; color: #fff; font-size: clamp(22px, 2.6vw, 30px); font-weight: 650; letter-spacing: -.02em; }

.abv-cta-band h2::before {
	content: '';
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 4px;
	height: 72%;
	border-radius: 2px;
	background: linear-gradient(180deg, #f59e0b, #b45309);
}
.abv-cta-band p { margin: 0; max-width: 60ch; }
.abv-cta-band .abv-btns { grid-template-columns: repeat(auto-fit, minmax(160px, max-content)); }
.abv-cta-band .abv-btn-ghost {
	--abv-btn-glow: rgba(29, 78, 216, .55);
	background-color: rgba(29, 78, 216, .18);
	background-image: linear-gradient(135deg, #3b82f6, #1d4ed8);
	border-color: transparent;
	color: #fff;
}
.abv-cta-band .abv-btn-ghost:hover {
	--abv-btn-glow: rgba(29, 78, 216, .78);
	background-image: linear-gradient(135deg, #60a5fa, #2563eb);
	border-color: transparent;
}

/* ------------------------------------------------------------- lightbox */
.abv-lightbox {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: none;
	background: rgba(10, 12, 15, .94);
}

.abv-lightbox[data-open="true"] { display: grid; place-items: center; }
.abv-lightbox img { max-width: 92vw; max-height: 86vh; object-fit: contain; }
.abv-lightbox-nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 48px;
	height: 48px;
	border: 1px solid rgba(255, 255, 255, .3);
	border-radius: 999px;
	background: rgba(255, 255, 255, .08);
	color: #fff;
	cursor: pointer;
}
.abv-lightbox-nav[data-dir="prev"] { left: 20px; }
.abv-lightbox-nav[data-dir="next"] { right: 20px; }
.abv-lightbox-close { position: absolute; top: 18px; right: 20px; width: 44px; height: 44px; border: 0; border-radius: 999px; background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer; font-size: 20px; }
.abv-lightbox-count { position: absolute; bottom: 22px; left: 50%; transform: translateX(-50%); color: rgba(255, 255, 255, .7); font-size: 13px; font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------- mobile action */
.abv-stickybar { display: none; }

/* ------------------------------------------------------------ parameters */

.abv-params {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}

.abv-params-head { display: grid; gap: 4px; padding-bottom: 10px; border-bottom: 1px solid var(--abv-ink); }
.abv-params-head .abv-sec-title { margin: 0; }

.abv-params-toolbar { display: flex; flex-wrap: wrap; gap: 8px; }
.abv-params-toolbar-right { justify-content: flex-end; }
.abv-params-toolbar-left { justify-content: flex-start; }
.abv-params-toolbar-between { justify-content: space-between; }

.abv-params-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 40px;
	padding: 9px 14px;
	border: 1px solid var(--abv-line-strong);
	border-radius: var(--abv-radius);
	background: var(--abv-surface);
	color: var(--abv-ink);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	transition: border-color .16s ease, background-color .16s ease, color .16s ease;
}

.abv-params-btn {
	--abv-btn-glow: rgba(15, 23, 42, .4);
	box-shadow: 0 4px 14px -8px var(--abv-btn-glow);
}

.abv-params-btn:hover { --abv-btn-glow: rgba(15, 23, 42, .55); border-color: var(--abv-ink); background: var(--abv-surface-2); }
.abv-params-btn svg { flex: none; }

/* Primary action (Download PDF): deliberately loud, blue, with a lift on hover. */
.abv-params-btn-primary {
	border-color: #1d4ed8;
	background: #1d4ed8;
	color: #fff;
	font-weight: 650;
	box-shadow: 0 1px 2px rgba(15, 18, 22, .12), 0 8px 18px -10px rgba(29, 78, 216, .65);
	transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.abv-params-btn-primary:hover,
.abv-params-btn-primary:focus-visible {
	border-color: #172f9e;
	background: #172f9e;
	color: #fff;
	box-shadow: 0 2px 4px rgba(15, 18, 22, .16), 0 12px 24px -10px rgba(23, 47, 158, .7);
	transform: translateY(-1px);
}

.abv-params-btn-primary:active { transform: translateY(0); }
.abv-params-btn-primary[disabled] { opacity: .5; cursor: default; transform: none; }

/* picker rows: one bordered row per product, like the reference dialog */
.abv-params-product {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 11px 14px;
	border: 1px solid var(--abv-line);
	border-radius: 8px;
	background: var(--abv-surface);
	font-size: 14px;
	line-height: 1.35;
	color: var(--abv-ink);
	cursor: pointer;
}

.abv-params-product:hover { border-color: var(--abv-line-strong); background: var(--abv-surface-2); }
.abv-params-product input { width: 16px; height: 16px; margin: 0; accent-color: #1d4ed8; flex: none; }
.abv-params-product span { min-width: 0; }

.abv-params-picker-note { margin: 0 20px 10px; font-size: 13px; color: var(--abv-ink-3); }

/* synced horizontal scrollbar above the table — always visible, so a wide copied table is
   obviously scrollable and the labels column can stay sticky while the values move */
.abv-params-topbar {
	overflow-x: auto;
	overflow-y: hidden;
	height: 14px;
	margin-bottom: 2px;
	border-radius: 999px;
	background: var(--abv-surface-2);
}

.abv-params-topbar > div { height: 1px; }

.abv-params-body {
	position: relative;
	overflow: auto;
	max-height: var(--abv-params-max, none);
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-x: contain;
}

.abv-params-capped .abv-params-body { max-height: var(--abv-params-max); }

.abv-params-content { min-width: min-content; }
.abv-params-content img { max-width: 100%; height: auto; }

/* thin, readable scrollbars */
.abv-params-body::-webkit-scrollbar,
.abv-params-topbar::-webkit-scrollbar { height: 10px; width: 10px; }
.abv-params-body::-webkit-scrollbar-thumb,
.abv-params-topbar::-webkit-scrollbar-thumb { background: #cbd2d9; border-radius: 999px; }
.abv-params-body::-webkit-scrollbar-track,
.abv-params-topbar::-webkit-scrollbar-track { background: var(--abv-surface-2); }

/* the parameter labels stay put while the value columns scroll.
   Backgrounds are deliberately *not* forced: the copied table paints its own section-title rows
   dark (with !important), and overriding them turned the titles white on white. Only body cells
   without their own background get the white surface so the sticky column stays opaque. */
.abv-params-sticky-first .abv-params-content tbody tr > *:first-child {
	position: sticky !important;
	left: 0 !important;
	z-index: 3;
	background-color: var(--abv-params-label-bg, #ffffff);
	box-shadow: 1px 0 0 var(--abv-params-label-shadow, rgba(15, 18, 22, .08));
}

/* table head follows vertical scrolling */
.abv-params-content thead th { position: sticky !important; top: 0 !important; z-index: 4 !important; }

/* section / category title rows of the copied table: the row scrolls, the title text stays */
.abv-params-sticky-titles .abv-params-content [class*="style_table_title"] { position: sticky !important; left: 0 !important; z-index: 5 !important; }

.abv-params-note { margin: 0; color: var(--abv-ink-4); font-size: 12px; }

/* the full-width row under the two columns */
.abv-params-row { padding: 8px 0 12px; }

@media (max-width: 640px) {
	.abv-params-toolbar-right { justify-content: stretch; }
	.abv-params-toolbar-right .abv-params-btn { width: 100%; justify-content: center; }
}

@media print {
	.abv-params-toolbar, .abv-params-topbar { display: none !important; }
	.abv-params-body { max-height: none !important; overflow: visible !important; border: 0; }
	.abv-params-content table { width: 100% !important; }
}

/* ------------------------------------------------------------- inventory */

.abv-archive-shell { padding-bottom: 56px; }

.abv-crumbs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	/* 3.46.5 - 14px sat on top of the container gap; 10px is enough now */
	margin: 2px 0 10px;
	font-size: 12px;
	color: var(--abv-ink-4);
}

.abv-crumbs a { color: var(--abv-ink-3); text-decoration: none; }
.abv-crumbs a:hover { color: var(--abv-ink); }

.abv-archive-head {
	display: grid;
	gap: 8px;
	padding: 0 0 22px;
	margin-bottom: 22px;
	border-bottom: 1px solid var(--abv-line);
}

.abv-archive-title {
	margin: 0;
	font-size: clamp(28px, 4vw, 42px);
	line-height: 1.08;
	letter-spacing: -.02em;
	color: var(--abv-ink);
	font-weight: 650;
}

.abv-archive-lede { margin: 0; max-width: 64ch; color: var(--abv-ink-3); font-size: 15px; }

/* ---- filter bar ---- */

.abv-filter {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 14px;
	padding: 16px;
	margin-bottom: 18px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
}

.abv-filter.is-side { flex-direction: column; align-items: stretch; }

.abv-filter-fields {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
	gap: 12px;
	flex: 1 1 640px;
	min-width: 0;
}

.abv-filter.is-side .abv-filter-fields { grid-template-columns: minmax(0, 1fr); flex: none; }

.abv-fi { display: grid; gap: 6px; min-width: 0; }
.abv-fi input,
.abv-fi select,
.abv-fi textarea { box-sizing: border-box; max-width: 100%; }
.abv-fi-sm { max-width: 132px; }
.abv-filter.is-side .abv-fi-sm { max-width: none; }

.abv-fi > span {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--abv-ink-4);
}

.abv-fi input,
.abv-fi select {
	height: 44px;
	width: 100%;
	padding: 0 12px;
	border: 1px solid var(--abv-line-strong);
	border-radius: var(--abv-radius);
	background: var(--abv-surface);
	color: var(--abv-ink);
	font: inherit;
	font-size: 14px;
	line-height: 1;
}

.abv-fi input:focus,
.abv-fi select:focus { outline: 2px solid var(--abv-accent); outline-offset: 1px; border-color: var(--abv-ink); }

.abv-filter-actions { display: flex; align-items: center; gap: 12px; }
.abv-filter.is-side .abv-filter-actions { flex-direction: column; align-items: stretch; }

.abv-fbtn {
	height: 44px;
	padding: 0 20px;
	border: 1px solid var(--abv-ink);
	border-radius: var(--abv-radius);
	background: var(--abv-ink);
	color: #fff;
	font: inherit;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	transition: background-color .16s ease, border-color .16s ease;
}

.abv-fbtn:hover { background: #232a31; border-color: #232a31; }

.abv-freset { font-size: 13px; color: var(--abv-ink-3); text-decoration: underline; text-underline-offset: 3px; }
.abv-freset:hover { color: var(--abv-ink); }

/* ---- archive toolbar ---- */

.abv-archive-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	margin: 4px 0 18px;
}

.abv-archive-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }

.abv-views { display: flex; gap: 18px; margin: 0; padding: 0; list-style: none; overflow-x: auto; }

.abv-view {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
	padding: 3px 0;
	border-bottom: 2px solid transparent;
	color: var(--abv-ink-3);
	font-size: 13px;
	text-decoration: none;
	white-space: nowrap;
}

.abv-view .count { font-size: 11px; color: var(--abv-ink-4); font-variant-numeric: tabular-nums; }
.abv-view:hover { color: var(--abv-ink); }
.abv-view.is-active { color: var(--abv-ink); border-bottom-color: var(--abv-accent); }

.abv-result-count { margin: 0; font-size: 13px; color: var(--abv-ink-4); font-variant-numeric: tabular-nums; }

.abv-sort { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--abv-ink-4); }
.abv-sort select {
	height: 38px;
	padding: 0 10px;
	border: 1px solid var(--abv-line-strong);
	border-radius: var(--abv-radius);
	background: var(--abv-surface);
	color: var(--abv-ink);
	font: inherit;
	font-size: 13px;
}

/* ---- cards ---- */

.abv-grid {
	display: grid;
	grid-template-columns: repeat(var(--abv-cols, 3), minmax(0, 1fr));
	gap: 24px;
}

.abv-grid-empty {
	grid-column: 1 / -1;
	margin: 0;
	padding: 48px 24px;
	border: 1px dashed var(--abv-line-strong);
	border-radius: var(--abv-radius-lg);
	text-align: center;
	color: var(--abv-ink-3);
}

.abv-card {
	display: flex;
	flex-direction: column;
	min-width: 0;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	color: inherit;
	text-decoration: none;
	overflow: hidden;
	transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}

.abv-card, .abv-card * { text-decoration: none !important; }

.abv-card:hover { border-color: var(--abv-ink); transform: translateY(-2px); box-shadow: var(--abv-shadow); }

.abv-card-img { position: relative; overflow: hidden; background: var(--abv-surface-3); }
.abv-card-img img { position: absolute; inset: 0; display: block; width: 100% !important; height: 100% !important; object-fit: cover; transition: transform .5s ease; }
.abv-card:hover .abv-card-img img { transform: scale(1.035); }
.abv-card-noimg { display: block; width: 100%; height: 100%; background: repeating-linear-gradient(45deg, var(--abv-surface-2), var(--abv-surface-2) 10px, var(--abv-surface-3) 10px, var(--abv-surface-3) 20px); }

.abv-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	height: 24px;
	padding: 0 8px;
	border-radius: 2px;
	background: var(--abv-ink);
	color: #fff;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	background: var(--abv-status, var(--abv-ink));
}

.abv-badge-custom { background: var(--abv-accent); }

.abv-card-body { display: flex; flex-direction: column; gap: 8px; padding: 16px; flex: 1; }

.abv-card-kicker {
	margin: 0;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--abv-ink-4);
}

.abv-card h3 {
	margin: 0;
	font-size: 17px;
	line-height: 1.32;
	letter-spacing: -.01em;
	color: var(--abv-ink);
	font-weight: 600;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.abv-card-specs {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 10px;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 13px;
	color: var(--abv-ink-3);
}

.abv-card-specs li { display: inline-flex; align-items: center; gap: 6px; }
.abv-card-specs li + li::before { content: ""; width: 3px; height: 3px; border-radius: 50%; background: var(--abv-line-strong); }

.abv-card-foot {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 10px;
	margin-top: auto;
	padding-top: 10px;
	border-top: 1px solid var(--abv-line);
}

.abv-card-foot b { font-size: 18px; letter-spacing: -.01em; font-variant-numeric: tabular-nums; color: var(--abv-ink); white-space: nowrap; }
.abv-card-foot s { font-size: 12px; color: var(--abv-ink-4); text-decoration-thickness: 1px; }
.abv-card-foot span { margin-left: auto; min-width: 0; overflow: hidden; font-size: 12px; color: var(--abv-ink-4); text-align: right; text-overflow: ellipsis; white-space: nowrap; }

/* ---- pagination ---- */

.abv-pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin: 34px 0 0; }

.abv-pagination a,
.abv-pagination span {
	display: inline-grid;
	place-items: center;
	min-width: 40px;
	height: 40px;
	padding: 0 10px;
	border: 1px solid var(--abv-line-strong);
	border-radius: var(--abv-radius);
	color: var(--abv-ink);
	font-size: 14px;
	font-variant-numeric: tabular-nums;
	text-decoration: none;
}

.abv-pagination a:hover { border-color: var(--abv-ink); background: var(--abv-surface-2); }
.abv-pagination .current { background: var(--abv-ink); border-color: var(--abv-ink); color: #fff; }
.abv-pagination .dots { border-color: transparent; }

@media (max-width: 1024px) {
	.abv-grid { grid-template-columns: repeat(min(var(--abv-cols, 3), 2), minmax(0, 1fr)); }
}

@media (max-width: 640px) {
	.abv-grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
	.abv-filter { padding: 12px; }
	.abv-filter-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.abv-fi-grow { grid-column: 1 / -1; }
	.abv-filter-actions { width: 100%; }
	.abv-fbtn { flex: 1; }
	.abv-card-body { padding: 14px; }
	.abv-archive-title { font-size: 28px; }
}

/* ---- archive / listings on tablets and phones ----
 * The listing page is read on a phone as often as on a desktop: give it its own spacing
 * rhythm instead of letting the desktop paddings and 24px grid gaps squeeze the cards. */

@media (max-width: 782px) {
	.abv-archive-page .abv-wrap-inner { padding: 0 16px; }
	.abv-wrap-inner { padding: 0 16px; }
	.abv-filter { padding: 14px; gap: 12px; border-radius: var(--abv-radius); }
	.abv-filter-fields { gap: 10px; }
	.abv-grid { gap: 16px; }
	.abv-card-body { padding: 16px; }
	.abv-card h3 { font-size: 17px; line-height: 1.3; }
	.abv-card-foot { gap: 10px; }
	.abv-viewtoggle button { width: 40px; height: 40px; }
	.abv-viewtoggle button svg { width: 17px; height: 17px; }
	.abv-views { gap: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
	.abv-views::-webkit-scrollbar { display: none; }
	.abv-view { padding: 6px 10px; }
}

@media (max-width: 480px) {
	.abv-wrap-inner { padding: 0 14px; }
	.abv-filter-fields { grid-template-columns: minmax(0, 1fr); }
	.abv-grid { gap: 14px; }
	.abv-card-body { padding: 14px; }
	.abv-card-foot { flex-wrap: wrap; row-gap: 6px; }
}

/* entry button to the parameter table (green, like the reference site). The wrapper only
   positions the button; the visual styles belong to .abv-btn so Elementor can restyle it. */
/* Elementor puts a default bottom margin on every widget; inside our own containers the layout
   is driven by gap, and the extra margins are what made the mobile page look airy and uneven. */
.e-con.abv-page > .elementor-element,
.e-con.abv-head > .elementor-element,
.e-con.abv-pricecard > .elementor-element,
.e-con.abv-price-actions > .elementor-element,
.e-con.abv-main > .elementor-element,
.e-con.abv-aside > .elementor-element { min-width: 0; }

/* The Advanced tab owns the outer margin / padding of each widget — never reset it here,
   otherwise _margin / _padding in Elementor silently stop working. */

.abv-params-cta { display: flex; padding: 14px 0 4px; }
.abv-params-cta-center { justify-content: center; }
.abv-params-cta-left { justify-content: flex-start; }
.abv-params-cta-right { justify-content: flex-end; }

.abv-btn-green,
.abv-btn-wa { background: #1f8a4c; border-color: #1f8a4c; color: #fff; }
.abv-btn-green:hover,
.abv-btn-wa:hover { background: #186f3d; border-color: #186f3d; color: #fff; }
.abv-btn-block { width: 100%; }

/* the table carries the same id so the button can scroll to it */
#abv-params, #abv-parameters { scroll-margin-top: 90px; }

/* ---- parameter table popup ---- */

.abv-params-modal[aria-hidden="true"] { display: none; }

.abv-params-modal {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
}

.abv-params-modal-backdrop { position: absolute; inset: 0; background: rgba(10, 13, 17, .62); }

.abv-params-modal-box {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	width: min(1180px, 100%);
	max-height: min(86vh, 900px);
	background: var(--abv-surface);
	border-radius: var(--abv-radius-lg);
	box-shadow: 0 30px 70px -20px rgba(10, 13, 17, .55);
	overflow: hidden;
}

.abv-params-modal-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 20px;
	border-bottom: 1px solid var(--abv-line);
}

.abv-params-modal-head h3 { margin: 0; font-size: 17px; color: var(--abv-ink); }

.abv-params-modal-close {
	width: 36px !important;
	height: 36px !important;
	min-width: 36px;
	padding: 0 !important;
	border: 1px solid var(--abv-line) !important;
	border-radius: 50% !important;
	background: #fff !important;
	color: var(--abv-ink-3) !important;
	box-shadow: none !important;
	cursor: pointer;
	font-size: 15px !important;
	line-height: 1 !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.abv-params-modal-close:hover { color: var(--abv-ink) !important; border-color: var(--abv-ink) !important; }

/* icon bearing controls: never let a theme drift the glyph off-centre */
.abv-params-modal-close,
.abv-params-btn,
.abv-btn,
.abv-cbtn,
.abv-grail-nav,
.abv-viewtoggle button,
.abv-gnav { line-height: 0; }

.abv-params-modal-close svg,
.abv-grail-nav svg,
.abv-viewtoggle svg,
.abv-gnav svg { display: block; margin: 0 auto; flex: none; }

/* Button glyphs must not take auto side margins: inside the flex button that centres the icon
   alone and shoves the label to the right edge. */
.abv-btn svg,
.abv-cbtn svg,
.abv-params-btn svg { display: block; margin: 0; flex: none; }

.abv-params-modal-close:hover { color: var(--abv-ink); border-color: var(--abv-ink); }

.abv-params-modal-body { overflow: auto; padding: 16px 20px 20px; }
.abv-params-modal-body .abv-params-head { display: none; }
.abv-params-modal-body .abv-params { gap: 8px; }

body.abv-modal-open { overflow: hidden; }

/* ---- granular containers built in Elementor ---- */

.e-con.abv-head { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 10px 0 12px; }
.e-con.abv-head .abv-h1 { margin: 0; }
.e-con.abv-head .abv-pills { margin: 0; }

.e-con.abv-pricecard {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 10px;
	padding: 22px;
	border: 1px solid var(--abv-line);
	/* 3.46.3 - clip + no top border: Elementor's own .e-con { overflow: var(--overflow) }
	   (default visible, loads later) was beating the plugin's .abv-pricecard overflow:hidden
	   at equal specificity, so the top edge element painted its square corners OVER the
	   panel's rounded corner; and the 1px top border kept a hairline of panel background
	   visible above the edge. 0-2-0 wins the cascade and border-top-width:0 puts the
	   padding box on the card's visual top. */
	overflow: hidden;
	/* 3.46.4 - !important: any editor/kit/theme top border re-opens a 1px hairline of
	   panel background above the edge; the edge IS the top border of this card. */
	border-top: 0 !important;
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	box-shadow: var(--abv-shadow);
}

.e-con:where(.abv-pricecard) .abv-pc-label,
.e-con:where(.abv-pricecard) .abv-pc-price,
.e-con:where(.abv-pricecard) .abv-pc-note { margin: 0; }

.e-con.abv-price-actions { display: grid; gap: 10px; }

@media (max-width: 767px) {
	.e-con.abv-pricecard { padding: 18px; gap: 8px; }
	.e-con.abv-head { padding: 10px 0 8px; gap: 8px; }
	.abv-params-modal { padding: 0; align-items: flex-end; }
	.abv-params-modal-box { width: 100%; max-height: 92vh; border-radius: 14px 14px 0 0; }
	.abv-params-modal-body { padding: 12px 14px 16px; }
}

/* narrow side column: the range and the button labels have to stay on one line */
@container asidecol (max-width: 340px) {
	.abv-pc-price { font-size: 26px; }
	.abv-pricecard .abv-btn,
	.e-con:where(.abv-pricecard) .abv-btn { font-size: 13px; padding: 10px 12px; gap: 6px; }
}

/* ---- parameter PDF picker ---- */

.abv-params-picker[aria-hidden="true"] { display: none; }

.abv-params-picker {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
}

.abv-params-picker-backdrop { position: absolute; inset: 0; background: rgba(10, 13, 17, .62); }

.abv-params-picker-box {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	width: min(560px, 100%);
	max-height: 80vh;
	background: var(--abv-surface);
	border-radius: var(--abv-radius-lg);
	box-shadow: 0 30px 70px -20px rgba(10, 13, 17, .55);
	overflow: hidden;
}

.abv-params-picker-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 20px;
	border-bottom: 1px solid var(--abv-line);
}

.abv-params-picker-head h3 { margin: 0; font-size: 16px; color: var(--abv-ink); }
.abv-params-picker-head .abv-params-modal-close,
.abv-params-modal-head .abv-params-modal-close { flex: 0 0 auto; }

.abv-params-picker-list { display: grid; gap: 8px; padding: 10px 20px 16px; overflow: auto; }

.abv-params-picker-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 14px 20px;
	border-top: 1px solid var(--abv-line);
}

.abv-params-check { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--abv-ink-2); cursor: pointer; }
.abv-params-check-row { padding: 7px 0; border-bottom: 1px dashed var(--abv-line); }
.abv-params-check-row:last-child { border-bottom: 0; }

.abv-params-btn-ghost { background: var(--abv-surface); color: var(--abv-ink); border: 1px solid var(--abv-line-strong); }
.abv-params-btn-ghost:hover { background: var(--abv-surface-2); }

/* a lone specification cell spans the row instead of leaving a grey gap */
.abv-specs > div:last-child:nth-child(odd) { grid-column: 1 / -1; }

/* visually hidden but still read by search engines / screen readers */
.abv-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ---- archive: left sidebar filters ---- */

.abv-archive.is-side { display: grid; grid-template-columns: 286px minmax(0, 1fr); gap: 30px; align-items: start; }.abv-archive.is-side .abv-filter { grid-column: 1; grid-row: 1 / span 6; position: sticky; top: 24px; }
.abv-archive.is-side .abv-filter-fields { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.abv-archive.is-side .abv-filter-actions { display: grid; gap: 8px; margin-top: 14px; }
.abv-archive.is-side .abv-fbtn { width: 100%; }
.abv-archive.is-side .abv-filter { padding: 18px; border: 1px solid var(--abv-line); border-radius: var(--abv-radius-lg); background: var(--abv-surface); }

@media (max-width: 960px) {
	.abv-archive.is-side { grid-template-columns: minmax(0, 1fr); gap: 20px; }
	.abv-archive.is-side .abv-filter { position: static; grid-column: 1; grid-row: auto; }
}

/* ---- price range slider ---- */

.abv-fi-price { grid-column: 1 / -1; }

.abv-range { position: relative; display: block; height: 34px; margin-top: 6px; }
.abv-range-track { position: absolute; left: 0; right: 0; top: 15px; height: 6px; background: var(--abv-surface-3, #e6e8eb); border-radius: 999px; }
.abv-range-fill { position: absolute; top: 0; bottom: 0; background: var(--abv-ink); border-radius: 999px; }

.abv-range input[type="range"] {
	position: absolute;
	left: 0;
	top: 0;
	width: 100%;
	height: 34px;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	pointer-events: none;
	-webkit-appearance: none;
	appearance: none;
	outline: none;
}

/* hide the native track so only our rail is visible */
.abv-range input[type="range"]::-webkit-slider-runnable-track {
	height: 6px;
	background: transparent;
	border: 0;
}

.abv-range input[type="range"]::-moz-range-track {
	height: 6px;
	background: transparent;
	border: 0;
}

.abv-range input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	pointer-events: auto;
	width: 20px;
	height: 20px;
	margin-top: -7px;
	border: 2px solid var(--abv-ink);
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 3px rgba(15, 18, 22, .18);
	cursor: pointer;
	transition: transform .12s ease, box-shadow .12s ease;
}

.abv-range input[type="range"]::-moz-range-thumb {
	pointer-events: auto;
	width: 18px;
	height: 18px;
	border: 2px solid var(--abv-ink);
	border-radius: 50%;
	background: #fff;
	cursor: pointer;
}

.abv-range input[type="range"]:focus-visible::-webkit-slider-thumb,
.abv-range input[type="range"]:active::-webkit-slider-thumb {
	box-shadow: 0 0 0 5px rgba(29, 78, 216, .16);
}

.abv-range-out { display: flex; align-items: center; gap: 8px; margin-top: 4px; font-size: 13px; color: var(--abv-ink-3); }
.abv-range-out b { font-weight: 650; color: var(--abv-ink); font-variant-numeric: tabular-nums; }
.abv-range-out span { color: var(--abv-ink-4); }

/* ---- grid / list toggle ---- */

.abv-viewtoggle { display: inline-flex; border: 1px solid var(--abv-line); border-radius: 8px; overflow: hidden; }
.abv-viewtoggle button {
	display: grid;
	place-items: center;
	width: 36px;
	height: 34px;
	padding: 0 !important;
	border: 0;
	border-radius: 0;
	background: var(--abv-surface);
	color: var(--abv-ink-3);
	cursor: pointer;
	line-height: 0;
}
.abv-viewtoggle button svg { width: 16px; height: 16px; margin: 0; }
.abv-viewtoggle button.is-active { background: var(--abv-ink); color: #fff; }

/* ---- list cards ---- */

.abv-grid.abv-list { grid-template-columns: minmax(0, 1fr); gap: 14px; }
.abv-list .abv-card { display: grid; grid-template-columns: 264px minmax(0, 1fr); }
.abv-list .abv-card-img { height: 100%; aspect-ratio: auto !important; }
.abv-list .abv-card-body { padding: 18px 20px; }
.abv-list .abv-card h3 { font-size: 19px; }

@media (max-width: 640px) {
	.abv-list .abv-card { grid-template-columns: minmax(0, 1fr); }
	.abv-list .abv-card-img { aspect-ratio: 4 / 3 !important; }
}

/* ---- showcase carousel ---- */

.abv-showcase { position: relative; }

.abv-carousel-track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - (var(--abv-slides, 3) - 1) * 16px) / var(--abv-slides, 3));
	gap: 16px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding: 2px 2px 6px;
	scrollbar-width: none;
}

.abv-carousel-track::-webkit-scrollbar { display: none; }
.abv-carousel-track > * { scroll-snap-align: start; }

@media (max-width: 900px) {
	.abv-carousel-track { grid-auto-columns: calc((100% - 16px) / 2); }
}

@media (max-width: 620px) {
	.abv-carousel-track { grid-auto-columns: 86%; }
}

.abv-cbtn {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
	display: grid;
	place-items: center;
	width: var(--abv-cbtn-size, 40px);
	height: var(--abv-cbtn-size, 40px);
	padding: 0;
	border: 1px solid var(--abv-line-strong);
	border-radius: var(--abv-cbtn-radius, 999px);
	background: var(--abv-cbtn-bg, var(--abv-surface));
	color: var(--abv-ink);
	box-shadow: 0 8px 22px rgba(15, 18, 22, .16);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	cursor: pointer;
	transition: background-color .16s ease, color .16s ease, border-color .16s ease, transform .16s ease;
}

.abv-cbtn:hover { background: var(--abv-ink); color: #fff; border-color: var(--abv-ink); transform: translateY(-50%) scale(1.04); }
.abv-cbtn svg { width: 18px; height: 18px; }

.abv-cbtn-prev { left: var(--abv-cbtn-offset, 12px); }
.abv-cbtn-next { right: var(--abv-cbtn-offset, 12px); }
.abv-cbtn[disabled] { opacity: .35; cursor: default; }
.abv-cbtn[disabled]:hover { background: var(--abv-cbtn-bg, var(--abv-surface)); color: var(--abv-ink); border-color: var(--abv-line-strong); }

.abv-dots { display: flex; align-items: center; justify-content: center; gap: 6px; margin-top: 14px; }
/* the visual dot stays 7px, the button around it is a 24px tall tap target */
.abv-dot { display: inline-flex; align-items: center; justify-content: center; }
.abv-dot::before { content: ""; display: block; width: 7px; height: 7px; border-radius: 99px; background: var(--abv-line-strong); transition: width .16s ease, background-color .16s ease; }
.abv-dot.is-active { background: none; }
.abv-dot.is-active::before { width: 20px; background: var(--abv-ink); }

.abv-dot {
	width: 20px;
	height: 24px;
	padding: 0;
	border: 0;
	border-radius: 99px;
	background: transparent;
	cursor: pointer;
	transition: width .16s ease, background-color .16s ease;
}

.abv-dot.is-active { width: 20px; }

/* ---- phone rhythm ------------------------------------------------------ */

/* One consistent vertical rhythm on phones: 20px between content blocks, 14-18px inside cards.
   Previously each block had its own padding, which made some gaps look empty and others tight. */
@media (max-width: 767px) {
	.abv-sec { gap: 14px; }
	.abv-sec-head { padding-bottom: 10px; }
	.abv-cols,
	.e-con.abv-cols { padding: 8px 0 28px; gap: 18px; }
	.abv-main,
	.e-con.abv-main { gap: 20px; }
	.abv-aside,
	.e-con.abv-aside { gap: 14px; }
	.e-con.abv-pricecard { padding: 18px; gap: 8px; }
	.abv-contact { padding: 16px; }
	.abv-params-row { padding: 4px 0 8px; }
	.abv-params { gap: 10px; }
	.abv-cta-band { padding: 30px 0; }
	.abv-cta-band h2 { font-size: 24px; }
	.abv-head,
	.e-con.abv-head { padding: 10px 0 10px; gap: 8px; }
	.abv-hero { padding: 12px 0 0; }
	.abv-grail-wrap { gap: 6px; }
	.abv-wrap-inner { padding: 0 15px; }
}

/* ------------------------------------------------------------ empty state */
.abv-empty {
	padding: 18px;
	border: 1px dashed var(--abv-line-strong);
	border-radius: var(--abv-radius-lg);
	color: var(--abv-ink-4);
	font-size: 14px;
}

/* ============================================================= breakpoints
 *
 * Three nested containers drive the layout, because the *page* column and the *main* column
 * are rarely the same width:
 *   abv      — whole detail page  → two column switch, gallery thumb rail, CTA band
 *   maincol  — content column     → spec grid columns, logistics timeline
 *   asidecol — price sidebar      → label/value rows on very narrow cards
 * Phone-only behaviour (persistent action bar, tighter type) stays a viewport query, because
 * that is about the device rather than the column.
 */

/* ---- page container ---------------------------------------------------- */

/* ≥ 820px of content: the design has room for the desktop arrangement. 820 rather than 960 on
   purpose — a theme container of 920px (Astra with site width 920) hands us ~920px and must not
   drop back to the phone reading order. */
@container abv (min-width: 820px) {
	/* Side rails: a real grid column instead of an overlay, so the thumbnails are always outside
	   the photo (the old absolute rail could paint over the image when the column was tight). */
	.abv-hero-thumbs-right .abv-hero-grid { grid-template-columns: minmax(0, 1fr) 104px; }
	.abv-hero-thumbs-left .abv-hero-grid { grid-template-columns: 104px minmax(0, 1fr); }
	.abv-hero-thumbs-left .abv-gmain { grid-column: 2; grid-row: 1; }
	.abv-hero-thumbs-left .abv-grail-wrap { grid-column: 1; grid-row: 1; }
	.abv-hero-thumbs-right .abv-grail-wrap { grid-column: 2; grid-row: 1; }
	.abv-cols { grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; }
	.abv-aside { position: sticky; top: 24px; align-self: start; }
	.abv-cta-band .abv-wrap-inner { grid-template-columns: minmax(0, 1fr) max-content; align-items: center; }
}

@container abv (min-width: 1180px) {
	.abv-cols { grid-template-columns: minmax(0, 1fr) 356px; gap: 48px; }
}

/* Below the two column threshold the price card and the contact strip move directly under the
   heading: same reading order as a phone, and it also covers a wide screen whose theme only
   hands us a narrow column. */
@container abv (max-width: 819px) {
	.abv-main { order: 2; }
	.abv-aside { order: 1; }
}

/* Very narrow content column (heavy theme padding, small phones). */
@container abv (max-width: 340px) {
	.abv-facts { gap: 8px 16px; }
	.abv-metrics dd { font-size: 22px; }
	.abv-page { font-size: 14.5px; }
}

/* ---- main column ------------------------------------------------------- */

/* Spec grid: two cells per row by default, three when the column is wide, one on small phones. */
@container maincol (min-width: 900px) {
	.abv-specs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@container maincol (max-width: 420px) {
	.abv-specs { grid-template-columns: minmax(0, 1fr); }
}

/* Logistics: four steps with connectors → two columns without connectors → stacked. */
@container maincol (min-width: 700px) {
	.abv-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
	.abv-steps li { padding: 34px 0 0; }
	.abv-steps li::before { top: 0; }
	.abv-steps li::after {
		content: "";
		position: absolute;
		top: 13px;
		left: 34px;
		right: -24px;
		height: 1px;
		background: var(--abv-line);
	}
	.abv-steps li:last-child::after { display: none; }
}

@container maincol (min-width: 460px) and (max-width: 699px) {
	.abv-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 24px; }
}

/* ---- price sidebar ----------------------------------------------------- */

@container asidecol (max-width: 300px) {
	.abv-terms > div { flex-direction: column; align-items: flex-start; gap: 2px; }
	.abv-terms dd { text-align: left; }
}

/* ---- standalone section widgets ---------------------------------------- */

/* A section widget dropped into an Elementor container wraps itself in .abv-page + .abv-single:
   tokens resolve, and the section measures itself so its internal grids still adapt. */
.abv-single { container: maincol / inline-size; }

/* ---- Elementor containers ---------------------------------------------- */

/* The preset templates are Elementor documents, so the page skeleton lives in Elementor
   containers. The layout classes are pinned to those containers here (specificity beats .e-con)
   and Elementor's own gap/padding is neutralised so the two renderings match. */
/* 3.46.6 - scoped: the offer shell has its own rhythm and must not be flattened */
.e-con.abv-page:not(.abv-offer-shell) {
	--gap: 0px;
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	/* 3.46.5 - some Elementor versions/templates write the container gap directly instead of
	   through --gap, which re-opened ~34px of air between every top-level block (crumbs →
	   title → gallery). row-gap: 0 enforces the neutralisation at property level. */
	row-gap: 0px;
	container: abv / inline-size;
	width: 100%;
	max-width: 100%;
	/* Elementor containers are flex columns. When the container ends up with a stretched height
	   the widgets shrink and the taller blocks (gallery rail, parameter table) overlap the next
	   widget — the hero used to sit under the title block on phones because of this. */
	height: auto;
}

.e-con.abv-page > .elementor-element { flex-shrink: 0; }

.e-con.abv-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 24px 0 48px; }
.e-con.abv-wrap-inner { margin: 0 auto; max-width: var(--abv-max); padding: 0 20px; --gap: 0px; }
.e-con.abv-main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; min-width: 0; container: maincol / inline-size; }
.e-con.abv-aside { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-content: start; min-width: 0; container: asidecol / inline-size; }
.e-con.abv-fixed-layer { display: contents; }
.e-con.abv-section-widget { --gap: 0px; }

@container abv (min-width: 820px) {
	.e-con.abv-cols { grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; }
	.e-con.abv-aside { position: sticky; top: 24px; align-self: start; }
}

@container abv (min-width: 1180px) {
	.e-con.abv-cols { grid-template-columns: minmax(0, 1fr) 356px; gap: 48px; }
}

@container abv (max-width: 819px) {
	.e-con.abv-main { order: 2; }
	.e-con.abv-aside { order: 1; }
}

/* ---- browsers without container query support --------------------------- */

@supports not (container-type: inline-size) {
	@media (min-width: 768px) {
		.abv-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
		.abv-steps li { padding: 34px 0 0; }
	}
	@media (min-width: 1100px) {
		.abv-hero-thumbs-right .abv-hero-grid { grid-template-columns: minmax(0, 1fr) 104px; }
		.abv-hero-thumbs-left .abv-hero-grid { grid-template-columns: 104px minmax(0, 1fr); }
		.abv-cols,
		.e-con.abv-cols { grid-template-columns: minmax(0, 1fr) 356px; gap: 48px; }
	}
	@media (max-width: 1099px) {
		.abv-main,
		.abv-aside,
		.e-con.abv-main,
		.e-con.abv-aside { order: 1; }
		.abv-main,
		.e-con.abv-main { order: 2; }
	}
}

/* ---- phone behaviour --------------------------------------------------- */

@media (max-width: 767px) {
	.abv-page { font-size: 15px; }
	/* Price and contact come first on a phone: the buyer sees the number before the spec list. */
	.abv-main { order: 2; }
	.abv-aside { order: 1; }
	.abv-head { padding: 10px 0 8px; gap: 12px; }
	/* Phone rhythm: compact but still breathable — 16px between the aside cards, 24px between
	   content sections, 12px above the price card. */
	.abv-cols { padding: 12px 0 28px; gap: 16px; }
	.abv-aside { gap: 12px; }
	.abv-main { gap: 24px; }
	.abv-pricecard { padding: 16px; gap: 14px; }
	.abv-params-row { padding: 4px 0 8px; }
	.abv-hero { padding: 12px 0 0; }
	.abv-grail-wrap { gap: 6px; }
	.abv-grail-nav { width: 22px; height: 100%; min-height: 40px; }
	.abv-specs { grid-template-columns: minmax(0, 1fr); }
	.abv-facts { gap: 8px 18px; }
	.abv-grail button { width: 78px; }
	/* persistent action bar: price + primary action, always reachable with a thumb */
	.abv-stickybar {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 9999;
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
		border-top: 1px solid var(--abv-line);
		background: rgba(255, 255, 255, .96);
		backdrop-filter: blur(10px);
	}
	.abv-stickybar .abv-sb-price { color: var(--abv-ink); font-size: 20px; font-weight: 650; font-variant-numeric: tabular-nums; line-height: 1.1; }
	.abv-stickybar .abv-sb-note { color: var(--abv-ink-4); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; }
	.abv-stickybar .abv-btn { min-height: 44px; padding: 10px 16px; }
	/* Only the outermost page needs bottom room for the fixed action bar. Every block widget wraps
	   itself in .abv-page.abv-single, and that wrapper must not carry the 72px (it stacked up into
	   the big empty gaps between modules on phones). */
	.abv-page { padding-bottom: 0; }
	.abv-page:not(.abv-single) { padding-bottom: 72px; }
	.abv-aside { position: static; }
}

/* small phones: the action bar keeps the price and the button, the context line goes */
@media (max-width: 380px) {
	.abv-stickybar .abv-sb-note { display: none; }
	.abv-stickybar .abv-sb-price { font-size: 18px; }
}

@media (prefers-reduced-motion: reduce) {
	.abv-page * { transition: none !important; animation: none !important; }
	.abv-gmain:hover img { transform: none; }
}

/* PDF export stage: same off-screen stage the reference add-on uses. */
.abv-pdf-stage{position:fixed;left:-100000px;top:0;background:#fff;z-index:-1;padding:10px;box-sizing:border-box}
.abv-pdf-stage [data-abv-params-content]{background:#fff;overflow:visible!important}
.abv-pdf-stage .wp-ev-table{overflow:visible!important}

/* ---------------------------------------------------------- vehicle finder */

.abv-finder {
	display: grid;
	gap: 18px;
	padding: 24px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	box-shadow: 0 10px 30px rgba(15, 18, 22, .06);
}

.abv-finder-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.abv-finder-title { margin: 0; font-size: clamp(19px, 2vw, 23px); font-weight: 650; letter-spacing: -.01em; color: var(--abv-ink); }
.abv-finder-help { font-size: 13px; font-weight: 600; color: #1d6fb8; text-decoration: none; }
.abv-finder-help:hover { text-decoration: underline; }

.abv-finder-form { display: grid; gap: 14px; }
.abv-finder-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.abv-finder-field { display: grid; gap: 6px; min-width: 0; }
.abv-finder-field > span {
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--abv-ink-4);
}

.abv-finder-field input,
.abv-finder-field select {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	height: 46px;
	padding: 0 14px;
	border: 1px solid var(--abv-line-strong);
	border-radius: 12px;
	background: var(--abv-surface);
	color: var(--abv-ink);
	font: inherit;
	font-size: 14px;
	line-height: 1;
}

/* One caret drawn with gradients: no background image request, no extra markup. */
.abv-finder-field select {
	-webkit-appearance: none;
	appearance: none;
	padding-right: 34px;
	background-image: linear-gradient(45deg, transparent 50%, #6b7480 50%), linear-gradient(135deg, #6b7480 50%, transparent 50%);
	background-position: calc(100% - 18px) 21px, calc(100% - 13px) 21px;
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat;
}

.abv-finder-field input:focus,
.abv-finder-field select:focus { outline: 2px solid var(--abv-accent); outline-offset: 1px; border-color: var(--abv-ink); }
.abv-finder-field-wide { grid-column: 1 / -1; }

.abv-finder-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	height: 52px;
	padding: 0 22px;
	border: 1px solid var(--abv-ink);
	border-radius: 12px;
	background: var(--abv-ink);
	color: #fff;
	font-size: 15px;
	font-weight: 650;
	cursor: pointer;
	transition: background-color .16s ease, border-color .16s ease;
}

/* Doubled class keeps the theme's `button` styling out; Elementor's own selectors (with an ID)
   still win, so the controls in the Style tab keep working. */
/* Motors prints `button[type="submit"] { display:flex; width:100% }`, which beats a single class.
   This selector out-ranks it while still leaving Elementor's own selectors (they carry an ID) on top. */
.abv-finder .abv-finder-actions { display: block; }

/* Themes style generic `form` / `button[type=submit]`; keep the card layout explicit so the
   submit button always spans the card width instead of hugging the right edge. */
.abv-finder.abv-finder .abv-finder-form {
	display: grid;
	justify-items: stretch;
	align-items: stretch;
}

.abv-finder.abv-finder .abv-finder-submit {
	display: flex;
	width: 100%;
	max-width: none;
	min-width: 0;
	background-color: var(--abv-ink);
	border-color: var(--abv-ink);
	color: #fff;
}

.abv-finder.abv-finder .abv-finder-submit:hover { background-color: #1c2229; border-color: #1c2229; color: #fff; }
.abv-finder-submit svg { width: 18px; height: 18px; flex: 0 0 auto; }
.abv-finder-submit > span { flex: 0 0 auto; }

.abv-finder-pop { display: grid; gap: 10px; padding-top: 14px; border-top: 1px solid var(--abv-line); }
.abv-finder-pop-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13px; font-weight: 600; color: var(--abv-ink-3); }
.abv-finder-pop-head a { color: #1d6fb8; font-weight: 600; text-decoration: none; }
.abv-finder-pop-head a:hover { text-decoration: underline; }

.abv-finder-chips { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; }
.abv-finder-chip {
	display: grid;
	gap: 2px;
	padding: 10px 12px;
	border: 1px solid var(--abv-line);
	border-radius: 10px;
	background: #fbfbfc;
	color: var(--abv-ink);
	text-decoration: none;
	transition: border-color .16s ease, background-color .16s ease;
}
.abv-finder-chip b { font-size: 14px; font-weight: 650; }
.abv-finder-chip span { font-size: 12px; color: var(--abv-ink-4); }
.abv-finder-chip:hover { border-color: var(--abv-ink); background: #fff; }

@media (max-width: 640px) {
	.abv-finder { padding: 18px; gap: 14px; }
	.abv-finder-grid { grid-template-columns: minmax(0, 1fr); }
	.abv-finder-chips { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------------------------------------------------- showcase carousel grid
 * Arrows are real layout siblings (column 1 / column 3) instead of absolutely positioned
 * badges: nothing can overlap a card, and every Style control maps to a plain declaration.
 */

.abv-showcase-carousel {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	column-gap: 14px;
	row-gap: 14px;
}

.abv-showcase-carousel > .abv-carousel-track { grid-column: 2; grid-row: 1; min-width: 0; }

.abv-showcase-carousel > .abv-cbtn {
	position: static;
	top: auto;
	transform: none;
	grid-row: 1;
	justify-self: center;
}

.abv-showcase-carousel > .abv-cbtn-prev { grid-column: 1; }
.abv-showcase-carousel > .abv-cbtn-next { grid-column: 3; }
.abv-showcase-carousel > .abv-cbtn:hover { transform: none; }

.abv-showcase-carousel > .abv-dots {
	grid-column: 1 / -1;
	grid-row: 2;
	justify-self: center;
}

@media (max-width: 640px) {
	/* Arrows sit outside the card, as grid items in the same row — that guarantees they are
	   perfectly level. The card gives up the gutter width instead of the arrows floating on top. */
	.abv-showcase-carousel {
		display: grid;
		grid-template-columns: 36px minmax(0, 1fr) 36px;
		grid-template-rows: auto auto;
		column-gap: 8px;
		row-gap: 12px;
		align-items: center;
	}
	.abv-showcase-carousel > .abv-carousel-track {
		grid-column: 2;
		grid-row: 1;
		display: grid;
		grid-auto-flow: column;
		grid-auto-columns: 100%;
		padding: 0;
	}
	.abv-showcase-carousel > .abv-cbtn {
		position: static;
		transform: none;
		grid-row: 1;
		width: 36px;
		height: 36px;
		border: 1px solid var(--abv-line);
		background: #fff;
		box-shadow: 0 1px 4px rgba(15, 18, 22, .14);
	}
	.abv-showcase-carousel > .abv-cbtn > svg { width: 18px; height: 18px; }
	.abv-showcase-carousel > .abv-cbtn-prev { grid-column: 1; justify-self: center; left: auto; }
	.abv-showcase-carousel > .abv-cbtn-next { grid-column: 3; justify-self: center; right: auto; }
	.abv-showcase-carousel > .abv-dots {
		grid-column: 1 / -1;
		grid-row: 2;
		justify-self: center;
		margin-top: 0;
	}
}
/* ---- vehicle showcase with tabs ---------------------------------------- */

.abv-tabs { --abv-tb-cols: 4; --abv-tb-gap: 24px; }
.abv-tabs { --abv-tb-gap-y: 26px; }
.abv-tabs-head { margin-bottom: var(--abv-tb-gap-y); }
.abv-tabs-eyebrow { margin: 0 0 10px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--abv-ink-3); }
.abv-tabs-eyebrow::before { content: ""; display: inline-block; width: 22px; height: 2px; margin-right: 10px; border-radius: 2px; background: currentColor; opacity: .5; vertical-align: middle; }
.abv-tabs-title { margin: 0 0 10px; font-size: clamp(30px, 3.8vw, 48px); font-weight: 800; line-height: 1.05; letter-spacing: -.035em; color: var(--abv-ink); }
.abv-tabs-title em { font-style: normal; color: var(--abv-tb-accent, #f97316); }
.abv-tabs-title[hidden] { display: none; }
.abv-tabs-title { animation: abvTitleIn .32s cubic-bezier(.2, .7, .3, 1) both; }
@keyframes abvTitleIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .abv-tabs-title { animation: none; } }
.abv-tabs-lede { margin: 0; max-width: 66ch; color: var(--abv-ink-3); font-size: 15px; line-height: 1.6; }

.abv-tabs-bar { margin-bottom: var(--abv-tb-gap-y); }
.abv-tabs-in { display: flex; flex-wrap: wrap; gap: 8px; min-width: 0; }
.abv-tab {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 10px 18px; border: 1px solid var(--abv-line); border-radius: 10px;
	background: var(--abv-surface); color: var(--abv-ink-2);
	font: inherit; font-size: 14px; font-weight: 600; line-height: 1.2; cursor: pointer;
	transition: background-color .16s ease, color .16s ease, border-color .16s ease;
}
.abv-tab:hover { color: var(--abv-ink); border-color: var(--abv-line-strong); }
.abv-tab.is-active { background: var(--abv-ink); border-color: var(--abv-ink); color: #fff; }
.abv-tab-count { font-size: 12px; font-weight: 600; opacity: .7; }
.abv-tab-panel[hidden] { display: none; }

.abv-tabs-grid { display: grid; grid-template-columns: repeat(var(--abv-tb-cols, 4), minmax(0, 1fr)); gap: var(--abv-tb-gap, 24px); }
.abv-tab-card {
	display: flex; flex-direction: column; min-width: 0; overflow: hidden;
	border: 1px solid var(--abv-line); border-radius: 12px; background: var(--abv-surface);
	color: inherit; text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.abv-tab-card, .abv-tab-card * { text-decoration: none !important; }
.abv-tab-card.has-lift:hover { transform: translateY(-2px); border-color: var(--abv-line-strong); box-shadow: 0 10px 24px -14px rgba(15, 18, 22, .35); }
.abv-tab-media { position: relative; display: block; overflow: hidden; background: var(--abv-surface-3); }
.abv-tab-media img { position: absolute; inset: 0; display: block; width: 100% !important; height: 100% !important; object-fit: cover; }
.abv-tab-badges { position: absolute; top: 10px; left: 10px; display: flex; gap: 6px; }
.abv-tab-badge {
	display: inline-block; padding: 3px 7px; border-radius: 6px;
	background: #13834f; color: #fff; font-size: 10px; font-weight: 700;
	letter-spacing: .06em; text-transform: uppercase; line-height: 1.4;
}
.abv-tab-card-body { display: flex; flex-direction: column; gap: 6px; padding: 16px; }
.abv-tab-brand { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #1d6fb8; }
.abv-tab-name { font-size: 16px; font-weight: 650; line-height: 1.3; color: var(--abv-ink); }
.abv-tab-stat { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--abv-ink-3); }
.abv-tab-stat svg { flex: 0 0 auto; opacity: .8; }
.abv-tab-price { font-size: 16px; font-weight: 700; color: var(--abv-ink); font-variant-numeric: tabular-nums; }
.abv-tab-note { font-size: 12px; color: var(--abv-ink-4); line-height: 1.4; }

@media (max-width: 1024px) { .abv-tabs { --abv-tb-cols: 2; --abv-tb-gap: 18px; } }
@media (max-width: 640px) {
	.abv-tabs { --abv-tb-cols: 1; --abv-tb-gap: 16px; }
	.abv-tabs-in { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; padding-bottom: 2px; -webkit-overflow-scrolling: touch; }
	.abv-tabs-in::-webkit-scrollbar { display: none; }
	.abv-tab { flex: 0 0 auto; scroll-snap-align: start; padding: 9px 14px; font-size: 13px; }
	.abv-tabs-title { font-size: clamp(26px, 7.4vw, 32px); margin-bottom: 8px; }
	.abv-tab-card-body { padding: 14px; }
}

/* 3.11.0 — header on the left, tab bar on the right (segmented control skin) */
.abv-tabs.has-split {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas: "head bar" "panels panels";
	align-items: end;
	column-gap: 32px;
}
.abv-tabs.has-split .abv-tabs-head { grid-area: head; margin-bottom: var(--abv-tb-gap-y); }
.abv-tabs.has-split .abv-tabs-bar { grid-area: bar; justify-self: end; align-self: center; margin: 0 0 var(--abv-tb-gap-y); }
.abv-tabs.has-split .abv-tabs-panels { grid-area: panels; min-width: 0; }

.abv-tabs.is-seg .abv-tabs-bar {
	display: flex;
	max-width: 100%;
	gap: 0;
	padding: 6px;
	background: #fff;
	border: 1px solid var(--abv-line);
	border-radius: 999px;
	box-shadow: 0 10px 30px -22px rgba(15, 18, 22, .45), 0 1px 2px rgba(15, 18, 22, .06), inset 0 0 0 1px rgba(255, 255, 255, .7);
	box-sizing: border-box;
}
.abv-tabs.is-seg .abv-tab {
	text-transform: uppercase;
	letter-spacing: .06em;
	border: 0;
	background: transparent;
	border-radius: 999px;
	padding: 10px 18px;
	font-size: 13px;
	font-weight: 650;
	line-height: 1.2;
	color: var(--abv-ink-3);
	box-shadow: none;
}
.abv-tabs.is-seg .abv-tab:hover { background: rgba(15, 18, 22, .055); color: var(--abv-ink); border: 0; }
.abv-tabs.is-seg .abv-tab.is-active {
	background: var(--abv-tb-active-bg, var(--abv-tb-accent, var(--abv-ink)));
	border: 0;
	color: var(--abv-tb-active-color, #fff);
	box-shadow: 0 6px 14px -8px rgba(15, 18, 22, .5);
}
.abv-tabs.is-seg .abv-tab-count { opacity: .7; font-weight: 600; }
.abv-tabs.is-seg .abv-tabs-in {
	flex-wrap: nowrap;
	gap: 4px;
	overflow-x: auto;
	border-radius: 999px;
	scroll-snap-type: x proximity;
	scroll-padding-inline: 8px;
}
.abv-tabs.is-seg .abv-tabs-in::-webkit-scrollbar { display: none; }
.abv-tabs.is-seg .abv-tab {
	text-transform: uppercase;
	letter-spacing: .06em; scroll-snap-align: center; }
.abv-tabs.is-seg .abv-tabs-bar { overflow: hidden; }
.abv-tabs.is-seg .abv-tabs-bar.is-scrollable .abv-tabs-in {
	-webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 22px), transparent 100%);
	mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 22px), transparent 100%);
}

.abv-tabs.has-icons .abv-tab { display: inline-flex; align-items: center; gap: 7px; }
.abv-tab-ico { width: 15px; height: 15px; flex: 0 0 auto; opacity: .85; }

/* a soft fade tells the reader the row keeps scrolling sideways */
.abv-tabs:not(.is-seg) .abv-tabs-bar.is-scrollable .abv-tabs-in {
	-webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 26px), transparent 100%);
	mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 26px), transparent 100%);
}

@media (max-width: 900px) {
	.abv-tabs.has-split { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "bar" "panels"; }
	.abv-tabs.has-split .abv-tabs-head { margin-bottom: 16px; }
	.abv-tabs.has-split .abv-tabs-bar { justify-self: start; align-self: start; margin: 0 0 var(--abv-tb-gap-y); }
}
@media (max-width: 640px) {
	.abv-tabs.is-seg .abv-tabs-bar {
		display: flex;
		width: max-content;
		max-width: 100%;
		box-sizing: border-box;
		padding: 4px;
		border-radius: 16px;
	}
	.abv-tabs.is-seg .abv-tabs-in { border-radius: 12px; }
	.abv-tabs.is-seg .abv-tab {
	text-transform: uppercase;
	letter-spacing: .06em; padding: 9px 14px; font-size: 12.5px; }
	.abv-tabs.has-icons .abv-tab { gap: 6px; }
	.abv-tab-ico { width: 14px; height: 14px; }
}

/* 3.12.0 — mobile rhythm: one vertical scale for every block, and cards that never bleed */
.abv-tabs-panels { position: relative; }
.abv-tabs-grid { grid-auto-rows: auto; align-items: stretch; }
.abv-tab-card { overflow: hidden; }
.abv-tab-card-body { min-width: 0; }
.abv-tab-name { overflow-wrap: anywhere; }

@media (max-width: 900px) {
	.abv-tabs { --abv-tb-gap-y: 20px; }
	.abv-tabs.has-split .abv-tabs-bar { align-self: start; }
}
@media (max-width: 640px) {
	.abv-tabs { --abv-tb-gap-y: 14px; }
	.abv-tabs-head { margin-bottom: var(--abv-tb-gap-y); }
	.abv-tabs-lede { font-size: 14px; line-height: 1.55; }
	.abv-tabs-grid { gap: 12px; }
	.abv-tab-card-body { padding: 13px 13px 15px; gap: 5px; }
	.abv-tab-price { font-size: 15px; }
	.abv-tabs-bar { margin-bottom: var(--abv-tb-gap-y); }
}

/* 3.12.0b — compact chips: four typical brands fit one row on a 390px phone, extra ones wrap
   instead of being cut in half by the scroller. Appended last so it wins on equal specificity. */
@media (max-width: 640px) {
	.abv-tabs.is-seg .abv-tab { padding: 8px 11px; font-size: 11.5px; letter-spacing: .03em; }
	.abv-tabs.is-seg .abv-tabs-in { flex-wrap: wrap; gap: 2px; overflow: visible; }
	.abv-tabs.is-seg .abv-tabs-bar { width: max-content; }
	.abv-tabs.is-seg .abv-tabs-bar.is-scrollable .abv-tabs-in { -webkit-mask-image: none; mask-image: none; }
	.abv-tabs.has-icons .abv-tab { gap: 5px; }
	.abv-tab-ico { width: 13px; height: 13px; }
	.abv-tab-card { height: auto; align-self: start; }
	.abv-tabs-grid { align-items: start; }
	.abv-tabs-panels { padding-bottom: 2px; }
}

/* 3.13.0 — the tabs grid hosts the shared card, so every widget shows the same card */
.abv-tabs-grid .abv-card { height: 100%; }
.abv-tabs-grid .abv-card-body { min-width: 0; }
.abv-tabs-grid .abv-card-foot { margin-top: auto; }
@media (max-width: 640px) {
	.abv-tabs-grid { gap: var(--abv-tb-gap, 14px); }
	.abv-tabs-grid .abv-card-body { padding: 13px 13px 15px; gap: 6px; }
	.abv-tabs-grid .abv-card h3 { font-size: 15px; }
}

/* 3.13.0 — no theme list markers inside our spec rows (Astra/Elementor add discs) */
.abv-card-specs, .abv-card-specs li { list-style: none !important; }
.abv-card-specs li::marker { content: ""; }
.abv-card-specs li::before { content: none; }
.abv-card-specs li + li::before { content: ""; width: 3px; height: 3px; border-radius: 50%; background: var(--abv-line-strong); }

/* 3.13.0b — spec list flush with the card edge, and a stacked foot on phones */
.abv-card .abv-card-specs { margin: 0 !important; padding: 0 !important; }
.abv-card .abv-card-specs li { margin: 0 !important; padding: 0 !important; }
@media (max-width: 640px) {
	.abv-tabs-grid .abv-card-foot { flex-direction: column; align-items: flex-start; gap: 4px; }
	.abv-tabs-grid .abv-card-foot span { margin-left: 0; text-align: left; white-space: normal; }
}

/* 3.15.0 — per-tab colour: pill, headline accent and icon all follow --abv-tb-c */
.abv-tabs-title em { color: var(--abv-tb-c, var(--abv-tb-accent, #f97316)); }
/* the pill is painted by each tab's own colour; a transparent value keeps the fallback chain */
.abv-tabs.is-seg .abv-tab.is-active { background: var(--abv-tb-c, var(--abv-tb-active-bg, var(--abv-tb-accent, var(--abv-ink)))); }
.abv-tabs.is-seg .abv-tab.is-active .abv-tab-ico { opacity: 1; }

/* reference-grade segmented control */
.abv-tabs.is-seg .abv-tabs-bar {
	background: #fff;
	border: 1px solid #e7eaee;
	border-radius: 999px;
	padding: 6px;
	box-shadow: 0 14px 34px -26px rgba(15, 18, 22, .55), 0 1px 2px rgba(15, 18, 22, .05);
}
.abv-tabs.is-seg .abv-tab {
	gap: 8px;
	padding: 10px 20px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .07em;
	text-transform: uppercase;
}
.abv-tabs.is-seg .abv-tab .abv-tab-ico { width: 16px; height: 16px; }
.abv-tabs.is-seg .abv-tab.is-active { box-shadow: 0 10px 20px -12px rgba(15, 18, 22, .45); }
.abv-tabs.is-seg .abv-tab:not(.is-active) { color: var(--abv-ink-3); }
.abv-tabs.is-seg .abv-tab:not(.is-active):hover { background: #f4f6f8; }

/* side padding, set from the widget */
.abv-tabs { padding-inline: var(--abv-tb-pad, 0); }

@media (max-width: 640px) {
	.abv-tabs.is-seg .abv-tab { padding: 9px 14px; font-size: 11px; gap: 6px; }
	.abv-tabs.is-seg .abv-tab .abv-tab-ico { width: 14px; height: 14px; }
}

/* 3.15.0b — keep four chips on one row on a 390px phone; wrap the card foot instead of truncating */
@media (max-width: 640px) {
	.abv-tabs.is-seg .abv-tab { padding: 7px 9px; font-size: 11px; letter-spacing: .01em; gap: 4px; }
	.abv-tabs.is-seg .abv-tab .abv-tab-ico { width: 12px; height: 12px; }
}
.abv-tabs-grid .abv-card-foot { flex-wrap: wrap; gap: 4px 10px; }
.abv-tabs-grid .abv-card-foot span { margin-left: 0; text-align: left; white-space: normal; overflow: visible; }

/* 3.17.0 — tab size variables (Style → Tab bar) and the empty-tab state */
.abv-tab {
	font-size: var(--abv-tb-fs, 13px);
	padding: var(--abv-tb-py, 10px) var(--abv-tb-px, 18px);
	border-radius: var(--abv-tb-radius, 999px);
}
.abv-tabs-in { gap: var(--abv-tb-tgap, 4px); }
.abv-tabs.is-seg .abv-tabs-bar { border-radius: var(--abv-tb-radius, 999px); }
.abv-tabs.is-seg .abv-tab.is-active {
	background: var(--abv-tb-c, var(--abv-tb-active-bg, var(--abv-tb-accent, var(--abv-ink))));
	color: var(--abv-tb-active-color, #fff);
}
.abv-tabs-grid { gap: var(--abv-tb-gap, 24px); }
.abv-tabs-empty {
	margin: 0;
	padding: 28px 20px;
	border: 1px dashed var(--abv-line-strong);
	border-radius: var(--abv-radius);
	color: var(--abv-ink-3);
	font-size: 14px;
	text-align: center;
}
@media (max-width: 640px) {
	.abv-tab { font-size: var(--abv-tb-fs, 11px); padding: var(--abv-tb-py, 7px) var(--abv-tb-px, 9px); }
	.abv-tabs.is-seg .abv-tabs-bar { border-radius: var(--abv-tb-radius, 16px); }
	.abv-tabs-grid { gap: var(--abv-tb-gap, 14px); }
}

/* 3.23.0 - offer cards (reference: chinaevsource "What We Offer"), 3.23.1 hover engine */
.abv-page.abv-offer-shell { container-type: normal; height: auto; min-height: 0; padding: 0; }

.abv-offer {
	--abv-of-accent: #1a73e8;
	--abv-of-cols: 4;
	--abv-of-gap: 24px;
	--abv-of-rule: 1;
	--abv-hv-lift: 6px;
	--abv-hv-glow: 26px;
	--abv-hv-t: .32s;
	color: var(--abv-ink);
}
.abv-offer-head { max-width: 860px; margin: 0 auto 38px; }
.abv-offer.is-align-center .abv-offer-head { text-align: center; }
.abv-offer.is-align-left .abv-offer-head { text-align: left; }
.abv-offer.is-align-right .abv-offer-head { text-align: right; }
.abv-offer.is-align-left .abv-offer-head { margin-left: 0; margin-right: auto; }
.abv-offer.is-align-right .abv-offer-head { margin-left: auto; margin-right: 0; }

.abv-offer-eyebrow {
	margin: 0 0 12px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--abv-of-accent);
}
.abv-offer-eyebrow span { position: relative; display: inline-block; padding-bottom: 12px; }
.abv-offer-eyebrow span::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: 0;
	width: 40px;
	height: 4px;
	margin-left: -20px;
	border-radius: 2px;
	background: currentColor;
	transform: scaleY(var(--abv-of-rule, 1));
	transform-origin: center bottom;
}
.abv-offer.is-align-left .abv-offer-eyebrow span::after { left: 0; margin-left: 0; }
.abv-offer.is-align-right .abv-offer-eyebrow span::after { left: auto; right: 0; margin-left: 0; }

.abv-offer-title {
	margin: 0 0 14px;
	font-size: clamp(30px, 3.6vw, 46px);
	font-weight: 800;
	line-height: 1.1;
	letter-spacing: -.025em;
	color: #16233a;
}
.abv-offer-title em { font-style: normal; color: var(--abv-of-accent); }
.abv-offer-lede {
	margin: 0 auto;
	max-width: 68ch;
	font-size: 16px;
	line-height: 1.65;
	color: var(--abv-ink-3);
}
.abv-offer.is-align-left .abv-offer-lede { margin-left: 0; }
.abv-offer.is-align-right .abv-offer-lede { margin-right: 0; }

.abv-offer-grid {
	display: grid;
	grid-template-columns: repeat(var(--abv-of-cols, 4), minmax(0, 1fr));
	gap: var(--abv-of-gap, 24px);
	align-items: stretch;
}
.abv-offer.abv-cols-1 { --abv-of-cols: 1; }
.abv-offer.abv-cols-2 { --abv-of-cols: 2; }
.abv-offer.abv-cols-3 { --abv-of-cols: 3; }
.abv-offer.abv-cols-4 { --abv-of-cols: 4; }
.abv-offer.abv-cols-5 { --abv-of-cols: 5; }
.abv-offer.abv-cols-6 { --abv-of-cols: 6; }

.abv-offer-card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 14px;
	height: 100%;
	padding: 26px;
	overflow: hidden;
	border: 1px solid #e3e8ee;
	border-radius: 14px;
	background: #fff;
	transition:
		transform var(--abv-hv-t, .32s) cubic-bezier(.22, .61, .36, 1),
		box-shadow var(--abv-hv-t, .32s) ease,
		border-color var(--abv-hv-t, .32s) ease,
		background-color var(--abv-hv-t, .32s) ease;
}
.abv-offer.is-shadow .abv-offer-card { border-color: transparent; box-shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 14px 30px -22px rgba(16, 24, 40, .45); }
.abv-offer.is-flat .abv-offer-card { border-color: transparent; background: #f6f8fb; }
.abv-offer.is-flat .abv-offer-icon { background: #fff; }

/* hover layers: an accent wash and a light sweep, both inert until the card is hovered */
.abv-offer-card::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
	pointer-events: none;
	opacity: 0;
	background: radial-gradient(120% 92% at 50% 0%, rgba(26, 115, 232, .10), transparent 62%);
	background: radial-gradient(120% 92% at 50% 0%, var(--abv-hv-wash, color-mix(in srgb, var(--abv-of-accent) 13%, transparent)), transparent 62%);
	transition: opacity var(--abv-hv-t, .32s) ease;
}
.abv-offer-card::after {
	content: "";
	position: absolute;
	inset: -1px;
	border-radius: inherit;
	pointer-events: none;
	opacity: 0;
	background: linear-gradient(104deg, transparent 38%, rgba(255, 255, 255, .62) 50%, transparent 62%);
	transform: translateX(-130%);
}

.abv-offer-top {
	position: relative;
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 56px;
}
.abv-offer-icon {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border-radius: 14px;
	background: #e8f3fd;
	background: color-mix(in srgb, var(--abv-of-accent) 12%, #fff);
	color: var(--abv-of-accent);
	overflow: hidden;
	transition:
		background-color var(--abv-hv-t, .32s) ease,
		color var(--abv-hv-t, .32s) ease,
		transform var(--abv-hv-t, .32s) ease,
		box-shadow var(--abv-hv-t, .32s) ease;
}
.abv-offer-icon img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.abv-offer-icon svg { width: 24px; height: 24px; }
.abv-offer.is-icon-circle .abv-offer-icon { border-radius: 50%; }
.abv-offer.is-icon-square .abv-offer-icon { border-radius: 4px; }

.abv-offer-card-title {
	margin: 0;
	font-size: 17px;
	font-weight: 650;
	line-height: 1.35;
	letter-spacing: -.01em;
	color: #16233a;
}
.abv-offer-card-text {
	margin: 0;
	font-size: 14px;
	line-height: 1.6;
	color: var(--abv-ink-3);
}
.abv-offer-num {
	margin-left: auto;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .12em;
	color: var(--abv-of-accent);
	opacity: .45;
}
.abv-offer-badge {
	margin-left: auto;
	white-space: nowrap;
	padding: 4px 9px;
	border-radius: 999px;
	background: var(--abv-of-accent);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	line-height: 1.4;
}
.abv-offer-num + .abv-offer-badge { margin-left: 4px; }
.abv-offer-card.has-badge .abv-offer-num { display: none; }

.abv-offer-link {
	margin-top: auto;
	padding-top: 6px;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 13px;
	font-weight: 650;
	color: var(--abv-of-accent);
	text-decoration: none !important;
}
.abv-offer-link svg { transition: transform var(--abv-hv-t, .32s) ease; }
.abv-offer-link:hover svg,
.abv-offer-link:focus-visible svg { transform: translateX(3px); }
.abv-offer-card:focus-within { outline: none; }

/* ---- hover presets ---------------------------------------------------- */
.abv-offer.is-hover-none .abv-offer-card { transition: none; }
.abv-offer.is-hover-none .abv-offer-card::before,
.abv-offer.is-hover-none .abv-offer-card::after { display: none; }

.abv-offer.is-hover-lift .abv-offer-card:hover,
.abv-offer.is-hover-lift .abv-offer-card:focus-within,
.abv-offer.has-lift .abv-offer-card:hover,
.abv-offer.has-lift .abv-offer-card:focus-within,
.abv-offer.is-hover-spotlight .abv-offer-card:hover,
.abv-offer.is-hover-spotlight .abv-offer-card:focus-within {
	transform: translateY(calc(-1 * var(--abv-hv-lift, 6px)));
	border-color: var(--abv-of-accent);
	border-color: color-mix(in srgb, var(--abv-of-accent) 58%, #fff);
	box-shadow:
		0 26px 46px -32px rgba(16, 24, 40, .55),
		0 0 0 1px color-mix(in srgb, var(--abv-of-accent) 34%, transparent);
}

.abv-offer.is-hover-glow .abv-offer-card:hover,
.abv-offer.is-hover-glow .abv-offer-card:focus-within {
	border-color: color-mix(in srgb, var(--abv-of-accent) 45%, #fff);
	box-shadow:
		0 0 0 1px color-mix(in srgb, var(--abv-of-accent) 26%, transparent),
		0 0 var(--abv-hv-glow, 26px) color-mix(in srgb, var(--abv-of-accent) 30%, transparent),
		0 18px 34px -30px rgba(16, 24, 40, .45);
}

.abv-offer.is-hover-sheen .abv-offer-card:hover,
.abv-offer.is-hover-sheen .abv-offer-card:focus-within {
	transform: translateY(-2px);
	border-color: color-mix(in srgb, var(--abv-of-accent) 42%, #fff);
	box-shadow: 0 20px 36px -30px rgba(16, 24, 40, .5);
}

.abv-offer.is-hover-lift .abv-offer-card:hover::before,
.abv-offer.is-hover-lift .abv-offer-card:focus-within::before,
.abv-offer.is-hover-glow .abv-offer-card:hover::before,
.abv-offer.is-hover-glow .abv-offer-card:focus-within::before,
.abv-offer.is-hover-spotlight .abv-offer-card:hover::before,
.abv-offer.is-hover-spotlight .abv-offer-card:focus-within::before,
.abv-offer.is-hover-sheen .abv-offer-card:hover::before,
.abv-offer.is-hover-sheen .abv-offer-card:focus-within::before { opacity: 1; }

/* the pointer-following light: the script writes --abv-mx / --abv-my */
.abv-offer.is-hover-spotlight .abv-offer-card::before {
	background: radial-gradient(220px circle at var(--abv-mx, 50%) var(--abv-my, 0%), rgba(26, 115, 232, .16), transparent 68%);
	background: radial-gradient(220px circle at var(--abv-mx, 50%) var(--abv-my, 0%), var(--abv-hv-spot, color-mix(in srgb, var(--abv-of-accent) 20%, transparent)), transparent 68%);
}

.abv-offer.is-hover-sheen .abv-offer-card:hover::after,
.abv-offer.is-hover-sheen .abv-offer-card:focus-within::after { animation: abv-offer-sheen .85s cubic-bezier(.3, .6, .3, 1) forwards; }
@keyframes abv-offer-sheen {
	0%   { transform: translateX(-130%); opacity: 0; }
	18%  { opacity: 1; }
	100% { transform: translateX(130%); opacity: 0; }
}

/* the icon tile turns solid accent on hover */
.abv-offer.has-icon-swap .abv-offer-card:hover .abv-offer-icon,
.abv-offer.has-icon-swap .abv-offer-card:focus-within .abv-offer-icon {
	background: var(--abv-hv-icon-bg, var(--abv-of-accent));
	color: var(--abv-hv-icon-fg, #fff);
	transform: translateY(-2px) scale(1.05);
	box-shadow: 0 12px 20px -14px color-mix(in srgb, var(--abv-of-accent) 75%, transparent);
}

@media (max-width: 1024px) {
	.abv-offer[class*="abv-cols-"] { --abv-of-cols: 2; }
	.abv-offer-title { font-size: clamp(26px, 4.4vw, 36px); }
}
@media (max-width: 640px) {
	.abv-offer[class*="abv-cols-"] { --abv-of-cols: 1; --abv-of-gap: 16px; }
	.abv-offer-head { margin-bottom: 26px; }
	.abv-offer-title { font-size: clamp(24px, 7vw, 30px); }
	.abv-offer-lede { font-size: 15px; line-height: 1.6; }
	.abv-offer-card { padding: 20px; gap: 12px; border-radius: 12px; }
	.abv-offer-icon { width: 48px; height: 48px; border-radius: 12px; }
	.abv-offer-icon svg { width: 22px; height: 22px; }
	.abv-offer-card-title { font-size: 16px; }
	.abv-offer-top { min-height: 48px; }
}

/* mobile rail: one card at a time, swipe for the rest */
@media (max-width: 640px) {
	.abv-offer.is-mobile-rail .abv-offer-grid {
		grid-template-columns: none !important; /* Elementor writes its own repeat() rule per device */
		grid-auto-flow: column;
		grid-auto-columns: minmax(84%, 1fr);
		gap: 12px;
		overflow-x: auto;
		overflow-y: hidden;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		padding: 2px 2px 10px;
		margin: -2px -2px -4px;
	}
	.abv-offer.is-mobile-rail .abv-offer-grid::-webkit-scrollbar { display: none; }
	.abv-offer.is-mobile-rail .abv-offer-card { scroll-snap-align: start; }
	.abv-offer.is-mobile-rail .abv-offer-card:hover { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.abv-offer-card,
	.abv-offer-card::before,
	.abv-offer-icon,
	.abv-offer-link svg { transition: none; }
	.abv-offer .abv-offer-card:hover,
	.abv-offer .abv-offer-card:focus-within { transform: none; }
	.abv-offer.has-icon-swap .abv-offer-card:hover .abv-offer-icon,
	.abv-offer.has-icon-swap .abv-offer-card:focus-within .abv-offer-icon { transform: none; }
	.abv-offer.is-hover-sheen .abv-offer-card:hover::after,
	.abv-offer.is-hover-sheen .abv-offer-card:focus-within::after { animation: none; opacity: 0; }
}

/* ============================================================
   3.26.0 - availability card (stock status + paint swatches)
   ============================================================ */
.abv-avail {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 14px;
	padding: 20px;
	border: 1px solid var(--abv-line);
	border-radius: var(--abv-radius-lg);
	background: var(--abv-surface);
	box-shadow: var(--abv-shadow);
}

.abv-avail-title {
	margin: 0;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--abv-ink-3);
}

.abv-avail-status {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
}

.abv-avail-dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--abv-status, #0e9f4e);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--abv-status, #0e9f4e) 16%, transparent);
	flex: none;
}

.abv-avail-label {
	font-size: 15px;
	font-weight: 700;
	color: var(--abv-ink);
}

.abv-avail-units {
	margin-left: auto;
	font-size: 13px;
	color: var(--abv-ink-3);
}

.abv-avail-group {
	display: grid;
	grid-template-columns: 76px minmax(0, 1fr);
	gap: 4px 12px;
	align-items: start;
}

.abv-avail-k {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--abv-ink-3);
	padding-top: 8px;
}

.abv-avail-swatches {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.abv-swatch {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 5px 12px 5px 6px;
	border: 1px solid var(--abv-line);
	border-radius: 999px;
	background: var(--abv-surface-2);
	font-size: 13px;
	line-height: 1.2;
	color: var(--abv-ink);
}

.abv-swatch i {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--abv-sw, #64748b);
	border: 1px solid #7c8794;
	/* the inner white ring separates the border from the fill: light colors (white,
	   silver, beige) read as a painted dot instead of an empty circle */
	box-shadow: inset 0 0 0 1.5px #ffffff;
	flex: none;
}

/* 3.27.0 - per-color stock count on the swatch; 0 = sold out (dimmed) */
.abv-swatch-count {
	padding: 1px 8px;
	border-radius: 999px;
	background: var(--abv-surface-3);
	color: var(--abv-ink-2);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.5;
}

.abv-swatch.is-out {
	opacity: .55;
}

.abv-swatch.is-out .abv-swatch-count {
	background: #fdecec;
	color: #b42318;
}

/* 3.28.0 - two-tone interior: split dot ("Black & Beige" renders half/half).
   3.29.2: the right half is a positioned layer (not a gradient) — exactly half,
   with a 1px white seam on the divide; works in every browser. */
.abv-swatch.is-duo i {
	position: relative;
	overflow: hidden;
	background: var(--abv-sw, #64748b);
}

.abv-swatch.is-duo i::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;
	right: 0;
	border-radius: 0 999px 999px 0;
	background: var(--abv-sw2, var(--abv-sw));
	box-shadow: inset 1px 0 0 rgba(255, 255, 255, .9), inset 0 0 0 1.5px #ffffff;
}

/* 3.29.2 - long color lists collapse to the first six with a +N expander */
.abv-swatch.is-extra {
	display: none;
}

.abv-avail-swatches.is-expanded .abv-swatch.is-extra {
	display: inline-flex;
}

.abv-more-btn {
	display: inline-flex;
	align-items: center;
	padding: 5px 10px;
	border: 1px solid var(--abv-line);
	border-radius: 999px;
	background: var(--abv-surface-2);
	color: var(--abv-ink-2);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
	cursor: pointer;
}

.abv-more-btn:hover {
	border-color: var(--abv-line-strong);
}

/* ============================================================
   3.31.0 - jchcar-style picker (combination mode): EXTERIOR COLOR /
   INTERIOR COLOR chip groups, tap a color from each, the result line
   shows that pair's own stock count.
   ============================================================ */
.abv-avail.has-picker .abv-avail-status {
	margin-bottom: 2px;
}

.abv-color-group {
	display: grid;
	gap: 8px;
}

.abv-color-group-title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--abv-ink);
}

.abv-color-group-title i {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--abv-ink);
	flex: none;
}

.abv-color-group-title i.is-soft {
	background: var(--abv-ink-3);
}

.abv-color-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.abv-swatch.is-pick {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 14px 6px 7px;
	border: 1px solid var(--abv-line);
	border-radius: 10px;
	background: var(--abv-surface);
	color: var(--abv-ink);
	font: inherit;
	font-size: 13px;
	line-height: 1.2;
	cursor: pointer;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.abv-swatch.is-pick:hover {
	border-color: var(--abv-line-strong);
}

.abv-swatch.is-pick[aria-pressed="true"] {
	border-color: var(--abv-accent);
	box-shadow: 0 0 0 1px var(--abv-accent);
}

.abv-swatch.is-pick:focus-visible {
	outline: 2px solid var(--abv-accent);
	outline-offset: 2px;
}

.abv-swatch.is-pick i {
	width: 16px;
	height: 16px;
}

/* interior dots carry a leather/carbon weave, exterior dots stay glossy */
.abv-swatch.is-int i {
	background-image:
		repeating-linear-gradient(45deg, rgba(255, 255, 255, .25) 0 1px, transparent 1px 3px),
		repeating-linear-gradient(-45deg, rgba(0, 0, 0, .10) 0 1px, transparent 1px 3px);
}

.abv-pick-result {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 10px 12px;
	border: 1px solid var(--abv-line);
	border-radius: 10px;
	background: var(--abv-surface-2);
}

.abv-pick-result i {
	position: relative;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--abv-sw, #64748b);
	border: 1px solid #7c8794;
	box-shadow: inset 0 0 0 1.5px #ffffff;
	flex: none;
}

/* 3.30.1 - the result line keeps the two-tone dot: right half painted with --abv-sw2 */
.abv-pick-result i.is-duo::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;
	right: 0;
	border-radius: 0 999px 999px 0;
	background: var(--abv-sw2, var(--abv-sw));
	box-shadow: inset 1px 0 0 rgba(255, 255, 255, .9), inset 0 0 0 1.5px #ffffff;
}

.abv-pick-result i + i {
	margin-left: -6px;
}

.abv-pick-result i.is-int {
	background-image:
		repeating-linear-gradient(45deg, rgba(255, 255, 255, .25) 0 1px, transparent 1px 3px),
		repeating-linear-gradient(-45deg, rgba(0, 0, 0, .10) 0 1px, transparent 1px 3px);
}

.abv-pick-name {
	flex: 1;
	min-width: 0;
	font-size: 13px;
	font-weight: 600;
	color: var(--abv-ink);
}

.abv-pick-qty {
	font-size: 13px;
	font-weight: 700;
	color: var(--abv-good);
}

.abv-pick-qty.is-out {
	color: #b42318;
}

/* 3.29.2 - long color lists collapse to the first six with a +N expander */
.abv-swatch.is-extra {
	display: none;
}

.abv-avail-swatches.is-expanded .abv-swatch.is-extra {
	display: inline-flex;
}

.abv-color-chips .abv-more-btn {
	display: inline-flex;
	align-items: center;
	padding: 6px 12px;
	border: 1px solid var(--abv-line);
	border-radius: 10px;
	background: var(--abv-surface);
	color: var(--abv-ink-2);
	font: inherit;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
	cursor: pointer;
}

.abv-color-chips .abv-more-btn:hover {
	border-color: var(--abv-line-strong);
}

.abv-swatch.is-plain { padding-left: 12px; }

@media (max-width: 768px) {
	.abv-avail { padding: 16px; gap: 12px; }
	.abv-avail-group { grid-template-columns: 1fr; gap: 2px; }
	.abv-avail-k { padding-top: 0; }
	.abv-avail-units { margin-left: 0; }
}

/* ============================================================
   3.33.0 - detail page polish + breadcrumb bar. Cosmetic layer
   only: nothing here changes DOM behaviour or any feature.
   ============================================================ */

/* --- breadcrumb bar (pairs with the 3.32.0 BreadcrumbList JSON-LD) --- */
.abv-crumbs {
	padding: 10px 0 2px;
	font-size: 12.5px;
	line-height: 1.5;
}

.abv-crumbs-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.abv-crumbs-list li {
	display: inline-flex;
	align-items: center;
	color: var(--abv-ink-3);
}

.abv-crumbs-list li + li::before {
	content: '/';
	margin: 0 7px;
	color: var(--abv-line-strong);
	opacity: .7;
}

.abv-crumbs-list a {
	color: var(--abv-ink-2);
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: color .15s ease, border-color .15s ease;
}

.abv-crumbs-list a:hover {
	color: var(--abv-accent);
	border-bottom-color: var(--abv-accent);
}

.abv-crumbs-list li[aria-current="page"] {
	color: var(--abv-ink);
	font-weight: 600;
}

/* --- section titles: small accent bar before each block title --- */
.abv-sec-title,
.abv-avail-title {
	position: relative;
	padding-left: 12px;
}

.abv-sec-title::before,
.abv-avail-title::before {
	content: '';
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 4px;
	height: 16px;
	border-radius: 2px;
	background: linear-gradient(180deg, var(--abv-accent), var(--abv-accent-soft, var(--abv-accent)));
}

/* 3.46.6 - title-first page sections relied on the old container gap for their top air;
   with the gap zeroed they get it back as their own padding (values match the preset's
   28px flex_gap) */
.abv-sec-related {
	padding-top: 34px;
}

.e-con.abv-page > .elementor-widget-abv_params .abv-params-head {
	padding-top: 34px;
}

/* --- cards: calmer shadows that lift on hover --- */
.abv-avail,
.abv-pricecard,
.abv-contact {
	transition: box-shadow .2s ease, transform .2s ease;
}

.abv-avail:hover,
.abv-pricecard:hover,
.abv-contact:hover {
	box-shadow: 0 10px 30px -18px rgba(15, 23, 42, .28);
}

/* --- spec table: clearer zebra + row hover --- */
.abv-specs tbody tr {
	transition: background-color .15s ease;
}

.abv-specs tbody tr:nth-child(even) {
	background: var(--abv-surface-2);
}

.abv-specs tbody tr:hover {
	background: var(--abv-surface-3, var(--abv-surface-2));
}

/* --- buttons: one shared focus ring --- */
.abv-avail a:focus-visible,
.abv-pricecard a:focus-visible,
.abv-contact a:focus-visible,
.abv-crumbs a:focus-visible {
	outline: 2px solid var(--abv-accent);
	outline-offset: 2px;
	border-radius: 4px;
}

/* --- empty gallery: quiet car silhouette + caption --- */
.abv-gmain-empty {
	gap: 10px;
	background:
		radial-gradient(120% 90% at 50% 100%, var(--abv-surface-2), transparent 70%);
	color: var(--abv-ink-3);
}

.abv-gmain-empty svg {
	width: min(220px, 60%);
	height: auto;
	opacity: .5;
}

.abv-gmain-empty span {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
}
/* ============================================================
   3.36.0 - visual richness, Elementor-friendly edition.
   Every rule is single-class specificity and carries no !important,
   so any Style control set in Elementor overrides it cleanly.
   ============================================================ */

/* --- breadcrumb bar: quiet capsule --- */
.abv-crumbs {
	background: var(--abv-surface-2);
	border: 1px solid var(--abv-line);
	border-radius: 999px;
	padding: 7px 16px;
	width: fit-content;
	max-width: 100%;
}

/* --- price card: dark gradient panel (plain background, Elementor-overridable) --- */
.abv-pricecard {
	position: relative;
	overflow: hidden;
	background: linear-gradient(155deg, #131c2b 0%, #1b2a3f 55%, #16202f 100%);
	border: 1px solid rgba(255, 255, 255, .06);
	/* 3.46.4 - !important: the edge element must sit on the card's very first pixel row;
	   no source (editor, theme, kit) may re-open a top-border hairline above it. */
	border-top: 0 !important;
	box-shadow: 0 18px 40px -22px rgba(9, 18, 33, .55);
}

/* 3.45.0 - the top edge is a REAL element (.abv-pricecard-edge, printed by the eyebrow
   widget): e-con containers paint their own background over ::before pseudo-elements.
   3.46.0 / 3.46.1 - it stayed IN FLOW with hardcoded negative margins (-19px). That only
   works when the panel's padding is exactly 18px + 1px border: the desktop panel pads 22px
   (4px seam), and any Elementor editor padding or wrapper margin reopens the gap — the
   seam users kept seeing on the live template.
   3.46.2 - the edge is absolutely anchored to the panel itself. Every positioned wrapper
   between the edge and the panel lets go (the Elementor widget wrapper is position:relative
   by default and our own .abv-page is position:relative), so top:0 is the panel's inner
   border edge at every breakpoint and under every editor padding — nothing left to guess. */
.abv-pricecard-edge {
	display: block;
	height: 4px;
	/* legacy fallback for engines without :has(): bleed over 18px padding (border-top is
	   gone since 3.46.3, sides keep their 1px). Modern engines override with the absolute
	   anchor below. */
	margin: -18px -19px 14px;
	pointer-events: none;
	border-radius: var(--abv-radius-lg, 8px) var(--abv-radius-lg, 8px) 0 0;
	background: linear-gradient(90deg, var(--abv-good) 0%, var(--abv-accent) 38%, rgba(180, 83, 9, .28) 72%, transparent 100%);
}

/* 3.46.2 - wrappers between the edge and the panel must not capture it. The preset
   template puts the price-label segment widget first, so pin it by slug (works everywhere);
   the :has() rules catch any custom arrangement. Standalone rules: one invalid selector
   must not drop its siblings on older engines. */
.e-con.abv-pricecard > .elementor-widget-abv_price_label {
	position: static;
}

.e-con.abv-pricecard .elementor-element:has(.abv-pricecard-edge) {
	position: static;
}

.e-con.abv-pricecard .elementor-element:has(.abv-pricecard-edge) .elementor-widget-container {
	position: static;
}

.e-con.abv-pricecard .abv-page:has(> .abv-pricecard-edge) {
	position: static;
}

@supports selector(:has(*)) {
	.abv-pricecard-edge {
		position: absolute;
		top: 0;
		left: 0;
		right: 0;
		margin: 0;
	}
}

/* panel copy defaults; the widgets' own Style controls override these */
:where(.abv-pricecard) .abv-pc-label,
:where(.abv-pricecard) .abv-pc-note {
	color: rgba(255, 255, 255, .72);
}

:where(.abv-pricecard) .abv-pc-price {
	color: #ffffff;
}

:where(.abv-pricecard) .abv-terms,
:where(.abv-pricecard) .abv-terms dt,
:where(.abv-pricecard) .abv-terms dd {
	color: rgba(255, 255, 255, .88);
}

:where(.abv-pricecard) .abv-price-lines,
:where(.abv-pricecard) .abv-price-terms {
	color: rgba(255, 255, 255, .85);
}

:where(.abv-pricecard) .abv-price-lines li + li,
:where(.abv-pricecard) .abv-price-terms li + li {
	border-top-color: rgba(255, 255, 255, .14);
}

/* panel buttons: bright variants so they pop on the dark gradient */
:where(.abv-pricecard) .abv-btn {
	background: rgba(255, 255, 255, .07);
	border-color: rgba(255, 255, 255, .30);
	color: #fff;
	font-weight: 650;
}

/* 3.38.0 - panel button hovers: colour + glow only, no lift */
:where(.abv-pricecard) .abv-btn:hover {
	transform: none;
	background: rgba(255, 255, 255, .14);
}

:where(.abv-pricecard) .abv-btn-wa {
	background: linear-gradient(135deg, #22c55e, #15803d);
	border-color: transparent;
	color: #fff;
}

:where(.abv-pricecard) .abv-btn-wa:hover {
	--abv-btn-glow: rgba(21, 128, 61, .8);
	background: linear-gradient(135deg, #2fd36b, #189349);
}

:where(.abv-pricecard) .abv-btn-ghost {
	--abv-btn-glow: rgba(29, 78, 216, .55);
	background-color: rgba(29, 78, 216, .18);
	background-image: linear-gradient(135deg, #3b82f6, #1d4ed8);
	border-color: transparent;
	color: #fff;
}

:where(.abv-pricecard) .abv-btn-ghost:hover {
	--abv-btn-glow: rgba(29, 78, 216, .78);
	background-image: linear-gradient(135deg, #60a5fa, #2563eb);
	border-color: transparent;
	/* the saved template sets a white hover colour (3.39); the blue gradient needs white */
	color: #fff !important; /* functional: corrects the stale saved setting for this button */
}

:where(.abv-pricecard) .abv-btn-primary {
	--abv-btn-glow: rgba(180, 83, 9, .6);
	background: linear-gradient(135deg, #f59e0b, #b45309);
	border-color: transparent;
	color: #fff;
}

:where(.abv-pricecard) .abv-btn-primary:hover {
	--abv-btn-glow: rgba(245, 158, 11, .75);
	background: linear-gradient(135deg, #fbbf24, #c2570c);
}

/* 3.44.0 - the parameter-table trigger keeps the WA anatomy but wears the brand blue */
.abv-params-cta .abv-btn-green {
	--abv-btn-glow: rgba(29, 78, 216, .55);
	background-image: linear-gradient(135deg, #3b82f6, #1d4ed8);
	border-color: transparent;
}

.abv-params-cta .abv-btn-green:hover {
	--abv-btn-glow: rgba(29, 78, 216, .78);
	background-image: linear-gradient(135deg, #60a5fa, #2563eb);
	border-color: transparent;
}

/* --- shared button polish (light context too) --- */
.abv-btn {
	border-radius: 10px;
	/* 3.43.0 - every button glows in its own brand colour; variants set --abv-btn-glow */
	--abv-btn-glow: rgba(15, 23, 42, .35);
	box-shadow: 0 4px 14px -8px var(--abv-btn-glow);
	transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease, filter .18s ease;
}

.abv-btn:hover {
	transform: translateY(-1px);
	box-shadow: 0 6px 16px -8px var(--abv-btn-glow);
}

.abv-btn:active {
	transform: translateY(0);
}

.abv-btn-primary {
	background: linear-gradient(135deg, #242c38, #131c2b);
}

.abv-btn-primary { --abv-btn-glow: rgba(19, 28, 43, .55); }

.abv-btn-primary:hover {
	--abv-btn-glow: rgba(19, 28, 43, .75);
	background: linear-gradient(135deg, #2c3646, #1a2432);
}

.abv-btn-wa {
	background: linear-gradient(135deg, #1bb457, #0e7a45);
	border-color: transparent;
	color: #fff;
}

.abv-btn-wa:hover {
	filter: brightness(1.06);
}

/* 3.42.0 - ambient light: the navy panel picks up a warm glow by the eyebrow and a
   green one by the WhatsApp corner; pure atmosphere, no layout impact */
.abv-pricecard::after {
	content: '';
	position: absolute;
	inset: 4px 0 0 0;
	border-radius: inherit;
	pointer-events: none;
	z-index: 0;
	background:
		radial-gradient(70% 46% at 4% 0%, rgba(245, 158, 11, .14), transparent 62%),
		radial-gradient(72% 52% at 100% 100%, rgba(34, 197, 94, .16), transparent 60%);
}

/* --- availability card: gradient top edge --- */
.abv-avail {
	position: relative;
	overflow: hidden;
}

.abv-avail::before {
	content: '';
	position: absolute;
	inset: 0 0 auto 0;
	height: 3px;
	background: linear-gradient(90deg, var(--abv-good), #34d399);
	pointer-events: none;
}

/* --- timeline steps: numbered gradient dots --- */
.abv-steps li {
	position: relative;
}

/* 3.41.0 - the numbered dot lives inside the step card */
.abv-steps li::before {
	left: 18px;
	top: 14px;
}

.abv-steps li::before {
	background: linear-gradient(135deg, #f59e0b, #b45309);
	color: #fff;
	border: none;
	box-shadow: 0 4px 10px -4px rgba(180, 83, 9, .8);
}

/* --- gallery: framed, floating hero --- */
.abv-gmain {
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 24px 48px -28px rgba(9, 18, 33, .45);
}

.abv-gmain img {
	border-radius: 14px;
}

.abv-gcount {
	background: rgba(13, 20, 31, .68);
	color: #fff;
	backdrop-filter: blur(4px);
	border-radius: 999px;
	padding: 3px 10px;
}

.abv-gthumbs button {
	border-radius: 8px;
	overflow: hidden;
}

.abv-gthumbs button[aria-current="true"] {
	outline: 2px solid var(--abv-accent);
	outline-offset: 1px;
}

/* --- specs table: framed with a quiet header row --- */
.abv-specs {
	border-radius: 10px;
	overflow-x: auto;
	border: 1px solid var(--abv-line);
}

:where(.abv-specs) thead th,
:where(.abv-specs) tr:first-child th {
	background: var(--abv-surface-2);
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: .07em;
	text-transform: uppercase;
	color: var(--abv-ink-2);
}

.abv-specs tbody tr {
	transition: background-color .15s ease;
}

.abv-specs tbody tr:nth-child(even) {
	background: var(--abv-surface-2);
}

.abv-specs tbody tr:hover {
	background: var(--abv-surface-3);
}

/* --- pills: subtle tinted badges --- */
:where(.abv-pill),
:where(.abv-head .abv-pills) span {
	background: var(--abv-accent-soft);
	border: 1px solid rgba(180, 83, 9, .22);
	color: #8a4308;
	border-radius: 999px;
}

/* --- contact strip: soft brand gradient --- */
.abv-contact {
	background: linear-gradient(180deg, var(--abv-surface), var(--abv-surface-2));
}

/* ============================================================
   3.35.2/3.36.0 - content modules (form / FAQ / related / trust)
   ============================================================ */

/* --- inquiry form --- */
.abv-form {
	background: var(--abv-surface);
	border: 1px solid var(--abv-line);
	border-radius: 12px;
	padding: 22px;
	box-shadow: var(--abv-shadow);
}

.abv-form-title {
	margin: 0 0 4px;
	color: var(--abv-ink);
	font-size: 19px;
	font-weight: 700;
	letter-spacing: -.01em;
}

.abv-form-subtitle {
	margin: 0 0 14px;
	color: var(--abv-ink-3);
	font-size: 13.5px;
	line-height: 1.55;
}

.abv-form-sent {
	margin: 0 0 12px;
	padding: 10px 14px;
	border-radius: 8px;
	background: rgba(14, 122, 69, .09);
	border: 1px solid rgba(14, 122, 69, .3);
	color: var(--abv-good);
	font-weight: 600;
	font-size: 13.5px;
}

.abv-form-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}

.abv-form-row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 12px;
}

.abv-form label:not(.abv-form-check) {
	display: grid;
	gap: 5px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--abv-ink-2);
}

.abv-form label span {
	line-height: 1.2;
}

.abv-form input[type="text"],
.abv-form input[type="email"],
.abv-form input[type="tel"],
.abv-form textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--abv-line-strong);
	border-radius: 8px;
	background: #fff;
	color: var(--abv-ink);
	font: inherit;
	font-size: 14px;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.abv-form input:focus,
.abv-form textarea:focus {
	outline: none;
	border-color: var(--abv-accent);
	box-shadow: 0 0 0 3px rgba(180, 83, 9, .14);
}

.abv-form textarea {
	resize: vertical;
	min-height: 96px;
}

.abv-form-check {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-weight: 500;
	color: var(--abv-ink-2);
	cursor: pointer;
}

.abv-form-check input {
	margin-top: 2px;
	accent-color: var(--abv-accent);
}

.abv-form-actions {
	display: flex;
	justify-content: flex-end;
}

.abv-form-hp {
	position: absolute !important; /* keep: honeypot must stay invisible */
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* --- 3.46.9 - Contact Form 7 inside the inquiry panel: restored 3.46.7 layout exactly
   (fields flow down the first grid column, checkbox row inline, full-column submit) --- */
.abv-form-cf7 .wpcf7-form {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px 14px;
}

.abv-form-cf7 .wpcf7-form p {
	margin: 0;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--abv-ink-2);
}

.abv-form-cf7 .wpcf7-form label {
	line-height: 1.2;
}

.abv-form-cf7 .wpcf7-form input[type="text"],
.abv-form-cf7 .wpcf7-form input[type="email"],
.abv-form-cf7 .wpcf7-form input[type="tel"],
.abv-form-cf7 .wpcf7-form input[type="url"],
.abv-form-cf7 .wpcf7-form input[type="number"],
.abv-form-cf7 .wpcf7-form select,
.abv-form-cf7 .wpcf7-form textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--abv-line-strong);
	border-radius: 8px;
	background: #fff;
	color: var(--abv-ink);
	font: inherit;
	font-size: 14px;
	margin-bottom: 12px;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.abv-form-cf7 .wpcf7-form input:focus,
.abv-form-cf7 .wpcf7-form select:focus,
.abv-form-cf7 .wpcf7-form textarea:focus {
	outline: none;
	border-color: var(--abv-accent);
	box-shadow: 0 0 0 3px rgba(180, 83, 9, .14);
}

.abv-form-cf7 .wpcf7-form textarea {
	resize: vertical;
	min-height: 96px;
}

.abv-form-cf7 .wpcf7-form input[type="checkbox"] {
	margin: 0 6px 0 0;
	vertical-align: middle;
	accent-color: var(--abv-accent);
}

/* full-width pieces: message, consent, submit and CF7 status lines span the panel */
.abv-form-cf7 .wpcf7-form p:has(textarea),
.abv-form-cf7 .wpcf7-form p:has(input[type="checkbox"]),
.abv-form-cf7 .wpcf7-form p:has(.wpcf7-acceptance),
.abv-form-cf7 .wpcf7-form p:has(.wpcf7-submit),
.abv-form-cf7 .wpcf7-form p:has(.wpcf7-form-control-wrap .wpcf7-response-output),
.abv-form-cf7 .wpcf7-form > .wpcf7-response-output {
	grid-column: 1 / -1;
}

.abv-form-cf7 .wpcf7-form .wpcf7-response-output {
	margin: 0;
	padding: 10px 14px;
	border-radius: 8px;
	border-width: 1px;
	font-size: 13.5px;
	font-weight: 500;
}

.abv-form-cf7 .wpcf7-form .wpcf7-submit {
	width: 100%;
	padding: 11px 18px;
	border: 0;
	border-radius: 8px;
	background: linear-gradient(135deg, #242c38, #131c2b);
	color: #fff;
	font: inherit;
	font-size: 14px;
	font-weight: 650;
	cursor: pointer;
	transition: filter .15s ease, box-shadow .15s ease;
}

.abv-form-cf7 .wpcf7-form .wpcf7-submit:hover {
	filter: brightness(1.12);
}

.abv-form-cf7 .wpcf7-not-valid-tip {
	font-size: 12px;
	color: #b42318;
}

@media (max-width: 767px) {
	.abv-form-cf7 .wpcf7-form { grid-template-columns: minmax(0, 1fr); }
}

/* --- FAQ accordion --- */
.abv-faq-title,
.abv-related-title {
	margin: 0 0 12px;
	color: var(--abv-ink);
	font-size: 19px;
	font-weight: 700;
	letter-spacing: -.01em;
}

.abv-faq-list {
	display: grid;
	gap: 8px;
}

.abv-faq-item {
	border: 1px solid var(--abv-line);
	border-radius: 10px;
	background: var(--abv-surface);
	overflow: hidden;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.abv-faq-item[open] {
	border-color: rgba(180, 83, 9, .35);
	box-shadow: 0 8px 22px -16px rgba(15, 23, 42, .4);
}

.abv-faq-item summary {
	position: relative;
	padding: 13px 40px 13px 14px;
	font-size: 14px;
	font-weight: 650;
	color: var(--abv-ink);
	cursor: pointer;
	list-style: none;
}

.abv-faq-item summary::-webkit-details-marker {
	display: none;
}

.abv-faq-item summary::after {
	content: '+';
	position: absolute;
	right: 14px;
	top: 50%;
	transform: translateY(-50%);
	width: 22px;
	height: 22px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--abv-surface-2);
	color: var(--abv-ink-2);
	font-size: 15px;
	font-weight: 700;
	transition: transform .18s ease, background-color .18s ease, color .18s ease;
}

.abv-faq-item[open] summary::after {
	content: '\2212';
	background: var(--abv-accent);
	color: #fff;
}

.abv-faq-a {
	padding: 0 14px 14px;
	color: var(--abv-ink-2);
	font-size: 13.5px;
	line-height: 1.65;
}

/* --- related vehicles --- */
.abv-related-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
	gap: 14px;
}

.abv-related-card {
	display: grid;
	gap: 8px;
	padding: 10px;
	border: 1px solid var(--abv-line);
	border-radius: 12px;
	background: var(--abv-surface);
	text-decoration: none;
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.abv-related-card:hover {
	transform: translateY(-3px);
	border-color: rgba(180, 83, 9, .4);
	box-shadow: 0 16px 32px -20px rgba(9, 18, 33, .5);
}

.abv-related-thumb {
	display: block;
	aspect-ratio: 16 / 10;
	border-radius: 8px;
	overflow: hidden;
	background: var(--abv-surface-2);
}

.abv-related-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.abv-related-none {
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	color: var(--abv-ink-3);
	font-size: 12px;
	font-weight: 600;
	text-align: center;
	padding: 6px;
}

.abv-related-name {
	color: var(--abv-ink);
	font-size: 13.5px;
	font-weight: 650;
	line-height: 1.35;
}

.abv-related-price {
	color: var(--abv-accent);
	font-size: 13.5px;
	font-weight: 750;
}

/* --- trust strip --- */
.abv-trust {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 12px;
}

.abv-trust-item {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	padding: 14px;
	border: 1px solid var(--abv-line);
	border-radius: 12px;
	background: var(--abv-surface);
}

.abv-trust-icon {
	flex: none;
	width: 34px;
	height: 34px;
	display: grid;
	place-items: center;
	border-radius: 10px;
	background: var(--abv-accent-soft);
	color: var(--abv-accent);
}

.abv-trust-icon svg {
	width: 20px;
	height: 20px;
}

.abv-trust-item strong {
	display: block;
	color: var(--abv-ink);
	font-size: 13.5px;
	font-weight: 700;
	margin-bottom: 2px;
}

.abv-trust-item span {
	color: var(--abv-ink-2);
	font-size: 12.5px;
	line-height: 1.5;
}

/* --- in-column module rhythm --- */
.abv-main .abv-trust,
.abv-main .abv-faq,
.abv-main .abv-form {
	margin: 4px 0 8px;
}

/* --- empty gallery: quiet car silhouette + caption --- */
.abv-gmain-empty {
	gap: 10px;
	background: radial-gradient(120% 90% at 50% 100%, var(--abv-surface-2), transparent 70%);
	color: var(--abv-ink-3);
}

.abv-gmain-empty svg {
	width: min(220px, 60%);
	height: auto;
	opacity: .5;
}

.abv-gmain-empty span {
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
}

/* --- buttons: one shared focus ring --- */
.abv-avail a:focus-visible,
.abv-pricecard a:focus-visible,
.abv-contact a:focus-visible,
.abv-crumbs a:focus-visible {
	outline: 2px solid var(--abv-accent);
	outline-offset: 2px;
	border-radius: 4px;
}

/* --- section titles: gradient accent bar --- */
.abv-sec-title,
.abv-avail-title {
	position: relative;
	padding-left: 12px;
}

.abv-sec-title::before,
.abv-avail-title::before {
	content: '';
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 4px;
	height: 18px;
	border-radius: 2px;
	background: linear-gradient(180deg, #f59e0b, #b45309);
}

/* ============================================================
   3.35.2/3.36.0 - mobile adaptation
   ============================================================ */

@media (max-width: 767px) {
	.abv-steps li { padding: 12px 12px 12px 48px; }
	.abv-steps li::before { left: 14px; }
	.abv-form {
		padding: 16px;
	}

	.abv-form-row {
		grid-template-columns: minmax(0, 1fr);
	}

	.abv-trust {
		grid-template-columns: minmax(0, 1fr);
	}

	.abv-related-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
	}

	.abv-crumbs {
		padding: 6px 12px;
		font-size: 12px;
	}

	.abv-faq-item summary {
		padding: 12px 36px 12px 12px;
		font-size: 13.5px;
	}

	.abv-trust-item {
		padding: 12px;
	}
}

@media (max-width: 380px) {
	.abv-related-grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ============================================================
   3.41.0 - empty modules collapse: a block without data must not
   leave a phantom gap between its neighbours.
   ============================================================ */
.elementor-widget:has(> .elementor-widget-container:empty),
.elementor-widget > .elementor-widget-container:empty,
.abv-sec:empty,
.abv-widget-wrap:empty {
	display: none !important; /* functional: structural collapse, not styling */
}
