/* ==========================================================================
   BAAS Configurator — stylesheet
   --------------------------------------------------------------------------
   Structure
     01. Tokens ............ everything themeable, scoped to .cfg-root
     02. Primitives ........ shared bases (button reset, focus ring, chips)
     03. Utilities ......... .cfg-visually-hidden
     04. Layout ............ page shell, form column, preview pane
     05. Navigation ........ tabs, checkout nav, secondary nav
     06. Content ........... hero, option group, option card, swatch, tooltip
     07. Data display ...... table cells, summary table, summary step
     08. Overlays .......... modal, fields, lease form
     09. Buttons ........... .cfg-btn + in-context overrides
     10. Motion ............ keyframes, reduced-motion
     11. Loading ........... full-viewport loading screen

   Conventions
     - BEM: .cfg-block__element--modifier, state as .is-*
     - Media queries live with their component, never in a trailing dump
     - Breakpoint ladder: 767 (tablet) · 640 (mobile) · 560 · 480 · 420 · 400
     - Theming = override tokens in 01 only. Component rules never hardcode
       a colour, radius, shadow or duration.
     - The semantic token names in 01 are a contract with core/theme.ts
       (CSS_VARS). Renaming one silently breaks that brand key — update
       theme.ts in the same commit.
   ========================================================================== */

/* ==========================================================================
   01. TOKENS
   ========================================================================== */

.cfg-root {
	/* ---- Palette primitives (raw values — do not use directly) ---- */
	--cfg-c-accent: #96d4dc;
	--cfg-c-accent-light: #96d4dc29;
	--cfg-c-accent-dark: #29717a;
	--cfg-c-secondary: #c5525b;
	--cfg-c-secondary-light: #ff6e7c;
	--cfg-c-ink: #14181a;
	--cfg-c-ink-cell: #09090b;
	--cfg-c-white: #ffffff;
	--cfg-c-danger: #ef4444;

	--cfg-c-grey-050: #f9f9f9;
	--cfg-c-grey-100: #f8f8f8;
	--cfg-c-grey-150: #f5f5f5;
	--cfg-c-grey-200: #efefef;
	--cfg-c-grey-250: #eeeeee;
	--cfg-c-grey-300: #ececec;
	--cfg-c-grey-350: #e9e8e3;
	--cfg-c-grey-400: #e4e4e4;
	--cfg-c-grey-450: #e1e1e1;
	--cfg-c-grey-500: #d3d1c9;
	--cfg-c-grey-600: #8a8a8a;
	--cfg-c-grey-700: #71717a;
	--cfg-c-grey-800: #595959;

	--cfg-c-preview: #f1f2ee;
	--cfg-c-arrow: rgba(220, 223, 223, 0.6);
	--cfg-c-arrow-hover: rgba(220, 223, 223, 0.9);
	--cfg-c-scrim: rgba(0, 0, 0, 0.32);

	/* ---- Semantic colour (this is the theming API) ---- */
	--cfg-accent: var(--cfg-c-accent);
	--cfg-secondary: var(--cfg-c-secondary);
	--cfg-on-accent: var(--cfg-c-white);
	--cfg-danger: var(--cfg-c-danger);

	--cfg-text: var(--cfg-c-ink);
	--cfg-text-soft: rgba(20, 24, 26, 0.6); /* hero intro, card text, accessory name */
	--cfg-muted: var(--cfg-c-grey-600);
	--cfg-text-quiet: var(--cfg-c-grey-700); /* nav "previous", placeholders */
	--cfg-text-action: var(--cfg-c-accent-dark); /* secnav actions */
	--cfg-cell-text: var(--cfg-c-ink-cell);

	--cfg-surface: var(--cfg-c-white); /* page, navs, panels, inputs */
	--cfg-surface-muted: var(--cfg-c-grey-050); /* info cards, tooltips */
	--cfg-card-bg: var(--cfg-c-grey-150);
	--cfg-card-bg-selected: var(--cfg-c-white);
	--cfg-row-hover: var(--cfg-c-grey-100);
	--cfg-preview-bg: var(--cfg-c-preview);
	--cfg-arrow-bg: var(--cfg-c-arrow);
	--cfg-arrow-bg-hover: var(--cfg-c-arrow-hover);
	--cfg-scrim: var(--cfg-c-scrim);

	--cfg-border: var(--cfg-c-grey-400);
	--cfg-cell-border: var(--cfg-c-grey-200);
	--cfg-nav-border: var(--cfg-c-grey-450);
	--cfg-tab-border: var(--cfg-c-grey-250);
	--cfg-secnav-border: var(--cfg-c-grey-350);
	--cfg-modal-border: var(--cfg-c-grey-300);
	--cfg-modal-input-border: var(--cfg-c-grey-500);

	/* ---- Typography ---- */
	--cfg-font: inherit;
	--cfg-font-heading: 'Cal Sans', sans-serif;
	--cfg-text-2xs: 10px;
	--cfg-text-xs: 12px;
	--cfg-text-sm: 14px;
	--cfg-text-base: 16px;
	--cfg-text-md: 18px;
	--cfg-text-lg: 19px;
	--cfg-text-xl: 20px;
	--cfg-text-2xl: 24px;
	--cfg-text-3xl: 28px;
	--cfg-text-4xl: 36px;

	--cfg-weight-regular: 400;
	--cfg-weight-medium: 500;
	--cfg-weight-semibold: 600;
	--cfg-weight-bold: 700;

	--cfg-leading-tight: 1.1;
	--cfg-leading-snug: 1.25;
	--cfg-leading-normal: 1.5;
	--cfg-tracking-slight: 0.01em;
	--cfg-tracking-tight: -0.016em;

	/* ---- Spacing scale ---- */
	--cfg-space-1: 4px;
	--cfg-space-2: 8px;
	--cfg-space-3: 12px;
	--cfg-space-4: 16px;
	--cfg-space-5: 20px;
	--cfg-space-6: 24px;
	--cfg-space-7: 32px;
	--cfg-space-8: 40px;
	--cfg-space-9: 48px;
	--cfg-space-10: 56px;
	--cfg-space-11: 72px;

	/* ---- Radii ---- */
	--cfg-radius-sm: 6px; /* chips, badges, inputs */
	--cfg-radius: 8px; /* cards, buttons, thumbs */
	--cfg-radius-lg: 12px; /* review popover */
	--cfg-radius-xl: 48px; /* badge pill */
	--cfg-radius-modal: 16px;
	--cfg-radius-pill: 999px;

	/* ---- Elevation ---- */
	--cfg-shadow: 0px 2px 3px rgba(0, 0, 0, 0.05);
	--cfg-shadow-swatch: 0px 2px 6px rgba(0, 0, 0, 0.05);
	--cfg-shadow-dot: 0px 2px 4px rgba(0, 0, 0, 0.08);
	--cfg-shadow-card: 0px 4px 4.3px rgba(0, 0, 0, 0.05);
	--cfg-shadow-card-strong: 0px 4px 4px rgba(0, 0, 0, 0.08);
	--cfg-shadow-tooltip: 0px 4px 8px rgba(0, 0, 0, 0.08);
	--cfg-shadow-popover: 0px 8px 32px rgba(0, 0, 0, 0.12);
	--cfg-shadow-nav: 0px -4px 5.9px rgba(0, 0, 0, 0.04);

	/* ---- Motion ---- */
	--cfg-duration-fast: 120ms;
	--cfg-duration: 150ms;
	--cfg-duration-slow: 180ms;
	--cfg-duration-slide-in: 450ms;
	--cfg-duration-slide-out: 100ms;
	--cfg-duration-pulse: 1.6s;
	--cfg-ease: ease;
	--cfg-ease-out: cubic-bezier(0.33, 1, 0.68, 1);
	--cfg-ease-in: cubic-bezier(0.32, 0, 0.67, 0);

	/* ---- Focus ring (components override the vars, not the rule) ---- */
	--cfg-focus-color: var(--cfg-accent);
	--cfg-focus-width: 2px;
	--cfg-focus-offset: 2px;

	/* ---- Z-index scale ---- */
	--cfg-z-secnav: 9;
	--cfg-z-tabs: 10;
	--cfg-z-nav: 20;
	--cfg-z-popover: 30;
	--cfg-z-tooltip: 40;
	--cfg-z-modal: 100;

	/* ---- Layout dimensions ---- */
	--cfg-form-padding-x: var(--cfg-space-11);
	--cfg-preview-h-mobile: 37vh; /* sticky preview height; tabs pin below it */
	--cfg-chip-height: 25px;
	--cfg-badge-height: 13px;
	--cfg-field-height: 42px;
	--cfg-thumb-size: 64px;
	--cfg-swatch-size: 46px;
	--cfg-swatch-dot: 42px;
	--cfg-swatch-cols: 7;
	--cfg-cat-swatch-dot: 54px;
	--cfg-cat-swatch-pad: 6px;
	--cfg-summary-min-w: 356px;
	--cfg-summary-label-w: 123px;
	--cfg-summary-label-w-sm: 96px;
	--cfg-review-max-h: 285px;
	--cfg-review-width: 440px;
	--cfg-tooltip-width: 231px;
	--cfg-modal-width: 604px;
}

/* Responsive token overrides — kept top-level on purpose. Bare declarations
   inside an @media nested in a rule need CSSNestedDeclarations support;
   on engines without it the mobile scale is dropped AND every token declared
   after the nested block can be discarded. This form works everywhere. */
@media (max-width: 767px) {
	.cfg-root {
		--cfg-text-sm: 13px;
		--cfg-text-base: 15px;
		--cfg-text-md: 17px;
		--cfg-text-lg: 17px;
		--cfg-text-xl: 17px;
		--cfg-text-2xl: 21px;
		--cfg-text-3xl: 24px;
		--cfg-text-4xl: 32px;
		--cfg-form-padding-x: var(--cfg-space-5);
		font-family: var(--cfg-font, inherit);
	}
}

/* ==========================================================================
   02. PRIMITIVES
   Shared bases. Existing class names are listed here so markup needs no
   change; new components can just take the utility class instead.
   ========================================================================== */

/* ---- Unstyled button: renders as a button, looks like something else ---- */
.cfg-unstyled,
.cfg-preview__arrow,
.cfg-checkoutnav__price,
.cfg-checkoutnav__previous,
.cfg-optgroup__toggle,
.cfg-secnav__review,
.cfg-secnav__action,
.cfg-modal__close,
.cfg-modal__url,
button.cfg-optgroup__help-link,
.cfg-cat__header,
.cfg-btn--link {
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	font-family: inherit;
	cursor: pointer;
}

/* ---- Single focus-ring definition for every interactive element ---- */
.cfg-option:focus-visible,
.cfg-swatch:focus-visible,
.cfg-cat__header:focus-visible,
.cfg-tab:focus-visible,
.cfg-btn:focus-visible,
.cfg-checkoutnav__price--button:focus-visible,
.cfg-checkoutnav__previous:focus-visible,
.cfg-checkoutnav__primary:focus-visible,
.cfg-secnav__review:focus-visible,
.cfg-secnav__action:focus-visible,
.cfg-modal__close:focus-visible,
.cfg-modal__url:focus-visible,
.cfg-modal__social:focus-visible,
.cfg-tooltip__dot:focus-visible,
.cfg-tooltip__close:focus-visible,
.cfg-field__input:focus-visible {
	outline: var(--cfg-focus-width) solid var(--cfg-focus-color);
	outline-offset: var(--cfg-focus-offset);
}

.cfg-hero__title,
.cfg-optgroup__title,
.cfg-summary__title,
.cfg-modal__title {
	font-family: var(--cfg-font-heading, var(--cfg-font, inherit));
	font-weight: 400;
}

/* Elements that need a rounded ring because they have no border-radius */
.cfg-checkoutnav__price--button:focus-visible,
.cfg-secnav__review:focus-visible,
.cfg-secnav__action:focus-visible {
	border-radius: var(--cfg-space-1);
}

/* Per-component ring geometry */
.cfg-tab {
	--cfg-focus-offset: -2px;
}
.cfg-modal__social {
	--cfg-focus-offset: 4px;
}
.cfg-field__input {
	--cfg-focus-width: 1px;
	--cfg-focus-offset: 1px;
}

/* ---- Chip base: prices, tags, badges, accessory chips ---- */
.cfg-option__price,
.cfg-option__tag,
.cfg-option__badge,
.cfg-optgroup__accessory-chip,
.cfg-badge {
	display: inline-flex;
	align-items: center;
	padding: 5px 9px;
	border: 1px solid var(--cfg-border);
	border-radius: var(--cfg-radius-sm);
	color: var(--cfg-muted);
	font-size: var(--cfg-text-2xs);
	line-height: 1;
	white-space: nowrap;
	flex-shrink: 0;
}

/* ---- Round icon button (modal + tooltip close) ---- */
.cfg-modal__close,
.cfg-tooltip__close {
	position: absolute;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--cfg-radius-pill);
	color: var(--cfg-text);
}
.cfg-modal__close:hover,
.cfg-tooltip__close:hover {
	background: var(--cfg-card-bg);
}

/* ---- Inline accent toggle ("show more" style) ---- */
.cfg-optgroup__toggle {
	display: inline-flex;
	align-items: center;
	gap: var(--cfg-space-2);
	color: var(--cfg-accent);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-6);
}
.cfg-optgroup__toggle-icon {
	transition: transform var(--cfg-duration) var(--cfg-ease);
}

/* ---- Bordered control shell (qty select, product total) ---- */
.cfg-summary__qty select,
.cfg-summary__product-total {
	height: 48px;
	border: 1px solid var(--cfg-modal-input-border);
	border-radius: var(--cfg-radius);
	background: var(--cfg-surface);
}

/* ---- Hairline divider ---- */
.cfg-optgroup__divider,
.cfg-summary__divider {
	width: 100%;
	border: 0;
	border-top: 1px solid var(--cfg-border);
}

/* ---- Underlined text link ---- */
.cfg-hero__alt a,
.cfg-optgroup__help-link,
.cfg-card__link {
	color: var(--cfg-c-accent-dark);
	text-decoration: none;
}
.cfg-optgroup__help-link {
	text-decoration: underline;
}
.cfg-hero__alt a:hover,
.cfg-card__link:hover {
	text-decoration: underline;
}

.cfg-optgroup__help .cfg-btn--primary.cfg-btn--link {
	text-decoration: underline;
}

.cfg-optgroup__required {
	margin-left: 4px;
	color: #ef4444;
}

/* ==========================================================================
   03. UTILITIES
   ========================================================================== */

.cfg-visually-hidden {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* ==========================================================================
   04. LAYOUT
   ========================================================================== */

.cfg-page {
	display: grid;
	grid-template-columns: 1fr 1fr;
	width: 100%;
	height: 100dvh;
	overflow: hidden;
	background: var(--cfg-surface);
	font-family: var(--cfg-font);
}

@media (max-width: 767px) {
	.cfg-page {
		grid-template-columns: 1fr;
		height: auto;
		overflow: visible;
	}
}

/* ---- Form column -------------------------------------------------------- */

.cfg-page__form {
	display: flex;
	flex-direction: column;
	min-height: 0;
	min-width: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	padding: 0 var(--cfg-form-padding-x);
}

/* Nav bleeds to the column edges — derived from the padding token, so both
   stay in sync when --cfg-form-padding-x changes. */
.cfg-page__form > .cfg-checkoutnav {
	position: sticky;
	bottom: 0;
	width: auto;
	margin-top: auto;
	margin-inline: calc(-1 * var(--cfg-form-padding-x));
}

.cfg-page__tabs {
	position: sticky;
	top: 0;
	z-index: var(--cfg-z-tabs);
	background: var(--cfg-surface);
}

.cfg-page__groups {
	display: flex;
	flex-direction: column;
	padding-bottom: 88px;
}

@media (max-width: 767px) {
	.cfg-page__form {
		/* --cfg-form-padding-x flips in the responsive token block (§01) */
		height: auto;
		overflow: visible;
	}
	/* pins directly under the sticky preview */
	.cfg-page__tabs {
		top: var(--cfg-preview-h-mobile);
	}
}

/* ---- Preview pane ------------------------------------------------------- */

.cfg-page__preview {
	display: flex;
	flex-direction: column;
	position: relative;
	height: 100%;
	min-height: 0;
	min-width: 0;
	z-index: 9;
}

.cfg-preview {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
	width: 100%;
	overflow: hidden;
	background-color: #fafafa;
}

.cfg-preview__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	object-position: center;
	margin: 0;
	pointer-events: none;
}

.cfg-preview__slide--contained .cfg-preview__image {
	max-width: 70%;
	max-height: 60%;
}

@media (max-width: 767px) {
	.cfg-page__preview {
		position: sticky;
		top: 0;
		width: 100%;
		height: var(--cfg-preview-h-mobile);
	}
	.cfg-preview__slide--contained .cfg-preview__image {
		max-width: 100%;
		max-height: 100%;
	}
	.cfg-preview__image {
		margin: 0;
	}
	.cfg-preview__slide {
		padding-bottom: 0;
	}
}

/* ---- Preview slides (stacked crossfade) --------------------------------- */

.cfg-preview__slide {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding-bottom: var(--cfg-space-9);
	will-change: transform;
}

.cfg-preview__slide--under {
	z-index: 1;
}

.cfg-preview__slide--enter-up {
	z-index: 2;
	animation: cfg-stack-in-up var(--cfg-duration-slide-in) var(--cfg-ease-out) both;
}

.cfg-preview__slide--exit-down {
	z-index: 2;
	pointer-events: none;
	animation: cfg-stack-out-down var(--cfg-duration-slide-out) var(--cfg-ease-in) both;
}

/* ---- Preview arrows ----------------------------------------------------- */

.cfg-preview__arrows {
	position: absolute;
	bottom: var(--cfg-space-6);
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	gap: var(--cfg-space-8);
}

.cfg-preview__arrow {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: var(--cfg-radius-pill);
	background: var(--cfg-arrow-bg);
	color: var(--cfg-text);
	font-size: var(--cfg-text-md);
	line-height: 1;
	transition: background-color var(--cfg-duration-fast) var(--cfg-ease);
}
.cfg-preview__arrow:hover {
	background: var(--cfg-arrow-bg-hover);
}

/* ---- Preview tooltip: hotspot on the bike (% of preview pane, scales with size) --- */

.cfg-preview__tooltip {
	position: absolute;
	inset: 0;
	z-index: 99;
	pointer-events: none;
}
.cfg-preview__tooltip .cfg-tooltip {
	position: absolute;
	top: var(--cfg-preview-tooltip-top, 50%);
	left: var(--cfg-preview-tooltip-left, 50%);
	transform: translate(-50%, -50%);
	pointer-events: auto;
}

.cfg-preview__tooltip--groupsets {
	--cfg-preview-tooltip-top: 62%;
	--cfg-preview-tooltip-left: 48%;
}
.cfg-preview__tooltip--wheels {
	--cfg-preview-tooltip-top: 55%;
	--cfg-preview-tooltip-left: 62%;
}
.cfg-preview__tooltip--saddles {
	--cfg-preview-tooltip-top: 35%;
	--cfg-preview-tooltip-left: 30%;
}
.cfg-preview__tooltip--oversized-pulley-wheel {
	--cfg-preview-tooltip-top: 57%;
	--cfg-preview-tooltip-left: 30%;
}
.cfg-preview__tooltip--pedals {
	--cfg-preview-tooltip-top: 57%;
	--cfg-preview-tooltip-left: 55%;
}
.cfg-preview__tooltip--tyres {
	--cfg-preview-tooltip-top: 57%;
	--cfg-preview-tooltip-left: 58%;
}

@media (max-width: 767px) {
	.cfg-preview__tooltip--groupsets {
		--cfg-preview-tooltip-top: 65%;
		--cfg-preview-tooltip-left: 50%;
	}
	.cfg-preview__tooltip--wheels {
		--cfg-preview-tooltip-top: 52%;
		--cfg-preview-tooltip-left: 30%;
	}
	.cfg-preview__tooltip--saddles {
		--cfg-preview-tooltip-top: 25%;
		--cfg-preview-tooltip-left: 30%;
	}
	.cfg-preview__tooltip--oversized-pulley-wheel {
		--cfg-preview-tooltip-top: 54%;
		--cfg-preview-tooltip-left: 30%;
	}
	.cfg-preview__tooltip--pedals {
		--cfg-preview-tooltip-top: 65%;
		--cfg-preview-tooltip-left: 53%;
	}
}

/* ==========================================================================
   05. NAVIGATION
   ========================================================================== */

/* ---- Tabs --------------------------------------------------------------- */

.cfg-tab {
	display: flex;
	position: relative;
	align-items: center;
	justify-content: center;
	min-width: 78px;
	padding: var(--cfg-space-3) 0;
	border: 0;
	border-bottom: 1.25px solid var(--cfg-tab-border);
	background: none;
	color: var(--cfg-muted);
	font-family: var(--cfg-font);
	font-size: var(--cfg-text-base);
	line-height: 26.25px;
	letter-spacing: var(--cfg-tracking-slight);
	white-space: nowrap;
	cursor: pointer;
	transition:
		color var(--cfg-duration-fast) var(--cfg-ease),
		border-color var(--cfg-duration-fast) var(--cfg-ease);
}
.cfg-tab:hover {
	color: var(--cfg-text);
}
.cfg-tab.is-selected {
	color: var(--cfg-text);
	font-weight: var(--cfg-weight-semibold);
}
.cfg-tab.is-selected::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: -1.25px; /* sits exactly on the border line */
	width: 100%;
	height: 1.25px;
	background: var(--cfg-text);
	transform-origin: left;
	transform: scaleX(0);
	animation: cfg-tab-progress linear both;
	animation-timeline: scroll(nearest);
}

@keyframes cfg-tab-progress {
	from {
		transform: scaleX(0);
	}
	to {
		transform: scaleX(1);
	}
}

@supports not (animation-timeline: scroll()) {
	.cfg-tab.is-selected {
		border-bottom-color: var(--cfg-text);
	}
	.cfg-tab.is-selected::after {
		display: none;
	}
}
.cfg-tabbar .cfg-tab.is-selected:nth-last-child(-n + 2) {
	border-bottom-color: var(--cfg-text);
}
.cfg-tabbar .cfg-tab.is-selected:nth-last-child(-n + 2)::after {
	display: none;
}

.cfg-tab.is-blocked {
	cursor: not-allowed;
}
.cfg-tab.is-blocked:hover {
	color: var(--cfg-muted);
}
.cfg-tab.is-completed {
	gap: 5px;
	color: var(--cfg-muted);
}
.cfg-tab__check {
	display: block;
	flex-shrink: 0;
}

.cfg-tabbar {
	display: flex;
	align-items: stretch;
	width: 100%;
	background: var(--cfg-surface);
}
.cfg-tabbar .cfg-tab {
	flex: 1 0 0;
	min-width: 0;
}

/* Legacy fixed-width tab group (kept for compatibility) */
.cfg-tabs-group {
	display: flex;
	width: 478px;
	align-items: flex-start;
}

/* ---- Checkout nav ------------------------------------------------------- */

.cfg-checkoutnav {
	display: flex;
	min-height: 88px;
	position: sticky;
	bottom: 0;
	z-index: var(--cfg-z-nav);
	width: 100%;
	padding: 0 var(--cfg-space-8);
	background: var(--cfg-surface);
	border-top: 1px solid var(--cfg-nav-border);
	box-shadow: var(--cfg-shadow-nav);
	font-family: var(--cfg-font);
}

.cfg-checkoutnav__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cfg-space-6);
	width: 100%;
}

.cfg-checkoutnav__summary {
	display: flex;
	gap: var(--cfg-space-1);
	flex: 1 0 0;
	min-width: 0;
}

.cfg-checkoutnav__summary > .cfg-checkoutnav__price:first-child {
	border-right: 1px solid var(--base--grey);
	padding-right: 1.5rem;
	margin-right: 1.5rem;
}

.cfg-checkoutnav__price {
	color: var(--cfg-text);
	font-family: inherit;
	font-size: var(--cfg-text-2xl);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-space-6);
	white-space: nowrap;
	text-align: left;
	cursor: default;
	display: flex;
	flex-direction: column;
}
.cfg-checkoutnav__price--button {
	cursor: pointer;
}

.cfg-checkoutnav__lease {
	display: inline-flex;
	align-items: center;
	gap: var(--cfg-space-1);
	max-width: 100%;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	text-align: left;
	cursor: pointer;
}
.cfg-checkoutnav__lease:hover {
	color: var(--cfg-text);
}
.cfg-checkoutnav__lease:focus-visible {
	outline: 2px solid var(--cfg-accent);
	outline-offset: 2px;
	border-radius: var(--cfg-radius);
}

.cfg-checkoutnav__subtext {
	margin: 0 0 0.5rem 0;
	color: var(--cfg-muted);
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-space-6);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cfg-checkoutnav__actions {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--cfg-space-3);
	flex-shrink: 0;
}

.cfg-checkoutnav__actions > .cfg-btn--link.cfg-btn--icon-left {
	background: var(--cfg-arrow-bg-hover);
	padding: 8px 9px 8px 7px;
	min-width: 40px;
	min-height: 40px;
}

.cfg-checkoutnav__lease-btn.cfg-btn--primary.cfg-btn--button {
	color: var(--cfg-c-ink);
	background: var(--cfg-accent);
}

.cfg-checkoutnav__previous {
	display: inline-flex;
	align-items: center;
	gap: var(--cfg-space-2);
	border-radius: var(--cfg-radius);
	color: var(--cfg-text-quiet);
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-semibold);
	line-height: var(--cfg-leading-normal);
	transition: color var(--cfg-duration-fast) var(--cfg-ease);
}
.cfg-checkoutnav__previous:hover {
	color: var(--cfg-text);
}

.cfg-checkoutnav__primary {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--cfg-space-2);
	padding: 13px 13px 13px 23px;
	background: var(--cfg-accent);
	border: 1px solid var(--cfg-accent);
	border-radius: var(--cfg-radius);
	color: var(--cfg-on-accent);
	font-family: inherit;
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-semibold);
	line-height: var(--cfg-leading-normal);
	white-space: nowrap;
	cursor: pointer;
	transition: filter var(--cfg-duration-fast) var(--cfg-ease);
}
.cfg-checkoutnav__primary:hover:not(:disabled) {
	filter: brightness(0.94);
}
.cfg-checkoutnav__primary:disabled {
	opacity: 0.45;
	cursor: not-allowed;
}

.cfg-checkoutnav__chevron {
	flex-shrink: 0;
	display: inline;
	color: var(--cfg-muted);
}
.cfg-checkoutnav__lease:hover .cfg-checkoutnav__chevron {
	color: var(--cfg-text);
}

@media (max-width: 640px) {
	.cfg-checkoutnav {
		padding: var(--cfg-space-3) var(--cfg-space-3) var(--cfg-space-3);
		min-height: auto;
	}
	.cfg-checkoutnav__summary {
		display: block;
	}
	.cfg-checkoutnav__summary > .cfg-checkoutnav__price:first-child {
		padding-right: 0rem;
		margin-right: 0rem;
		border-right: 0px;
	}
	.cfg-checkoutnav__price {
		display: flex;
		flex-direction: row;
		font-size: 18px;
	}
	.cfg-checkoutnav__subtext {
		font-size: 15px;
	}
	.cfg-checkoutnav__actions {
		gap: var(--cfg-space-4);
	}
	.cfg-checkoutnav__primary {
		padding: 11px 11px 11px 18px;
	}
	.cfg-checkoutnav__subtext {
		overflow: visible;
		margin: 0 0.25rem 0 0;
	}
}

@media (max-width: 420px) {
	.cfg-checkoutnav__lease {
		max-width: 100%;
	}
}

/* ---- Secondary nav (review popover) ------------------------------------- */

.cfg-secnav {
	position: absolute;
	bottom: 0;
	z-index: var(--cfg-z-secnav);
	width: 100%;
	border-top: 1px solid var(--cfg-secnav-border);
	font-family: var(--cfg-font);
}

.cfg-secnav__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cfg-space-6);
	padding: 30.5px var(--cfg-space-8);
}

.cfg-secnav__review {
	color: var(--cfg-accent);
	font-size: var(--cfg-text-md);
	font-weight: var(--cfg-weight-regular);
	line-height: 1.33;
	white-space: nowrap;
}
.cfg-secnav__review:hover {
	text-decoration: underline;
}

.cfg-secnav__actions {
	display: flex;
	align-items: center;
	gap: var(--cfg-space-6);
}

.cfg-secnav__action {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--cfg-text-action);
	font-size: var(--cfg-text-md);
	font-weight: var(--cfg-weight-regular);
	line-height: 1.33;
	white-space: nowrap;
	transition: color var(--cfg-duration-fast) var(--cfg-ease);
}
.cfg-secnav__action:hover {
	color: var(--cfg-text);
}

.cfg-secnav__icon {
	flex-shrink: 0;
	display: block;
}

.cfg-secnav__collapse {
	position: absolute;
	bottom: calc(100% - var(--cfg-space-3));
	left: var(--cfg-space-5);
	width: min(var(--cfg-review-width), calc(100% - var(--cfg-space-8)));
	z-index: var(--cfg-z-popover);
	opacity: 0;
	transform: translateY(var(--cfg-space-2));
	visibility: hidden;
	transition:
		opacity var(--cfg-duration-slow) var(--cfg-ease),
		transform var(--cfg-duration-slow) var(--cfg-ease),
		visibility 0s var(--cfg-duration-slow);
}
.cfg-secnav__collapse.is-open {
	opacity: 1;
	transform: translateY(0);
	visibility: visible;
	transition:
		opacity var(--cfg-duration-slow) var(--cfg-ease),
		transform var(--cfg-duration-slow) var(--cfg-ease),
		visibility 0s 0s;
}

.cfg-secnav__collapse-inner {
	min-height: 0;
}

.cfg-secnav__panel {
	padding: var(--cfg-space-2) var(--cfg-space-5);
	max-height: var(--cfg-review-max-h);
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--cfg-surface);
	border-radius: var(--cfg-radius-lg);
	box-shadow: var(--cfg-shadow-popover);
}
.cfg-secnav__panel .cfg-table--summary {
	min-width: 0;
}

@media (max-width: 767px) {
	.cfg-tab {
		font-size: 13px;
	}
	.cfg-secnav {
		display: none;
	}
}

@media (max-width: 640px) {
	.cfg-secnav__bar {
		padding: var(--cfg-space-5);
	}
	.cfg-secnav__panel {
		padding: 0 var(--cfg-space-5) var(--cfg-space-4);
	}
	.cfg-secnav__review,
	.cfg-secnav__action {
		font-size: var(--cfg-text-base);
	}
}

/* ==========================================================================
   06. CONTENT
   ========================================================================== */

/* ---- Hero (step 1 only, hidden on mobile) ------------------------------- */

.cfg-hero {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-3);
	margin-top: var(--cfg-space-10);
	padding-bottom: var(--cfg-space-6);
}

.cfg-hero__title {
	margin: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-4xl);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-leading-tight);
}

.cfg-hero__intro {
	margin: 0;
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-lg);
	line-height: 28px;
	letter-spacing: -0.014em;
}

.cfg-hero__alt {
	margin: 0;
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-md);
	line-height: var(--cfg-space-6);
}
.cfg-hero__alt a {
	display: block;
}

@media (max-width: 767px) {
	.cfg-hero {
		display: none;
	}
}

/* ---- Option group ------------------------------------------------------- */

.cfg-optgroup {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-5);
	padding: var(--cfg-space-10) 0;
	border: 0;
	min-inline-size: 0;
	font-family: var(--cfg-font);
}
.cfg-group-with-children .cfg-optgroup {
	padding-bottom: 40px;
}

.cfg-group-with-children {
	padding-bottom: var(--cfg-space-10);
}

.cfg-optgroup__heading {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cfg-space-4);
	width: 100%;
}
.cfg-optgroup__heading-text {
	display: flex;
	flex-direction: row;
	justify-content: space-between;
	width: 100%;
	gap: var(--cfg-space-1);
	min-width: 0;
}
.cfg-optgroup__heading-accessory {
	display: flex;
	align-items: center;
	gap: var(--cfg-space-2);
	flex-shrink: 0;
}

.cfg-optgroup__title {
	padding: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-xl);
	font-weight: var(--cfg-weight-regular);
	line-height: var(--cfg-leading-snug);
	letter-spacing: var(--cfg-tracking-slight);
}

.cfg-optgroup__subtitle {
	margin: 0;
	color: var(--cfg-muted);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-6);
}

.cfg-optgroup__accessory-name {
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-xs);
	line-height: var(--cfg-space-5);
	white-space: nowrap;
}

.cfg-optgroup__accessory-chip {
	padding: 3px 9px;
	border-color: var(--cfg-accent);
	color: var(--cfg-accent);
	line-height: 1.6;
}

.cfg-optgroup__help {
	margin: 0;
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-6);
}

.cfg-optgroup__divider {
	margin: 0;
}

/* the help link renders as either <a> or <button> — keep type identical */
button.cfg-optgroup__help-link {
	font-size: inherit;
	line-height: inherit;
}

/* ---- Option group layouts ---- */

.cfg-optgroup__list {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-3);
	width: 100%;
}

.cfg-optgroup--grid-2 .cfg-optgroup__list,
.cfg-optgroup--grid-3 .cfg-optgroup__list {
	display: grid;
	gap: var(--cfg-space-3);
	align-items: stretch;
	grid-template-columns: repeat(var(--cfg-grid-cols), 1fr);
}
.cfg-optgroup--grid-2 .cfg-optgroup__list {
	--cfg-grid-cols: 2;
}
.cfg-optgroup--grid-3 .cfg-optgroup__list {
	--cfg-grid-cols: 3;
}

/* 1 per row — explicit alias of the default column list */
.cfg-optgroup--row .cfg-optgroup__list,
.cfg-optgroup--rows .cfg-optgroup__list {
	display: flex;
	flex-direction: column;
}

/* max: as many options per row as fit */
.cfg-optgroup--max .cfg-optgroup__list {
	display: flex;
	flex-flow: row wrap;
	gap: var(--cfg-space-3);
}
.cfg-optgroup--max .cfg-optgroup__list > * {
	width: auto;
	flex: 0 1 auto;
}

@media (max-width: 767px) {
	.cfg-optgroup {
		padding: var(--cfg-space-7) 0;
	}
}
@media (max-width: 560px) {
	.cfg-optgroup--grid-3 .cfg-optgroup__list {
		--cfg-grid-cols: 2;
	}
}
@media (max-width: 400px) {
	.cfg-optgroup--grid-2 .cfg-optgroup__list {
		--cfg-grid-cols: 1;
	}
}
@media (max-width: 380px) {
	.cfg-optgroup--grid-3 .cfg-optgroup__list {
		--cfg-grid-cols: 1;
	}
}

/* ---- Nested sub-groups (step 2 hub choice, step 3 bottle holder) -------- */

.cfg-group-with-children {
	display: flex;
	flex-direction: column;
}

.cfg-subgroup .cfg-optgroup {
	padding: 0;
}
.cfg-subgroup .cfg-optgroup__title {
	font-size: var(--cfg-text-base);
	letter-spacing: var(--cfg-tracking-slight);
}

/* ---- Option card -------------------------------------------------------- */

.cfg-option {
	display: flex;
	align-items: flex-start;
	gap: var(--cfg-space-4);
	width: 100%;
	padding: var(--cfg-space-4);
	background: var(--cfg-card-bg-selected);
	border: 1px solid var(--cfg-border); /* keeps size stable on select */
	border-radius: var(--cfg-radius);
	cursor: pointer;
	text-align: left;
	font-family: var(--cfg-font);
	transition:
		border-color var(--cfg-duration-fast) var(--cfg-ease),
		background-color var(--cfg-duration-fast) var(--cfg-ease);
}

.cfg-option.is-selected {
	border: 1px solid var(--cfg-accent);
	background-color: var(--cfg-c-accent-light);
}

.cfg-option.is-selected .cfg-badge--price {
	background: var(--cfg-accent);
	border-color: var(--cfg-accent);
	color: var(--base--dark, var(--cfg-text)); /* --base--dark comes from the host site */
}

.cfg-option.is-disabled {
	opacity: 0.45;
	cursor: not-allowed;
}

/* Mandatory / locked: selected, but grey so it reads as fixed, not chosen. */
.cfg-option.is-selected.is-locked {
	cursor: not-allowed;
	border: 1px solid var(--cfg-accent);
	background-color: var(--cfg-c-accent-light);
}
.cfg-option.is-selected.is-locked .cfg-option__check {
	display: none;
}
.cfg-option.is-selected.is-locked .cfg-badge--price {
	background: var(--cfg-c-grey-500);
	border-color: var(--cfg-c-grey-500);
	color: var(--cfg-c-grey-800);
}
.cfg-option.is-locked {
	cursor: default;
}
.cfg-option.is-locked .cfg-option__check--on {
	color: var(--cfg-c-grey-600);
}
.cfg-option__lock {
	flex-shrink: 0;
	color: var(--cfg-c-grey-600);
}

/* ---- direction ---- */
.cfg-option--vertical {
	flex-direction: row; /* wrapper stays row for checkbox + stack */
}
.cfg-option--vertical.cfg-option--image {
	flex-direction: column;
	gap: var(--cfg-space-2);
}
.cfg-option--horizontal {
	flex-direction: row;
	align-items: center;
}

/* ---- align ---- */
.cfg-option--center {
	text-align: center;
}
.cfg-option--center .cfg-option__label {
	align-items: center;
}
.cfg-option--center.cfg-option--vertical:not(.cfg-option--image) {
	justify-content: center;
}
.cfg-option--center .cfg-option__stack {
	align-items: center;
	width: 100%;
}

/* ---- inner blocks ---- */
.cfg-option__stack {
	height: 100%;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	flex: 1 0 0;
	min-width: 0;
}

.cfg-option__label {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-1);
	flex: 1 0 0;
	min-width: 0;
}
.cfg-option--vertical.cfg-option--image .cfg-option__label {
	flex: initial;
	width: 100%;
}

.cfg-option__name-row {
	display: flex;
	align-items: center;
	gap: var(--cfg-space-2);
	min-width: 0;
}
.cfg-option__name {
	color: var(--cfg-text);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-5);
	overflow-wrap: break-word;
}
.cfg-option__inner-image {
	width: 32px;
	height: 32px;
	object-fit: contain;
	flex-shrink: 0;
	display: block;
}

.cfg-option__sub {
	color: var(--cfg-muted);
	font-size: var(--cfg-text-sm);
	line-height: 18px;
}

.cfg-option__price-row {
	padding-top: var(--cfg-space-4);
}

/* ---- chips (price / tag / badge) — base lives in §02 ---- */
.cfg-option__chips {
	display: inline-flex;
	align-items: flex-start;
	gap: var(--cfg-space-1);
	flex-shrink: 0;
}

.cfg-option__price,
.cfg-option__tag {
	height: var(--cfg-chip-height);
	border-color: var(--cfg-muted);
}
.cfg-option__tag {
	border-color: var(--base--text-primary);
	background: var(--base--text-primary);
	color: var(--cfg-c-white);
}
.cfg-option__badge {
	height: var(--cfg-chip-height);
	border-color: var(--cfg-accent);
	color: var(--cfg-accent);
}

/* ---- checkbox indicator ---- */
.cfg-option__check {
	flex-shrink: 0;
	display: block;
}
.cfg-option__check--on {
	color: var(--cfg-accent);
}

/* ---- image variant ---- */
.cfg-option__thumb {
	position: relative;
	display: block;
	width: var(--cfg-thumb-size);
	height: var(--cfg-thumb-size);
	border-radius: var(--cfg-radius);
	background: var(--cfg-surface);
	overflow: hidden;
	flex-shrink: 0;
}
.cfg-option__thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.cfg-option__thumb-wrap {
	position: relative;
	display: block;
	flex-shrink: 0;
}

/* image + vertical: media row spreads thumb (+check) left, price right */
.cfg-option__media-row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--cfg-space-3);
	width: 100%;
}
.cfg-option__media {
	display: flex;
	align-items: flex-start;
	gap: var(--cfg-space-3);
}

/* ---- Colour swatch ------------------------------------------------------ */

.cfg-swatch {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--cfg-swatch-size);
	height: var(--cfg-swatch-size);
	padding: 2px;
	background: var(--cfg-surface);
	border: 0;
	border-radius: var(--cfg-radius-pill);
	cursor: pointer;
	transition:
		box-shadow var(--cfg-duration-fast) var(--cfg-ease),
		transform var(--cfg-duration-fast) var(--cfg-ease);
}

.cfg-swatch__dot {
	position: relative;
	display: block;
	overflow: hidden;
	width: var(--cfg-swatch-dot);
	height: var(--cfg-swatch-dot);
	border-radius: var(--cfg-radius-pill);
	background: var(--swatch, #ccc);
	box-shadow: var(--cfg-shadow-swatch);
}

/* Second CMS colour (swatch-2): lower-right half. Overlay avoids linear-gradient
   + hsla() commas, which invalidates the whole background. */
.cfg-swatch.is-split .cfg-swatch__dot-b {
	position: absolute;
	inset: 0;
	background: var(--swatch-2);
	clip-path: polygon(0 100%, 100% 0, 100% 100%);
}

/* Near-white colours still need a visible edge. */
.cfg-swatch__dot::after {
	content: '';
	display: block;
	width: 100%;
	height: 100%;
	border-radius: inherit;
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);
}

.cfg-swatch:hover:not(:disabled) {
	transform: scale(1.05);
}
.cfg-swatch.is-selected {
	box-shadow: 0 0 0 1px var(--cfg-accent);
}
.cfg-swatch.is-selected.is-locked {
	box-shadow: 0 0 0 1px var(--cfg-c-grey-600);
	cursor: default;
}
.cfg-swatch.is-disabled,
.cfg-swatch:disabled {
	opacity: 0.35;
	cursor: not-allowed;
}
.cfg-swatch:disabled:hover {
	transform: none;
}

.cfg-swatch-row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cfg-space-2);
	align-items: center;
}

/* Swatch grid inside an OptionGroup: follow the CMS layout (1 / 2 / 3 / max per row) */
.cfg-optgroup__list--swatch,
.cfg-optgroup--grid-2 .cfg-optgroup__list--swatch,
.cfg-optgroup--grid-3 .cfg-optgroup__list--swatch {
	display: grid;
	grid-template-columns: repeat(var(--cfg-swatch-cols), var(--cfg-swatch-size));
	gap: var(--cfg-space-2);
	justify-content: start;
}
.cfg-optgroup--row .cfg-optgroup__list--swatch,
.cfg-optgroup--rows .cfg-optgroup__list--swatch {
	--cfg-swatch-cols: 1;
}
.cfg-optgroup--grid-2 .cfg-optgroup__list--swatch {
	--cfg-swatch-cols: 2;
}
.cfg-optgroup--grid-3 .cfg-optgroup__list--swatch {
	--cfg-swatch-cols: 3;
}

/* under `max` layout swatches wrap freely instead of the fixed grid */
.cfg-optgroup--max .cfg-optgroup__list--swatch {
	display: flex;
	flex-flow: row wrap;
	gap: var(--cfg-space-2);
}

@media (max-width: 420px) {
	.cfg-optgroup__list--swatch,
	.cfg-optgroup--grid-2 .cfg-optgroup__list--swatch,
	.cfg-optgroup--grid-3 .cfg-optgroup__list--swatch {
		grid-template-columns: repeat(auto-fill, var(--cfg-swatch-size));
	}
}

.cfg-catgroup__list {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-3);
	width: 100%;
}

.cfg-cat {
	display: flex;
	flex-direction: column;
	width: 100%;
}

.cfg-cat__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--cfg-space-1);
	width: 100%;
	padding: var(--cfg-space-4);
	background: var(--cfg-surface);
	border: 1px solid var(--cfg-border);
	border-radius: var(--cfg-radius);
	color: inherit;
	font-family: var(--cfg-font);
	font-size: inherit;
	cursor: pointer;
	text-align: left;
	transition:
		border-color var(--cfg-duration-fast) var(--cfg-ease),
		background-color var(--cfg-duration-fast) var(--cfg-ease);
}

.cfg-cat.is-expanded .cfg-cat__header {
	align-items: flex-start;
	background: var(--cfg-c-accent-light);
	border-color: var(--cfg-accent);
	border-bottom-width: 0;
	border-radius: var(--cfg-radius) var(--cfg-radius) 0 0;
}

.cfg-cat__text {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-1);
	flex: 1 0 0;
	min-width: 0;
}

.cfg-cat__name {
	color: var(--cfg-text);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-5);
	overflow-wrap: break-word;
}

.cfg-cat__spec {
	color: var(--cfg-muted);
	font-size: var(--cfg-text-sm);
	line-height: 18px;
}

.cfg-cat__meta {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: var(--cfg-space-1);
	flex-shrink: 0;
}

.cfg-cat__color-name {
	color: var(--cfg-text);
	font-size: var(--cfg-text-sm);
	line-height: 18px;
	white-space: nowrap;
}

.cfg-cat__panel {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-5);
	padding: var(--cfg-space-4);
	background: color-mix(in srgb, var(--cfg-accent) 10%, transparent);
	border: 1px solid var(--cfg-accent);
	border-radius: 0 0 var(--cfg-radius) var(--cfg-radius);
}

.cfg-cat__extra .cfg-optgroup {
	padding: 0;
}

.cfg-cat__extra .cfg-optgroup__title {
	font-size: var(--cfg-text-base);
	letter-spacing: var(--cfg-tracking-slight);
}

.cfg-cat__swatches {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cfg-space-1);
	width: 100%;
}

.cfg-cat__swatches .cfg-swatch {
	width: var(--cfg-cat-swatch-dot);
	height: var(--cfg-cat-swatch-dot);
	padding: var(--cfg-cat-swatch-pad);
	border: 2px solid transparent;
	background: transparent;
	box-sizing: content-box;
}

.cfg-cat__swatches .cfg-swatch__dot {
	width: var(--cfg-cat-swatch-dot);
	height: var(--cfg-cat-swatch-dot);
}

.cfg-cat__swatches .cfg-swatch.is-selected {
	border-color: var(--cfg-accent);
	box-shadow: none;
}

.cfg-cat__swatches .cfg-swatch.is-selected.is-locked {
	border-color: var(--cfg-c-grey-600);
	box-shadow: none;
}

/* ---- Badge -------------------------------------------------------------- */
/* Shared chip on option cards. Price and tag types are visually identical
   today; the modifiers are the divergence point if they ever split. */

.cfg-badge {
	height: var(--cfg-badge-height);
	border-radius: var(--cfg-radius-xl);
}

/* ---- Tooltip (info dot + popover card) ---------------------------------- */

.cfg-tooltip {
	position: relative;
	display: inline-flex;
	z-index: 5;
}
.cfg-badge__icon {
	width: 12px;
	height: 12px;
	object-fit: contain;
	flex-shrink: 0;
	margin-left: -3px;
	margin-right: 3px;
}

.cfg-tooltip__dot {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	cursor: pointer;
	user-select: none;
}
.cfg-tooltip__dot::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: 999px;
	background: var(--cfg-secondary);
	opacity: 0.25;
	animation: cfg-blink 1.4s ease-in-out infinite;
}

.cfg-tooltip__dot-core {
	position: relative;
	width: 12px;
	height: 12px;
	border-radius: 999px;
	background: var(--cfg-secondary);
}

.cfg-tooltip.is-open .cfg-tooltip__dot::before {
	animation: none;
	opacity: 0.35;
}

@keyframes cfg-blink {
	0%,
	100% {
		opacity: 0.25;
	}
	50% {
		opacity: 0.6;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cfg-tooltip__dot::before {
		animation: none;
		opacity: 0.35;
	}
}

.cfg-tooltip.is-open .cfg-tooltip__dot,
.cfg-tooltip__dot:hover {
	border-color: var(--cfg-accent);
	color: var(--cfg-accent);
}

.cfg-tooltip__card {
	position: absolute;
	top: calc(100% + var(--cfg-space-2));
	left: -6px;
	z-index: var(--cfg-z-tooltip);
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-1);
	width: var(--cfg-tooltip-width);
	padding: var(--cfg-space-5) var(--cfg-space-4);
	background: var(--cfg-surface-muted);
	border-radius: var(--cfg-radius);
	box-shadow: var(--cfg-shadow-tooltip);
	text-align: left;
	white-space: normal;
	cursor: default;
}

@media (max-width: 480px) {
	.cfg-tooltip__card {
		width: 220px;
		max-width: 60vw;
		top: 0px;
		left: -30vw;
	}
}

.cfg-tooltip__title {
	color: var(--cfg-text);
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-regular);
	line-height: var(--cfg-space-5);
	padding-right: var(--cfg-space-6);
}

.cfg-tooltip__text {
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-regular);
	line-height: var(--cfg-space-5);
}

.cfg-tooltip__close {
	top: 6px;
	right: 6px;
	width: var(--cfg-space-6);
	height: var(--cfg-space-6);
	cursor: pointer;
}

/* tooltip anchored to a thumb */
.cfg-option__tooltip {
	position: absolute;
	top: -7px;
	right: -7px;
}

/* tooltip on text-only cards: inline dot after the option name */
.cfg-option__tooltip--inline {
	margin-left: 6px;
	vertical-align: -3px;
}
.cfg-option__tooltip--inline .cfg-tooltip__dot {
	width: var(--cfg-space-4);
	height: var(--cfg-space-4);
	font-size: var(--cfg-text-2xs);
}

/* tooltip on image cards: dot pinned to top-right corner of the thumb */
.cfg-option__tooltip--overlay {
	position: absolute;
	top: 4px;
	right: 4px;
	z-index: 1;
}
.cfg-option__media {
	position: relative;
}

/* ==========================================================================
   07. DATA DISPLAY
   ========================================================================== */

/* ---- Table cells -------------------------------------------------------- */

.cfg-table {
	--cfg-cell-pad-end: var(--cfg-space-4); /* cells inside a table reserve gutter */
	display: flex;
	flex-direction: column;
	width: 100%;
	font-family: var(--cfg-font);
}

.cfg-row {
	display: flex;
	align-items: stretch;
	width: 100%;
	border-bottom: 1px solid var(--cfg-c-grey-200);
}
.cfg-table--summary .cfg-row:last-child {
	border-bottom: none;
}
.cfg-row > .cfg-cell {
	flex: 1 0 0;
	min-width: 0;
}

.cfg-row--interactive {
	cursor: pointer;
}
.cfg-row--interactive:hover > .cfg-cell {
	background: var(--cfg-row-hover);
}

.cfg-cell {
	--cfg-cell-pad-y: var(--cfg-space-4); /* 52px row at 20px line-height */
	display: flex;
	align-items: center;
	min-width: 0;
	padding: var(--cfg-cell-pad-y) var(--cfg-cell-pad-end, 0) var(--cfg-cell-pad-y) 0;
	color: var(--cfg-cell-text);
	font-size: var(--cfg-text-sm);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-space-5);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* text-overflow does not apply to text directly inside a flex container,
   so the ellipsis lives on this inner block instead */
.cfg-cell__content {
	display: block;
	min-width: 0;
	max-width: 100%;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

/* ---- variant ---- */
.cfg-cell--header {
	color: var(--cfg-muted);
	font-weight: var(--cfg-weight-bold);
}
.cfg-cell--secondary {
	color: var(--cfg-c-grey-800);
}

/* ---- size ---- */
.cfg-cell--small {
	--cfg-cell-pad-y: var(--cfg-space-3);
}
.cfg-cell--large {
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-bold);
}

/* ---- modifiers ---- */
.cfg-cell--right {
	justify-content: flex-end;
	text-align: right;
}
.cfg-cell--bg {
	background: var(--cfg-row-hover);
}

/* ---- Summary table ------------------------------------------------------ */

.cfg-table--summary {
	min-width: var(--cfg-summary-min-w);
}
.cfg-table--summary .cfg-row > .cfg-cell:nth-child(1) {
	max-width: 30%;
	flex: stretch;
	padding-left: 0.5rem;
}
.cfg-table--summary .cfg-row > .cfg-cell:nth-child(2) {
	flex: stretch;
}
.cfg-table--summary .cfg-row > .cfg-cell:nth-child(3) {
	min-width: 56px;
	padding-right: 0.5rem;
}

.cfg-table--compare .cfg-row > .cfg-cell {
	flex: 1 1 0;
	min-width: 0;
}

@media (max-width: 480px) {
	.cfg-table--summary {
		min-width: 0;
	}
	.cfg-table--summary .cfg-row > .cfg-cell:nth-child(1) {
		flex-basis: var(--cfg-summary-label-w-sm);
	}
}

/* ---- Summary step ------------------------------------------------------- */

.cfg-summary {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-1);
	padding: var(--cfg-space-9) 0;
}

.cfg-summary-resume {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-4);
}

.cfg-summary__title {
	margin: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-3xl);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-leading-snug);
}

.cfg-summary__image {
	width: 220px;
	max-width: 100%;
}
.cfg-summary__image img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
}

.cfg-summary__table {
	overflow: hidden;
}
.cfg-summary__table .cfg-table--summary {
	min-width: 0;
}

.cfg-summary__order {
	display: flex;
	gap: var(--cfg-space-2);
	align-items: stretch;
	padding-top: var(--cfg-space-2);
}

.cfg-summary__deposit {
	margin: var(--cfg-space-3) 0 0;
	padding: var(--cfg-space-4);
	list-style: none;
	color: var(--base--text-secondary-darker);
	font-size: var(--cfg-text-sm);
	line-height: var(--cfg-leading-normal);
	cursor: default;
	background-color: var(--cfg-c-accent-light);
	border: 1px solid var(--cfg-accent);
	border-radius: var(--cfg-radius);
}

.cfg-summary__deposit li {
	position: relative;
	margin: 0 0 var(--cfg-space-2);
	padding-left: 2.25em;
	max-width: 32rem;
}

.cfg-summary__deposit li:last-child {
	margin-bottom: 0;
}

.cfg-summary__deposit li::before {
	background: var(--base--focus);
	border-radius: 100px;
	height: 1.5rem;
	width: 1.5rem;
	content: '✓';
	position: absolute;
	left: 0;
	top: 0;
	color: var(--base--text-primary);
	font-size: 1.15rem;
	line-height: 1.6rem;
	font-weight: var(--cfg-weight-semibold);
	text-align: center;
}

.cfg-summary__deposit strong {
	font-weight: var(--cfg-weight-semibold);
}

.cfg-summary__deposit strong::after {
	content: ': ';
}

.cfg-summary__qty select {
	appearance: none;
	padding: 0 var(--cfg-space-7) 0 var(--cfg-space-3);
	color: var(--cfg-muted);
	font-family: var(--cfg-font);
	font-size: var(--cfg-text-md);
	font-weight: var(--cfg-weight-medium);
	cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg width=%2720%27 height=%2720%27 viewBox=%270 0 20 20%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M5 7.5l5 5 5-5%27 stroke=%27%2371717a%27 stroke-width=%271.6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--cfg-space-3) center;
}

/* Purchase Description Rich Text Styling */
.cfg-summary__purchase-desc {
	font-size: var(--cfg-text-base);
	line-height: 1.6;
	color: var(--cfg-c-grey-800);
}

.cfg-summary__purchase-desc p {
	margin-bottom: 8px;
}

.cfg-summary__purchase-desc ul {
	list-style-type: disc;
	padding-left: 20px;
	margin: 0 0 8px 0;
}

.cfg-summary__purchase-desc li {
	margin-bottom: 6px;
}

.cfg-summary__product-total {
	display: flex;
	flex: 1 0 0;
	min-width: 0;
	align-items: center;
	justify-content: space-between;
	padding: 0 17px;
}
.cfg-summary__product-total span {
	color: var(--cfg-muted);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-5);
}
.cfg-summary__product-total strong {
	font-size: var(--cfg-text-lg);
	font-weight: var(--cfg-weight-semibold);
	line-height: var(--cfg-space-5);
}

.cfg-summary__divider {
	margin: var(--cfg-space-2) 0 0;
}

.cfg-summary__cards {
	display: flex;
	gap: var(--cfg-space-4);
	align-items: stretch;
}

@media (max-width: 560px) {
	.cfg-summary__cards {
		flex-direction: column;
	}
}

/* ---- Info card ---------------------------------------------------------- */

.cfg-card {
	display: flex;
	flex: 1 0 0;
	min-width: 0;
	flex-direction: column;
	justify-content: space-between;
	gap: var(--cfg-space-2);
	padding: var(--cfg-space-5) var(--cfg-space-4);
	border: 1px solid var(--cfg-border);
	border-radius: var(--cfg-radius);
	box-shadow: var(--cfg-shadow-card-strong);
	font-size: var(--cfg-text-base);
}
.cfg-card:hover {
	background-color: var(--cfg-c-accent-light);
	border-color: var(--cfg-accent);
}
.cfg-card__title {
	margin: 0 0 8px 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-md);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-space-5);
}
.cfg-card__text {
	margin: 0;
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-5);
}
.cfg-card__link {
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-5);
}

/* ==========================================================================
   08. OVERLAYS
   ========================================================================== */

/* ---- Modal shell (save / share / guide / lease) ------------------------- */

.cfg-modal {
	position: fixed;
	inset: 0;
	z-index: var(--cfg-z-modal);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--cfg-space-6);
	background: var(--cfg-scrim);
	font-family: var(--cfg-font);
}

.cfg-modal__card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-8);
	width: min(var(--cfg-modal-width), 100%);
	max-height: 70vh;
	overflow: auto;
	padding: var(--cfg-space-10);
	background: var(--cfg-surface);
	border: 1px solid var(--cfg-modal-border);
	border-radius: var(--cfg-radius-modal);
	align-items: start;
}

.cfg-modal__close {
	top: var(--cfg-space-3);
	right: var(--cfg-space-3);
	padding: var(--cfg-space-2);
}

.cfg-modal__content {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-5);
	width: 100%;
}

.cfg-modal__header {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-2);
}

.cfg-modal__title {
	margin: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-2xl);
	font-weight: var(--cfg-weight-medium);
	line-height: 26.25px;
	letter-spacing: var(--cfg-tracking-slight);
}

.cfg-modal__subtitle {
	margin: 0;
	color: var(--cfg-text-soft);
	font-size: var(--cfg-text-md);
	line-height: var(--cfg-leading-normal);
	letter-spacing: var(--cfg-tracking-tight);
}

.cfg-modal__note {
	margin: 0;
	color: var(--cfg-muted);
	font-size: var(--cfg-text-sm);
	line-height: var(--cfg-leading-normal);
}
.cfg-modal__note p {
	margin: 0 0 0.5em;
}
.cfg-modal__note p:last-child {
	margin-bottom: 0;
}
.cfg-modal__note figure {
	margin: 12px 0;
}
.cfg-modal__note img {
	display: block;
	max-width: 100%;
	height: auto;
}

/* URL field: looks like an input, acts as a copy button */
.cfg-modal__url {
	display: flex;
	align-items: center;
	gap: var(--cfg-space-2);
	width: 100%;
	min-height: 36px;
	padding: 10px var(--cfg-space-3);
	background: var(--cfg-surface);
	border: 1px solid var(--cfg-modal-input-border);
	border-radius: var(--cfg-radius-sm);
	color: var(--cfg-text-quiet);
	font-size: var(--cfg-text-sm);
	line-height: var(--cfg-space-5);
	text-align: left;
}
.cfg-modal__url-text {
	flex: 1 0 0;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.cfg-modal__url-icon {
	display: flex;
	align-items: center;
	flex-shrink: 0;
	color: var(--cfg-text);
}
.cfg-modal__copied {
	color: var(--cfg-accent);
	font-size: 13px;
	line-height: 1;
}

.cfg-modal__social-title {
	margin: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-md);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-leading-normal);
	letter-spacing: var(--cfg-tracking-tight);
}

.cfg-modal__socials {
	display: flex;
	gap: var(--cfg-space-7);
	align-items: center;
}

.cfg-modal__social {
	display: flex;
	color: var(--cfg-text);
	border-radius: var(--cfg-radius-sm);
	transition:
		color var(--cfg-duration-fast) var(--cfg-ease),
		transform var(--cfg-duration-fast) var(--cfg-ease);
}
.cfg-modal__social:hover {
	color: var(--cfg-accent);
	transform: scale(1.06);
}

@media (max-width: 560px) {
	.cfg-modal__card {
		padding: var(--cfg-space-8) var(--cfg-space-6);
		gap: 28px;
	}
	.cfg-modal__socials {
		gap: var(--cfg-space-6);
	}
}

/* ---- Form fields -------------------------------------------------------- */

.cfg-field {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-1);
	flex: 1 0 0;
	min-width: 0;
	width: 100%;
}

.cfg-field__label {
	display: flex;
	gap: var(--cfg-space-1);
	color: var(--cfg-cell-text);
	font-size: var(--cfg-text-sm);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-space-5);
}

.cfg-field__required {
	color: var(--cfg-danger);
}

.cfg-field__input {
	max-width: 100%;
	max-height: var(--cfg-field-height);
	padding: 10px var(--cfg-space-3);
	background: var(--cfg-surface);
	border: 1px solid var(--cfg-modal-input-border);
	border-radius: var(--cfg-radius-sm);
	color: var(--cfg-text);
	font-family: inherit;
	font-size: var(--cfg-text-sm);
	line-height: var(--cfg-space-5);
}
.cfg-field__input::placeholder {
	color: var(--cfg-text-quiet);
}

select.cfg-field__input {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg width=%2720%27 height=%2720%27 viewBox=%270 0 20 20%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M5 7.5l5 5 5-5%27 stroke=%27%2371717a%27 stroke-width=%271.6%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--cfg-space-3) center;
	padding-right: var(--cfg-space-8);
	cursor: pointer;
}

/* ---- Lease application form --------------------------------------------- */

.cfg-leaseinfo {
	gap: var(--cfg-space-6);
	width: min(420px, 100%);
}
.cfg-leaseinfo__stats {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--cfg-space-6);
	width: 100%;
}
.cfg-leaseinfo__stat {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-1);
	min-width: 0;
}
.cfg-leaseinfo__kicker {
	margin: 0;
	color: var(--cfg-muted);
	font-size: var(--cfg-text-sm);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-leading-normal);
}
.cfg-leaseinfo__value {
	margin: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-2xl);
	font-weight: var(--cfg-weight-medium);
	line-height: 1.2;
}
.cfg-leaseinfo__rule {
	width: 100%;
	margin: 0;
	border: 0;
	border-top: 1px solid var(--cfg-nav-border);
}
.cfg-table--plain .cfg-row {
	border-bottom: 0;
}
.cfg-table--plain .cfg-cell {
	--cfg-cell-pad-y: var(--cfg-space-2);
}
.cfg-leaseinfo__note {
	margin: 0;
	color: var(--cfg-muted);
	font-size: var(--cfg-text-sm);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-leading-normal);
}

.cfg-lease__form {
	display: flex;
	flex-direction: column;
	gap: var(--cfg-space-5);
	width: 100%;
}

.cfg-lease__row {
	display: flex;
	gap: var(--cfg-space-4);
	width: 100%;
}

.cfg-lease__success {
	margin: 0;
	color: var(--cfg-text);
	font-size: var(--cfg-text-base);
	line-height: var(--cfg-space-6);
}

.cfg-lease__error {
	margin: 0;
	color: var(--cfg-danger);
	font-size: var(--cfg-text-sm);
	line-height: var(--cfg-space-5);
}

@media (max-width: 560px) {
	.cfg-lease__row {
		flex-direction: column;
		gap: var(--cfg-space-5);
	}
}

.cfg-checkfield {
	display: flex;
	font-size: var(--cfg-text-sm);
}

/* ==========================================================================
   09. BUTTONS
   variant: primary | secondary · kind: button | link · optional chevrons
   ========================================================================== */

.cfg-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--cfg-space-2);
	border-radius: var(--cfg-radius-xl);
	font-family: var(--cfg-font);
	font-size: var(--cfg-text-base);
	font-weight: var(--cfg-weight-medium);
	line-height: var(--cfg-leading-normal);
	white-space: nowrap;
	cursor: pointer;
	text-decoration: none;
	transition:
		filter var(--cfg-duration-fast) var(--cfg-ease),
		color var(--cfg-duration-fast) var(--cfg-ease),
		border-color var(--cfg-duration-fast) var(--cfg-ease);
}

/* ---- kind: button (boxed) ---- */
.cfg-btn--button {
	padding: 13px 25px;
	border: 1px solid transparent;
}
.cfg-btn--button.cfg-btn--icon-right {
	padding-right: 15px;
	padding-left: 21px;
}
.cfg-btn--button.cfg-btn--icon-left {
	padding-left: 13px;
	padding-right: 23px;
}

.cfg-btn--primary.cfg-btn--button {
	color: var(--cfg-accent);
	background: var(--cfg-c-ink);
	background: var(--cfg-c-ink);
}
.cfg-btn--primary.cfg-btn--button:hover:not(:disabled) {
	filter: brightness(0.94);
}
.cfg-btn--primary.cfg-btn--button:disabled,
.cfg-btn--primary.cfg-btn--button.is-disabled {
	background: var(--cfg-border);
	border-color: var(--cfg-border);
	color: var(--cfg-muted);
	opacity: 1;
}

.cfg-btn--secondary.cfg-btn--button {
	background: none;
	border-color: var(--cfg-text-quiet);
	color: var(--cfg-text-quiet);
}
.cfg-btn--secondary.cfg-btn--button:hover:not(:disabled) {
	border-color: var(--cfg-text);
	color: var(--cfg-text);
}

/* ---- kind: link (no box) ---- */
.cfg-btn--primary.cfg-btn--link {
	color: var(--cfg-text-action);
	font-size: var(--cfg-text-base);
}
.cfg-btn--primary.cfg-btn--link:hover:not(:disabled) {
	filter: brightness(0.85);
}
.cfg-btn--secondary.cfg-btn--link {
	color: var(--cfg-text-quiet);
}
.cfg-btn--secondary.cfg-btn--link:hover:not(:disabled) {
	color: var(--cfg-text);
}

/* ---- shared ---- */
.cfg-btn__icon {
	display: block;
	flex-shrink: 0;
}
.cfg-btn:disabled,
.cfg-btn.is-disabled {
	opacity: 0.45;
	cursor: not-allowed;
}

/* ---- In-context overrides ----
   These spots use <Button kind="link"> for behaviour but keep their own
   designed size/weight (regular, not semibold). */

.cfg-secnav .cfg-btn {
	font-size: var(--cfg-text-md);
	font-weight: var(--cfg-weight-regular);
	gap: 6px;
}
.cfg-secnav__actions .cfg-btn__label {
	font-size: var(--cfg-text-base);
}
.cfg-secnav .cfg-btn--secondary.cfg-btn--link:hover:not(:disabled) {
	color: var(--cfg-text);
}
.cfg-secnav__bar .cfg-btn--primary.cfg-btn--link:hover:not(:disabled) {
	filter: none;
	text-decoration: underline;
}

.cfg-optgroup .cfg-btn--link,
.cfg-summary .cfg-btn--link,
.cfg-card .cfg-btn--link {
	font-weight: var(--cfg-weight-regular);
}

.cfg-group-split {
	display: flex;
	flex-direction: column;
}
.cfg-group-split .cfg-optgroup:not(:first-child) {
	padding-top: 0;
}
.cfg-group-split fieldset {
	padding-bottom: var(--cfg-space-3);
}
.cfg-card .cfg-btn--link {
	justify-content: flex-start;
}

@media (max-width: 640px) {
	.cfg-secnav .cfg-btn {
		font-size: var(--cfg-text-base);
	}
	.cfg-btn--secondary .cfg-btn__label {
		display: none;
	}
}

/* ==========================================================================
   10. MOTION
   ========================================================================== */

@keyframes cfg-stack-in-up {
	from {
		transform: translateY(100%);
	}
	to {
		transform: translateY(0);
	}
}

@keyframes cfg-stack-out-down {
	from {
		transform: translateY(0);
	}
	to {
		transform: translateY(100%);
	}
}

@keyframes cfg-pulse {
	0%,
	100% {
		opacity: 1;
		transform: scale(1);
	}
	50% {
		opacity: 0.35;
		transform: scale(0.92);
	}
}

@media (prefers-reduced-motion: reduce) {
	.cfg-root {
		--cfg-duration-slide-in: 1ms;
		--cfg-duration-slide-out: 1ms;
	}
	.cfg-preview__slide--enter-up,
	.cfg-preview__slide--exit-down {
		animation-duration: 1ms;
	}
	.cfg-loading__logo,
	.cfg-loading__dot {
		animation: none;
		opacity: 0.7;
	}
}

/* ==========================================================================
   11. LOADING
   Full viewport, small pulsing logo centered. The logo URL comes from the
   brand's `logo` key (theme.ts); the dot is the no-logo fallback.
   ========================================================================== */

.cfg-loading {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100vw;
	height: 100vh;
	height: 100dvh;
	background: var(--cfg-surface);
}

.cfg-loading__logo {
	width: 96px;
	max-width: 40vw;
	height: auto;
	animation: cfg-pulse var(--cfg-duration-pulse) ease-in-out infinite;
}

.cfg-loading__dot {
	width: 14px;
	height: 14px;
	border-radius: var(--cfg-radius-pill);
	background: var(--cfg-text);
	animation: cfg-pulse var(--cfg-duration-pulse) ease-in-out infinite;
}

