/**
 * main-skins — theme-level CSS.
 *
 * Bundled at theme root and enqueued unconditionally via inc/enqueue.php.
 * Scope: branding chrome that isn't owned by an individual block —
 *   - header (bst-header)
 *   - footer (bst-footer)
 *   - logo (bst-logo)
 *   - shared button/icon-button primitives (bst-btn, bst-icon-btn)
 *
 * Block-specific styles live in src/blocks/<name>/style-index.css and
 * are enqueued by register_block_type() only when the block is present.
 *
 * All design tokens come from theme.json — no hardcoded colors, fonts,
 * or radii. The values referenced via var(--wp--…) are defined in the
 * settings section of theme.json (resolved to CSS custom properties by
 * WordPress).
 */

/* ──────────── Container ──────────── */

.bst-container {
	box-sizing: border-box; /* BST-83 fix: max-width = total width incl. padding (matches design spec left=80px) */
	max-width: 80rem; /* matches theme.json settings.layout.wideSize = 1280px */
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--50);
}

/* ──────────── Logo (shared) ──────────── */

.bst-logo {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.bst-logo:hover {
	color: var(--wp--preset--color--accent-1);
}

.bst-logo-mark {
	width: 28px;
	height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.bst-logo-mark img {
	display: block;
	width: 28px;
	height: 28px;
}

/* ──────────── Header ──────────── */

.bst-header {
	background: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	position: relative;
	z-index: 50;
}

.bst-header-inner {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--50);
	padding-block: 16px;
}

.bst-nav {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--50);
	flex: 1;
	margin-left: var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.bst-nav a {
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	padding: 8px 0;
	transition: color 200ms cubic-bezier(0.4, 0, 0.2, 1);
}

.bst-nav a:hover,
.bst-nav a.active,
.bst-nav-collections-trigger:hover,
.bst-nav-collections-trigger.active,
.bst-nav-collections.is-open .bst-nav-collections-trigger {
	color: var(--wp--preset--color--accent-1);
}

/* BST-62: Collections dropdown — trigger button styled like the other
   nav links, dropdown panel anchored below it. */
.bst-nav-collections {
	position: relative;
}
.bst-nav-collections-trigger {
	background: transparent;
	border: 0;
	padding: 8px 0;
	color: var(--wp--preset--color--contrast-muted);
	font: inherit;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	transition: color 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
.bst-nav-caret {
	font-size: 10px;
	transition: transform 200ms;
}
.bst-nav-collections.is-open .bst-nav-caret {
	transform: rotate(180deg);
}
.bst-nav-collections-menu {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	min-width: 280px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
	padding: 6px 0;
	z-index: 100;
	display: flex;
	flex-direction: column;
}
.bst-nav-collections-menu[hidden] {
	display: none;
}
.bst-nav-collections-item {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 8px 14px !important;
	color: var(--wp--preset--color--contrast-muted) !important;
	text-decoration: none;
	text-transform: none;
	letter-spacing: 0;
	font-size: 13px;
	font-family: var(--wp--preset--font-family--body, inherit);
	font-weight: 400;
	transition: background 150ms, color 150ms;
}
.bst-nav-collections-item:hover {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast) !important;
}
.bst-nav-collections-name {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.bst-nav-collections-count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
}
.bst-nav-collections-all {
	display: block !important;
	padding: 10px 14px !important;
	margin-top: 6px;
	border-top: 1px solid var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--accent-1) !important;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 700;
	text-decoration: none;
}
.bst-nav-collections-all:hover {
	background: var(--wp--preset--color--base);
}

.bst-header-actions {
	display: flex;
	align-items: center;
	gap: 10px;
}

/* Search */

.bst-search {
	box-sizing: border-box; /* height: 36px = total including border */
	display: inline-flex;
	align-items: center;
	gap: 8px;
	height: 36px;
	padding: 0 12px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	font-size: 13px;
	min-width: 220px;
}

.bst-search:focus-within {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--contrast);
}

.bst-search input {
	background: transparent;
	border: 0;
	outline: 0;
	color: inherit;
	font-family: inherit;
	font-size: inherit;
	flex: 1;
	min-width: 0;
	padding: 0;
}

.bst-search input::placeholder {
	color: var(--wp--preset--color--contrast-faint);
}

.bst-search-icon {
	flex-shrink: 0;
	color: var(--wp--preset--color--contrast-faint);
}

/* Icon buttons */

.bst-icon-btn {
	box-sizing: border-box; /* border included in 40×40 total */
	width: 40px; /* BST-83: design spec = 40px × 40px total (border-box) */
	height: 40px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	transition: color 200ms, border-color 200ms;
	position: relative;
}

.bst-icon-btn:hover {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}

.bst-icon-btn-sm {
	width: 32px;
	height: 32px;
}

.bst-icon-btn .badge {
	position: absolute;
	top: -6px;
	right: -6px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border-radius: var(--wp--custom--border--radius--pill);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	font-weight: 700;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* BST-97: .bst-header-signin ghost-link removed — single solid CTA is used instead. */

/* Buttons */

.bst-btn {
	box-sizing: border-box; /* BST-83: height = total including border */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	height: 44px;
	padding-inline: 18px;
	border-radius: var(--wp--custom--border--radius--sm);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background 200ms, color 200ms, border-color 200ms;
	border: 1px solid transparent;
}

.bst-btn-sm {
	height: 40px;
	padding-inline: 14px;
	font-size: 12px;
}

.bst-btn-primary {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
}

.bst-btn-primary:hover {
	background: var(--wp--preset--color--accent-1-hover, var(--wp--preset--color--accent-1));
	filter: brightness(1.1);
}

.bst-btn-ghost {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--neutral-strong);
}

.bst-btn-ghost:hover {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
}

/* ──────────── Footer ──────────── */

.bst-footer {
	background: var(--wp--preset--color--base);
	border-top: 1px solid var(--wp--preset--color--neutral);
	padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--contrast-muted);
	font-size: 14px;
}

.bst-footer-grid {
	display: grid;
	grid-template-columns: 1.4fr repeat(3, 1fr);
	gap: var(--wp--preset--spacing--50);
	padding-bottom: var(--wp--preset--spacing--50);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-footer-brand .bst-logo {
	margin-bottom: 14px;
}

.bst-footer-tagline {
	font-size: 13px;
	line-height: 1.6;
	max-width: 280px;
	margin: 0 0 14px;
}

.bst-footer-social {
	display: flex;
	gap: 8px;
}

.bst-footer-col h4,
.bst-footer-col-label {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.12em;
	/* UX-026 v0.1.15: footer col nav labels — use muted (6.4:1) not faint (3.1:1).
	   UX-028 v0.1.15 amendment: changed from <h4> to <p class=bst-footer-col-label>
	   to fix heading-order violation (h2 → h4 without h3). */
	color: var(--wp--preset--color--contrast-muted);
	margin: 0 0 14px;
	font-weight: 600;
}

.bst-footer-links {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.bst-footer-links a {
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	transition: color 200ms;
}

.bst-footer-links a:hover {
	color: var(--wp--preset--color--accent-1);
}

.bst-footer-bottom {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--50);
	padding-top: var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	flex-wrap: wrap;
}

.bst-footer-version {
	letter-spacing: 0.06em;
}

/* BST-193: legal-entity disclosure line — muted, sits below .bst-footer-bottom */
.bst-footer-legal {
	margin: var(--wp--preset--spacing--30) 0 0;
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
	font-family: var(--wp--preset--font-family--body);
	font-size: 11px;
	line-height: 1.6;
	color: var(--wp--preset--color--contrast-faint);
	max-width: 640px;
}

/* ──────────── Trust strip (inline copy used inside footer.html) ──────────── */
/* Block-scoped copy lives in src/blocks/footer-trust-strip/style-index.css —
 * the same rules also need to apply to the inline copy inside parts/footer.html,
 * so they're duplicated here at the .bst-trust-strip level (no block wrapper).
 */

.bst-footer .bst-trust-strip {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.bst-footer .bst-trust-icon {
	height: 30px;
	padding: 0 10px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: #ffffff;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: #1a1a1a;
}

.bst-footer .bst-trust-icon svg {
	flex-shrink: 0;
	display: block;
}

.bst-footer .bst-trust-label {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.04em;
	font-family: var(--wp--preset--font-family--body);
}

/* ──────────── Body resets ──────────── */
/* theme.json controls the bulk; this fixes a few WC defaults that leak through. */

html, body {
	min-height: 100%;
}

/* ──────────── Global focus visibility (WCAG 2.4.7) ──────────── */
/* A single universal rule replaces per-component outlines. accent-1 gives */
/* sufficient contrast on both dark base (#0d100c) and raised (#1d211a) surfaces. */
:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
	border-radius: 4px;
}

/* WooCommerce notices look hideous by default in dark theme — quick neutralisation */
.woocommerce-notices-wrapper {
	max-width: 80rem;
	margin: 1rem auto;
	padding-inline: var(--wp--preset--spacing--50);
}

/* ════════════════════════════════════════════════════════════════════════════
   BST-166: WooCommerce / WC-Blocks notices in the BST tactical design.
   Both the classic WC notices (.woocommerce-message/-error/-info, shown by the
   shortcode cart/account flows) AND the WC-Blocks notice banner
   (.wc-block-components-notice-banner, shown by the Blocks cart/checkout on
   coupon add/remove + validation errors) ship un-themed default styling that
   looks broken on the dark graphite surface. Restyle to graphite cards with a
   mono label, accent-1 success rail, and a warning-red error rail.
   ════════════════════════════════════════════════════════════════════════════ */
.woocommerce-message,
.woocommerce-error,
.woocommerce-info,
.wc-block-components-notice-banner {
	background: var(--wp--preset--color--base-elevated) !important;
	border: 1px solid var(--wp--preset--color--neutral) !important;
	border-left-width: 3px !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	color: var(--wp--preset--color--contrast) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 13px !important;
	padding: 12px 16px !important;
	margin: 0 0 12px !important;
	box-shadow: none !important;
	list-style: none !important;
}
/* Success (coupon applied, etc.) — accent-1 lime rail */
.woocommerce-message,
.wc-block-components-notice-banner.is-success {
	border-left-color: var(--wp--preset--color--accent-1) !important;
}
/* Info (coupon removed, generic notices) — muted rail */
.woocommerce-info,
.wc-block-components-notice-banner.is-info {
	border-left-color: var(--wp--preset--color--contrast-muted) !important;
}
/* Error (invalid coupon, validation) — warning red rail */
.woocommerce-error,
.wc-block-components-notice-banner.is-error {
	border-left-color: #ff6b6b !important;
}
/* Banner icon + content alignment */
.wc-block-components-notice-banner .wc-block-components-notice-banner__content {
	color: var(--wp--preset--color--contrast) !important;
	font-size: 13px !important;
}
.wc-block-components-notice-banner > svg {
	fill: currentColor !important;
}
.wc-block-components-notice-banner.is-success > svg { fill: var(--wp--preset--color--accent-1) !important; }
.wc-block-components-notice-banner.is-error > svg   { fill: #ff6b6b !important; }
/* Dismiss button */
.wc-block-components-notice-banner .wc-block-components-button.wc-block-components-notice-banner__dismiss {
	color: var(--wp--preset--color--contrast-faint) !important;
}
/* Classic-notice action links (e.g. "View cart") as ghost buttons */
.woocommerce-message a.button,
.woocommerce-error a.button,
.woocommerce-info a.button {
	background: transparent !important;
	border: 1px solid var(--wp--preset--color--neutral-strong) !important;
	color: var(--wp--preset--color--contrast) !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	font-family: var(--wp--preset--font-family--mono) !important;
	font-size: 11px !important;
	text-transform: uppercase !important;
	letter-spacing: 0.06em !important;
	padding: 6px 12px !important;
}

/* Hide deprecated WP title elements that double up against our custom header */
.wp-block-site-title { display: none; }

/* Header/footer chrome — desktop default (mobile rules at bottom of file, v0.1.10) */

/* Hide mobile-only chrome by default (desktop ≥ 880px) */
.bst-hamburger,
.bst-nav-toggle,
.bst-mobile-drawer,
.bst-drawer-backdrop,
.bst-search-mobile,
.bst-mobile-nav,
.bst-mobile-drawer-head,
.bst-mobile-drawer-footer,
.bst-show-filters-btn,
.bst-filters-toggle,
.bst-filters-backdrop,
.bst-mobile-filters-head,
.bst-mobile-filters-apply { display: none; }

/* ──────────── Homepage (front-page.html) ──────────── */

/* Hero */
.bst-hero {
	position: relative;
	overflow: hidden;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse 60% 40% at 80% 30%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.14)), transparent 60%),
		radial-gradient(ellipse 50% 60% at 20% 80%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.14)), transparent 60%);
	pointer-events: none;
	z-index: 0;
}

.bst-hero > .wp-block-group {
	position: relative;
	z-index: 1;
}

.bst-hero-grid {
	gap: var(--wp--preset--spacing--60);
	align-items: center;
}

.bst-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 12px;
	border-radius: var(--wp--custom--border--radius--pill);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: var(--wp--preset--spacing--40);
}

.bst-eyebrow .pulse {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent-1);
	box-shadow: 0 0 0 0 var(--wp--preset--color--accent-1);
	animation: bst-pulse 1.6s infinite;
}

@keyframes bst-pulse {
	0%   { box-shadow: 0 0 0 0 var(--wp--preset--color--accent-1); }
	70%  { box-shadow: 0 0 0 6px transparent; }
	100% { box-shadow: 0 0 0 0 transparent; }
}

.bst-hero-h1 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(40px, 6vw, 76px);
	font-weight: 700;
	letter-spacing: -0.03em;
	line-height: 1.0;
	margin: 0 0 var(--wp--preset--spacing--40);
}

.bst-hero-h1 .accent {
	color: var(--wp--preset--color--accent-1);
	font-style: normal;
	position: relative;
}

.bst-hero-h1 .accent::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0.08em;
	height: 0.08em;
	background: var(--wp--preset--color--accent-1);
	opacity: .25;
}

.bst-hero-lead {
	font-size: 18px;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.6;
	max-width: 560px;
	margin-bottom: var(--wp--preset--spacing--50);
}

.bst-hero-cta {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}

/* Hero spotlight card */
.bst-spotlight {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--lg);
	padding: var(--wp--preset--spacing--40);
	box-shadow: var(--wp--custom--shadow--md);
	position: relative;
}

.bst-spotlight-tag {
	position: absolute;
	top: -12px;
	left: var(--wp--preset--spacing--40);
	padding: 4px 10px;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--rarity-covert);
	color: white;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-weight: 700;
}

.bst-spotlight-img {
	aspect-ratio: 4/3;
	border-radius: var(--wp--custom--border--radius--md);
	overflow: hidden;
	margin-bottom: var(--wp--preset--spacing--40);
	background:
		radial-gradient(circle at 30% 40%, var(--wp--preset--color--rarity-covert), transparent 55%),
		linear-gradient(135deg, var(--wp--preset--color--base-raised), var(--wp--preset--color--base));
	position: relative;
}

.bst-spotlight-img::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: repeating-linear-gradient(
		135deg, transparent 0 18px, rgba(255, 255, 255, .02) 18px 36px);
}

.bst-spotlight-nm {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 4px;
}

.bst-spotlight-h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.1;
	margin: 0 0 4px;
}

/* UX-028 v0.1.15: spotlight sub-text was <small> inside <h3> (invalid heading use).
   Now a <p> styled to match the old <small> appearance. */
.bst-spotlight-sub {
	font-size: 14px;
	font-weight: 500;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0;
	margin: 0 0 var(--wp--preset--spacing--40);
	line-height: 1.4;
}

.bst-spotlight-row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
	gap: 12px;
}

.bst-spotlight-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	/* UX-026 v0.1.15: "PRICE" label on featured product card — meaningful info */
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 4px;
}

.bst-spotlight-price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast);
}

/* ──────────── v0.1.17: Sprint B — hp-hero design-parity classes ──────────── */

.hp-hero-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--wp--preset--spacing--60);
	align-items: center;
}

@media (min-width: 901px) {
	.hp-hero-grid {
		grid-template-columns: 1.1fr 1fr;
	}
}

.hp-hero-col--aside {
	/* Hidden on mobile — desktop-only column; prevents layout oscillation (CLS).
	   Shown only inside the two-column grid breakpoint (≥901px). */
	display: none;
	min-width: 0;
}

@media (min-width: 901px) {
	.hp-hero-col--aside {
		display: block;
	}
}

.hp-eyebrow {
	/* Inherits from .bst-eyebrow above; class kept for parity selector hooks. */
}

.hp-h1 {
	/* Reserve space for the final 2-line wrapped state on mobile
	 * (font-size clamp min ~40px × line-height 1.0 × 2 lines = 2.0em).
	 * 2.2em adds a small buffer. Without this the typewriter animation
	 * causes H1 to grow from 1-line to 2-line height mid-reveal,
	 * shifting lead/CTA/meta down and producing CLS ~0.2074. */
	min-height: 2.2em;
}

.hp-h1 .accent {
	color: var(--wp--preset--color--accent-1);
	font-style: normal;
	position: relative;
}

.hp-h1 .accent::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0.08em;
	height: 0.08em;
	background: var(--wp--preset--color--accent-1);
	opacity: .25;
}

/* Typewriter caret — blinks while typing, hidden once done. */
.hp-typewriter.typing::after {
	content: '|';
	display: inline-block;
	margin-left: 2px;
	color: var(--wp--preset--color--accent-1);
	animation: hp-caret 0.9s steps(1) infinite;
}

@keyframes hp-caret {
	50% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
	/* JS already skips typewrite() and calls render() directly, so the
	 * caret pseudo-element is never added. These rules are a CSS-only
	 * safety net in case the JS hasn't fired yet. */
	.hp-typewriter.typing::after { animation: none; content: none; }
}

.hp-lead {
	font-size: 18px;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.6;
	max-width: 560px;
	margin: 0 0 var(--wp--preset--spacing--50);
}

.hp-hero-cta {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}

.hp-hero-meta {
	display: flex;
	gap: var(--wp--preset--spacing--50);
	margin-top: var(--wp--preset--spacing--50);
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--neutral);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	flex-wrap: wrap;
}

.hp-hero-meta .item .num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	color: var(--wp--preset--color--contrast);
	font-weight: 700;
	letter-spacing: -0.01em;
	display: block;
	margin-bottom: 2px;
}

/* Grail Spotlight aside */
.hp-spotlight {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--lg);
	padding: var(--wp--preset--spacing--40);
	box-shadow: var(--wp--custom--shadow--md);
	position: relative;
}

.hp-spotlight .grail-tag {
	position: absolute;
	top: -12px;
	left: var(--wp--preset--spacing--40);
	padding: 4px 10px;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--rarity-covert);
	color: #fff;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-weight: 700;
}

.hp-spotlight .img-wrap {
	display: block;
	aspect-ratio: 4 / 3;
	border-radius: var(--wp--custom--border--radius--md);
	overflow: hidden;
	margin-bottom: var(--wp--preset--spacing--40);
	background:
		radial-gradient(circle at 30% 40%, var(--wp--preset--color--rarity-covert), transparent 55%),
		linear-gradient(135deg, var(--wp--preset--color--base-raised), var(--wp--preset--color--base));
}

.hp-spotlight .img-wrap img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.hp-spotlight .img-wrap .img-placeholder {
	display: block;
	width: 100%;
	height: 100%;
}

.hp-spotlight .nm {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 4px;
}

.hp-spotlight .hp-spotlight-h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.1;
	margin: 0 0 var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--contrast);
}

.hp-spotlight .hp-spotlight-h3 small {
	display: block;
	font-size: 14px;
	font-weight: 500;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0;
	margin-top: 6px;
}

.hp-spotlight .row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	margin-top: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.hp-spotlight .row .label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 4px;
}

.hp-spotlight .row .price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast);
}

.hp-spotlight .row .price .woocommerce-Price-amount,
.hp-spotlight .row .price bdi {
	font: inherit;
	color: inherit;
}

@media (max-width: 600px) {
	.hp-hero-meta { gap: var(--wp--preset--spacing--30); }
	.hp-hero-meta .item .num { font-size: 18px; }
	.hp-spotlight .hp-spotlight-h3 { font-size: 22px; }
}

/* ──────────────────────────────────────────────────────────────────────── */

/* Section heads */
.bst-section {
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-section-h {
	margin-bottom: var(--wp--preset--spacing--50);
}

.bst-section-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--accent-1);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: 8px;
}

.bst-section-h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.05;
	margin: 0;
}

.bst-section-sub {
	color: var(--wp--preset--color--contrast-muted);
	margin-top: 8px;
	font-size: 15px;
	line-height: 1.5;
	max-width: 540px;
}

/* Featured products grid */
.bst-featured-grid .wp-block-post-template,
.bst-featured-grid .is-layout-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--wp--preset--spacing--40);
	list-style: none;
	padding: 0;
	margin: 0;
}

/* BST-73: PDP "You might also like" rail. 4-up on desktop, 2-up on tablet,
   1-up on narrow phones. Same minmax as featured grid so the visual
   language carries across all surfaces that show skin-cards. */
.bst-pdp-related-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--wp--preset--spacing--40);
	margin-top: var(--wp--preset--spacing--50);
}
@media (min-width: 1024px) {
	.bst-pdp-related-grid {
		grid-template-columns: repeat(5, 1fr);
	}
}

.bst-product-tile {
	transition: transform 320ms var(--wp--custom--transition--easing),
		border-color 200ms,
		box-shadow 320ms;
	overflow: hidden;
}

.bst-product-tile:hover {
	transform: translateY(-6px) scale(1.015);
	border-color: var(--wp--preset--color--accent-1) !important;
	box-shadow: 0 18px 40px -10px var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.14)),
		0 0 0 1px var(--wp--preset--color--accent-1);
}

.bst-product-tile .wp-block-post-featured-image {
	margin: 0;
}

.bst-product-tile .wp-block-post-featured-image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	background: var(--wp--preset--color--base);
}

.bst-product-tile .wp-block-post-title {
	margin: 0 0 8px;
	font-family: var(--wp--preset--font-family--heading);
}

.bst-product-tile .wp-block-post-title a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.bst-product-tile .wp-block-post-title a:hover {
	color: var(--wp--preset--color--accent-1);
}

.bst-product-tile .wc-block-components-product-price,
.bst-product-tile .wp-block-woocommerce-product-price {
	color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
}

/* FAQ accordion */
.bst-faq-list {
	display: flex;
	flex-direction: column;
	margin-top: var(--wp--preset--spacing--50);
}

.bst-faq-item {
	border: 1px solid var(--wp--preset--color--neutral);
	border-bottom: 0;
	background: var(--wp--preset--color--base-elevated);
}

.bst-faq-item:first-child {
	border-top-left-radius: var(--wp--custom--border--radius--md);
	border-top-right-radius: var(--wp--custom--border--radius--md);
}

.bst-faq-item:last-child {
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	border-bottom-left-radius: var(--wp--custom--border--radius--md);
	border-bottom-right-radius: var(--wp--custom--border--radius--md);
}

.bst-faq-item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--wp--preset--spacing--40);
	cursor: pointer;
	list-style: none;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	transition: color 200ms;
}

.bst-faq-item summary:hover {
	color: var(--wp--preset--color--accent-1);
}

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

.bst-faq-item summary::marker {
	content: '';
}

.bst-faq-item .plus {
	font-family: var(--wp--preset--font-family--mono);
	color: var(--wp--preset--color--contrast-muted);
	font-size: 20px;
	transition: transform 200ms;
	line-height: 1;
}

.bst-faq-item[open] summary .plus {
	transform: rotate(45deg);
	color: var(--wp--preset--color--accent-1);
}

.bst-faq-answer {
	padding: 0 var(--wp--preset--spacing--40) var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.7;
	font-size: 14px;
}

/* CTA strip */
.bst-cta-strip {
	background: var(--wp--preset--color--base-elevated);
	border-radius: var(--wp--custom--border--radius--lg);
	padding: var(--wp--preset--spacing--70);
	text-align: center;
	border: 1px solid var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.14));
	position: relative;
	overflow: hidden;
}

.bst-cta-strip::before {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(ellipse at 50% 100%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.14)), transparent 70%);
	pointer-events: none;
}

.bst-cta-strip h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(28px, 4vw, 44px);
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.05;
	margin: 0 0 14px;
	position: relative;
}

.bst-cta-strip p {
	color: var(--wp--preset--color--contrast-muted);
	max-width: 540px;
	margin: 0 auto var(--wp--preset--spacing--50);
	font-size: 16px;
	position: relative;
}

.bst-cta-strip .bst-cta-actions {
	display: flex;
	gap: 12px;
	justify-content: center;
	flex-wrap: wrap;
	position: relative;
}

/* Hero responsive */
@media (max-width: 900px) {
	.bst-hero-grid {
		flex-direction: column;
	}
	.bst-hero-grid .wp-block-column {
		flex-basis: 100% !important;
		width: 100% !important;
	}
}

/* ──────────── Catalog (archive-product.html) ──────────── */

.bst-shop-hero {
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-shop-hero-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: shop page heading eyebrow label — meaningful */
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin: 0 0 6px;
}

.bst-shop-hero-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(28px, 4vw, 42px);
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.05;
	margin: 0;
}

.bst-shop-hero-stats,
.bst-shop-hero-stats .woocommerce-result-count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.04em;
	margin: 0;
}

/* ── Toolbar ── */
.bst-shop-toolbar {
	padding: 12px 16px;
	margin-bottom: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	align-items: center;
}

.bst-shop-toolbar .woocommerce-ordering select,
.bst-shop-toolbar select.orderby {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	padding: 6px 28px 6px 12px;
	appearance: none;
	cursor: pointer;
	outline: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='rgba(255,255,255,.6)' d='M0 0h10L5 6z'/></svg>");
	background-repeat: no-repeat;
	background-position: right 10px center;
}

.bst-shop-toolbar .woocommerce-ordering select:focus,
.bst-shop-toolbar select.orderby:focus {
	border-color: var(--wp--preset--color--accent-1);
}

/* ── Product grid spacing ── */
.bst-shop-product-grid,
.bst-shop-query .wp-block-post-template.is-layout-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--wp--preset--spacing--40);
	list-style: none;
	padding: 0;
	margin: 0;
}

.bst-shop-product-grid > li,
.bst-shop-query .wp-block-post-template > li {
	list-style: none;
	margin: 0;
}

/* ── Pagination ── */
.bst-pagination,
.bst-shop-query .wp-block-query-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	padding: var(--wp--preset--spacing--50) 0;
	flex-wrap: wrap;
}

.bst-shop-query .wp-block-query-pagination a,
.bst-shop-query .wp-block-query-pagination .page-numbers,
.bst-shop-query .wp-block-query-pagination .wp-block-query-pagination-previous,
.bst-shop-query .wp-block-query-pagination .wp-block-query-pagination-next {
	min-width: 36px;
	height: 36px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	text-decoration: none;
	transition: all 200ms var(--wp--custom--transition--easing);
	padding: 0 8px;
}

.bst-shop-query .wp-block-query-pagination a:hover,
.bst-shop-query .wp-block-query-pagination .page-numbers:hover,
.bst-shop-query .wp-block-query-pagination .page-numbers.current {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}

.bst-shop-query .wp-block-query-pagination .page-numbers.current {
	background: var(--wp--preset--color--accent-1-soft);
}

.bst-shop-query .wp-block-query-pagination .page-numbers.dots {
	border-color: transparent;
	background: transparent;
}

/* ── Empty state ── */
.bst-shop-empty {
	padding: var(--wp--preset--spacing--70);
	text-align: center;
	background: var(--wp--preset--color--base-elevated);
	border: 1px dashed var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--md);
	color: var(--wp--preset--color--contrast-muted);
}

/* BST-198: same selector desync as .bst-cart-empty — the shop/taxonomy
   no-results heading renders as <h2> (wp:heading level:2 in archive-product.html
   + taxonomy-product_rarity/exterior.html, under the "Shop" h1). Rule targeted
   h3, so the style never applied. Selector aligned to the rendered tag. */
.bst-shop-empty h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	color: var(--wp--preset--color--contrast);
	margin: 0 0 8px;
}

/* ── Catalog responsive ── */
@media (max-width: 880px) {
	.bst-shop-grid {
		flex-direction: column !important;
	}
	.bst-shop-side {
		flex-basis: 100% !important;
		width: 100% !important;
	}
	.wp-block-main-skins-catalog-filters.ms-filters {
		position: static;
		max-height: none;
	}
}

/* ──────────── Product page (single-product.html) ──────────── */

.ms-pp { padding-top: 0; }

.ms-pp .ms-pp-crumbs,
.ms-pp .wc-block-components-breadcrumbs.ms-pp-crumbs {
	padding-block: var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: breadcrumb text — primary navigation info, must pass AA */
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.ms-pp .ms-pp-crumbs a {
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
}

.ms-pp .ms-pp-crumbs a:hover {
	color: var(--wp--preset--color--accent-1);
}

.ms-pp-section + .ms-pp-section {
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.ms-pp-section--hero { padding-top: var(--wp--preset--spacing--40); }

.ms-pp-section-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--contrast);
	margin: 0 0 var(--wp--preset--spacing--40);
}

/* Hero columns */
.ms-pp-hero {
	align-items: flex-start !important;
}

.ms-pp-summary.wp-block-column {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.ms-pp-title.wp-block-post-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	color: var(--wp--preset--color--contrast);
	margin: 0;
}

/* BST-69: PDP eyebrow line — rarity dot + rarity tier + weapon + collection,
   sits just above the H1, links route into the filtered catalog. */
.ms-pp-eyebrow {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.10em;
	color: var(--wp--preset--color--contrast-muted);
	margin-bottom: -6px;
}
.ms-pp-eyebrow-token {
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: color 150ms;
}
.ms-pp-eyebrow-token:hover,
.ms-pp-eyebrow-token:focus-visible {
	color: var(--wp--preset--color--contrast);
}
.ms-pp-eyebrow-token:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 3px;
}
.ms-pp-eyebrow-rarity {
	color: var(--ms-rarity-color, var(--wp--preset--color--contrast-muted));
	font-weight: 700;
}
.ms-pp-eyebrow-rarity:hover,
.ms-pp-eyebrow-rarity:focus-visible {
	color: var(--ms-rarity-color);
	filter: brightness(1.2);
}
.ms-pp-eyebrow-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--ms-rarity-color, var(--wp--preset--color--contrast-muted));
	box-shadow: 0 0 6px var(--ms-rarity-color, transparent);
	flex-shrink: 0;
}
.ms-pp-eyebrow-sep {
	color: var(--wp--preset--color--contrast-faint);
	margin: 0 8px;
}

/* BST-70: Item attributes section — promoted out of the right summary column
   to a full-width row so the data has room to breathe. */
.ms-pp-section--attrs {
	border-top: 1px solid var(--wp--preset--color--neutral);
}
.ms-pp-attrs-title {
	margin-bottom: var(--wp--preset--spacing--40);
}
.ms-attr-link {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px dashed var(--wp--preset--color--neutral-strong);
	padding-bottom: 1px;
	transition: color 150ms, border-color 150ms;
}
.ms-attr-link:hover,
.ms-attr-link:focus-visible {
	color: var(--wp--preset--color--accent-1);
	border-bottom-color: var(--wp--preset--color--accent-1);
}
.ms-attr-link:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
	border-bottom-color: transparent;
}
.ms-attr-rarity .ms-attr-link {
	color: var(--ms-rarity-color, inherit);
	border-bottom-color: transparent;
}
.ms-attr-rarity .ms-attr-link:hover {
	filter: brightness(1.2);
}

/* BST-68: Cart line-item polish.
   WC Blocks Cart is React-rendered, so we can only style — not restructure —
   the markup. These rules:
     • Hide the auto-generated product description (noise: "High risk and
       high reward, the infamous AWP is recognizable by its signature
       report and …"). Visitor already chose the product on the PDP — no
       need to repeat marketing copy in the cart.
     • Swap the trash-can SVG in .wc-block-cart-item__remove-link for a
       minimal × via a CSS mask. Same hitbox, cleaner Tactical look.
*/
.wc-block-cart-item__product .wc-block-components-product-metadata__description {
	display: none !important;
}
/* BST-76 (rev): pin the × to the top-right corner of each row, matching
   the design — next to the line total, not buried under the thumbnail. */
.wc-block-cart-items__row {
	position: relative;
}
.wc-block-cart-item__quantity {
	position: absolute;
	top: 12px;
	right: 12px;
	margin: 0 !important;
	min-height: 0 !important;
}
.wc-block-cart-item__remove-link {
	position: relative;
	width: 28px;
	height: 28px;
	border: 1px solid var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	background: transparent;
	transition: border-color 150ms, color 150ms;
}
.wc-block-cart-item__remove-link svg {
	opacity: 0;
}
.wc-block-cart-item__remove-link::before {
	content: "×";
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 18px;
	font-weight: 400;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1;
	transition: color 150ms;
}
.wc-block-cart-item__remove-link:hover,
.wc-block-cart-item__remove-link:focus-visible {
	border-color: var(--wp--preset--color--accent-1);
}
.wc-block-cart-item__remove-link:hover::before,
.wc-block-cart-item__remove-link:focus-visible::before {
	color: var(--wp--preset--color--accent-1);
}

/* BST-76: cart actions row below the line-items list.
   Left: "← Continue shopping" (lime accent).
   Right: "Empty cart" (muted contrast — destructive but quiet). */
.bst-cart-actions {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: var(--wp--preset--spacing--40);
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--neutral);
	gap: 12px;
}
.bst-cart-actions a {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	transition: filter 150ms, color 150ms;
}
.bst-cart-continue-link {
	color: var(--wp--preset--color--accent-1);
}
.bst-cart-continue-link:hover {
	filter: brightness(1.15);
}
.bst-cart-empty-link {
	color: var(--wp--preset--color--contrast-muted);
	border: 1px solid var(--wp--preset--color--neutral-strong);
	padding: 8px 12px;
	border-radius: var(--wp--custom--border--radius--sm);
}
.bst-cart-empty-link:hover {
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast-muted);
}

/* BST-76: "Cart · N items" — secondary count rendered smaller and faint
   so the H1 word stays the visual anchor. */
.bst-cart-title-h .bst-cart-title-count {
	font-size: 0.55em;
	font-weight: 400;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0;
	margin-left: 6px;
	vertical-align: middle;
}

/* BST-76: cart line-item meta rows injected via woocommerce_get_item_data.
   WC Blocks renders the row block as:
     .wc-block-components-product-details
       <span> .wc-block-components-product-details__value …
       <span aria-hidden="true"> / </span>   ← inline separator we hide
       <span> .wc-block-components-product-details__value …
   So we stack each top-level span as its own line and hide the " / " sep. */
.wc-block-cart-item__wrap .wc-block-components-product-details {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 6px 0 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--contrast-muted);
}
.wc-block-cart-item__wrap .wc-block-components-product-details > span {
	display: block;
}
.wc-block-cart-item__wrap .wc-block-components-product-details > span > [aria-hidden="true"] {
	display: none;
}
.wc-block-cart-item__wrap .wc-block-components-product-details > span:first-child .wc-block-components-product-details__value {
	text-transform: uppercase;
	letter-spacing: 0.10em;
	color: var(--wp--preset--color--contrast);
	font-weight: 600;
	font-size: 10px;
}

/* Gallery main image — aspect 4/3, rarity-tinted backdrop */
.ms-pp-gallery .ms-pp-gallery-main {
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	overflow: hidden;
	background: var(--wp--preset--color--base-elevated);
	aspect-ratio: 4 / 3;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--wp--preset--spacing--40);
}

.ms-pp-gallery .ms-pp-gallery-main img,
.ms-pp-gallery .ms-pp-gallery-main .wc-block-components-product-image,
.ms-pp-gallery .ms-pp-gallery-main .wp-block-woocommerce-product-image-gallery {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	margin: 0 auto;
}

/* BST: WooCommerce ships a near-white 1px border (#f2f2f2) on its gallery
   placeholder wrappers. Our skins load from the enrichment CDN (_image_url), so
   WC treats the gallery as "--without-image / --placeholder" and that light
   border shows as an ugly white frame around the product image on the PDP.
   Neutralise the WC default frame on every gallery wrapper inside our card —
   the .ms-pp-gallery-main card already provides the intended border. */
.ms-pp-gallery .woocommerce-product-gallery,
.ms-pp-gallery .woocommerce-product-gallery__wrapper,
.ms-pp-gallery .woocommerce-product-gallery__image,
.ms-pp-gallery .woocommerce-product-gallery__image--placeholder,
.ms-pp-gallery .wp-block-woocommerce-product-image-gallery {
	border: 0 !important;
	box-shadow: none !important;
}

/* Float card */
.ms-pp-floatcard {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
}

.ms-pp-floatcard-title.wp-block-heading {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-muted);
	margin: 0 0 14px;
	font-weight: 500;
}

/* Buy box */
.ms-pp-buybox {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--50);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
}

.ms-pp-buybox .ms-pp-price,
.ms-pp-buybox .wp-block-woocommerce-product-price,
.ms-pp-buybox .price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 36px;
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1;
	color: var(--wp--preset--color--contrast);
	margin: 0;
}

.ms-pp-buybox .ms-pp-price ins,
.ms-pp-buybox .wp-block-woocommerce-product-price ins,
.ms-pp-buybox .price ins {
	background: transparent;
	text-decoration: none;
	color: inherit;
}

.ms-pp-buybox .ms-pp-price del,
.ms-pp-buybox .price del {
	font-size: 18px;
	/* UX-026 v0.1.15: strikethrough price — still meaningful price info */
	color: var(--wp--preset--color--contrast-muted);
	margin-right: 8px;
}

.ms-pp-buybox .woocommerce-Price-amount,
.ms-pp-buybox .ms-pp-price bdi {
	color: inherit;
	font-family: inherit;
	font-weight: inherit;
}

/* Add to cart form */
.ms-pp-buybox form.cart {
	display: flex;
	gap: 10px;
	align-items: center;
	flex-wrap: wrap;
	margin: 0;
}

.ms-pp-buybox form.cart .quantity input.qty {
	width: 60px;
	padding: 10px 8px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	text-align: center;
}

.ms-pp-buybox form.cart button.single_add_to_cart_button,
.ms-pp-buybox button.wc-block-components-product-button__button {
	flex: 1;
	min-width: 180px;
	padding: 14px 22px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border: 0;
	border-radius: var(--wp--custom--border--radius--sm);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	cursor: pointer;
	transition: background var(--wp--custom--transition--duration) var(--wp--custom--transition--easing);
}

.ms-pp-buybox form.cart button.single_add_to_cart_button:hover,
.ms-pp-buybox button.wc-block-components-product-button__button:hover {
	background: var(--wp--preset--color--accent-1-hover);
}

/* Trade meta with checkmarks */
.ms-pp-trade-meta {
	border-top: 1px solid var(--wp--preset--color--neutral);
	padding-top: var(--wp--preset--spacing--30);
	gap: 14px !important;
	row-gap: 8px !important;
}

.ms-pp-trade-meta .ms-pp-trade-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: trust meta ("Verified listing", "SSL", etc.) — meaningful info */
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.04em;
	margin: 0;
}

.ms-pp-check {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--wp--preset--color--success);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.ms-pp-check::before {
	content: '';
	width: 4px;
	height: 7px;
	border-right: 2px solid var(--wp--preset--color--base);
	border-bottom: 2px solid var(--wp--preset--color--base);
	transform: rotate(45deg) translate(-1px, -1px);
}

/* About / description body */
.ms-pp-desc-body {
	max-width: 760px;
	font-size: 15px;
	line-height: 1.75;
	color: var(--wp--preset--color--contrast-muted);
}

.ms-pp-desc-body p + p { margin-top: 1em; }

.ms-pp-desc-body h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	margin: 1.5em 0 0.5em;
}

/* Hero responsive */
@media (max-width: 900px) {
	.ms-pp-hero {
		flex-direction: column;
	}
	.ms-pp-hero .wp-block-column {
		flex-basis: 100% !important;
		width: 100% !important;
	}
}

/* ──────────── Cart page (v0.1.6) ──────────── */

.bst-cart-page,
.bst-checkout-page {
	max-width: 80rem;
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--50);
	padding-block: var(--wp--preset--spacing--50);
}

.bst-cart-title,
.bst-checkout-title {
	padding-block: var(--wp--preset--spacing--40) var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	margin-bottom: var(--wp--preset--spacing--50);
}

.bst-cart-title-sub,
.bst-checkout-title-sub {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: page subtitle — meaningful context info */
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin: 0 0 4px;
}

.bst-cart-title-h,
.bst-checkout-title-h {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 36px;
	font-weight: 700;
	letter-spacing: -0.02em;
	margin: 0;
	color: var(--wp--preset--color--contrast);
}

/* Cart shell: WC's cart block has its own 2-column layout — we override grid
 * proportions to match design (1fr + 360px) and style its sub-elements. */
.bst-cart-shell .wp-block-woocommerce-cart {
	display: block;
}

.bst-cart-shell .wp-block-woocommerce-cart .wc-block-cart {
	display: grid;
	/* UX-040/041 v0.1.15: widened from 360px → 380px to prevent "Add coupons"
	   and "PROCEED TO CHECKOUT" from wrapping across 3 lines in the sidebar. */
	grid-template-columns: 1fr 380px;
	gap: var(--wp--preset--spacing--50);
	align-items: start;
}

@media (max-width: 880px) {
	.bst-cart-shell .wp-block-woocommerce-cart .wc-block-cart {
		grid-template-columns: 1fr;
	}
}

/* UX-040/041 v0.1.16: WC ships `.wc-block-components-sidebar-layout` as a
   flexbox with the items column at `width: 65%` and the sidebar at the
   remainder. At 1280 that left the totals sidebar at ~133px and forced the
   PROCEED TO CHECKOUT button to wrap to 3-4 lines. Override to a CSS Grid
   with explicit 1fr + 380px columns and reset the inner WC widths/paddings.
   The aria-hidden measuring div WC injects as the first child is allowed to
   sit on its own implicit row and ignored visually. */
.bst-cart-shell .wc-block-components-sidebar-layout {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) 380px !important;
	gap: var(--wp--preset--spacing--50);
	align-items: start;
}

.bst-cart-shell .wc-block-components-sidebar-layout > div[aria-hidden="true"] {
	display: none !important;
}

.bst-cart-shell .wc-block-components-sidebar-layout > .wc-block-components-main {
	width: auto !important;
	max-width: 100% !important;
	min-width: 0;
	padding-right: 0 !important;
	margin: 0 !important;
}

.bst-cart-shell .wc-block-components-sidebar-layout > .wc-block-components-sidebar {
	width: auto !important;
	max-width: 100% !important;
	min-width: 0;
	padding: 0 !important;
	margin: 0 !important;
}

@media (max-width: 880px) {
	.bst-cart-shell .wc-block-components-sidebar-layout {
		grid-template-columns: 1fr !important;
	}
}

/* Force the proceed-to-checkout button text onto a single line. */
.bst-cart-shell .wc-block-components-button,
.bst-cart-shell .wc-block-cart__submit-button {
	white-space: nowrap;
}

/* Cart line item row — restyle to design */
.bst-cart-shell .wc-block-cart-items__row,
.bst-cart-shell .wc-block-cart-item__row {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
	margin-bottom: var(--wp--preset--spacing--30);
}

.bst-cart-shell .wc-block-cart-item__image img {
	aspect-ratio: 4/3;
	object-fit: cover;
	border-radius: var(--wp--custom--border--radius--sm);
}

.bst-cart-shell .wc-block-components-product-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 20px;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.15;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.bst-cart-shell .wc-block-components-product-metadata {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-top: 4px;
}

.bst-cart-shell .wc-block-components-product-price,
.bst-cart-shell .wc-block-cart-item__total {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 24px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast);
	text-align: right;
}

.bst-cart-shell .wc-block-cart-item__remove-link,
.bst-cart-shell .wc-block-cart-item__remove-button {
	width: 36px;
	height: 36px;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	transition: all var(--wp--custom--transition--duration);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.bst-cart-shell .wc-block-cart-item__remove-link:hover,
.bst-cart-shell .wc-block-cart-item__remove-button:hover {
	color: var(--wp--preset--color--error);
	border-color: var(--wp--preset--color--error);
}

/* Cart summary side */
.bst-cart-shell .wc-block-components-totals-wrapper,
.bst-cart-shell .wp-block-woocommerce-cart-totals-block {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
	position: sticky;
	top: var(--wp--preset--spacing--30);
}

/* v0.1.19 — when the custom cart-order-summary block owns the sidebar, the
   outer wp-block-woocommerce-cart-totals-block wrapper must be transparent
   so our block's own card chrome (bg/border/padding/sticky) isn't doubled. */
.bst-cart-shell .wp-block-woocommerce-cart-totals-block:has(.wp-block-main-skins-cart-order-summary) {
	background: transparent;
	border: 0;
	padding: 0;
	position: static;
}

/* v0.1.19 — WC's cart React app hydrates and injects its own .wc-block-cart__submit
   button + payment-options + totals-footer-item AFTER our custom block in the sidebar.
   Hide them so only the design's Checkout button + totals render. */
.bst-cart-shell .wp-block-woocommerce-cart-totals-block:has(.wp-block-main-skins-cart-order-summary) > .wc-block-cart__submit,
.bst-cart-shell .wp-block-woocommerce-cart-totals-block:has(.wp-block-main-skins-cart-order-summary) > .wc-block-cart__payment-options,
.bst-cart-shell .wp-block-woocommerce-cart-totals-block:has(.wp-block-main-skins-cart-order-summary) > .wc-block-components-totals-wrapper,
.bst-cart-shell .wp-block-woocommerce-cart-totals-block:has(.wp-block-main-skins-cart-order-summary) > div:not(.wp-block-main-skins-cart-order-summary):not(:empty),
.bst-cart-shell .wp-block-woocommerce-cart-totals-block:has(.wp-block-main-skins-cart-order-summary) > .wc-block-components-totals-item {
	display: none !important;
}

/* v0.1.19 — WC's React checkout app hoists foreign blocks (our steam-link-form)
   to the top of the form, breaking the design's Contact → Steam → Payment
   section order. Force flex+order on the form children so visual order is:
   Contact (1) → Billing (2) → Steam (3) → Payment (4) → Actions (5).
   Source order in DOM is left in place — this is purely visual reordering. */
.bst-checkout-wc .wc-block-checkout__form {
	display: flex;
	flex-direction: column;
}
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__contact-fields { order: 1; }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__shipping-fields { order: 2; }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__billing-fields { order: 2; }
.bst-checkout-wc .wc-block-checkout__form > .wp-block-main-skins-steam-link-form { order: 3; margin-top: var(--wp--preset--spacing--40); }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__shipping-method { order: 4; }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__payment-method { order: 5; }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__order-notes { order: 6; }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__terms { order: 7; }
.bst-checkout-wc .wc-block-checkout__form > .wc-block-checkout__actions { order: 8; }

.bst-cart-shell .wc-block-components-totals-item__label,
.bst-cart-shell .wc-block-components-totals-item__value {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
}

.bst-cart-shell .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.bst-cart-shell .wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 24px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}

.bst-cart-checkout-btn .wc-block-components-button,
.bst-cart-checkout-btn a {
	width: 100%;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	padding: 14px 20px;
	border-radius: var(--wp--custom--border--radius--sm);
	border: 0;
	margin-top: var(--wp--preset--spacing--40);
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* UX-040 / UX-041 v0.1.15: prevent "Add coupons" and "PROCEED TO CHECKOUT"
   from wrapping across 3 lines at the sidebar's narrower column width. */
.bst-cart-shell .wc-block-components-button { white-space: nowrap; }
.bst-cart-shell .wp-block-woocommerce-cart-order-summary-coupon-form-block button,
.bst-cart-shell .wc-block-cart__sidebar a.wc-block-cart__submit-button,
.bst-cart-shell .wc-block-cart__sidebar button {
	font-size: 13px;
	padding-inline: 14px;
	white-space: nowrap;
}

/* Empty cart state */
.bst-cart-empty {
	background: var(--wp--preset--color--base-elevated);
	border: 1px dashed var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--70);
	text-align: center;
	grid-column: 1 / -1;
}

.bst-cart-empty-icon {
	font-size: 48px;
	opacity: 0.3;
	margin: 0 0 12px;
}

/* BST-198: the empty-cart heading renders as <h2> (wp:heading level:2 in
   templates/cart.html — keeps the h1 "Cart" → h2 hierarchy, no skip-level).
   The rule previously targeted h3 (a selector desync), so this special
   heading style never applied and the h2 fell back to the theme.json default.
   Selector aligned to the rendered tag — do NOT revert to h3. */
.bst-cart-empty h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	margin: 0 0 8px;
	color: var(--wp--preset--color--contrast);
}

.bst-cart-empty p {
	color: var(--wp--preset--color--contrast-muted);
	margin-bottom: var(--wp--preset--spacing--40);
}

/* BST-197: the "Browse catalog" CTA sits in a core `.wp-block-buttons` flex row.
   The container's `text-align: center` centers the heading/copy but has no effect
   on flex children, so the button defaulted to `justify-content: flex-start` and
   pinned to the left edge. Center the flex row so the button sits under the copy. */
.bst-cart-empty .wp-block-buttons {
	justify-content: center;
}

/* ──────────── Checkout page (v0.1.6) ────────────
   BST-88 layout fix (2026-05-26): the original implementation tried to
   create a 2-col grid AT THREE LEVELS:
     1. .bst-checkout-shell             → grid 1fr 380px
     2. .wp-block-woocommerce-checkout  → grid 1fr 380px (dup)
     3. .wc-block-components-sidebar-layout (WC's own) → flex row
   The duplicated grids caused 380px to be RESERVED at .bst-checkout-shell
   level for a column that was never filled (because WC's sidebar-layout
   was actually painting fields+sidebar inside the FIRST column). That
   showed up as a giant black void on the right of the page + narrow
   form + narrow sidebar (517px / 279px).
   Fix: collapse our outer wrappers to block flow with max-width centering,
   let WC's `.wc-block-components-sidebar-layout` do the 2-col job, just
   tune its proportions + child widths. */
.bst-checkout-shell {
	display: block;
	/* Design v4 .co-shell sits inside the parent .bst-checkout-page which
	   already provides 24px padding (via WC's `has-global-padding`). Our
	   shell just stretches to its parent's content area — no own padding
	   needed. Without this, padding double-nested → shell content was
	   48px narrower than intended. */
	max-width: 1280px;
	margin-inline: auto;
}
/* Center-aligned step indicator was the default flex layout — design
   has it left-aligned within the form column. */
.bst-checkout-steps { margin-left: 0 !important; }

/* Hero band — WP's block-group default applies margin:0 16px which
   shifts the h1 by 16px right. Design has it at exactly parent+24 (the
   .bst-checkout-page padding), no inner margins. */
.bst-checkout-title { margin-inline: 0 !important; }

/* Steps indicator — design has it spanning the form column only (828),
   not the entire shell (1232). Constrain to match. */
.bst-checkout-steps {
	display: flex;
	gap: 0;
	max-width: 828px;
	margin-bottom: var(--wp--preset--spacing--40);
	margin-left: 0;
	margin-right: 0;
	font-family: var(--wp--preset--font-family--mono);
}

.bst-checkout-step {
	flex: 1;
	padding: 14px 16px;
	border: 1px solid var(--wp--preset--color--neutral);
	border-right: 0;
	background: var(--wp--preset--color--base-elevated);
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 11px;
	/* UX-026 v0.1.15: step indicator labels (Cart / Contact / Payment) — navigation info */
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.bst-checkout-step:first-child {
	border-top-left-radius: var(--wp--custom--border--radius--md);
	border-bottom-left-radius: var(--wp--custom--border--radius--md);
}

.bst-checkout-step:last-child {
	border-top-right-radius: var(--wp--custom--border--radius--md);
	border-bottom-right-radius: var(--wp--custom--border--radius--md);
	border-right: 1px solid var(--wp--preset--color--neutral);
}

.bst-checkout-step.is-done {
	color: var(--wp--preset--color--success);
}

.bst-checkout-step.is-active {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
	position: relative;
	z-index: 1;
}

.bst-checkout-step .num {
	width: 22px;
	height: 22px;
	border-radius: 50%;
	border: 1px solid currentColor;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 10px;
	font-weight: 700;
}

.bst-checkout-step.is-done .num {
	background: var(--wp--preset--color--success);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--success);
}

.bst-checkout-step.is-active .num {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--accent-1);
}

/* BST-88: kill the duplicate inner grid on .wp-block-woocommerce-checkout.
   WC's block layout supplies a `grid-template-columns: 1fr 380px` of its
   own — we override BOTH display + template so the inner
   .wc-block-components-sidebar-layout can paint full-width 1200px and
   its own 2-col split fills the space. !important wins WC's inline-style
   level selectors. */
.bst-checkout-shell > .wp-block-woocommerce-checkout,
.bst-checkout-wc.wp-block-woocommerce-checkout {
	display: block !important;
	grid-template-columns: none !important;
	max-width: 1280px;
	width: 100%;
}

/* WC's sidebar-layout — make it a proper 2-col grid filling the shell
   width (1200px), gap matches design v4 spacing. fields = flex, sidebar
   = fixed 380px so the line items stay readable on long carts. */
.bst-checkout-wc .wc-block-components-sidebar-layout {
	display: grid !important;
	grid-template-columns: 1fr 380px;
	gap: var(--wp--preset--spacing--50);
	align-items: start;
	max-width: none;
	width: 100%;
}
.bst-checkout-wc .wc-block-components-sidebar-layout > .wc-block-components-main,
.bst-checkout-wc .wp-block-woocommerce-checkout-fields-block {
	width: 100%;
	max-width: none;
	flex: 1 1 auto;
	/* WC ships padding-inline-end:37.49px on .wc-block-components-main
	   to create breathing room from the sidebar. Our grid already has
	   gap:24px → kill the redundant WC padding so form column matches
	   design's 828px instead of squished 791px. */
	padding-inline-end: 0 !important;
	padding-inline-start: 0 !important;
}
.bst-checkout-wc .wp-block-woocommerce-checkout-totals-block,
.bst-checkout-wc .wc-block-components-sidebar {
	width: 100%;
	max-width: none;
	flex: 0 0 380px;
}

@media (max-width: 880px) {
	.bst-checkout-wc .wc-block-components-sidebar-layout {
		grid-template-columns: 1fr !important;
	}
	.bst-checkout-steps {
		max-width: 100%;
		flex-wrap: wrap;
	}
	.bst-checkout-wc .wp-block-woocommerce-checkout-totals-block,
	.bst-checkout-wc .wc-block-components-sidebar {
		flex: 1 1 auto;
		width: 100%;
	}
}

/* WC checkout fields card */
.bst-checkout-wc .wp-block-woocommerce-checkout-fields-block {
	background: transparent;
}

.bst-checkout-wc .wc-block-components-checkout-step {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--50);
	margin-bottom: var(--wp--preset--spacing--40);
}

.bst-checkout-wc .wc-block-components-checkout-step__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	margin: 0 0 4px;
}

.bst-checkout-wc .wc-block-components-checkout-step__description {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: checkout step description — meaningful instruction text */
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin-bottom: var(--wp--preset--spacing--40);
}

/* Form fields — Tactical dark palette. !important is required because
   WC Blocks ships its own input styles with higher specificity that
   default to white-bg / dark-text. Critical: padding-top needs to be
   ~22px so the floating label (absolute, top:6px, ~13px tall) doesn't
   overlap with the value text. */
.bst-checkout-wc .wc-block-components-text-input input,
.bst-checkout-wc .wc-block-components-select select,
.bst-checkout-wc input[type="text"],
.bst-checkout-wc input[type="email"],
.bst-checkout-wc input[type="tel"] {
	height: 52px !important;
	padding: 22px 14px 6px !important;
	background: var(--wp--preset--color--base) !important;
	border: 1px solid var(--wp--preset--color--neutral) !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	color: var(--wp--preset--color--contrast) !important;
	font-family: var(--wp--preset--font-family--mono) !important;
	font-size: 14px !important;
	outline: none !important;
	transition: border-color var(--wp--custom--transition--duration);
	-webkit-appearance: none;
	appearance: none;
}
/* WC ships TWO variants of select wrapper classes:
   - `wc-block-components-select` (snake) — used in some contexts
   - `wc-blocks-components-select__container` (plural) — used for the
     country dropdown
   Both render white-bg by default. Force Tactical dark on the visible
   container — that's what paints behind the value. */
.bst-checkout-wc .wc-block-components-select,
.bst-checkout-wc .wc-blocks-components-select,
.bst-checkout-wc .wc-blocks-components-select__container,
.bst-checkout-wc .wc-blocks-components-select__select {
	background-color: var(--wp--preset--color--base) !important;
	color: var(--wp--preset--color--contrast) !important;
	color-scheme: dark;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
}
.bst-checkout-wc .wc-block-components-select select,
.bst-checkout-wc .wc-blocks-components-select__select {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='rgba(221,226,212,0.6)' d='M0 0h10L5 6z'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: right 14px center !important;
	padding-right: 40px !important;
}

.bst-checkout-wc .wc-block-components-text-input input:focus,
.bst-checkout-wc .wc-block-components-select select:focus,
.bst-checkout-wc input:focus {
	border-color: var(--wp--preset--color--accent-1) !important;
	box-shadow: 0 0 0 1px var(--wp--preset--color--accent-1);
}

.bst-checkout-wc label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 500;
}

/* ── BST-88: Order summary right column — card layout ────────────────────────
   Design source: deliverables/design/checkout.html .co-summary
   WC block class mapping:
     .wc-block-components-order-summary-item    → .co-summary-item
     __image img                                → 64px col / 48px height thumbnail
     __full-amount / __individual-price         → .px mono price
     .wc-block-components-totals-item           → .co-total-row
     .wc-block-components-totals-footer-item    → .co-total-row.big (22px heading)
   ─────────────────────────────────────────────────────────────────────────── */

/* Order summary right column */
.bst-checkout-wc .wp-block-woocommerce-checkout-totals-block {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
	position: sticky;
	top: var(--wp--preset--spacing--30);
}

/* Summary section header ("Order summary · N items") */
.bst-checkout-wc .wc-block-components-order-summary__toggle-button,
.bst-checkout-wc .wc-block-components-order-summary > div > h2,
.bst-checkout-wc .wc-block-components-order-summary__title {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-faint);
	font-weight: 400;
	margin-bottom: var(--wp--preset--spacing--30);
	background: transparent;
	border: 0;
	padding: 0;
	width: 100%;
	text-align: left;
	cursor: default;
}

/* Collapse/expand toggle — keep open by default (don't hide expand icon) */
.bst-checkout-wc .wc-block-components-order-summary {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
}

/* Each cart line item as thumbnail + info row */
.bst-checkout-wc .wc-block-components-order-summary-item {
	display: grid;
	grid-template-columns: 64px 1fr;
	gap: 12px;
	padding: 12px 0;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	align-items: start;
}

.bst-checkout-wc .wc-block-components-order-summary-item:last-of-type {
	border-bottom: 0;
}

/* Thumbnail container — 64px col / 48px height (design: aspect-ratio 4/3 @ 64px wide ≈ 48px) */
.bst-checkout-wc .wc-block-components-order-summary-item__image {
	width: 64px;
	height: 48px;
	flex-shrink: 0;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	overflow: hidden;
	position: relative;
}

.bst-checkout-wc .wc-block-components-order-summary-item__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--wp--custom--border--radius--sm);
	display: block;
}

/* Quantity badge over thumbnail */
.bst-checkout-wc .wc-block-components-order-summary-item__quantity {
	position: absolute;
	top: 3px;
	right: 3px;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 700;
	border-radius: 9px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
}

/* Item name */
.bst-checkout-wc .wc-block-components-order-summary-item__description,
.bst-checkout-wc .wc-block-components-product-name.wc-block-components-order-summary-item__full-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	line-height: 1.3;
	margin: 0 0 2px;
}

/* Short description / product metadata description — hidden in checkout summary.
 * WC React renders this as .wc-block-components-product-metadata__description.
 * Design shows: name + ext-tag + price only. No product description paragraph.
 * Float/exterior/pattern meta lives in .wc-block-components-product-details and stays visible. */
.bst-checkout-wc .wc-block-components-order-summary-item__short-description,
.bst-checkout-wc .wc-block-components-product-metadata__description {
	display: none !important;
}

/* Product details (ext / float / pattern) — mono meta below name */
.bst-checkout-wc .wc-block-components-product-details {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	margin: 2px 0 4px;
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}

.bst-checkout-wc .wc-block-components-product-details > span {
	display: contents;
}

.bst-checkout-wc .wc-block-components-product-details__value {
	color: var(--wp--preset--color--contrast-muted);
}

/* Price on the item — individual-price is inside __description col; keep it.
 * __total-price is a duplicate WC renders as a 3rd sibling — hide it.
 * price wrapper .wc-block-cart-item__prices needs no extra margins. */
.bst-checkout-wc .wc-block-components-order-summary-item__individual-prices,
.bst-checkout-wc .wc-block-components-order-summary-item__individual-price,
.bst-checkout-wc .wc-block-components-order-summary-item__full-amount {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--contrast);
	font-weight: 600;
}

/* Hide total-price sibling — redundant with individual price already in description col */
.bst-checkout-wc .wc-block-components-order-summary-item__total-price {
	display: none !important;
}

/* Remove price wrapper margins */
.bst-checkout-wc .wc-block-cart-item__prices {
	margin: 0;
}

/* Totals rows (subtotal / shipping / tax) */
.bst-checkout-wc .wc-block-components-totals-item {
	display: flex;
	justify-content: space-between;
	padding: 6px 0;
}

.bst-checkout-wc .wc-block-components-totals-item__label,
.bst-checkout-wc .wc-block-components-totals-item__value {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
}

/* Grand total row (.big equivalent) */
.bst-checkout-wc .wc-block-components-totals-footer-item {
	border-top: 1px solid var(--wp--preset--color--neutral);
	padding-top: 14px;
	margin-top: 6px;
}

.bst-checkout-wc .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.bst-checkout-wc .wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}

/* WP block-group spacing override — prevent wp-block-group default margin
   from pushing totals items apart inside the summary sidebar. */
.bst-checkout-wc .wp-block-woocommerce-checkout-totals-block > * {
	margin-block: 0;
}

/* Kill WC's `.wc-block-components-order-summary.is-large` inner 16px
   horizontal padding — design v4 has summary items at the full sidebar
   width minus only the outer 16px. Without this override the cart items
   are 34px narrower than design (312 vs 346). */
.bst-checkout-wc .wc-block-components-order-summary.is-large {
	padding-inline: 0 !important;
}

/* Hide WC's full product description block inside order-summary items —
   design v4 shows only name + meta + price, NOT the long auto-extracted
   product description ("Relatively unchanged in its design since WWII..."
   for Bayonet, etc.). The description lives inside
   .wc-block-components-product-metadata as a __description child. */
.bst-checkout-wc .wc-block-components-product-metadata__description,
.bst-checkout-wc .wc-block-components-order-summary-item .wc-block-components-product-metadata > *:not(.wc-block-components-product-metadata__taxes):not(.wc-block-components-product-metadata__variation-data) {
	display: none !important;
}

/* Coupon form — compact mono style */
.bst-checkout-wc .wc-block-components-coupon {
	margin-bottom: var(--wp--preset--spacing--30);
}

.bst-checkout-wc .wc-block-components-coupon input[type="text"] {
	height: 40px;
	font-size: 12px;
	font-family: var(--wp--preset--font-family--mono);
}

.bst-checkout-wc .wc-block-components-coupon button {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* Place Order button — full width lime.
   BST-88 P0 2026-05-26: removed the `body[data-steam-verified="1"]`
   CSS gate that blocked the button by default. The Steam URL backend
   verifier (BST-89) isn't built yet, so no one ever set the data-attr,
   so Place Order was permanently disabled across the entire site.
   Andrew flagged this — purchases were impossible.
   Re-enable by default; WC's own validation (filled email + billing +
   payment + terms) will keep it disabled until ready. Steam URL
   verification will gate the button at a higher layer when BST-89 ships. */
.bst-checkout-wc .wc-block-components-checkout-place-order-button,
.bst-place-order .wc-block-components-checkout-place-order-button {
	width: 100%;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	padding: 16px 20px;
	border-radius: var(--wp--custom--border--radius--sm);
	border: 0;
	margin-top: var(--wp--preset--spacing--40);
	cursor: pointer;
}

/* Trust strip at the bottom of summary */
.bst-checkout-wc .wp-block-woocommerce-checkout-totals-block .wp-block-main-skins-footer-trust-strip {
	margin-top: var(--wp--preset--spacing--30);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

/* ════════════════════════════════════════════════════════════════════════════
   BST-87 sidebar refinement (2026-05-26) — CSS-only, sidebar-only
   5 точечных правок по делу:
     1. Heading "ORDER SUMMARY · N ITEMS" — 11px mono uppercase faint
        (WC 10.7 renders as .wc-block-components-checkout-order-summary__title-text,
        the older selectors above no longer match)
     2. Inner summary card border — убрать (двойная карточка эффект)
     3. Quantity badge — скрыть (всё qty=1 на маркетплейсе)
     4. Coupon row — скрыть (нет в дизайне)
     5. Heading alignment — убрать left margin 16px
   ════════════════════════════════════════════════════════════════════════════ */

/* 1. Heading — WC 10.7 selector */
.bst-checkout-wc .wc-block-components-checkout-order-summary__title-text {
	font-family: var(--wp--preset--font-family--mono) !important;
	font-size: 11px !important;
	font-weight: 400 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.1em !important;
	color: var(--wp--preset--color--contrast-faint) !important;
	margin: 0 0 var(--wp--preset--spacing--30) 0 !important;
	padding: 0 !important;
}

/* 2. Inner summary card — убрать рамку, чтобы карточка была одна (внешняя) */
.bst-checkout-wc .wp-block-woocommerce-checkout-order-summary-block {
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	background: transparent !important;
}

/* 3. Quantity badge — скрыть */
.bst-checkout-wc .wc-block-components-order-summary-item__quantity {
	display: none !important;
}

/* BST-167: Coupon entry at checkout — RESTORED.
   Was hidden in BST-87 ("нет в дизайне"); Andrew now wants a coupon field on
   checkout too (cart already has one). Un-hide + style the WC-Blocks coupon
   panel to match the cart promo input (mono, neutral border, lime hover). */
.bst-checkout-wc .wp-block-woocommerce-checkout-order-summary-coupon-form-block,
.bst-checkout-wc .wc-block-components-totals-coupon {
	display: block;
	margin-block: 14px;
	padding-left: 0;
	padding-right: 0;
}
.bst-checkout-wc .wc-block-components-totals-coupon__content {
	padding: 0;
}
.bst-checkout-wc .wc-block-components-totals-coupon__form {
	display: flex;
	gap: 8px;
	align-items: stretch;
}
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input {
	flex: 1;
	margin: 0;
}
.bst-checkout-wc .wc-block-components-totals-coupon input[type="text"] {
	height: 40px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
}
.bst-checkout-wc .wc-block-components-totals-coupon__button,
.bst-checkout-wc .wc-block-components-totals-coupon button {
	height: 40px;
	background: var(--wp--preset--color--base-raised);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 0 14px;
}
.bst-checkout-wc .wc-block-components-totals-coupon__button:hover,
.bst-checkout-wc .wc-block-components-totals-coupon button:hover {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}

/* BST-167 follow-up: the coupon input must not be taller than the APPLY button.
   WC-Blocks wraps the field in .wc-block-components-text-input (~52px due to the
   floating-label top padding); pin the wrapper + input to the 40px button height
   and centre the label so the two controls match. */
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input,
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input input {
	height: 40px !important;
	min-height: 40px !important;
}
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input input {
	padding: 0 12px !important;
	line-height: 40px !important;
}
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input label {
	top: 50% !important;
	transform: translateY(-50%) !important;
	margin: 0 !important;
	padding: 0 12px !important;
}
/* When focused / filled WC floats the label up; with a 40px field there is no
   room for the floated state, so suppress it — the short coupon code is its own
   context and the placeholder role is enough. */
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input.is-active label,
.bst-checkout-wc .wc-block-components-totals-coupon .wc-block-components-text-input input:focus + label {
	display: none !important;
}

/* BST-165: inline Steam Trade URL validation feedback (checkout-polish.js). */
.bst-steam-url-feedback {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	line-height: 1.4;
	margin-top: 6px;
	padding: 6px 10px;
	border-radius: var(--wp--custom--border--radius--sm);
}
.bst-steam-url-feedback.is-valid {
	color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft, rgba(179, 224, 0, 0.10));
	border: 1px solid var(--wp--preset--color--accent-1-soft, rgba(179, 224, 0, 0.30));
}
.bst-steam-url-feedback.is-invalid {
	color: #ff6b6b;
	background: rgba(229, 72, 77, 0.10);
	border: 1px solid rgba(229, 72, 77, 0.40);
}


/* ─────────────────────────────────────────────────────────
   v0.1.7 — forgotten design sections
   ───────────────────────────────────────────────────────── */

/* Product page · 5-thumb gallery grid (placeholder until per-listing renders) */
.ms-pp-thumbs {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 10px;
	margin-top: 12px;
}
.ms-pp-thumb {
	aspect-ratio: 1 / 1;
	border-radius: var(--wp--custom--border--radius--sm);
	border: 1px solid var(--wp--preset--color--neutral);
	position: relative;
	overflow: hidden;
	background: var(--wp--preset--color--base);
	display: flex;
	align-items: center;
	justify-content: center;
}
.ms-pp-thumb--active {
	border-color: var(--wp--preset--color--accent-1);
	background: linear-gradient(135deg, var(--wp--preset--color--base-elevated), var(--wp--preset--color--base));
}
.ms-pp-thumb--empty {
	border-style: dashed;
	border-color: var(--wp--preset--color--neutral-strong, var(--wp--preset--color--neutral));
}
.ms-pp-thumb-label {
	position: absolute;
	bottom: 4px;
	right: 6px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 8px;
	color: var(--wp--preset--color--accent-1);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	font-weight: 700;
}
.ms-pp-thumb-dash {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 14px;
	color: var(--wp--preset--color--contrast-faint);
	line-height: 1;
}

/* Product page · collection aside (more from this collection) */
.ms-pp-desc-cols { align-items: flex-start; }
.ms-pp-desc-side { position: sticky; top: var(--wp--preset--spacing--30); }
.ms-pp-collection-aside {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
}
.ms-pp-collection-h {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	/* UX-026 v0.1.15: "FROM THIS COLLECTION" heading — navigation label */
	color: var(--wp--preset--color--contrast-muted);
	margin: 0 0 12px 0;
}
.ms-pp-collection-grid {
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.ms-pp-collection-item {
	display: flex;
	gap: 10px;
	padding: 8px;
	border-radius: var(--wp--custom--border--radius--sm);
	text-decoration: none;
	color: inherit;
	transition: background var(--wp--custom--transition--duration), transform var(--wp--custom--transition--duration);
}
.ms-pp-collection-item:hover {
	background: var(--wp--preset--color--base-raised, var(--wp--preset--color--base));
	transform: translateY(-1px);
}
.ms-pp-collection-preview {
	width: 60px;
	aspect-ratio: 4 / 3;
	flex-shrink: 0;
	background: var(--wp--preset--color--base);
	border-radius: var(--wp--custom--border--radius--sm);
	border: 1px solid var(--wp--preset--color--neutral);
	position: relative;
	overflow: hidden;
}
.ms-pp-collection-preview::before {
	content: "";
	position: absolute;
	inset: 0;
	background: radial-gradient(circle at 30% 40%, var(--ms-rarity-tint, rgba(255, 255, 255, 0.1)), transparent 60%);
	pointer-events: none;
	z-index: 1;
}
.ms-pp-collection-preview img {
	position: relative;
	z-index: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}
.ms-pp-collection-info { flex: 1; min-width: 0; }
.ms-pp-collection-name {
	font-size: 13px;
	font-weight: 500;
	color: var(--wp--preset--color--contrast);
	line-height: 1.25;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.ms-pp-collection-price {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--accent-1);
	margin-top: 2px;
}

/* Cart · recommendations strip */
.ms-cart-recs {
	margin-top: var(--wp--preset--spacing--60);
	padding-top: var(--wp--preset--spacing--50);
	border-top: 1px solid var(--wp--preset--color--neutral);
}
.ms-cart-recs-h {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	margin: 0 0 var(--wp--preset--spacing--40) 0;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}
.ms-cart-recs-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--30);
}
/* 869dge4kb: 5-up on desktop so the rail fills the full row (matches PDP related). */
@media (min-width: 1024px) {
	.ms-cart-recs-grid {
		grid-template-columns: repeat(5, 1fr);
	}
}

/* ─────────────────────────────────────────────────────────────
 * v0.1.8 — Homepage decorative sections
 * Ticker marquee + Rarity ladder + Armory
 * ───────────────────────────────────────────────────────────── */

/* Ticker marquee */
.bst-ticker {
	background:
		linear-gradient(90deg, transparent, var(--wp--preset--color--base-raised, var(--wp--preset--color--base-elevated)), transparent),
		var(--wp--preset--color--base-elevated);
	border-top: 1px solid var(--wp--preset--color--neutral);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	padding-block: 14px;
	position: relative;
	overflow: hidden;
}
/* Cancel WP's default 24px block-spacing on children of .wp-block-group.
   The design HTML has no such rule — ticker comes out 48px tall there.
   In WordPress, .bst-ticker is a wp-block-group and inherits the
   :where(.wp-block-group > * + *) { margin-block-start: 24px } rule,
   which pushed .bst-ticker-track down by 24px and bloated the section
   to 72px. The tag is absolute-positioned so it doesn't participate. */
.bst-ticker > * {
	margin-block: 0 !important;
}
.bst-ticker::before,
.bst-ticker::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	width: 120px;
	z-index: 2;
	pointer-events: none;
}
.bst-ticker::before {
	left: 0;
	background: linear-gradient(90deg, var(--wp--preset--color--base-elevated) 30%, transparent);
}
.bst-ticker::after {
	right: 0;
	background: linear-gradient(270deg, var(--wp--preset--color--base-elevated) 30%, transparent);
}
.bst-ticker-tag {
	position: absolute;
	top: 50%;
	left: var(--wp--preset--spacing--40, 24px);
	transform: translateY(-50%);
	z-index: 3;
	padding: 5px 11px;
	border-radius: 3px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	box-shadow: 0 0 24px var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18));
}
.bst-ticker-tag .blink {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--base);
	animation: bst-ticker-blink 1.05s steps(2, jump-none) infinite;
}
@keyframes bst-ticker-blink {
	50% { opacity: 0.25; }
}
.bst-ticker-track {
	display: flex;
	gap: 56px;
	align-items: center;
	animation: bst-marquee 60s linear infinite;
	width: max-content;
	padding-left: 220px;
}
.bst-ticker:hover .bst-ticker-track {
	animation-play-state: paused;
}
@keyframes bst-marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}
.bst-ticker-item {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
	white-space: nowrap;
}
.bst-ticker-item .check {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--wp--preset--color--success, #4ade80);
	color: var(--wp--preset--color--base);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 9px;
	font-weight: 900;
	flex-shrink: 0;
}
.bst-ticker-item .check.warn { background: var(--wp--preset--color--accent-1); }
.bst-ticker-item .check.cold { background: var(--wp--preset--color--contrast-faint); }
.bst-ticker-item strong { color: var(--wp--preset--color--contrast); font-weight: 600; }
.bst-ticker-item .price { color: var(--wp--preset--color--accent-1); font-weight: 600; }
.bst-ticker-item .ago { color: var(--wp--preset--color--contrast-faint); }
.bst-ticker-item .sep { color: var(--wp--preset--color--contrast-faint); opacity: 0.5; }

/* Rarity ladder */
.bst-rarity-ladder {
	display: flex;
	gap: 8px;
}
.bst-rarity-cell {
	flex: 1 1 0;
	min-width: 0;
	min-height: 240px;
	padding: var(--wp--preset--spacing--40, 24px) var(--wp--preset--spacing--30, 16px);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	position: relative;
	overflow: hidden;
	cursor: pointer;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	transition:
		transform 320ms var(--wp--custom--transition--easing, ease),
		border-color 200ms,
		box-shadow 320ms,
		flex-grow 320ms var(--wp--custom--transition--easing, ease);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	/* BST-56: cell is now an <a> — strip default anchor styling. */
	color: inherit;
	text-decoration: none;
}
.bst-rarity-cell:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 4px;
}
.bst-rarity-cell::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 30%, var(--rarity-color) 240%);
	opacity: 0.2;
	transition: opacity 320ms;
}
.bst-rarity-cell::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 3px;
	background: var(--rarity-color);
	transform: scaleX(0.3);
	transform-origin: left;
	transition: transform 320ms var(--wp--custom--transition--easing, ease);
}
.bst-rarity-ladder:has(.bst-rarity-cell:hover) .bst-rarity-cell {
	flex-grow: 0.6;
}
.bst-rarity-cell:hover {
	transform: translateY(-10px) scale(1.02);
	border-color: var(--rarity-color);
	box-shadow: 0 18px 50px -10px var(--rarity-color), 0 0 0 1px var(--rarity-color);
	z-index: 2;
	flex-grow: 1.6 !important;
}
.bst-rarity-cell:hover::before { opacity: 0.45; }
.bst-rarity-cell:hover::after { transform: scaleX(1); }
.bst-rarity-cell .top {
	position: relative;
	z-index: 1;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-faint);
}
.bst-rarity-cell .symbol {
	display: block;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 44px;
	font-weight: 700;
	color: var(--rarity-color);
	letter-spacing: -0.04em;
	line-height: 1;
	margin-top: 8px;
	text-shadow: 0 0 24px var(--rarity-color);
}
.bst-rarity-cell .name {
	position: relative;
	z-index: 1;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	line-height: 1.2;
	margin-top: 12px;
}
.bst-rarity-cell .count {
	position: relative;
	z-index: 1;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--rarity-color);
	font-weight: 600;
	margin-top: 4px;
}
.bst-rarity-cell .expand {
	position: relative;
	z-index: 1;
	margin-top: 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.5;
	opacity: 0;
	max-height: 0;
	transition: opacity 240ms, max-height 320ms;
}
.bst-rarity-cell:hover .expand {
	opacity: 1;
	max-height: 80px;
}
@media (max-width: 900px) {
	.bst-rarity-ladder { flex-wrap: wrap; }
	.bst-rarity-cell { flex: 1 1 22%; min-height: 160px; }
}

/* Armory */
.bst-armory {
	background:
		radial-gradient(ellipse 60% 50% at 50% 30%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.12)), transparent 70%),
		var(--wp--preset--color--base);
	position: relative;
	overflow: hidden;
}

/* BST-56 (rev 2): radar HUD lives on the section ::before, matches the
   design — 720px square anchored above the title, mask fades the edges
   so it never bleeds into the tile grid below. 18s rotation. */
.bst-armory::before {
	content: '';
	position: absolute;
	width: 720px;
	height: 720px;
	left: 50%;
	top: -180px;
	transform: translateX(-50%);
	background:
		radial-gradient(circle, transparent 38%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18)) 38.5%, transparent 39%),
		radial-gradient(circle, transparent 58%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18)) 58.5%, transparent 59%),
		radial-gradient(circle, transparent 78%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18)) 78.5%, transparent 79%),
		conic-gradient(from 0deg, transparent 0deg, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18)) 30deg, transparent 60deg, transparent 360deg);
	mask-image: radial-gradient(circle, black 55%, transparent 78%);
	-webkit-mask-image: radial-gradient(circle, black 55%, transparent 78%);
	opacity: 0.6;
	pointer-events: none;
	animation: bst-armory-radar 18s linear infinite;
}
@keyframes bst-armory-radar {
	to { transform: translateX(-50%) rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
	.bst-armory::before { animation: none; }
}

.bst-armory-head {
	text-align: center;
	position: relative;
	z-index: 1;
	margin-bottom: var(--wp--preset--spacing--60, 48px);
}
.bst-armory-head .bst-section-sub {
	margin-left: auto;
	margin-right: auto;
}
/* BST-56 (rev 2): tile grid is just a normal-flow grid — radar lives on
   the section ::before, no positioning context needed here. */
.bst-armory-grid {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	align-items: stretch;
}
@media (max-width: 980px) { .bst-armory-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .bst-armory-grid { grid-template-columns: 1fr; } }

.bst-armory-tile {
	position: relative;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	padding: var(--wp--preset--spacing--40, 20px);
	display: flex;
	flex-direction: column;
	gap: 12px;
	text-decoration: none;
	color: inherit;
	transition: border-color 200ms, transform 200ms, box-shadow 200ms;
	overflow: hidden;
}
.bst-armory-tile:hover,
.bst-armory-tile:focus-visible {
	border-color: var(--rarity-color, var(--wp--preset--color--accent-1));
	transform: translateY(-4px);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4), 0 0 0 1px var(--rarity-color, transparent);
}
.bst-armory-tile:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 3px;
}
.bst-armory-tile-head {
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.10em;
}
.bst-armory-tile-badge {
	width: 24px;
	height: 24px;
	border-radius: 4px;
	background: var(--rarity-color, var(--wp--preset--color--accent-1));
	color: var(--wp--preset--color--base);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 700;
}
.bst-armory-tile-frame {
	position: relative;
	flex: 1;
	min-height: 130px;
	aspect-ratio: 4 / 5;
	background-color: var(--wp--preset--color--base);
	background-size: contain;
	background-position: center;
	background-repeat: no-repeat;
	border-radius: var(--wp--custom--border--radius--sm, 4px);
	overflow: hidden;
}
.bst-armory-tile-frame .corner {
	position: absolute;
	width: 14px;
	height: 14px;
	pointer-events: none;
	border: 2px solid var(--wp--preset--color--accent-1);
	z-index: 2;
	transition: width 200ms, height 200ms;
}
.bst-armory-tile:hover .bst-armory-tile-frame .corner { width: 18px; height: 18px; }
.bst-armory-tile-frame .corner.tl { top: 6px; left: 6px;     border-right: 0; border-bottom: 0; }
.bst-armory-tile-frame .corner.tr { top: 6px; right: 6px;    border-left: 0;  border-bottom: 0; }
.bst-armory-tile-frame .corner.bl { bottom: 6px; left: 6px;  border-right: 0; border-top: 0; }
.bst-armory-tile-frame .corner.br { bottom: 6px; right: 6px; border-left: 0;  border-top: 0; }

/* BST-56: scanline animation across each tile frame — same as the design.
   4 s sweep, staggered start per column via inline animation-delay. */
.bst-armory-tile-frame .scan {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 2px;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--accent-1), transparent);
	box-shadow: 0 0 12px var(--wp--preset--color--accent-1);
	z-index: 1;
	pointer-events: none;
	animation: bst-armory-scan 4s linear infinite;
}
@keyframes bst-armory-scan {
	0%   { top: -2px; opacity: 0; }
	8%   { opacity: 0.8; }
	50%  { opacity: 0.8; }
	92%  { opacity: 0.8; }
	100% { top: 100%; opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
	.bst-armory-tile-frame .scan { animation: none; opacity: 0; }
}
.bst-armory-tile-foot {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.bst-armory-tile-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}
.bst-armory-tile-count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
}
.bst-armory-tile-cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	padding-top: 8px;
	border-top: 1px solid var(--wp--preset--color--neutral);
}
.bst-armory-tile-num {
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
}
.bst-loadout {
	position: relative;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	padding: var(--wp--preset--spacing--40, 24px);
	display: flex;
	flex-direction: column;
	gap: 14px;
	transition:
		border-color var(--wp--custom--transition--duration, 200ms),
		transform var(--wp--custom--transition--duration, 200ms);
	overflow: hidden;
}
.bst-loadout:hover {
	border-color: var(--rarity-color, var(--wp--preset--color--accent-1));
	transform: translateY(-4px);
}
.bst-loadout-head {
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.1em;
}
.bst-loadout-head .slot-badge {
	width: 26px;
	height: 26px;
	border-radius: 4px;
	background: var(--rarity-color, var(--wp--preset--color--accent-1));
	color: var(--wp--preset--color--base);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0;
}
.bst-loadout-frame {
	position: relative;
	flex: 1;
	min-height: 160px;
	aspect-ratio: 4 / 5;
	background:
		radial-gradient(circle at 30% 40%, var(--rarity-color, transparent), transparent 60%),
		var(--wp--preset--color--base);
	border-radius: var(--wp--custom--border--radius--sm, 4px);
	overflow: hidden;
}
.bst-loadout-frame .corner {
	position: absolute;
	width: 14px;
	height: 14px;
	pointer-events: none;
	border: 2px solid var(--wp--preset--color--accent-1);
	z-index: 2;
	transition: width 200ms, height 200ms;
}
.bst-loadout:hover .bst-loadout-frame .corner { width: 18px; height: 18px; }
.bst-loadout-frame .corner.tl { top: 6px; left: 6px;     border-right: 0; border-bottom: 0; }
.bst-loadout-frame .corner.tr { top: 6px; right: 6px;    border-left: 0;  border-bottom: 0; }
.bst-loadout-frame .corner.bl { bottom: 6px; left: 6px;  border-right: 0; border-top: 0; }
.bst-loadout-frame .corner.br { bottom: 6px; right: 6px; border-left: 0;  border-top: 0; }
.bst-loadout-frame .scan {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 2px;
	background: linear-gradient(90deg, transparent, var(--wp--preset--color--accent-1), transparent);
	box-shadow: 0 0 12px var(--wp--preset--color--accent-1);
	z-index: 1;
	pointer-events: none;
	animation: bst-scanline 3s linear infinite;
}
@keyframes bst-scanline {
	0%   { top: 0;    opacity: 0; }
	10%  { opacity: 0.5; }
	90%  { opacity: 0.5; }
	100% { top: 100%; opacity: 0; }
}
.bst-loadout-meta {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.bst-loadout-meta .name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}
.bst-loadout-meta .ext {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: exterior label (FN/MW/FT/WW/BS) — key collector info */
	color: var(--wp--preset--color--contrast-muted);
}
.bst-loadout-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	padding-top: 10px;
	border-top: 1px solid var(--wp--preset--color--neutral);
}
.bst-loadout-row .price {
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
}

@media (prefers-reduced-motion: reduce) {
	.bst-ticker-track,
	.bst-ticker-tag .blink,
	.bst-loadout-frame .scan { animation: none; }
	.bst-loadout-frame .scan { opacity: 0; }
	.bst-rarity-cell { transition: none; }
	.bst-rarity-ladder:has(.bst-rarity-cell:hover) .bst-rarity-cell,
	.bst-rarity-cell:hover { transform: none; flex-grow: 1 !important; }
}

/* ─────────────────────────────────────────────────────────────
 * v0.1.18 — Sprint C: decorative homepage sections
 * Anatomy of a Float + Integrators stats + Three steps
 * (Ticker + Armory base rules above were already shipped in v0.1.8.)
 * ───────────────────────────────────────────────────────────── */

/* ── Anatomy of a Float ── */
.bst-anatomy {
	background:
		radial-gradient(ellipse 80% 60% at 50% 100%, var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18)), transparent 70%),
		var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	position: relative;
	overflow: hidden;
}
.bst-anatomy::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
	background-size: 64px 64px;
	mask-image: radial-gradient(ellipse 80% 60% at center, black, transparent 75%);
	-webkit-mask-image: radial-gradient(ellipse 80% 60% at center, black, transparent 75%);
	animation: bst-grid-drift 80s linear infinite;
	pointer-events: none;
}
@keyframes bst-grid-drift {
	to { background-position: 64px 64px, 64px 64px; }
}
.bst-anatomy-grid {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1.3fr 1fr;
	gap: var(--wp--preset--spacing--60, 48px);
	align-items: stretch;
}
@media (max-width: 900px) {
	.bst-anatomy-grid { grid-template-columns: 1fr; }
}
.bst-anatomy-eyebrow {
	color: var(--wp--preset--color--accent-1);
	margin-bottom: 8px;
}
.bst-anatomy-h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(32px, 5vw, 56px);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1;
	margin: 0 0 14px;
}
.bst-anatomy-h2 .accent {
	color: var(--wp--preset--color--accent-1);
}
.bst-anatomy-p {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 16px;
	line-height: 1.6;
	max-width: 540px;
	margin: 0 0 var(--wp--preset--spacing--50, 32px);
}
.bst-anatomy-floatbar {
	max-width: 540px;
}
.bst-anatomy-aside {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	padding: var(--wp--preset--spacing--50, 32px);
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: var(--wp--preset--spacing--40, 24px);
}
.bst-anatomy-num {
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(64px, 9vw, 112px);
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.04em;
	text-shadow: 0 0 48px var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18));
	font-variant-numeric: tabular-nums;
}
.bst-anatomy-subline {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.1em;
}

/* ── BST-80: minimal hosted-style checkout ────────────────────────────────
   Andrew's spec: only 4 rows visible — Contact / Steam URL / Payment (Card) /
   Terms+Place. WC Stripe v8+ removed the hosted-Checkout redirect mode and
   the React layer auto-injects the express-payment block (Apple Pay / G Pay
   / Link buttons) and non-Card payment tiles (Klarna / EPS / Bancontact)
   regardless of plugin Settings. We hide them via CSS rather than fork the
   block. Card is the ONLY visible payment method; UPE Element collects card
   number + expiry + CVC + ZIP, and Stripe handles 3DS modally.

   If Andrew rejects the inline card form visually, the next step is Viktor's
   Variant B: a custom Stripe Checkout Session that redirects to hosted UI.
   ──────────────────────────────────────────────────────────────────────── */

/* 1. Express payment block — Apple Pay / Google Pay / Link buttons row
      with "Or continue below" divider. WC injects it whenever any express
      payment method is registered (apple_pay_domain_set=yes can't be
      cleared via WC admin). */
.bst-checkout-wc .wp-block-woocommerce-checkout-express-payment-block,
.bst-checkout-wc .wc-block-components-express-payment,
.bst-checkout-wc .wc-block-components-express-payment-continue-rule {
	display: none !important;
}

/* 1b. Billing address — BST-88 reversal of BST-80. We DO collect billing
       in our UI now (first/last name + country + postal) for VAT calc
       and Steam fulfillment per design v4. Hide only the fields we don't
       want: street_1, street_2, city, state, phone, company.
       Hide entire field wrappers (not just the inner input) so the
       label + box collapse to zero height. */
.bst-checkout-wc .wc-block-components-address-form__company,
.bst-checkout-wc .wc-block-components-address-form__address_1,
.bst-checkout-wc .wc-block-components-address-form__address_2,
.bst-checkout-wc .wc-block-components-address-form__city,
.bst-checkout-wc .wc-block-components-address-form__state,
.bst-checkout-wc .wc-block-components-address-form__phone,
.bst-checkout-wc .wc-block-components-address-form .wc-block-components-text-input:has(#billing-company),
.bst-checkout-wc .wc-block-components-address-form .wc-block-components-text-input:has(#billing-address_1),
.bst-checkout-wc .wc-block-components-address-form .wc-block-components-text-input:has(#billing-address_2),
.bst-checkout-wc .wc-block-components-address-form .wc-block-components-text-input:has(#billing-city),
.bst-checkout-wc .wc-block-components-address-form .wc-block-components-text-input:has(#billing-state),
.bst-checkout-wc .wc-block-components-address-form .wc-block-components-text-input:has(#billing-phone),
.bst-checkout-wc .wc-block-checkout__contact-fields .wc-block-components-text-input:has(#billing-phone),
.bst-checkout-wc #billing-company,
.bst-checkout-wc #billing-address_1,
.bst-checkout-wc #billing-address_2,
.bst-checkout-wc #billing-city,
.bst-checkout-wc #billing-state,
.bst-checkout-wc #billing-phone,
/* WC ships a "+ Add apartment, suite, etc." toggle next to street_1 that
   reveals address_2. Since we hide street_1+address_2 entirely (digital
   product, no shipping address needed), the toggle is dead UI. */
.bst-checkout-wc .wc-block-components-address-form__address_2-toggle {
	display: none !important;
}
/* Mark the billing fields card with our pp-style border */
.bst-checkout-wc .wc-block-checkout__billing-fields .wc-block-components-checkout-step__heading {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}

/* 2. Non-Card payment tiles. WC Stripe v8 renders all Stripe-enabled
      payment methods as accordion-style radio options inside the payment
      block, even when upe_checkout_experience_accepted_payments=["card"].
      Match by gateway name attribute to keep selectors resilient to label
      copy changes. */
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_klarna"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_eps"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_bancontact"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_blik"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_ideal"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_link"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_afterpay_clearpay"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_affirm"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_alipay"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_amazon_pay"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_us_bank_account"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_sepa_debit"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe_cashapp"]),
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value^="stripe_"]):not(:has(input[value="stripe"])) {
	display: none !important;
}

/* 3. Once only Card is visible, kill the radio chrome — there's nothing to
      choose between. The visible UI becomes: "Payment options" header +
      card form (number, MM/YY, CVC). */
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe"]) .wc-block-components-radio-control-accordion-option__label {
	/* keep the "CREDIT / DEBIT CARD" label visible for trust but compact */
}
.bst-checkout-wc .wc-block-components-radio-control-accordion-option:has(input[value="stripe"]) input[type="radio"] {
	/* the radio circle is meaningless with one option — hide it */
	display: none;
}

/* 3a. BST-88 layout fix part 2: the radio-control-accordion-option
       defaults to ~230px width (WC assumes a stacked list of small radio
       tiles). With only one option (Card) visible, the form needs to
       span the full payment-block width (~710px). Force every level of
       the accordion + radio container + content + Stripe element to
       width:100%. Without this the Card iframe renders ~206px wide and
       leaves a huge empty void to its right.
       BST-191 fix: accordion-content carries padding (box-sizing:content-box
       by default) so width:100% + padding exceeds the parent, pushing the
       CVC field ~7px past the right border. Adding box-sizing:border-box
       makes padding count inside the 100%, eliminating the overflow while
       keeping the full-width card form intact. */
.bst-checkout-wc .wc-block-components-radio-control,
.bst-checkout-wc .wc-block-components-radio-control-accordion-option,
.bst-checkout-wc .wc-block-components-radio-control-accordion-content,
.bst-checkout-wc .wcstripe-payment-element,
.bst-checkout-wc .StripeElement,
.bst-checkout-wc .wcstripe-payment-element .__PrivateStripeElement {
	width: 100% !important;
	max-width: none !important;
	display: block !important;
	box-sizing: border-box !important;
}
.bst-checkout-wc .wcstripe-payment-element .__PrivateStripeElement > iframe {
	width: 100% !important;
}

/* ── BST-79 v2: Wishlist ──────────────────────────────────────────────────
   Source-of-truth design: deliverables/design/wishlist.html (v3 handoff).
   Sparkline + bell/alerts deferred to BST-81/BST-82 (need backend infra).
   ──────────────────────────────────────────────────────────────────────── */

/* (1) Header heart link + count badge — unchanged from v1 */
.bst-wishlist-link {
	position: relative;
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
}
.bst-wishlist-link:hover,
.bst-wishlist-link:focus-visible { color: var(--wp--preset--color--accent-1); }
.bst-wishlist-count {
	position: absolute;
	top: -4px;
	right: -6px;
	min-width: 16px;
	height: 16px;
	padding: 0 4px;
	border-radius: 8px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 700;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	transition: opacity 150ms;
}
.bst-wishlist-count.is-empty { opacity: 0; pointer-events: none; }

/* (2) Product-card heart overlay — top-right glass-blur button on every
       .ms-card site-wide. Hover-reveal on desktop, always visible on touch.
       Sits ABOVE .ms-card-link via z-index so clicks don't bubble through. */
.wp-block-main-skins-skin-card.ms-card { position: relative; }
.ms-card .ms-card-heart {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 4;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.18);
	background: rgba(0, 0, 0, 0.55);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	color: rgba(255, 255, 255, 0.85);
	border-radius: 50%;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	transform: translateY(-4px);
	transition:
		color 180ms,
		border-color 180ms,
		background 180ms,
		opacity 200ms,
		transform 220ms var(--wp--custom--transition--easing, ease-out);
}
.ms-card:hover .ms-card-heart,
.ms-card .ms-card-heart:focus-visible,
.ms-card .ms-card-heart.on {
	opacity: 1;
	transform: none;
}
.ms-card .ms-card-heart:hover {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
	background: rgba(0, 0, 0, 0.72);
}
.ms-card .ms-card-heart.on {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
	animation: heartPop 460ms var(--wp--custom--transition--easing, ease-out);
}
.ms-card .ms-card-heart svg { display: block; transition: transform 220ms; }
.ms-card .ms-card-heart:active svg { transform: scale(0.86); }
@keyframes heartPop {
	0%   { transform: scale(1); }
	35%  { transform: scale(1.22); }
	65%  { transform: scale(0.94); }
	100% { transform: scale(1); }
}
/* Touch devices: keep heart always visible (no hover state) */
@media (hover: none) {
	.ms-card .ms-card-heart { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
	.ms-card .ms-card-heart {
		opacity: 1;
		transform: none;
		animation: none !important;
		transition: none !important;
	}
}

/* (3a) PDP buy-actions flex row — wishlist LEFT (flex:1), Add to cart
        RIGHT (flex:2). Source order in template is add-to-cart first
        (a11y + WC form-validation), visual order flipped via `order`.

   Two extra surgical fixes here:
     - WC's add-to-cart-form ships a `.quantity` selector + an inline
       Stripe `wcpay-express-checkout-wrapper`. Hide both: our products
       are unique 1-of-1 skins (qty always 1) and we route payment
       through hosted-style checkout only (no PDP express buttons).
     - Constrain row height to 52px and use `align-items: center` so the
       two buttons read as equal-weight peers (without it, WC's grid
       blows the form to ~150px tall, dragging the wishlist with it). */
.ms-pp-buybox .ms-pp-buy-actions {
	display: flex !important;
	gap: 10px;
	align-items: center;
	margin-top: 8px;
}
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart {
	flex: 2;
	order: 2;
	margin: 0;
	min-width: 0;
	display: flex;
}
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart form.cart {
	display: flex !important;
	width: 100%;
	margin: 0;
	gap: 0;
}
/* Kill WC's grid template (min-content / auto / auto). */
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart form.cart::before {
	display: none !important;
}
/* Hide the quantity field — uniques are always qty=1.
   `name="quantity"` hidden field is preserved (it's outside .quantity). */
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart .quantity {
	display: none !important;
}
/* WC Stripe Express tiles (Apple Pay / Google Pay / Pay with Link) render
   on PDP + cart + checkout regardless of `express_checkout=no` and
   `payment_request=no` in WC Stripe settings — the wrapper elements
   ship empty and get hydrated by Stripe JS in `*_button_locations`.
   We don't offer express anywhere right now (BST-80 removed it from
   /checkout/ via template strip + CSS), so kill the wrappers site-wide.

   WC Stripe v8.x uses `#wc-stripe-express-checkout-element` (id-anchored
   container) with per-method children `*-applePay`, `*-googlePay`,
   `*-link`. Older builds had `.wcpay-*` / `.stripe-payment-request-*`
   class names — keep them as belt-and-braces. */
#wc-stripe-express-checkout-element,
[id^="wc-stripe-express-checkout-element"],
.wcpay-express-checkout-wrapper,
.stripe-payment-request-wrapper,
.wc-stripe-payment-request-wrapper,
.wc-block-components-express-payment,
.wp-block-woocommerce-checkout-express-payment-block,
.wcpay-payment-request-wrapper {
	display: none !important;
}
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart .single_add_to_cart_button,
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart button.button {
	width: 100%;
	height: 52px;
	margin: 0;
	padding: 0 18px;
	font-size: 13px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
}
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-wishlist-toggle {
	flex: 1;
	order: 1;
	margin: 0;
	min-width: 130px;
	height: 52px;
	padding-block: 0;
	justify-content: center;
}
@media (max-width: 480px) {
	.ms-pp-buybox .ms-pp-buy-actions { flex-direction: column; }
	.ms-pp-buybox .ms-pp-buy-actions .ms-pp-add-to-cart,
	.ms-pp-buybox .ms-pp-buy-actions .ms-pp-wishlist-toggle { flex: 1 1 auto; }
}

/* (3) PDP buybox wishlist button — ghost button beside Add to cart per
       design-v3 product-page.html `.pp-buy-actions`. */
.bst-wishlist-toggle {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 12px 16px;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	cursor: pointer;
	transition: all 180ms var(--wp--custom--transition--easing, ease-out);
	margin-top: 8px;
}
.bst-wishlist-toggle svg {
	transition: fill 180ms, transform 180ms;
}
.bst-wishlist-toggle:hover,
.bst-wishlist-toggle:focus-visible {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}
.bst-wishlist-toggle.is-saved,
.bst-wishlist-toggle.on {
	background: var(--wp--preset--color--accent-1-soft, rgba(179, 224, 0, 0.14));
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
}
.bst-wishlist-toggle.is-saved svg,
.bst-wishlist-toggle.on svg { fill: currentColor; }
.bst-wishlist-toggle.pop {
	animation: pdpHeartPop 520ms var(--wp--custom--transition--easing, ease-out);
}
@keyframes pdpHeartPop {
	0%   { transform: scale(1); }
	35%  { transform: scale(1.05); box-shadow: 0 0 0 0 var(--wp--preset--color--accent-1-soft); }
	100% { transform: scale(1); box-shadow: 0 0 0 18px transparent; }
}
@media (prefers-reduced-motion: reduce) {
	.bst-wishlist-toggle.pop { animation: none; }
}

/* (4) /wishlist/ page — hero + stats + toolbar + grid */
.bst-wishlist-page {
	padding-bottom: var(--wp--preset--spacing--80, 80px);
}

/* Hero */
.bst-wishlist-page .wl-hero {
	position: relative;
	overflow: hidden;
	padding-block: var(--wp--preset--spacing--60, 48px) var(--wp--preset--spacing--40, 24px);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	margin-bottom: var(--wp--preset--spacing--50, 32px);
}
.bst-wishlist-page .wl-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(ellipse 50% 70% at 90% 20%, var(--wp--preset--color--accent-1-soft), transparent 60%);
	pointer-events: none;
}
.bst-wishlist-page .wl-hero-grid {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: var(--wp--preset--spacing--50, 32px);
	align-items: end;
	position: relative;
	z-index: 1;
}
@media (max-width: 760px) {
	.bst-wishlist-page .wl-hero-grid { grid-template-columns: 1fr; }
}
.bst-wishlist-page .wl-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	margin-bottom: 4px;
}
.bst-wishlist-page .wl-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(36px, 5vw, 56px);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.0;
	margin: 0;
}
.bst-wishlist-page .wl-title .count {
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 500;
	font-size: 0.5em;
	margin-left: 12px;
	letter-spacing: -0.01em;
	vertical-align: middle;
}

/* Mini stats row */
.bst-wishlist-page .wl-stats {
	display: flex;
	gap: 0;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 6px);
	overflow: hidden;
}
.bst-wishlist-page .wl-stat {
	padding: 14px 22px;
	border-right: 1px solid var(--wp--preset--color--neutral);
	min-width: 0;
}
.bst-wishlist-page .wl-stat:last-child { border-right: 0; }
.bst-wishlist-page .wl-stat .label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: 4px;
}
.bst-wishlist-page .wl-stat .num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1;
	color: var(--wp--preset--color--contrast);
}
.bst-wishlist-page .wl-stat.alert .num { color: var(--wp--preset--color--accent-1); }
.bst-wishlist-page .wl-stat .num .arrow {
	display: inline-block;
	margin-left: 4px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	transform: translateY(-2px);
	animation: bobArrow 1.8s ease-in-out infinite;
}
@keyframes bobArrow {
	0%, 100% { transform: translateY(-2px); }
	50%      { transform: translateY(-6px); }
}
.bst-wishlist-page .wl-stat .of {
	font-size: 12px;
	color: var(--wp--preset--color--contrast-faint);
	font-family: var(--wp--preset--font-family--mono);
	letter-spacing: 0.06em;
}

/* Toolbar */
.bst-wishlist-page .wl-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--30, 16px);
	padding: var(--wp--preset--spacing--30, 16px) var(--wp--preset--spacing--40, 24px);
	margin-block: var(--wp--preset--spacing--50, 32px) var(--wp--preset--spacing--40, 24px);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 6px);
}
.bst-wishlist-page .wl-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.bst-wishlist-page .wl-tab {
	padding: 8px 14px;
	border: 0;
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	background: transparent;
	color: var(--wp--preset--color--contrast-muted);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 600;
	cursor: pointer;
	transition: all 180ms;
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.bst-wishlist-page .wl-tab:hover { color: var(--wp--preset--color--contrast); background: var(--wp--preset--color--base); }
.bst-wishlist-page .wl-tab.is-on {
	background: var(--wp--preset--color--accent-1-soft);
	color: var(--wp--preset--color--accent-1);
	box-shadow: 0 0 0 1px var(--wp--preset--color--accent-1) inset;
}
.bst-wishlist-page .wl-tab .pill {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast-muted);
	padding: 2px 7px;
	border-radius: 9999px;
	font-size: 10px;
	letter-spacing: 0;
}
.bst-wishlist-page .wl-tab.is-on .pill {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
}
.bst-wishlist-page .wl-tools-right {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}
.bst-wishlist-page .wl-sort {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	padding: 7px 30px 7px 12px;
	appearance: none;
	cursor: pointer;
	outline: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='rgba(255,255,255,.6)' d='M0 0h10L5 6z'/></svg>");
	background-repeat: no-repeat;
	background-position: right 10px center;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}
.bst-wishlist-page .wl-sort:focus,
.bst-wishlist-page .wl-sort:hover {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
}
.bst-wishlist-page .wl-bulk {
	display: flex;
	gap: 6px;
	padding-left: 14px;
	margin-left: 4px;
	border-left: 1px solid var(--wp--preset--color--neutral);
}
.bst-wishlist-page .bst-btn-sm {
	font-size: 11px;
	padding: 7px 12px;
	letter-spacing: 0.06em;
}

/* Grid + cards */
.bst-wishlist-page .wl-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: var(--wp--preset--spacing--40, 24px);
}
.bst-wishlist-page .wl-card {
	--enter-delay: 0ms;
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 6px);
	overflow: hidden;
	transition:
		transform 320ms var(--wp--custom--transition--easing, ease-out),
		border-color 200ms,
		box-shadow 320ms,
		opacity 380ms,
		max-height 380ms,
		margin 380ms;
	animation: wlCardEnter 520ms var(--wp--custom--transition--easing, ease-out) backwards;
	animation-delay: var(--enter-delay);
}
@keyframes wlCardEnter {
	from { opacity: 0; transform: translateY(28px) scale(0.96); }
	to   { opacity: 1; transform: none; }
}
.bst-wishlist-page .wl-card:hover {
	border-color: var(--wp--preset--color--accent-1);
	transform: translateY(-6px);
	box-shadow:
		0 24px 50px -16px var(--wp--preset--color--accent-1-soft),
		0 0 0 1px var(--wp--preset--color--accent-1);
}
.bst-wishlist-page .wl-card.removing {
	opacity: 0;
	transform: scale(0.88) translateX(-30px) !important;
	max-height: 0;
	margin: -10px;
	pointer-events: none;
	overflow: hidden;
}
.bst-wishlist-page .wl-card-rarity {
	height: 3px;
	width: 100%;
	background: var(--rarity-color, var(--wp--preset--color--accent-1));
	box-shadow: 0 0 14px var(--rarity-color, var(--wp--preset--color--accent-1));
}
.bst-wishlist-page .wl-card-img {
	position: relative;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--wp--preset--color--base);
	isolation: isolate;
}

/* BST-147: stock-state badge in card top-right corner — same visual language
   as the catalog skin-card stock badge (BST-140). */
.bst-wishlist-page .wl-card-stock-badge {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 3;
	display: inline-block;
	padding: 4px 8px;
	border-radius: 4px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	line-height: 1;
	pointer-events: none;
}
.bst-wishlist-page .wl-card-stock-badge--in {
	background: var(--wp--preset--color--accent-1-soft, rgba(179, 224, 0, 0.18));
	color: var(--wp--preset--color--accent-1, #b3e000);
	border: 1px solid var(--wp--preset--color--accent-1, #b3e000);
}
.bst-wishlist-page .wl-card-stock-badge--oos {
	background: rgba(229, 72, 77, 0.14);
	color: #ff6b6b;
	border: 1px solid rgba(229, 72, 77, 0.55);
}
.bst-wishlist-page .wl-card-img-link {
	position: absolute;
	inset: 0;
	display: block;
	transition: transform 540ms var(--wp--custom--transition--easing, ease-out);
}
.bst-wishlist-page .wl-card:hover .wl-card-img-link { transform: scale(1.06); }
.bst-wishlist-page .wl-card-img img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 18px;
}
.bst-wishlist-page .wl-trend-chip {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 3;
	padding: 4px 10px 4px 8px;
	background: rgba(0, 0, 0, 0.55);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	border-radius: 9999px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: 0.04em;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.bst-wishlist-page .wl-trend-chip.down { color: var(--wp--preset--color--success, #4ade80); border: 1px solid rgba(74, 222, 128, 0.4); }
.bst-wishlist-page .wl-trend-chip.up   { color: var(--wp--preset--color--accent-1); border: 1px solid var(--wp--preset--color--accent-1); }
.bst-wishlist-page .wl-trend-chip.flat { color: var(--wp--preset--color--contrast-muted); border: 1px solid var(--wp--preset--color--neutral-strong); }
.bst-wishlist-page .wl-trend-chip .arrow { font-size: 11px; font-weight: 700; }

/* ── BST-87 wishlist v3: bell button (price-drop alerts) ───────────────── */
.bst-wishlist-page .wl-bell {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 3;
	width: 32px;
	height: 32px;
	padding: 0;
	border: 1px solid var(--wp--preset--color--neutral-strong);
	background: rgba(0, 0, 0, 0.55);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	color: var(--wp--preset--color--contrast-muted);
	border-radius: 50%;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 180ms ease;
}
.bst-wishlist-page .wl-bell:hover,
.bst-wishlist-page .wl-bell:focus-visible {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}
.bst-wishlist-page .wl-bell.on {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--accent-1);
	animation: wlBellShake 0.5s ease-out;
}
@keyframes wlBellShake {
	0%, 100% { transform: rotate(0); }
	20%      { transform: rotate(-18deg); }
	40%      { transform: rotate(14deg); }
	60%      { transform: rotate(-8deg); }
	80%      { transform: rotate(4deg); }
}
@media (prefers-reduced-motion: reduce) {
	.bst-wishlist-page .wl-bell.on { animation: none; }
}

/* ── BST-87 wishlist v3: meta strip + spec subline above price block ──── */
.bst-wishlist-page .wl-card-title {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	display: flex;
	align-items: center;
	gap: 6px;
	flex-wrap: wrap;
}
.bst-wishlist-page .wl-card-title .sep {
	color: var(--wp--preset--color--contrast-faint);
	opacity: 0.5;
}
.bst-wishlist-page .wl-card-title .rarity {
	color: var(--wp--preset--color--contrast);
}
/* Per-rarity color tokens — fall through to neutral if a slug lacks a token */
.bst-wishlist-page .wl-card-title .rarity-covert         { color: var(--wp--preset--color--rarity-covert, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-classified     { color: var(--wp--preset--color--rarity-classified, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-restricted     { color: var(--wp--preset--color--rarity-restricted, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-mil-spec       { color: var(--wp--preset--color--rarity-mil-spec, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-industrial-grade { color: var(--wp--preset--color--rarity-industrial-grade, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-consumer-grade { color: var(--wp--preset--color--rarity-consumer-grade, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-contraband     { color: var(--wp--preset--color--rarity-contraband, var(--wp--preset--color--contrast)); }
.bst-wishlist-page .wl-card-title .rarity-extraordinary  { color: var(--wp--preset--color--rarity-extraordinary, var(--wp--preset--color--contrast)); }

.bst-wishlist-page .wl-card-title .badge {
	padding: 1px 6px;
	border-radius: 3px;
	border: 1px solid currentColor;
	font-size: 9px;
	letter-spacing: 0.04em;
}
.bst-wishlist-page .wl-card-title .badge.st {
	color: var(--wp--preset--color--accent-1);
}
.bst-wishlist-page .wl-card-title .badge.sv {
	color: var(--wp--preset--color--warning, #f59e0b);
}

.bst-wishlist-page .wl-card-name small {
	display: block;
	font-family: var(--wp--preset--font-family--body, var(--wp--preset--font-family--mono));
	font-size: 12px;
	font-weight: 500;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0;
	margin-top: 4px;
	text-transform: none;
}

/* BST-81: Sparkline — 30-day price history overlay on card image.
   Ported from deliverables/design/wishlist.html lines 264-271.
   The mask gradient produces the "fades into image" effect at the top.
   `aspect-ratio: 16/10` on .wl-card-img already pins the container height,
   so CLS = 0 whether or not the sparkline is present. */
.bst-wishlist-page .wl-card-img .wl-spark {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 2;
	height: 36px;
	pointer-events: none;
	mask-image: linear-gradient( 180deg, transparent, black 30%, black );
	-webkit-mask-image: linear-gradient( 180deg, transparent, black 30%, black );
}

/* BST-81: "history building…" caption — shown when the price-history
   endpoint returned data for the product but fewer than 3 non-null
   snapshots exist (product recently imported, history still accumulating).
   Mono, dim, no layout impact. */
.bst-wishlist-page .wl-spark-pending {
	display: inline-block;
	margin-left: 8px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	letter-spacing: 0.06em;
	opacity: 0.5;
	vertical-align: middle;
}

/* HUD corners reveal on hover */
.bst-wishlist-page .wl-hud-corner {
	position: absolute;
	width: 12px;
	height: 12px;
	border: 2px solid var(--wp--preset--color--accent-1);
	z-index: 2;
	opacity: 0;
	transition: opacity 240ms;
	pointer-events: none;
}
.bst-wishlist-page .wl-card:hover .wl-hud-corner { opacity: 1; }
.bst-wishlist-page .wl-hud-corner.tl { top: 8px;    left: 8px;   border-right: 0; border-bottom: 0; }
.bst-wishlist-page .wl-hud-corner.tr { top: 8px;    right: 8px;  border-left:  0; border-bottom: 0; }
.bst-wishlist-page .wl-hud-corner.bl { bottom: 8px; left: 8px;   border-right: 0; border-top:    0; }
.bst-wishlist-page .wl-hud-corner.br { bottom: 8px; right: 8px;  border-left:  0; border-top:    0; }

/* Card body */
.bst-wishlist-page .wl-card-body {
	padding: var(--wp--preset--spacing--40, 24px);
	display: flex;
	flex-direction: column;
	gap: 12px;
	flex: 1;
}
.bst-wishlist-page .wl-card-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.2;
	color: var(--wp--preset--color--contrast);
}
.bst-wishlist-page .wl-card-name-link {
	color: inherit;
	text-decoration: none;
}
.bst-wishlist-page .wl-card-name-link:hover { color: var(--wp--preset--color--accent-1); }
.bst-wishlist-page .wl-card-foot {
	margin-top: auto;
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 10px;
	align-items: end;
	padding-top: var(--wp--preset--spacing--30, 16px);
	border-top: 1px solid var(--wp--preset--color--neutral);
}
.bst-wishlist-page .wl-price-block .added {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 2px;
}
.bst-wishlist-page .wl-price-now {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1;
	color: var(--wp--preset--color--contrast);
}
.bst-wishlist-page .wl-price-then {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	margin-top: 3px;
}
.bst-wishlist-page .wl-price-then.muted { font-size: 10px; opacity: 0.7; }
.bst-wishlist-page .wl-price-then .strike { text-decoration: line-through; opacity: 0.6; margin-right: 6px; }
.bst-wishlist-page .wl-price-then .delta-down { color: var(--wp--preset--color--success, #4ade80); }
.bst-wishlist-page .wl-price-then .delta-up   { color: var(--wp--preset--color--accent-1); }

/* Actions */
.bst-wishlist-page .wl-actions { display: flex; gap: 6px; align-items: center; }
.bst-wishlist-page .wl-act {
	width: 38px;
	height: 38px;
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral-strong);
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 180ms;
}
.bst-wishlist-page .wl-act:hover {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}
.bst-wishlist-page .wl-act.danger:hover {
	color: var(--wp--preset--color--error, #ef4444);
	border-color: var(--wp--preset--color--error, #ef4444);
}
.bst-wishlist-page .wl-act.cart {
	width: auto;
	padding: 0 14px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	gap: 6px;
	min-width: 110px;
}
.bst-wishlist-page .wl-act.cart:hover {
	background: var(--wp--preset--color--accent-1-hover, var(--wp--preset--color--accent-1));
	color: var(--wp--preset--color--base);
	transform: translateY(-1px);
	box-shadow: 0 8px 20px -4px var(--wp--preset--color--accent-1-soft);
}
.bst-wishlist-page .wl-act.cart:active { transform: translateY(0); }
.bst-wishlist-page .wl-act.cart:disabled {
	opacity: 0.7;
	cursor: progress;
}
.bst-wishlist-page .wl-act.cart .plus {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.18);
	font-size: 13px;
	transition: transform 220ms;
}
.bst-wishlist-page .wl-act.cart:hover .plus { transform: rotate(180deg); }
.bst-wishlist-page .wl-act.cart.confirm {
	animation: wlConfirmPulse 600ms ease-out;
}
@keyframes wlConfirmPulse {
	0%   { transform: scale(1); }
	35%  { transform: scale(1.06); box-shadow: 0 0 0 0 var(--wp--preset--color--success, #4ade80); }
	100% { transform: scale(1); box-shadow: 0 0 0 16px transparent; }
}
/* BST-161: OOS is now a DISABLED button sitting in the bottom-right action
   row, matching the "TO CART" button's height/footprint (38px tall, min 110px
   wide). The old top-right corner badge that overlapped the price-alert bell
   has been removed in wishlist.js. Text never wraps; dashed border + muted
   palette + not-allowed cursor read as "unavailable". */
.bst-wishlist-page .wl-act.oos {
	width: auto;
	height: 38px;
	padding: 0 14px;
	min-width: 110px;
	white-space: nowrap;
	color: var(--wp--preset--color--contrast-faint);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	border: 1px dashed var(--wp--preset--color--neutral-strong);
	background: transparent;
	cursor: not-allowed;
}
.bst-wishlist-page .wl-act.oos:hover {
	/* override the generic .wl-act:hover lime — a disabled control stays muted */
	color: var(--wp--preset--color--contrast-faint);
	border-color: var(--wp--preset--color--neutral-strong);
}

/* Empty state */
.bst-wishlist-page .wl-empty {
	padding: var(--wp--preset--spacing--80, 80px) var(--wp--preset--spacing--50, 32px);
	background:
		radial-gradient(ellipse 60% 60% at 50% 30%, var(--wp--preset--color--accent-1-soft), transparent 70%),
		var(--wp--preset--color--base-elevated);
	border: 1px dashed var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--lg, 8px);
	text-align: center;
	margin-block: var(--wp--preset--spacing--50, 32px) var(--wp--preset--spacing--80, 80px);
	position: relative;
	overflow: hidden;
}
.bst-wishlist-page .wl-empty[hidden] { display: none; }
.bst-wishlist-page .wl-empty .glyph {
	width: 100px;
	height: 100px;
	margin: 0 auto var(--wp--preset--spacing--40, 24px);
	border-radius: 50%;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	position: relative;
	box-shadow: inset 0 0 24px var(--wp--preset--color--accent-1-soft);
}
.bst-wishlist-page .wl-empty .glyph::after {
	content: '';
	position: absolute;
	inset: -16px;
	border: 1px dashed var(--wp--preset--color--accent-1-soft);
	border-radius: 50%;
	animation: wlEmptyRotate 12s linear infinite;
}
@keyframes wlEmptyRotate { to { transform: rotate(360deg); } }
.bst-wishlist-page .wl-empty .glyph svg { color: var(--wp--preset--color--accent-1); }
.bst-wishlist-page .wl-empty h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	margin: 0 0 8px;
}
.bst-wishlist-page .wl-empty p {
	color: var(--wp--preset--color--contrast-muted);
	max-width: 460px;
	margin: 0 auto var(--wp--preset--spacing--50, 32px);
	line-height: 1.6;
}

/* Filter empty (sub-state when wishlist has items but current tab doesn't) */
.bst-wishlist-page .wl-filter-empty {
	padding: var(--wp--preset--spacing--60, 48px);
	text-align: center;
	color: var(--wp--preset--color--contrast-muted);
	background: var(--wp--preset--color--base-elevated);
	border: 1px dashed var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--md, 6px);
	margin-bottom: var(--wp--preset--spacing--60, 48px);
}
.bst-wishlist-page .wl-filter-empty[hidden] { display: none; }
.bst-wishlist-page .wl-filter-empty .t {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	color: var(--wp--preset--color--contrast);
	margin-bottom: 6px;
}
.bst-wishlist-page .wl-filter-empty .s {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

/* Toast */
.bst-wishlist-page .wl-toast {
	position: fixed;
	bottom: 24px;
	left: 50%;
	transform: translateX(-50%) translateY(20px);
	z-index: 50;
	padding: 14px 22px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--accent-1);
	border-radius: 9999px;
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	box-shadow: 0 16px 40px rgba(0, 0, 0, 0.4), 0 0 0 1px var(--wp--preset--color--accent-1);
	display: flex;
	align-items: center;
	gap: 12px;
	opacity: 0;
	pointer-events: none;
	transition: opacity 240ms, transform 240ms var(--wp--custom--transition--easing, ease-out);
}
.bst-wishlist-page .wl-toast[hidden] { display: none; }
.bst-wishlist-page .wl-toast.show {
	opacity: 1;
	transform: translateX(-50%) translateY(0);
	pointer-events: auto;
}
.bst-wishlist-page .wl-toast .ico {
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: var(--wp--preset--color--success, #4ade80);
	color: var(--wp--preset--color--base);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-weight: 900;
	flex-shrink: 0;
}
.bst-wishlist-page .wl-toast .undo {
	color: var(--wp--preset--color--accent-1);
	cursor: pointer;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	padding-left: 12px;
	margin-left: 4px;
	border-left: 1px solid var(--wp--preset--color--neutral);
	background: transparent;
	border-top: 0;
	border-right: 0;
	border-bottom: 0;
}
.bst-wishlist-page .wl-toast .undo:hover { color: var(--wp--preset--color--accent-1-hover, var(--wp--preset--color--accent-1)); }
.bst-wishlist-page .wl-toast .undo[hidden] { display: none; }

@media (prefers-reduced-motion: reduce) {
	.bst-wishlist-page .wl-card,
	.bst-wishlist-page .wl-empty .glyph::after,
	.bst-wishlist-page .wl-stat .num .arrow,
	.bst-wishlist-page .wl-act.cart.confirm,
	.bst-wishlist-page .wl-toast {
		animation: none !important;
		transition: none !important;
	}
}

@media (max-width: 600px) {
	.bst-wishlist-page .wl-toolbar { flex-direction: column; align-items: stretch; }
	.bst-wishlist-page .wl-tools-right { justify-content: space-between; }
	.bst-wishlist-page .wl-bulk { padding-left: 0; margin-left: 0; border-left: 0; }
	.bst-wishlist-page .wl-card-foot { grid-template-columns: 1fr; }
	.bst-wishlist-page .wl-actions { justify-content: flex-start; }
}

/* ── BST-77: themed lanes (Find the lane you collect) ─────────────────── */
.bst-lanes {
	background: var(--wp--preset--color--base);
}
.bst-lanes-head {
	text-align: center;
	margin-bottom: var(--wp--preset--spacing--60, 48px);
}
.bst-lanes-head .bst-section-sub {
	margin-left: auto;
	margin-right: auto;
	max-width: 640px;
}
.bst-lanes-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	align-items: stretch;
}
@media (max-width: 980px) { .bst-lanes-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .bst-lanes-grid { grid-template-columns: 1fr; } }

.bst-lane {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 14px;
	min-height: 220px;
	padding: var(--wp--preset--spacing--40, 24px);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	transition: border-color 200ms, transform 200ms, box-shadow 200ms;
}
.bst-lane:hover,
.bst-lane:focus-visible {
	border-color: var(--rarity-color, var(--wp--preset--color--accent-1));
	transform: translateY(-4px);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4);
}
.bst-lane:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 3px;
}
.bst-lane-stripe {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 3px;
	background: var(--rarity-color, var(--wp--preset--color--accent-1));
	transition: box-shadow 200ms;
}
.bst-lane:hover .bst-lane-stripe {
	box-shadow: 0 0 14px var(--rarity-color, transparent);
}
.bst-lane::before {
	content: "";
	position: absolute;
	inset: 0;
	background: radial-gradient(circle at 80% 100%, var(--rarity-color, transparent), transparent 60%);
	opacity: 0.10;
	pointer-events: none;
}
.bst-lane-head {
	position: relative;
	display: flex;
	align-items: center;
	gap: 10px;
}
.bst-lane-badge {
	width: 28px;
	height: 28px;
	border-radius: 4px;
	background: var(--rarity-color, var(--wp--preset--color--accent-1));
	color: var(--wp--preset--color--base);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	flex-shrink: 0;
}
.bst-lane-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	letter-spacing: 0.10em;
	color: var(--wp--preset--color--contrast-muted);
}
.bst-lane-body {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 6px;
	position: relative;
}
.bst-lane-label {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast);
	margin: 0;
}
.bst-lane-sub {
	font-family: var(--wp--preset--font-family--body, inherit);
	font-size: 13px;
	line-height: 1.5;
	color: var(--wp--preset--color--contrast-muted);
	margin: 0;
}
.bst-lane-foot {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding-top: 12px;
	border-top: 1px solid var(--wp--preset--color--neutral);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
}
.bst-lane-cta {
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
}

/* ── BST-55: interactive float anatomy ────────────────────────────────── */
.bst-anatomy-left {
	min-width: 0;
}
.bst-anatomy-bignum {
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 700;
	font-size: clamp(72px, 11vw, 144px);
	line-height: 1;
	letter-spacing: -0.04em;
	font-variant-numeric: tabular-nums;
	margin: var(--wp--preset--spacing--40, 24px) 0 var(--wp--preset--spacing--30, 16px);
	color: var(--wp--preset--color--accent-1);
	text-shadow: 0 0 48px var(--wp--custom--accent-1-soft, rgba(179, 224, 0, 0.18));
}
.bst-anatomy-bignum .ghost,
.bst-anatomy-bignum .dot {
	color: var(--wp--preset--color--contrast-faint);
	text-shadow: none;
}
.bst-anatomy-floatbar {
	position: relative;
	max-width: 540px;
	height: 28px;
	cursor: ew-resize;
	user-select: none;
	-webkit-user-select: none;
	touch-action: none;
	outline: none;
}
.bst-anatomy-floatbar:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 6px;
	border-radius: 2px;
}
.bst-anatomy-track {
	display: flex;
	width: 100%;
	height: 12px;
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	overflow: hidden;
}
.bst-anatomy-track .seg {
	height: 100%;
	display: block;
}
.bst-anatomy-track .seg-fn { flex: 0 0 7%;  background: var(--wp--preset--color--ext-fn, #4ade80); }
.bst-anatomy-track .seg-mw { flex: 0 0 8%;  background: var(--wp--preset--color--ext-mw, #a3e635); }
.bst-anatomy-track .seg-ft { flex: 0 0 23%; background: var(--wp--preset--color--ext-ft, #facc15); }
.bst-anatomy-track .seg-ww { flex: 0 0 7%;  background: var(--wp--preset--color--ext-ww, #fb923c); }
.bst-anatomy-track .seg-bs { flex: 0 0 55%; background: var(--wp--preset--color--ext-bs, #ef4444); }
.bst-anatomy-marker {
	position: absolute;
	top: -4px;
	bottom: -4px;
	width: 2px;
	background: var(--wp--preset--color--contrast);
	transform: translateX(-1px);
	box-shadow:
		0 0 0 1px var(--wp--preset--color--base),
		0 0 12px rgba(255, 255, 255, 0.6);
	pointer-events: none;
	transition: left 60ms linear;
}
.bst-anatomy-floatbar.is-dragging .bst-anatomy-marker {
	transition: none;
}
.bst-anatomy-marker-flag {
	position: absolute;
	top: -8px;
	left: 50%;
	transform: translateX(-50%);
	width: 0;
	height: 0;
	border-left: 6px solid transparent;
	border-right: 6px solid transparent;
	border-top: 6px solid var(--wp--preset--color--contrast);
	filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.5));
}
.bst-anatomy-band-labels {
	display: flex;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.08em;
	margin-top: 8px;
}
.bst-anatomy-band-labels > span:nth-child(1) { flex: 0 0 7%;  text-align: center; }
.bst-anatomy-band-labels > span:nth-child(2) { flex: 0 0 8%;  text-align: center; }
.bst-anatomy-band-labels > span:nth-child(3) { flex: 0 0 23%; text-align: center; }
.bst-anatomy-band-labels > span:nth-child(4) { flex: 0 0 7%;  text-align: center; }
.bst-anatomy-band-labels > span:nth-child(5) { flex: 0 0 55%; text-align: center; }

.bst-anatomy-presets {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: var(--wp--preset--spacing--40, 24px);
	max-width: 540px;
}
.bst-anatomy-presets button {
	background: var(--wp--preset--color--base-elevated);
	color: var(--wp--preset--color--contrast-muted);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm, 3px);
	padding: 6px 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	cursor: pointer;
	transition: all 150ms;
}
.bst-anatomy-presets button:hover,
.bst-anatomy-presets button:focus-visible {
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--contrast-muted);
}
.bst-anatomy-presets button:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent-1);
	outline-offset: 2px;
}
.bst-anatomy-presets button.is-active {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--accent-1);
}

.bst-anatomy-right {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40, 24px);
}
.bst-anatomy-panel {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	padding: var(--wp--preset--spacing--40, 24px) var(--wp--preset--spacing--50, 32px);
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.bst-anatomy-panel-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	padding-bottom: 12px;
}
.bst-anatomy-panel-row:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}
.bst-anatomy-panel-row .k {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	letter-spacing: 0.10em;
	text-transform: uppercase;
	color: var(--wp--preset--color--contrast-muted);
}
.bst-anatomy-panel-row .v {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 14px;
	color: var(--wp--preset--color--contrast);
	font-variant-numeric: tabular-nums;
	text-align: right;
}
.bst-anatomy-panel-row .v.lime {
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
}
.bst-anatomy-exterior {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 20px;
	letter-spacing: -0.01em;
	font-weight: 700;
}
.bst-anatomy-exterior[data-anatomy-ext="fn"] { color: var(--wp--preset--color--ext-fn, #4ade80); }
.bst-anatomy-exterior[data-anatomy-ext="mw"] { color: var(--wp--preset--color--ext-mw, #a3e635); }
.bst-anatomy-exterior[data-anatomy-ext="ft"] { color: var(--wp--preset--color--ext-ft, #facc15); }
.bst-anatomy-exterior[data-anatomy-ext="ww"] { color: var(--wp--preset--color--ext-ww, #fb923c); }
.bst-anatomy-exterior[data-anatomy-ext="bs"] { color: var(--wp--preset--color--ext-bs, #ef4444); }

.bst-anatomy-callout {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--accent-1);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	padding: var(--wp--preset--spacing--40, 20px);
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.bst-anatomy-callout-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 17px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}
.bst-anatomy-callout-body {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	line-height: 1.6;
	color: var(--wp--preset--color--accent-1);
	margin: 0;
}
.bst-anatomy-live {
	position: absolute;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(0,0,0,0);
	white-space: nowrap;
}

/* ── Integrators stats (4-up KPI grid with AnimatedNumber) ── */
.bst-stats {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	overflow: hidden;
}
@media (max-width: 880px) {
	.bst-stats { grid-template-columns: repeat(2, 1fr); }
}
.bst-stat {
	padding: var(--wp--preset--spacing--50, 32px);
	border-right: 1px solid var(--wp--preset--color--neutral);
	position: relative;
}
.bst-stat:last-child { border-right: 0; }
@media (max-width: 880px) {
	.bst-stat:nth-child(2) { border-right: 0; }
	.bst-stat:nth-child(-n+2) { border-bottom: 1px solid var(--wp--preset--color--neutral); }
}
.bst-stat .label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: 8px;
}
.bst-stat .num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(28px, 4vw, 44px);
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1;
	color: var(--wp--preset--color--contrast);
	margin-bottom: 4px;
	font-variant-numeric: tabular-nums;
}
.bst-stat .num .unit {
	color: var(--wp--preset--color--accent-1);
	font-size: 0.6em;
	margin-left: 4px;
}
.bst-stat .num.bst-stat-text {
	color: var(--wp--preset--color--accent-1);
	font-size: clamp(20px, 2.4vw, 28px);
	letter-spacing: -0.01em;
}
.bst-stat .meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
}

/* ── Three steps how-it-works ── */
.bst-steps-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--50, 32px);
}
@media (max-width: 880px) {
	.bst-steps-grid { grid-template-columns: 1fr; }
}
.bst-step {
	padding: var(--wp--preset--spacing--50, 32px);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	position: relative;
}
.bst-step .num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 48px;
	font-weight: 700;
	letter-spacing: -0.04em;
	color: var(--wp--preset--color--accent-1);
	line-height: 1;
	margin-bottom: var(--wp--preset--spacing--40, 24px);
	display: flex;
	align-items: baseline;
	gap: 8px;
}
.bst-step .num small {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-weight: 400;
}
.bst-step h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.02em;
	margin: 0 0 10px;
}
.bst-step p {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 14px;
	line-height: 1.6;
	margin: 0;
}
.bst-step .meta {
	margin-top: var(--wp--preset--spacing--40, 24px);
	padding-top: var(--wp--preset--spacing--30, 16px);
	border-top: 1px solid var(--wp--preset--color--neutral);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}
.bst-step .meta span {
	color: var(--wp--preset--color--accent-1);
}

/* ── v0.1.18: armory tile becomes a link — kill default link styling ── */
a.bst-loadout {
	color: inherit;
	text-decoration: none;
}
a.bst-loadout:hover {
	text-decoration: none;
}

/* ── v0.1.18: reduced-motion guard for new animations ── */
@media (prefers-reduced-motion: reduce) {
	.bst-anatomy::before { animation: none; }
}

/* ════════════════════════════════════════════════════════════════════════════
   v0.1.10 — Mobile responsive
   Breakpoints:
     ≥ 880px  desktop (default rules everywhere above)
     768–880  medium tablet (header collapses, sidebar bottom-sheet)
     600–768  small tablet (hero stacks, grid 2-col)
     < 600    phone (single col, simplified rows, stacked CTAs)
   ════════════════════════════════════════════════════════════════════════════ */

/* ──────────── Header / hamburger drawer (< 880px) ──────────── */

@media (max-width: 879.98px) {
	.bst-header-inner {
		flex-wrap: nowrap;
		gap: 12px;
	}
	.bst-nav-desktop,
	/* BST-97: .bst-header-signin / .bst-header-signup removed — no longer in use */
	.bst-search-desktop { display: none; }

	.bst-logo-word {
		display: none; /* BST-83: design shows only mark (28px) at < 880px — no wordmark */
	}

	.bst-header-actions { gap: 6px; }

	.bst-icon-btn {
		min-width: 44px;
		min-height: 44px;
		width: 44px;
		height: 44px;
	}

	.bst-hamburger {
		display: inline-flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 4px;
		width: 44px;
		height: 44px;
		background: var(--wp--preset--color--base-elevated);
		border: 1px solid var(--wp--preset--color--neutral);
		border-radius: var(--wp--custom--border--radius--sm);
		cursor: pointer;
		padding: 0;
		transition: border-color 150ms;
	}
	.bst-hamburger:hover { border-color: var(--wp--preset--color--accent-1); }

	.bst-hamburger-bar {
		display: block;
		width: 18px;
		height: 2px;
		background: var(--wp--preset--color--contrast);
		border-radius: 1px;
		transition: transform 200ms, opacity 200ms;
	}

	.bst-nav-toggle {
		position: absolute;
		opacity: 0;
		pointer-events: none;
		width: 0;
		height: 0;
	}

	/* v0.1.20 BUG-016: hamburger is now <button aria-expanded>. Morph into X on open. */
	.bst-hamburger[aria-expanded="true"] .bst-hamburger-bar:nth-child(1) {
		transform: translateY(6px) rotate(45deg);
	}
	.bst-hamburger[aria-expanded="true"] .bst-hamburger-bar:nth-child(2) {
		opacity: 0;
	}
	.bst-hamburger[aria-expanded="true"] .bst-hamburger-bar:nth-child(3) {
		transform: translateY(-6px) rotate(-45deg);
	}

	/* The actual toggle input lives inside .bst-header-actions, so the drawer
	 * is its sibling via .bst-header. Use ~ to target.
	 * Header structure:
	 *   .bst-header > .bst-container.bst-header-inner > input#bst-nav-toggle
	 *               > .bst-drawer-backdrop
	 *               > .bst-mobile-drawer
	 * The input is *inside* .bst-header-actions; it can't be ~ sibling of
	 * .bst-mobile-drawer at root. We use :has() instead. */

	.bst-mobile-drawer {
		display: flex;
		flex-direction: column;
		position: fixed;
		top: 0;
		right: -100%;
		width: min(320px, 88vw);
		height: 100vh;
		height: 100dvh;
		background: var(--wp--preset--color--base);
		border-left: 1px solid var(--wp--preset--color--neutral);
		box-shadow: -20px 0 60px rgba(0, 0, 0, 0.5);
		z-index: 1001;
		padding: var(--wp--preset--spacing--40);
		gap: var(--wp--preset--spacing--40);
		overflow-y: auto;
		transition: right 280ms cubic-bezier(0.4, 0, 0.2, 1);
		visibility: hidden;
	}

	.bst-drawer-backdrop {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(0, 0, 0, 0.5);
		backdrop-filter: blur(2px);
		opacity: 0;
		pointer-events: none;
		z-index: 1000;
		transition: opacity 280ms;
	}

	.bst-header.bst-nav-open .bst-mobile-drawer {
		right: 0;
		visibility: visible;
	}
	.bst-header.bst-nav-open .bst-drawer-backdrop {
		opacity: 1;
		pointer-events: auto;
	}
	.bst-drawer-backdrop {
		border: 0;
		padding: 0;
		cursor: pointer;
	}

	.bst-mobile-drawer-head {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding-bottom: var(--wp--preset--spacing--30);
		border-bottom: 1px solid var(--wp--preset--color--neutral);
	}

	.bst-mobile-drawer-title {
		font-family: var(--wp--preset--font-family--mono);
		font-size: 11px;
		/* UX-026 v0.1.15: mobile drawer title ("NAVIGATION") — navigation label */
		color: var(--wp--preset--color--contrast-muted);
		text-transform: uppercase;
		letter-spacing: 0.1em;
	}

	.bst-drawer-close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		border: 1px solid var(--wp--preset--color--neutral);
		border-radius: var(--wp--custom--border--radius--sm);
		background: var(--wp--preset--color--base-elevated);
		color: var(--wp--preset--color--contrast);
		cursor: pointer;
	}

	.bst-search-mobile {
		display: flex;
		align-items: center;
		gap: 8px;
		padding: 10px 12px;
		background: var(--wp--preset--color--base-elevated);
		border: 1px solid var(--wp--preset--color--neutral);
		border-radius: var(--wp--custom--border--radius--md);
		min-height: 44px;
	}
	.bst-search-mobile input {
		flex: 1;
		background: transparent;
		border: 0;
		outline: 0;
		color: var(--wp--preset--color--contrast);
		font-size: 14px;
		min-width: 0;
	}
	.bst-search-mobile .bst-search-icon { color: var(--wp--preset--color--contrast-muted); flex-shrink: 0; }

	.bst-mobile-nav {
		display: flex;
		flex-direction: column;
		gap: 2px;
	}
	.bst-mobile-nav a {
		display: flex;
		align-items: center;
		min-height: 48px;
		padding: 0 14px;
		color: var(--wp--preset--color--contrast);
		text-decoration: none;
		font-family: var(--wp--preset--font-family--heading);
		font-size: 16px;
		font-weight: 500;
		border-radius: var(--wp--custom--border--radius--sm);
		transition: background 150ms, color 150ms;
	}
	/* Mobile-nav hover/focus background override — not an outline duplicate; */
	/* global :focus-visible (above) still renders the outline on top of this. */
	.bst-mobile-nav a:hover,
	.bst-mobile-nav a:focus-visible {
		background: var(--wp--preset--color--base-elevated);
		color: var(--wp--preset--color--accent-1);
	}

	.bst-mobile-drawer-footer {
		display: flex;
		flex-direction: column;
		gap: 8px;
		margin-top: auto;
		padding-top: var(--wp--preset--spacing--30);
		border-top: 1px solid var(--wp--preset--color--neutral);
	}
	.bst-mobile-drawer-footer .bst-btn {
		width: 100%;
		min-height: 44px;
		justify-content: center;
	}

	/* ── UX-024 v0.1.15: Mobile search toggle + inline bar ── */

	/* Show the search toggle button (hidden at desktop via .bst-mobile-only rule below) */
	.bst-search-toggle { display: inline-flex; }

	/* Inline search bar — hidden by default, shown when JS removes [hidden] */
	.bst-mobile-search-bar {
		width: 100%;
		border-top: 1px solid var(--wp--preset--color--neutral);
		background: var(--wp--preset--color--base-elevated);
		padding: 10px 0;
	}

	.bst-mobile-search-bar[hidden] { display: none; }

	.bst-mobile-search-form {
		display: flex;
		align-items: center;
		gap: 8px;
		background: var(--wp--preset--color--base);
		border: 1px solid var(--wp--preset--color--neutral);
		border-radius: var(--wp--custom--border--radius--sm);
		padding: 0 12px;
		height: 44px;
	}

	.bst-mobile-search-form:focus-within {
		border-color: var(--wp--preset--color--accent-1);
	}

	.bst-mobile-search-input {
		flex: 1;
		min-width: 0;
		background: transparent;
		border: 0;
		outline: 0;
		color: var(--wp--preset--color--contrast);
		font-family: var(--wp--preset--font-family--body);
		font-size: 15px;
		padding: 0;
	}

	.bst-mobile-search-input::placeholder {
		color: var(--wp--preset--color--contrast-faint);
	}

	.bst-mobile-search-close {
		background: transparent;
		border: 0;
		padding: 0;
		color: var(--wp--preset--color--contrast-muted);
		cursor: pointer;
		display: inline-flex;
		align-items: center;
		flex-shrink: 0;
		line-height: 1;
	}

	.bst-mobile-search-close:hover {
		color: var(--wp--preset--color--accent-1);
	}
}

/* Desktop: hide the mobile-only elements */
@media (min-width: 880px) {
	.bst-mobile-only { display: none; }
	.bst-mobile-search-bar { display: none !important; }
}

/* ──────────── Footer (< 700px) ──────────── */
@media (max-width: 700px) {
	.bst-footer-grid {
		grid-template-columns: 1fr 1fr;
	}
	.bst-footer-brand {
		grid-column: 1 / -1;
	}
	.bst-footer-bottom {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
	}
}

@media (max-width: 500px) {
	.bst-footer-grid {
		grid-template-columns: 1fr;
	}
}

/* ──────────── Homepage hero (< 900px / < 480px) ──────────── */
@media (max-width: 900px) {
	.bst-hero-h1 {
		font-size: clamp(28px, 5vw, 56px);
	}
	.bst-hero-lead {
		font-size: 16px;
	}
}

@media (max-width: 480px) {
	.bst-hero-cta {
		flex-direction: column;
		align-items: stretch;
	}
	.bst-hero-cta .bst-btn,
	.bst-hero-cta .wp-block-button__link {
		width: 100%;
		justify-content: center;
		min-height: 44px;
	}
}

/* ──────────── Catalog — bottom-sheet filter (< 880px) ──────────── */

@media (max-width: 879.98px) {
	/* Hide the desktop sidebar as a grid column */
	.bst-shop-grid {
		flex-direction: column !important;
	}
	.bst-shop-side {
		flex-basis: auto !important;
		width: 100% !important;
		order: 2;
		position: relative;
	}
	.bst-shop-main { order: 1; }

	/* The "Show filters" button (sticky to bottom of viewport) */
	.bst-show-filters-btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: 8px;
		position: fixed;
		right: 16px;
		bottom: 16px;
		z-index: 50;
		min-height: 48px;
		min-width: 140px;
		padding: 0 18px;
		background: var(--wp--preset--color--accent-1);
		color: var(--wp--preset--color--base);
		font-family: var(--wp--preset--font-family--mono);
		font-size: 12px;
		font-weight: 700;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		border-radius: var(--wp--custom--border--radius--pill);
		box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 0 0 1px var(--wp--preset--color--accent-1);
		cursor: pointer;
		transition: transform 150ms, box-shadow 150ms;
	}
	.bst-show-filters-btn:hover {
		transform: translateY(-2px);
		box-shadow: 0 12px 28px rgba(0, 0, 0, 0.5), 0 0 0 1px var(--wp--preset--color--accent-1);
	}

	/* The sheet itself — hidden by default, slides up from bottom when toggle checked */
	.bst-shop-side .bst-shop-side-inner {
		position: fixed;
		left: 0;
		right: 0;
		bottom: -100%;
		max-height: 85vh;
		max-height: 85dvh;
		background: var(--wp--preset--color--base);
		border-top: 1px solid var(--wp--preset--color--neutral);
		border-radius: 16px 16px 0 0;
		z-index: 1001;
		display: flex;
		flex-direction: column;
		overflow: hidden;
		box-shadow: 0 -20px 60px rgba(0, 0, 0, 0.5);
		transition: bottom 300ms cubic-bezier(0.4, 0, 0.2, 1);
		visibility: hidden;
	}

	.bst-filters-backdrop {
		display: block;
		position: fixed;
		inset: 0;
		background: rgba(0, 0, 0, 0.5);
		backdrop-filter: blur(2px);
		opacity: 0;
		pointer-events: none;
		z-index: 1000;
		transition: opacity 300ms;
	}

	/* Use :has() — toggle is inside .bst-shop-side */
	.bst-shop-side:has(.bst-filters-toggle:checked) .bst-shop-side-inner {
		bottom: 0;
		visibility: visible;
	}
	.bst-shop-side:has(.bst-filters-toggle:checked) .bst-filters-backdrop {
		opacity: 1;
		pointer-events: auto;
	}

	.bst-mobile-filters-head {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
		border-bottom: 1px solid var(--wp--preset--color--neutral);
		flex-shrink: 0;
	}
	.bst-mobile-filters-title {
		font-family: var(--wp--preset--font-family--mono);
		font-size: 11px;
		/* UX-026 v0.1.15: mobile filters drawer title — navigation label */
		color: var(--wp--preset--color--contrast-muted);
		text-transform: uppercase;
		letter-spacing: 0.1em;
	}
	.bst-filters-close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		border: 1px solid var(--wp--preset--color--neutral);
		border-radius: var(--wp--custom--border--radius--sm);
		background: var(--wp--preset--color--base-elevated);
		color: var(--wp--preset--color--contrast);
		cursor: pointer;
	}

	/* Make the catalog-filters form fill and scroll inside the sheet */
	.bst-shop-side .wp-block-main-skins-catalog-filters,
	.bst-shop-side-inner .ms-filters {
		position: static !important;
		max-height: none !important;
		flex: 1;
		overflow-y: auto;
		padding: var(--wp--preset--spacing--40);
		border: 0 !important;
		border-radius: 0 !important;
		background: transparent !important;
	}

	.bst-mobile-filters-apply {
		display: flex;
		padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
		border-top: 1px solid var(--wp--preset--color--neutral);
		flex-shrink: 0;
		background: var(--wp--preset--color--base);
	}
	.bst-mobile-filters-apply-btn {
		width: 100%;
		min-height: 44px;
		justify-content: center;
	}
}

/* Catalog product grid: tablet 2-col, phone 1-col */
@media (max-width: 879.98px) and (min-width: 600px) {
	.bst-shop-product-grid,
	.bst-shop-query .wp-block-post-template.is-layout-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 599.98px) {
	.bst-shop-product-grid,
	.bst-shop-query .wp-block-post-template.is-layout-grid {
		grid-template-columns: 1fr;
	}
	/* Reserve room so the floating "Show filters" pill doesn't overlap the last card */
	.bst-shop-main {
		padding-bottom: 80px;
	}
	.bst-shop-toolbar {
		padding: 10px 12px;
	}
	.bst-shop-hero-inner {
		gap: 8px;
	}
}

/* ──────────── Product page (< 900px / < 600px) ──────────── */

@media (max-width: 900px) {
	/* ms-pp-hero already stacks above (existing rule at L1241). Reinforce: gallery first, summary below. */
	.ms-pp-hero .ms-pp-gallery { order: 1; }
	.ms-pp-summary { order: 2; }

	.ms-pp-title.wp-block-post-title {
		font-size: clamp(24px, 5vw, 32px);
	}
}

@media (max-width: 599.98px) {
	/* Thumbnail strip becomes horizontal scroll */
	.ms-pp-gallery-thumbs,
	.ms-pp-thumbs {
		display: flex !important;
		grid-template-columns: none !important;
		gap: 8px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		padding-bottom: 4px;
	}
	.ms-pp-gallery-thumbs > *,
	.ms-pp-thumbs > * {
		flex: 0 0 22%;
		min-width: 80px;
		scroll-snap-align: start;
	}

	/* Available listings: simplified stacked row */
	.wp-block-main-skins-available-listings .ms-listing,
	.ms-listing {
		grid-template-columns: 64px 1fr !important;
		grid-template-areas:
			"img name"
			"img meta"
			"price price" !important;
		gap: 8px !important;
		padding: 12px !important;
	}
	.ms-listing .ms-listing-img,
	.ms-listing > :first-child { grid-area: img; }
	.ms-listing .ms-listing-name { grid-area: name; }
	.ms-listing .ms-listing-meta { grid-area: meta; }
	.ms-listing .ms-listing-price { grid-area: price; justify-self: end; }

	/* Buy box actions stack */
	.ms-pp-actions,
	.ms-pp-buybox-actions {
		flex-direction: column;
	}
	.ms-pp-actions .bst-btn,
	.ms-pp-buybox-actions .bst-btn,
	.ms-pp-actions .wp-block-button__link {
		width: 100%;
		min-height: 44px;
		justify-content: center;
	}
}

/* ──────────── Cart page (< 880px / < 600px) ──────────── */
/* The 880px stack rule already exists at L1301 — augment for phone */

@media (max-width: 599.98px) {
	.bst-cart-page,
	.bst-checkout-page {
		padding-inline: var(--wp--preset--spacing--40);
		padding-block: var(--wp--preset--spacing--40);
	}

	.bst-cart-title-h,
	.bst-checkout-title-h {
		font-size: 26px;
	}

	/* Cart line item: simplified — image stays on left, text wraps */
	.bst-cart-shell .wc-block-cart-items__row,
	.bst-cart-shell .wc-block-cart-item__row {
		grid-template-columns: 80px 1fr !important;
		padding: 12px !important;
		gap: 10px !important;
	}
	.bst-cart-shell .wc-block-cart-item__image,
	.bst-cart-shell .wc-block-cart-item__image img {
		max-width: 80px;
	}
	.bst-cart-shell .wc-block-cart-item__total {
		grid-column: 2;
		text-align: left;
	}
	.bst-cart-shell .wc-block-cart-item__remove {
		grid-column: 2;
		justify-self: start;
		min-width: 44px;
		min-height: 44px;
	}
}

/* ──────────── Checkout page (< 880px / < 600px) ──────────── */

@media (max-width: 879.98px) {
	/* Steps shrink to a tighter row */
	.bst-checkout-steps {
		flex-wrap: wrap;
		gap: 4px;
	}
	.bst-checkout-step {
		flex: 1 1 calc(50% - 4px);
		padding: 10px 12px;
		font-size: 10px;
		border-right: 1px solid var(--wp--preset--color--neutral);
		border-radius: var(--wp--custom--border--radius--sm);
	}
}

@media (max-width: 599.98px) {
	/* Step labels: hide text, show numbers only */
	.bst-checkout-step .label {
		display: none;
	}
	.bst-checkout-step {
		flex: 1;
		justify-content: center;
		padding: 8px;
		min-height: 44px;
	}
	.bst-checkout-step .num {
		width: 28px;
		height: 28px;
		font-size: 12px;
	}

	/* Form fields full-width */
	.bst-checkout-wc .wc-block-components-text-input,
	.bst-checkout-wc input[type="text"],
	.bst-checkout-wc input[type="email"],
	.bst-checkout-wc input[type="tel"],
	.bst-checkout-wc select {
		width: 100% !important;
		min-height: 44px;
	}

	/* Order summary collapses via <details> if present, otherwise renders below */
	.bst-checkout-summary,
	.wp-block-woocommerce-checkout-totals-block {
		font-size: 13px;
	}
}

/* ──────────── Touch targets — global audit (≤ 880px) ──────────── */

@media (max-width: 879.98px) {
	.bst-btn,
	.wp-block-button__link {
		min-height: 44px;
	}
	.bst-btn-sm {
		min-height: 40px;
		padding-inline: 14px;
	}
	a.bst-icon-btn,
	button.bst-icon-btn {
		min-width: 44px;
		min-height: 44px;
	}
	input[type="checkbox"]:not(.bst-nav-toggle):not(.bst-filters-toggle),
	input[type="radio"] {
		min-width: 20px;
		min-height: 20px;
	}
	/* Catalog filter checkbox rows — bigger tap area */
	.ms-filters .ms-filter-row,
	.ms-filters label {
		min-height: 40px;
	}
}

/* ──────────── Typography safety at 320px ──────────── */

@media (max-width: 360px) {
	.bst-container,
	.wp-block-group.has-global-padding {
		padding-inline: 14px;
	}
	.bst-hero-h1 {
		font-size: clamp(24px, 7vw, 32px);
	}
	.bst-spotlight-h3 {
		font-size: 22px;
	}
	.bst-shop-hero-title {
		font-size: 22px;
	}
}

/* Prevent horizontal scroll from any single rogue element */
@media (max-width: 879.98px) {
	body,
	html {
		overflow-x: hidden;
	}
}

/* ════════════════════════════════════════════════════════════════════════════
   v0.1.13 — Sprint 2.5: Cart + Checkout design parity
   Target: WC Blocks 9.x/10.x DOM emitted after React hydration.
   Selector source: plugin CSS at
     wp-content/plugins/woocommerce/assets/client/blocks/cart.css
     wp-content/plugins/woocommerce/assets/client/blocks/checkout.css
   ════════════════════════════════════════════════════════════════════════════ */

/* ──────────────────────────────────────────────────────────
   CART — 2-col layout fix
   After hydration WC renders:
     .wc-block-components-sidebar-layout.wc-block-cart  (flex, the hydrated container)
       .wc-block-cart__main                             (left: items + cross-sells)
       .wc-block-cart__sidebar                          (right: totals)
   Our existing rule targets .wc-block-cart .wc-block-cart but not the
   sidebar-layout variant. Override both containers.
   ────────────────────────────────────────────────────────── */

/* 2-col grid on the hydrated cart wrapper */
.bst-cart-shell .wc-block-components-sidebar-layout.wc-block-cart,
.bst-cart-shell .wc-block-cart {
	display: grid !important;
	grid-template-columns: 1fr 360px;
	gap: var(--wp--preset--spacing--50);
	align-items: start;
	padding-top: 0;
	margin-bottom: 0;
}

@media (max-width: 880px) {
	.bst-cart-shell .wc-block-components-sidebar-layout.wc-block-cart,
	.bst-cart-shell .wc-block-cart {
		grid-template-columns: 1fr;
	}
}

/* Left column (items table) */
.bst-cart-shell .wc-block-cart__main {
	min-width: 0;
}

/* Right column (totals) — sticky card */
.bst-cart-shell .wc-block-cart__sidebar {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
	position: sticky;
	top: var(--wp--preset--spacing--30);
}

/* At ≤699px WC moves sidebar above items (order:0) — undo that within our grid */
@media (max-width: 880px) {
	.bst-cart-shell .wc-block-cart__sidebar {
		order: unset;
	}
}

/* Remove WC's own card shell from the totals wrapper so ours takes over */
.bst-cart-shell .wc-block-cart__sidebar .components-card,
.bst-cart-shell .wc-block-cart__sidebar .wc-block-components-sidebar {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	margin: 0;
}

/* Cart totals title: mono 11px uppercase */
.bst-cart-shell .wc-block-cart__totals-title {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	/* UX-026 v0.1.15: "Order total" heading in cart sidebar — meaningful label */
	color: var(--wp--preset--color--contrast-muted);
	margin-bottom: var(--wp--preset--spacing--30);
	padding: 0;
	font-weight: 400;
}

/* ──────────────────────────────────────────────────────────
   CART — line item row visual redesign
   WC renders: table.wc-block-cart-items > tbody > tr.wc-block-cart-items__row
   with td.wc-block-cart-item__image, td.wc-block-cart-item__product,
   td.wc-block-cart-item__quantity (contains remove-link), td.wc-block-cart-item__total
   We convert each tr from table-row to CSS grid matching design.
   ────────────────────────────────────────────────────────── */

/* Hide the vanilla table header row */
.bst-cart-shell table.wc-block-cart-items .wc-block-cart-items__header {
	display: none !important;
}

/* Table itself: no table borders */
.bst-cart-shell table.wc-block-cart-items,
.bst-cart-shell table.wc-block-cart-items td,
.bst-cart-shell table.wc-block-cart-items th {
	border: 0;
}

/* Each row as a 4-col card */
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row {
	display: grid !important;
	grid-template-columns: 120px 1fr auto auto;
	grid-template-rows: auto;
	gap: 18px;
	align-items: center;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
	margin-bottom: var(--wp--preset--spacing--30);
	/* Reset table-cell padding */
}

/* Image cell: col 1 */
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__image {
	grid-column: 1;
	grid-row: 1;
	padding: 0;
	aspect-ratio: 4/3;
	overflow: hidden;
	border-radius: var(--wp--custom--border--radius--sm);
}

.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	border-radius: var(--wp--custom--border--radius--sm);
}

/* Product name+meta cell: col 2 */
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__product {
	grid-column: 2;
	grid-row: 1;
	padding: 0;
	min-width: 0;
}

/* Price/total cell: col 3 */
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__total {
	grid-column: 3;
	grid-row: 1;
	padding: 0;
	text-align: right;
}

.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__total .wc-block-components-product-price,
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__total .price,
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__total .woocommerce-Price-amount {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 24px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast);
}

/* Quantity+remove cell: col 4 */
.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__quantity {
	grid-column: 4;
	grid-row: 1;
	padding: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

/* Remove link — icon button style */
.bst-cart-shell .wc-block-cart-item__remove-link {
	width: 36px !important;
	height: 36px !important;
	background: transparent !important;
	border: 1px solid var(--wp--preset--color--neutral) !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	color: var(--wp--preset--color--contrast-muted) !important;
	cursor: pointer !important;
	transition: color var(--wp--custom--transition--duration), border-color var(--wp--custom--transition--duration) !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	text-decoration: none !important;
	padding: 0 !important;
}

.bst-cart-shell .wc-block-cart-item__remove-link:hover {
	color: var(--wp--preset--color--error) !important;
	border-color: var(--wp--preset--color--error) !important;
}

/* Quantity stepper: hide (skins are qty=1 each) */
.bst-cart-shell .wc-block-components-quantity-selector {
	display: none;
}

/* ──────────────────────────────────────────────────────────
   CART — totals sidebar detail styling
   ────────────────────────────────────────────────────────── */

/* Totals rows: mono 12px */
.bst-cart-shell .wc-block-components-totals-item {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
	padding-left: 0;
	padding-right: 0;
}

/* Big total row: heading 24px */
.bst-cart-shell .wc-block-components-totals-footer-item {
	border-top: 1px solid var(--wp--preset--color--neutral);
	margin-top: 6px;
	padding-top: 14px;
}

.bst-cart-shell .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.bst-cart-shell .wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
.bst-cart-shell .wc-block-components-totals-footer-item bdi,
.bst-cart-shell .wc-block-components-totals-footer-item .woocommerce-Price-amount {
	font-family: var(--wp--preset--font-family--heading) !important;
	font-size: 24px !important;
	font-weight: 700 !important;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast) !important;
}

/* Coupon form: design .promo style */
.bst-cart-shell .wc-block-components-totals-coupon {
	margin-block: 14px;
	padding-left: 0;
	padding-right: 0;
}

.bst-cart-shell .wc-block-components-totals-coupon__form {
	display: flex;
	gap: 0;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	overflow: hidden;
}

.bst-cart-shell .wc-block-components-totals-coupon__form input {
	flex: 1;
	height: 40px;
	padding: 0 12px;
	background: var(--wp--preset--color--base);
	border: 0;
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	outline: none;
}

.bst-cart-shell .wc-block-components-totals-coupon__form button {
	background: var(--wp--preset--color--base-raised);
	border: 0;
	border-left: 1px solid var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--contrast-muted);
	padding: 0 14px;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	height: 40px;
}

.bst-cart-shell .wc-block-components-totals-coupon__form button:hover {
	color: var(--wp--preset--color--accent-1);
}

/* Panel (coupon accordion toggle) */
.bst-cart-shell .wc-block-components-panel {
	padding-left: 0;
	padding-right: 0;
}

/* Proceed-to-Checkout button */
.bst-cart-shell .wc-block-cart__submit-container {
	padding-top: var(--wp--preset--spacing--40);
}

.bst-cart-shell .wc-block-cart__submit-button,
.bst-cart-shell .wp-block-woocommerce-proceed-to-checkout-block a {
	width: 100%;
	background: var(--wp--preset--color--accent-1) !important;
	color: var(--wp--preset--color--base) !important;
	font-family: var(--wp--preset--font-family--heading) !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 14px 20px !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	border: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	text-decoration: none;
}

.bst-cart-shell .wc-block-cart__submit-button:hover,
.bst-cart-shell .wp-block-woocommerce-proceed-to-checkout-block a:hover {
	filter: brightness(1.1);
}

/* Payment icons below button */
.bst-cart-shell .wc-block-cart__payment-options {
	margin-top: var(--wp--preset--spacing--30);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

/* ──────────────────────────────────────────────────────────
   CART — cross-sells (below left column)
   WC renders .wp-block-woocommerce-cart-cross-sells as sibling of the
   sidebar-layout container, inside .wc-block-cart__main. Design:
   "You might also like" h2 + auto-fill minmax(240px, 1fr) grid.
   ────────────────────────────────────────────────────────── */

.bst-cart-shell .wp-block-woocommerce-cart-cross-sells-block {
	margin-top: var(--wp--preset--spacing--60);
	padding-top: var(--wp--preset--spacing--50);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.bst-cart-shell .wp-block-woocommerce-cart-cross-sells-block h2,
.bst-cart-shell .wc-block-cart-cross-sells__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.01em;
	margin: 0 0 var(--wp--preset--spacing--40) 0;
	color: var(--wp--preset--color--contrast);
}

.bst-cart-shell .wc-block-cart-cross-sells-products ul,
.bst-cart-shell .wc-block-cart-cross-sells__products {
	display: grid !important;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: var(--wp--preset--spacing--30);
	list-style: none;
	padding: 0;
	margin: 0;
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — 2-col layout fix
   After hydration WC renders inside .wp-block-woocommerce-checkout:
     .wc-block-checkout__main   (left: fields)
     .wc-block-checkout__sidebar (right: summary)
   Our existing rule handles this correctly. Reinforce with extra
   selectors for the hydrated DOM.
   ────────────────────────────────────────────────────────── */

/* Ensure the WC checkout container uses our grid */
.bst-checkout-wc.wc-block-checkout {
	display: grid !important;
	grid-template-columns: 1fr 380px;
	gap: var(--wp--preset--spacing--50);
	align-items: start;
}

@media (max-width: 880px) {
	.bst-checkout-wc.wc-block-checkout {
		grid-template-columns: 1fr;
	}
}

/* Left: the fields block */
.bst-checkout-wc .wc-block-checkout__main,
.bst-checkout-wc .wp-block-woocommerce-checkout-fields-block {
	min-width: 0;
}

/* Right: the summary block — sticky card */
.bst-checkout-wc .wc-block-checkout__sidebar,
.bst-checkout-wc .wp-block-woocommerce-checkout-totals-block {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--40);
	position: sticky;
	top: var(--wp--preset--spacing--30);
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — WC step sections as co-card
   WC Blocks renders each checkout section as
     div.wc-block-components-checkout-step
   ────────────────────────────────────────────────────────── */

.bst-checkout-wc .wc-block-components-checkout-step {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--50);
	margin-bottom: var(--wp--preset--spacing--40);
}

.bst-checkout-wc .wc-block-components-checkout-step::before {
	display: none; /* remove WC's step-number ::before */
}

.bst-checkout-wc .wc-block-components-checkout-step__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	margin: 0 0 4px;
	padding: 0;
	border: 0;
}

.bst-checkout-wc .wc-block-components-checkout-step__description {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	/* UX-026 v0.1.15: checkout step description (mobile viewport copy) */
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	margin-bottom: var(--wp--preset--spacing--40);
	padding: 0;
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — form field styling
   ────────────────────────────────────────────────────────── */

.bst-checkout-wc .wc-block-components-text-input input,
.bst-checkout-wc .wc-block-components-country-input input,
.bst-checkout-wc .wc-block-components-state-input input,
.bst-checkout-wc .wc-block-components-select select,
.bst-checkout-wc input[type="text"],
.bst-checkout-wc input[type="email"],
.bst-checkout-wc input[type="tel"],
.bst-checkout-wc select {
	height: 44px;
	padding: 0 14px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	font-family: inherit;
	font-size: 14px;
	outline: none;
	transition: border-color var(--wp--custom--transition--duration);
	width: 100%;
	box-sizing: border-box;
}

.bst-checkout-wc .wc-block-components-text-input input:focus,
.bst-checkout-wc .wc-block-components-country-input input:focus,
.bst-checkout-wc .wc-block-components-state-input input:focus,
.bst-checkout-wc .wc-block-components-select select:focus,
.bst-checkout-wc input:focus,
.bst-checkout-wc select:focus {
	border-color: var(--wp--preset--color--accent-1);
	outline: none;
}

.bst-checkout-wc .wc-block-components-text-input label,
.bst-checkout-wc .wc-block-components-country-input label,
.bst-checkout-wc .wc-block-components-state-input label,
.bst-checkout-wc label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 500;
	margin-bottom: 6px;
	display: block;
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — payment methods as 3-col grid
   WC renders radio options inside
     .wc-block-checkout__payment-method  (container)
   Each option: .wc-block-components-radio-control__option
   ────────────────────────────────────────────────────────── */

.bst-checkout-wc .wc-block-components-radio-control {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	margin-bottom: var(--wp--preset--spacing--30);
}

.bst-checkout-wc .wc-block-components-radio-control__option {
	padding: 14px 10px;
	text-align: center;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base);
	cursor: pointer;
	transition: border-color var(--wp--custom--transition--duration), background var(--wp--custom--transition--duration), color var(--wp--custom--transition--duration);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
}

/* Hide the actual radio input visually */
.bst-checkout-wc .wc-block-components-radio-control__option input[type="radio"] {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

/* Hover + checked states */
.bst-checkout-wc .wc-block-components-radio-control__option:hover,
.bst-checkout-wc .wc-block-components-radio-control__option:has(input:checked) {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
}

/* Payment method label */
.bst-checkout-wc .wc-block-components-radio-control__option-label {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	width: 100%;
}

/* Payment method icon row (if WC renders icons) */
.bst-checkout-wc .wc-block-components-payment-method-label {
	font-size: 11px;
	font-family: var(--wp--preset--font-family--mono);
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — order summary sidebar detail styling
   ────────────────────────────────────────────────────────── */

/* Summary heading: mono 11px uppercase */
.bst-checkout-wc .wc-block-components-order-summary .wc-block-components-panel__button,
.bst-checkout-wc .wc-block-components-order-summary__title {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	/* UX-026 v0.1.15: "Order summary" heading in checkout — meaningful label */
	color: var(--wp--preset--color--contrast-muted);
	margin-bottom: var(--wp--preset--spacing--30);
	background: transparent;
	border: 0;
	padding: 0;
	font-weight: 400;
	width: 100%;
	text-align: left;
	cursor: default;
}

/* Summary item rows: grid 64px+1fr */
.bst-checkout-wc .wc-block-components-order-summary-item {
	display: grid;
	grid-template-columns: 64px 1fr;
	gap: 12px;
	padding: 12px 0;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-checkout-wc .wc-block-components-order-summary-item:last-of-type {
	border-bottom: 0;
}

.bst-checkout-wc .wc-block-components-order-summary-item__image {
	aspect-ratio: 4/3;
	height: 48px;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	overflow: hidden;
	position: relative;
}

.bst-checkout-wc .wc-block-components-order-summary-item__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.bst-checkout-wc .wc-block-components-order-summary-item__description {
	flex: 1;
	min-width: 0;
}

.bst-checkout-wc .wc-block-components-order-summary-item__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	line-height: 1.3;
}

.bst-checkout-wc .wc-block-components-order-summary-item__subtitle,
.bst-checkout-wc .wc-block-components-order-summary-item__variation {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	/* UX-026 v0.1.15: product variation text in order summary — meaningful */
	color: var(--wp--preset--color--contrast-muted);
	margin-top: 3px;
}

.bst-checkout-wc .wc-block-components-order-summary-item__individual-price {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--contrast);
	margin-top: 4px;
	font-weight: 600;
}

/* Totals rows: mono 12px */
.bst-checkout-wc .wc-block-components-totals-item {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
	padding-left: 0;
	padding-right: 0;
}

/* Big total: heading 22px */
.bst-checkout-wc .wc-block-components-totals-footer-item {
	border-top: 1px solid var(--wp--preset--color--neutral);
	margin-top: 6px;
	padding-top: 14px;
}

.bst-checkout-wc .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.bst-checkout-wc .wc-block-components-totals-footer-item .wc-block-components-totals-item__value,
.bst-checkout-wc .wc-block-components-totals-footer-item bdi,
.bst-checkout-wc .wc-block-components-totals-footer-item .woocommerce-Price-amount {
	font-family: var(--wp--preset--font-family--heading) !important;
	font-size: 22px !important;
	font-weight: 700 !important;
	color: var(--wp--preset--color--contrast) !important;
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — Place Order button styling
   Existing rule makes it 0.45 opacity / pointer-events:none by default.
   Keep that, but improve the button look (it renders inside the left
   column actions block, not in the sidebar).
   ────────────────────────────────────────────────────────── */

.bst-checkout-wc .wc-block-checkout__actions .wc-block-components-checkout-place-order-button,
.bst-place-order .wc-block-components-checkout-place-order-button {
	width: 100%;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 15px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 16px 20px;
	border-radius: var(--wp--custom--border--radius--sm);
	border: 0;
	margin-top: var(--wp--preset--spacing--40);
	cursor: pointer;
}

/* BST-88 pixel-perfect: when checkout-polish.js relocates the actions
   row into the sidebar (see applyActionsToSidebar), match design v4's
   button-in-sidebar styling — 346px wide (380 sidebar - 2×16 padding),
   no top margin (lives inline with totals), Return-to-cart link below. */
.bst-checkout-wc .bst-actions-in-sidebar {
	margin-top: var(--wp--preset--spacing--30);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
}
.bst-checkout-wc .bst-actions-in-sidebar .wc-block-components-checkout-place-order-button {
	font-size: 14px;
	padding: 14px 20px;
	margin-top: 0;
}
.bst-checkout-wc .bst-actions-in-sidebar .wc-block-checkout__actions_row {
	flex-direction: column-reverse;
	gap: 12px;
	align-items: stretch;
}
/* Design legalese line under Place Order — replaces WC's "Return to Cart" */
.bst-checkout-wc .bst-actions-in-sidebar .bst-actions-legal {
	margin-top: 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-align: center;
	line-height: 1.5;
}
.bst-checkout-wc .bst-actions-in-sidebar .bst-actions-legal a {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px dotted var(--wp--preset--color--contrast-faint);
}
.bst-checkout-wc .bst-actions-in-sidebar .bst-actions-legal a:hover {
	color: var(--wp--preset--color--accent-1);
	border-bottom-color: var(--wp--preset--color--accent-1);
}

.bst-checkout-wc .wc-block-checkout__actions .wc-block-components-checkout-place-order-button:hover,
.bst-place-order .wc-block-components-checkout-place-order-button:hover {
	filter: brightness(1.1);
}

/* BST-90: terms acceptance checkbox injected via checkout-polish.js
   (WC Blocks 10.7's native terms-block doesn't render in our layout).
   Lives between the Payment block (order: 5) and Place Order actions
   row (order: 8) — `order: 7` is required because the form has flex
   layout with explicit ordering on its children (BST-79 v1 setup), and
   without it our injected element defaults to order:0 = first slot. */
.bst-checkout-wc .bst-terms-acceptance {
	order: 7;
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 14px 0;
	margin-top: 16px;
	border-top: 1px solid var(--wp--preset--color--neutral);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	line-height: 1.6;
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
}
.bst-checkout-wc .bst-terms-acceptance input[type="checkbox"] {
	width: 16px;
	height: 16px;
	margin-top: 2px;
	flex-shrink: 0;
	accent-color: var(--wp--preset--color--accent-1);
	cursor: pointer;
}
.bst-checkout-wc .bst-terms-acceptance a {
	color: var(--wp--preset--color--accent-1);
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: border-color 150ms;
}
.bst-checkout-wc .bst-terms-acceptance a:hover {
	border-bottom-color: var(--wp--preset--color--accent-1);
}

/* Place Order gating — disabled until terms accepted. Overrides
   the lime accent-1 background, replaces with muted neutral. */
.bst-checkout-wc .wc-block-components-checkout-place-order-button.bst-terms-blocked,
.bst-place-order .wc-block-components-checkout-place-order-button.bst-terms-blocked {
	opacity: 0.45;
	pointer-events: none;
	cursor: not-allowed;
}

/* Disclaimer mono 10px */
.bst-checkout-wc .wc-block-checkout__terms,
.bst-checkout-wc .wc-block-components-checkout-return-to-cart-button {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	/* UX-026 v0.1.15: "Return to cart" button and terms disclaimer — actionable text */
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.5;
	text-align: center;
	margin-top: 12px;
}

/* ──────────────────────────────────────────────────────────
   CHECKOUT — steps strip responsive fix
   Steps are inside .bst-checkout-steps group which is grid-column: 1/-1.
   It must span both columns. The existing CSS already does grid-column: 1/-1
   on .bst-checkout-steps but only when it's a direct child of the grid.
   The actual parent is .bst-checkout-shell, and the WC block is separate.
   Ensure steps are always above the 2-col area.
   ────────────────────────────────────────────────────────── */

/* Steps group already has grid-column: 1/-1 via existing rule */

/* ──────────────────────────────────────────────────────────
   CART/CHECKOUT — suppress WC default padding that conflicts
   ────────────────────────────────────────────────────────── */

/* WC adds padding-top: 16px on .wc-block-cart — override */
.bst-cart-shell .wc-block-cart {
	padding-top: 0;
}

/* WC adds margin-bottom: 3em on @container (min-width: 700px) .wc-block-cart */
.bst-cart-shell .wc-block-cart {
	margin-bottom: 0 !important;
}

/* WC adds container-type: inline-size on .wp-block-woocommerce-cart.
   This is fine — keep it, our grid overrides it. */

/* ──────────────────────────────────────────────────────────
   CHECKOUT — hide the step-number circles WC adds automatically
   (when class .wc-block-checkout__form--with-step-numbers is present)
   because we have our own bst-checkout-steps visual strip.
   ────────────────────────────────────────────────────────── */

.bst-checkout-wc .wc-block-checkout__form--with-step-numbers
	.wc-block-components-checkout-step::before,
.bst-checkout-wc .wc-block-checkout__form--with-step-numbers
	.wc-block-components-checkout-step__heading::before {
	display: none !important;
	content: none !important;
}

/* ──────────────────────────────────────────────────────────
   Cart + Checkout mobile (≤ 880px) — preserve single column
   ────────────────────────────────────────────────────────── */

@media (max-width: 880px) {
	/* Steps wrap */
	.bst-checkout-steps {
		flex-wrap: wrap;
	}

	/* Summary panel below fields on mobile */
	.bst-checkout-wc.wc-block-checkout {
		grid-template-columns: 1fr;
	}

	/* Cart row: 2-col on mobile (image + content) */
	.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row {
		grid-template-columns: 80px 1fr auto;
	}

	.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__total {
		grid-column: 3;
		grid-row: 1;
	}

	.bst-cart-shell table.wc-block-cart-items tr.wc-block-cart-items__row td.wc-block-cart-item__quantity {
		grid-column: 2 / 4;
		grid-row: 2;
		justify-content: flex-start;
	}
}

/* ──────────────────────────────────────────────────────────
   BST-126: WC Blocks "Create an account" checkbox fix.

   Our global `label { display: block; }` rule (line ~6224) collapses the
   WC-Blocks checkbox + label pair which is rendered as a flex row by
   wc-block-components-checkbox. This makes the label fall below the box,
   and the custom ::before check-glyph (from WC's own block CSS) overlaps
   the box because `margin-top` is applied to a block-level element.

   Fix: restore the WC Blocks flex layout on the create-account row, ensure
   the wrapper aligns children at center, and neutralise any stray margin
   on the label that was causing the baseline drop.

   Selectors:
     .wc-block-components-checkbox                — WC's own checkbox row wrapper
       (used for "Create an account" and similar opt-ins in the contact-fields step)
     .wc-block-checkout__create-account            — the specific create-account
       section that wraps the checkbox inside the Contact information step
   ────────────────────────────────────────────────────────── */

/* The checkbox row wrapper is already flex in WC's own stylesheet; our
   global label rule can override that when the label is a direct child.
   Re-assert flex + vertical centre on the wrapper. */
.bst-checkout-wc .wc-block-components-checkbox {
	display: flex !important;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	padding: 8px 0;
}

/* BST-126 v3: WC Blocks ≥9.8 ships TWO different checkbox markups depending on
   the WC version:
     (a) wrapper variant — <span class="__input-wrapper"> holds the native input
         and draws a square via ::before/::after (older releases).
     (b) flat variant — <label> directly contains <input> + <svg.__mark> + <span>;
         the input is position:absolute / opacity:0 and the svg is display:none
         when unchecked. NOTHING is visible in the unchecked state.
   The v2 fix only covered (a) — on (b) it produced an invisible checkbox.

   Strategy: don't fight WC's custom rendering. Show the NATIVE input at 16×16
   with our accent colour (same pattern as our own .bst-terms-acceptance row),
   and suppress WC's SVG mark entirely. Works for both variants. */
.bst-checkout-wc .wc-block-components-checkbox input[type="checkbox"],
.bst-checkout-wc .wc-block-components-checkbox__input {
	position: static !important;
	opacity: 1 !important;
	width: 16px !important;
	height: 16px !important;
	min-width: 16px;
	margin: 0;
	padding: 0;
	pointer-events: auto;
	cursor: pointer;
	flex-shrink: 0;
	accent-color: var(--wp--preset--color--accent-1, #b3e000);
	appearance: auto;
	-webkit-appearance: auto;
}

/* WC's SVG checkmark is layered over the input in variant (b) — hide it so
   the browser's native check glyph is the single source of truth. */
.bst-checkout-wc .wc-block-components-checkbox__mark {
	display: none !important;
}

/* Label: flex row, vertical centre, gap. Apply to the direct-child label only
   so we don't break inner spans. */
.bst-checkout-wc .wc-block-components-checkbox > label,
.bst-checkout-wc .wc-block-components-checkbox label {
	display: inline-flex !important;
	align-items: center;
	gap: 10px;
	margin-bottom: 0;
	font-family: var(--wp--preset--font-family--body);
	font-size: 13px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: none;
	letter-spacing: 0;
	font-weight: 400;
	cursor: pointer;
}

/* Variant (a) wrapper: when present, neutralise its 16×16 box so it doesn't
   double up next to the native input we're now showing. */
.bst-checkout-wc .wc-block-components-checkbox__input-wrapper {
	display: contents !important;
}

@media (max-width: 600px) {
	/* Payment methods: 2 col on phone */
	.bst-checkout-wc .wc-block-components-radio-control {
		grid-template-columns: repeat(2, 1fr);
	}
}

/* ──────────────────────────────────────────────────────────
   BST-12 v3 — Mini-cart drawer
   Rendered into wp_footer by main_skins_render_mini_cart_drawer() (inc/setup.php).
   No WC block markup, no do_blocks() — plain PHP template.
   Slide-in from right. Width: 380px desktop, 100vw ≤ 640px.
   Backdrop: rgba(0,0,0,0.6). Transition: 250ms transform.
   ────────────────────────────────────────────────────────── */

/* Backdrop */
.bst-mini-cart-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.6);
	/* BST-163: above the floating AI-chat widget (.fac-trigger/.fac-panel z 9000) */
	z-index: 9998;
	opacity: 0;
	transition: opacity 250ms ease;
	/* [hidden] hides it by default; JS removes/adds [hidden] */
}

.bst-mini-cart-backdrop:not([hidden]) {
	opacity: 1;
}

/* Drawer */
.bst-mini-cart-drawer {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	width: 380px;
	max-width: 100vw;
	background: var(--wp--preset--color--base-elevated);
	border-left: 1px solid var(--wp--preset--color--neutral);
	/* BST-163: above the floating AI-chat widget (z 9000) so the drawer's
	   CHECKOUT button is never overlapped by the chat bubble/panel. */
	z-index: 9999;
	display: flex;
	flex-direction: column;
	transform: translateX(100%);
	transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
	overflow: hidden;
}

.bst-mini-cart-drawer:not([hidden]) {
	transform: translateX(0);
}

/* BST-163: while the mini-cart drawer is open, hide the floating AI-chat
   trigger + panel entirely. Even with the drawer raised above z 9000, the
   chat bubble sits in the same bottom-right corner as the drawer's CHECKOUT
   button; hiding it removes the visual collision. mini-cart-drawer.js toggles
   body.bst-mini-cart-open on open/close. */
body.bst-mini-cart-open .fac-trigger,
body.bst-mini-cart-open .fac-panel {
	display: none !important;
}

/* Header row */
.bst-mini-cart__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	flex-shrink: 0;
}

.bst-mini-cart__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--contrast);
	margin: 0;
}

.bst-mini-cart__count {
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 400;
}

.bst-mini-cart__close {
	width: 36px;
	height: 36px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	transition: color 200ms, border-color 200ms;
	flex-shrink: 0;
}

.bst-mini-cart__close:hover {
	color: var(--wp--preset--color--contrast);
	border-color: var(--wp--preset--color--neutral-strong);
}

/* Empty state */
.bst-mini-cart__empty {
	padding: var(--wp--preset--spacing--60) var(--wp--preset--spacing--40);
	text-align: center;
	color: var(--wp--preset--color--contrast-muted);
	font-size: 14px;
	line-height: 1.6;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--wp--preset--spacing--40);
}

.bst-mini-cart__empty p {
	margin: 0;
}

/* Items list */
.bst-mini-cart__items {
	list-style: none;
	margin: 0;
	padding: 0;
	overflow-y: auto;
	flex: 1;
}

.bst-mini-cart__item {
	display: flex;
	gap: 12px;
	padding: 14px var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-mini-cart__item:last-child {
	border-bottom: 0;
}

/* Thumbnail */
.bst-mini-cart__item-thumb {
	flex-shrink: 0;
	width: 64px;
	height: 64px;
	border-radius: var(--wp--custom--border--radius--sm);
	overflow: hidden;
	background: var(--wp--preset--color--base-raised);
	border: 1px solid var(--wp--preset--color--neutral);
	display: flex;
	align-items: center;
	justify-content: center;
}

.bst-mini-cart__item-thumb img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

/* Item info column */
.bst-mini-cart__item-info {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.bst-mini-cart__item-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	line-height: 1.3;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.bst-mini-cart__item-name:hover {
	color: var(--wp--preset--color--accent-1);
}

.bst-mini-cart__item-meta {
	display: flex;
	gap: 10px;
	align-items: center;
}

.bst-mini-cart__item-qty {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.bst-mini-cart__item-price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}

.bst-mini-cart__item-price .woocommerce-Price-amount,
.bst-mini-cart__item-price bdi {
	font: inherit;
	color: inherit;
}

.bst-mini-cart__item-remove {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-decoration: none;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	transition: color 200ms;
	align-self: flex-start;
}

.bst-mini-cart__item-remove:hover {
	color: var(--wp--preset--color--error, #e53e3e);
}

/* Footer */
.bst-mini-cart__footer {
	border-top: 1px solid var(--wp--preset--color--neutral);
	padding: var(--wp--preset--spacing--40);
	flex-shrink: 0;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.bst-mini-cart__subtotal {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.bst-mini-cart__subtotal strong {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--contrast);
}

.bst-mini-cart__subtotal strong .woocommerce-Price-amount,
.bst-mini-cart__subtotal strong bdi {
	font: inherit;
	color: inherit;
}

/* BST-164: applied-coupon rows in the mini-cart drawer. The discount line is a
   secondary mono figure in accent-1; Total is the prominent payable amount. */
.bst-mini-cart__discount {
	color: var(--wp--preset--color--accent-1);
}
.bst-mini-cart__discount strong {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--accent-1);
}
.bst-mini-cart__total strong {
	color: var(--wp--preset--color--contrast);
}

.bst-mini-cart__actions {
	display: flex;
	gap: 10px;
}

.bst-mini-cart__view-cart,
.bst-mini-cart__checkout {
	flex: 1;
	justify-content: center;
}

/* Mobile: full width on small screens */
@media (max-width: 640px) {
	.bst-mini-cart-drawer {
		width: 100vw;
		border-left: 0;
		border-top: 1px solid var(--wp--preset--color--neutral);
	}
}

/* Prevent body scroll while drawer open (JS also sets overflow:hidden on body,
   this is a CSS-only fallback for cases where JS is slow) */
body:has(.bst-mini-cart-drawer:not([hidden])) {
	overflow: hidden;
}

/* ──────────── BST-83: Nav redesign — mega-dropdowns + avatar + user-dropdown ──────────── */

/*
 * Nav item wrapper — position:relative needed for dropdown anchoring.
 * Replaces the bare <a> approach from the original nav.
 */
.bst-nav-item {
	position: relative;
}

/*
 * Nav link/trigger — shared styles for both <a> and <button> variants.
 * padding: 8px 14px gives a larger hit area than the old 8px 0.
 */
.bst-nav-link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	padding: 8px 14px;
	background: transparent;
	border: 0;
	font: inherit;
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	cursor: pointer;
	transition: color 200ms cubic-bezier(0.4, 0, 0.2, 1);
	position: relative;
	white-space: nowrap;
}

.bst-nav-link::after {
	content: '';
	position: absolute;
	left: 14px;
	right: 14px;
	bottom: 2px;
	height: 1px;
	background: var(--wp--preset--color--accent-1);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 220ms cubic-bezier(0.4, 0, 0.2, 1);
}

.bst-nav-link:hover,
.bst-nav-link.active,
.bst-nav-item.bst-open .bst-nav-link {
	color: var(--wp--preset--color--accent-1);
}

.bst-nav-link.active::after,
.bst-nav-item.bst-open .bst-nav-link::after {
	transform: scaleX(1);
}

.bst-nav-link .bst-caret {
	transition: transform 220ms;
	opacity: 0.6;
	flex-shrink: 0;
}

.bst-nav-item.bst-open .bst-nav-link .bst-caret {
	transform: rotate(180deg);
}

/*
 * Mega-dropdown panel — centered under its trigger by default,
 * left-aligned variant (.bst-mega--left) for the Catalog button which is near
 * the left edge of the nav.
 *
 * WP block-spacing guard: .bst-mega > * { margin-block: 0 } prevents the
 * `:where(.wp-block-group > * + *) { margin-block-start: 24px }` rule from
 * bleeding into mega content when parts/header.html is rendered inside a group.
 */
.bst-mega {
	position: absolute;
	top: calc(100% + 12px);
	left: 50%;
	transform: translateX(-50%) translateY(-6px);
	min-width: 580px;
	max-width: 760px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.5);
	/* Design v4 spec is 24px (--spacing-40 in design tokens.json which maps
	   to BST's --spacing-50 — naming offset). Use a literal so we don't
	   depend on token mapping for this one isolated piece. */
	padding: 24px !important;
	opacity: 0;
	pointer-events: none;
	transition: opacity 200ms, transform 220ms cubic-bezier(0.4, 0, 0.2, 1);
	z-index: 60;
}

.bst-mega > * {
	/* WP block-spacing pollution guard */
	margin-block: 0 !important;
}

.bst-nav-item.bst-open .bst-mega {
	opacity: 1;
	transform: translateX(-50%) translateY(0);
	pointer-events: auto;
}

/* Triangle pointer */
.bst-mega::before {
	content: '';
	position: absolute;
	top: -6px;
	left: 50%;
	transform: translateX(-50%) rotate(45deg);
	width: 10px;
	height: 10px;
	background: var(--wp--preset--color--base-elevated);
	border-left: 1px solid var(--wp--preset--color--neutral);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

/* Left-aligned variant (Catalog — near nav start) */
.bst-mega--left {
	left: 0;
	transform: translateY(-6px);
}

.bst-nav-item.bst-open .bst-mega--left {
	transform: translateY(0);
}

.bst-mega--left::before {
	left: 32px;
	transform: rotate(45deg);
}

/* Narrow variant (Collections) */
.bst-mega--narrow {
	min-width: 460px;
}

/* Mega grid layout. Same token-vs-literal note as .bst-mega padding above. */
.bst-mega-grid {
	display: grid;
	gap: 24px !important;
	grid-template-columns: 1.4fr 1fr 1fr;
}

.bst-mega-grid--cols2 {
	grid-template-columns: 1fr 1fr;
}

/* Column header */
.bst-mega-col h5 {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin: 0 0 12px;
	padding-bottom: 8px;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

/* Mega links */
.bst-mega-links {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.bst-mega-link {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 10px;
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	cursor: pointer;
	transition: background 150ms, color 150ms;
	font-size: 13px;
	font-weight: 500;
	text-transform: none;
	letter-spacing: 0;
	font-family: var(--wp--preset--font-family--body);
}

.bst-mega-link:hover {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--accent-1);
}

.bst-mega-link .bst-mega-count {
	margin-left: auto;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	letter-spacing: 0;
	text-transform: none;
}

.bst-mega-link .bst-rarity-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	flex-shrink: 0;
}

/* Featured card (leftmost column, Catalog mega) — BST-136: text-only typographic design.
   No image. Three rows: eyebrow / title / meta-line.
   Title is the visual anchor; generous vertical padding keeps breathing room. */
.bst-mega-feat {
	/* Some upstream WP/WC rule overrides this to "8px 0" — force with
	   !important so the design's padding actually applies. */
	padding: 20px 16px !important;
	border-radius: var(--wp--custom--border--radius--sm);
	background:
		radial-gradient(circle at 70% 30%, var(--wp--preset--color--accent-1-soft, rgba(179,224,0,.14)), transparent 60%),
		var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--accent-1-soft, rgba(179,224,0,.14));
	display: flex;
	flex-direction: column;
	cursor: pointer;
	transition: border-color 200ms;
	text-decoration: none;
	height: 100%;
	box-sizing: border-box;
}

.bst-mega-feat:hover {
	border-color: var(--wp--preset--color--accent-1);
}

.bst-mega-feat .bst-mega-feat-body {
	display: flex;
	flex-direction: column;
	gap: 0;
	flex: 1;
}

/* BST-148: hero image inside dropdown grail card. Sits above the typography
   block; the rarity glow background still shows around the image. */
.bst-mega-feat .bst-mega-feat-img {
	display: block;
	margin: -10px -6px 14px;
	border-radius: var(--wp--custom--border--radius--sm);
	overflow: hidden;
	background: rgba(0, 0, 0, 0.25);
	aspect-ratio: 4 / 3;
	max-height: 120px;
}

.bst-mega-feat .bst-mega-feat-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	pointer-events: none;
}

.bst-mega-feat .bst-mega-feat-tag {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	color: var(--wp--preset--color--accent-1);
	text-transform: uppercase;
	letter-spacing: 0.12em;
	margin-bottom: 10px;
}

.bst-mega-feat .bst-mega-feat-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 18px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.02em;
	line-height: 1.2;
	flex: 1;
	/* Push meta-line to bottom of available space */
	margin-bottom: 14px;
}

/* BST-136: renamed from bst-mega-feat-price to bst-mega-feat-meta.
   Now carries the full rich meta-line: Quality · Exterior · float min–max · from price. */
.bst-mega-feat .bst-mega-feat-meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.5;
	margin-top: auto;
}

/* wc_price() wraps the amount in a <span> + <bdi>; keep it inline and
   highlight just the price amount so it reads as the value anchor. */
.bst-mega-feat .bst-mega-feat-meta .woocommerce-Price-amount {
	color: var(--wp--preset--color--contrast);
	font-weight: 600;
}

/* Collections "view all" footer link */
.bst-mega-footer {
	margin-top: 14px;
	padding-top: 12px;
	border-top: 1px solid var(--wp--preset--color--neutral);
	text-align: right;
}

.bst-mega-footer a {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	text-decoration: none;
	transition: opacity 200ms;
}

.bst-mega-footer a:hover {
	opacity: 0.8;
}

/* BST-112: Currency picker — wrapper + button + dropdown panel.
 * The wrapper [data-bst-currency] is position:relative so the dropdown
 * can be absolutely positioned below the button. Open state is toggled
 * via .bst-open on the wrapper (same pattern as .bst-avatar-wrap).
 */
.bst-currency-wrap {
	position: relative;
}

/* Currency picker button */
.bst-currency-btn {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	height: 36px;
	padding: 0 12px;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	background: transparent;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	cursor: pointer;
	transition: color 200ms, border-color 200ms;
	white-space: nowrap;
}

.bst-currency-btn:hover,
.bst-currency-wrap.bst-open .bst-currency-btn {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}

/* Currency dropdown panel — hidden until .bst-open on wrapper */
.bst-currency-drop {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	min-width: 120px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5);
	overflow: hidden;
	opacity: 0;
	transform: translateY(-4px);
	pointer-events: none;
	transition: opacity 200ms, transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
	z-index: 60;
}

.bst-currency-wrap.bst-open .bst-currency-drop {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}

/* Individual currency option links */
.bst-currency-option {
	display: block;
	padding: 9px 16px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	transition: background 150ms, color 150ms;
	white-space: nowrap;
}

.bst-currency-option:hover {
	background: var(--wp--preset--color--base-raised);
	color: var(--wp--preset--color--contrast);
}

.bst-currency-option--active {
	color: var(--wp--preset--color--accent-1);
	font-weight: 600;
}

/*
 * Logged-out state: "Sign in" ghost link + "Sign up" primary CTA.
 * These replace the old .bst-header-signin / .bst-header-signup.
 */
.bst-header-auth-out {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

/*
 * Logged-in state: avatar pill trigger + dropdown.
 *
 * .bst-avatar-wrap — relative wrapper so the dropdown can be absolutely positioned.
 * .bst-avatar-btn  — pill button (border-radius:pill, shows initials + optional name).
 * .bst-userdrop    — the dropdown panel.
 */
.bst-avatar-wrap {
	position: relative;
}

.bst-avatar-btn {
	box-sizing: border-box; /* height: 40px = total (border-box, matches design) */
	height: 40px;
	padding: 0 4px 0 0;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	transition: color 200ms, border-color 200ms;
	font-family: var(--wp--preset--font-family--heading);
}

.bst-avatar-btn:hover,
.bst-avatar-btn.bst-open {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}

/* Avatar circle (initials or <img>) */
.bst-avatar {
	width: 32px;
	height: 32px;
	border-radius: 50%;
	margin: 3px;
	background: linear-gradient(135deg, var(--wp--preset--color--accent-1-soft, rgba(179,224,0,.14)), var(--wp--preset--color--base-raised));
	border: 1px solid var(--wp--preset--color--neutral-strong, var(--wp--preset--color--neutral));
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 700;
	color: var(--wp--preset--color--accent-1);
	flex-shrink: 0;
	position: relative;
	overflow: hidden;
}

.bst-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 50%;
}

/* Steam online indicator dot */
.bst-avatar::after {
	content: '';
	position: absolute;
	right: -2px;
	bottom: -1px;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--wp--preset--color--success, #4ade80);
	border: 2px solid var(--wp--preset--color--base);
}

.bst-avatar-btn .bst-avatar-name {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	line-height: 1.1;
	padding-right: 8px;
}

.bst-avatar-btn .bst-avatar-name .name {
	font-size: 12px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	text-transform: none;
	letter-spacing: 0;
}

.bst-avatar-btn .bst-avatar-name .handle {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	color: var(--wp--preset--color--contrast-faint);
	margin-top: 2px;
}

.bst-avatar-btn .bst-caret {
	margin-right: 8px;
}

@media (max-width: 700px) {
	.bst-avatar-btn .bst-avatar-name {
		display: none;
	}
}

/* User dropdown panel */
.bst-userdrop {
	position: absolute;
	top: calc(100% + 8px);
	right: 0;
	min-width: 280px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.5);
	overflow: hidden;
	opacity: 0;
	transform: translateY(-6px);
	pointer-events: none;
	transition: opacity 200ms, transform 220ms cubic-bezier(0.4, 0, 0.2, 1);
	z-index: 60;
}

.bst-avatar-wrap.bst-open .bst-userdrop {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}

/* Dropdown header — user info */
.bst-userdrop-head {
	padding: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	display: flex;
	align-items: center;
	gap: 12px;
}

.bst-userdrop-av {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--wp--preset--color--accent-1-soft, rgba(179,224,0,.14)), var(--wp--preset--color--base-raised));
	border: 1px solid var(--wp--preset--color--accent-1);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--accent-1);
	flex-shrink: 0;
	overflow: hidden;
}

.bst-userdrop-av img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 50%;
}

.bst-userdrop-info {
	flex: 1;
	min-width: 0;
}

.bst-userdrop-info .bst-userdrop-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.bst-userdrop-info .bst-userdrop-steam {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--success, #4ade80);
	margin-top: 2px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.bst-userdrop-info .bst-userdrop-steam::before {
	content: '';
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: currentColor;
	flex-shrink: 0;
}

.bst-userdrop-info .bst-userdrop-nok {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--warning, #f59e0b);
	margin-top: 2px;
}

/* Stats row (orders / wishlist / watching) */
.bst-userdrop-stats {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.bst-userdrop-stats > div {
	padding: 12px 8px;
	text-align: center;
	border-right: 1px solid var(--wp--preset--color--neutral);
}

.bst-userdrop-stats > div:last-child {
	border-right: 0;
}

.bst-userdrop-stats .bst-stat-val {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	line-height: 1;
}

.bst-userdrop-stats .bst-stat-lbl {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-top: 4px;
}

/* Dropdown link list */
.bst-userdrop-links {
	padding: 6px;
}

.bst-userdrop-links a,
.bst-userdrop-links button {
	width: 100%;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 9px 12px;
	border-radius: var(--wp--custom--border--radius--sm);
	background: transparent;
	border: 0;
	cursor: pointer;
	color: var(--wp--preset--color--contrast);
	font-family: inherit;
	font-size: 13px;
	font-weight: 500;
	text-align: left;
	text-decoration: none;
	transition: background 150ms, color 150ms;
}

.bst-userdrop-links a:hover,
.bst-userdrop-links button:hover {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--accent-1);
}

.bst-userdrop-links .bst-drop-ico {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
	color: var(--wp--preset--color--contrast-faint);
	opacity: 0.8;
}

.bst-userdrop-links a:hover .bst-drop-ico,
.bst-userdrop-links button:hover .bst-drop-ico {
	color: var(--wp--preset--color--accent-1);
	opacity: 1;
}

.bst-userdrop-links hr {
	margin: 6px 4px;
	border: 0;
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.bst-userdrop-links .bst-drop-kbd {
	margin-left: auto;
	/* BST-160: keep the count pill from clipping into the row's right edge —
	   never shrink, center the digit(s), and reserve a min width so 1- and
	   2-digit counts share the same footprint. Rendered server-side ONLY when
	   count > 0 (see inc/setup.php), so an empty "0" pill never appears. */
	flex-shrink: 0;
	min-width: 20px;
	text-align: center;
	line-height: 1.4;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	padding: 2px 6px;
	border-radius: 3px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
}

.bst-userdrop-links .bst-drop-danger:hover {
	color: var(--wp--preset--color--error, #f87171);
}

.bst-userdrop-links .bst-drop-danger:hover .bst-drop-ico {
	color: var(--wp--preset--color--error, #f87171);
}

/* ── BST-83 Mobile: hide mega on small screens ── */
@media (max-width: 880px) {
	.bst-nav-item,
	.bst-avatar-btn .bst-avatar-name,
	.bst-currency-wrap { display: none; }

	/* Mobile: show plain signin CTA instead of avatar */
	.bst-header-auth-out,
	.bst-header-auth-in { display: none; }
}

/* ──────────── BST-84: /signin/ page ──────────── */

.si-page {
	flex: 1;
	display: grid;
	grid-template-columns: 1.05fr 1fr;
	min-height: calc(100vh - 64px); /* subtract header height */
	/* BST-102: bottom gap before footer — matches section spacing used on PDP/shop */
	padding-bottom: var(--wp--preset--spacing--80);
}

@media (max-width: 920px) {
	.si-page { grid-template-columns: 1fr; }
}

/* Left: form side */
.si-form-side {
	padding: var(--wp--preset--spacing--60);
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
	background: var(--wp--preset--color--base);
	min-width: 0;
}

@media (max-width: 920px) {
	.si-form-side { padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40); }
}

.si-form-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--40);
	flex-wrap: wrap;
}

.si-back {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
	letter-spacing: 0.06em;
	text-transform: uppercase;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	text-decoration: none;
	transition: color 200ms;
}

.si-back:hover { color: var(--wp--preset--color--accent-1); }

.si-form-wrap {
	max-width: 460px;
	width: 100%;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--50);
}

/* Tab pills */
.si-tabs {
	display: grid;
	grid-template-columns: 1fr 1fr;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	padding: 4px;
	position: relative;
}

.si-tab {
	padding: 11px 16px;
	border: 0;
	background: transparent;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-muted);
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	transition: color 200ms;
	position: relative;
	z-index: 2;
}

.si-tab.si-tab--on { color: var(--wp--preset--color--base); }

.si-tab-thumb {
	position: absolute;
	top: 4px;
	bottom: 4px;
	left: 4px;
	width: calc(50% - 4px);
	background: var(--wp--preset--color--accent-1);
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	transition: transform 280ms cubic-bezier(0.4, 0, 0.2, 1);
	z-index: 1;
	box-shadow: 0 4px 16px rgba(179, 224, 0, 0.2);
}

.si-tabs.si-tabs--signup .si-tab-thumb {
	transform: translateX(100%);
}

/* Form heading */
.si-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 4vw, 2.625rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	margin: 0 0 8px;
	color: var(--wp--preset--color--contrast);
}

.si-title .si-accent { color: var(--wp--preset--color--accent-1); }

.si-lead {
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.6;
	font-size: 15px;
	margin: 0;
}

/* Steam SSO button */
.si-sso {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	padding: 14px 18px;
	background: linear-gradient(135deg, #1b2838, #2a475e);
	color: #fff;
	border: 1px solid #66c0f4;
	border-radius: var(--wp--custom--border--radius--md, 8px);
	cursor: pointer;
	transition: border-color 200ms, box-shadow 200ms, transform 200ms;
	text-decoration: none;
	position: relative;
	overflow: hidden;
}

.si-sso::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	left: -100%;
	width: 60%;
	background: linear-gradient(90deg, transparent, rgba(102,192,244,0.25), transparent);
	animation: siShine 2.6s ease-in-out infinite;
}

@keyframes siShine {
	0%, 60% { left: -100%; }
	100% { left: 120%; }
}

.si-sso:hover {
	border-color: #c7eafd;
	box-shadow: 0 12px 32px -8px rgba(102, 192, 244, 0.5);
	transform: translateY(-1px);
}

.si-sso-mark {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: rgba(102, 192, 244, 0.2);
	display: flex;
	align-items: center;
	justify-content: center;
	color: #c7eafd;
	flex-shrink: 0;
}

.si-sso-label { flex: 1; text-align: left; }

.si-sso-label .si-sso-top {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	display: block;
}

.si-sso-label .si-sso-sub {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: #c7eafd;
	margin-top: 2px;
	display: block;
}

.si-sso-arrow {
	color: #c7eafd;
	transition: transform 220ms;
}

.si-sso:hover .si-sso-arrow { transform: translateX(4px); }

/* Or divider */
.si-or {
	display: flex;
	align-items: center;
	gap: 12px;
	color: var(--wp--preset--color--contrast-faint);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.12em;
}

.si-or::before,
.si-or::after {
	content: '';
	flex: 1;
	height: 1px;
	background: var(--wp--preset--color--neutral);
}

/* Form fields */
.si-form {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.si-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
	position: relative;
}

.si-field label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 600;
}

/* BST-97v2: .si-label-sr removed — labels are now visible per design v5.
   The sr-only pattern is no longer applied to .si-field label elements. */

/* BST-97: wrapper isolates icon positioning from pw-meter/lbl siblings.
   Icon bottom: 17px is now measured from the bottom of the input wrapper
   (height = 48px), not the entire .si-field. */
.si-input-wrap {
	position: relative;
}

.si-field input[type="text"],
.si-field input[type="email"],
.si-field input[type="password"] {
	height: 48px;
	padding: 0 14px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	font-family: inherit;
	font-size: 14px;
	outline: none;
	transition: border-color 200ms, background 200ms;
	width: 100%;
	box-sizing: border-box;
}

.si-field input:focus {
	border-color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--base);
}

/* BST-97v3: padding-left = icon.left(14) + icon.width(14) + gap(16) = 44px.
   Selector uses two classes on the same element (.si-field.si-field--icon)
   to match the specificity of .si-field input[type="text"] (0,2,1),
   ensuring this longhand overrides the base padding shorthand. */
.si-field.si-field--icon input { padding-left: 44px; }

.si-input-wrap .si-field-ico {
	/* BST-97v3: top:50% + translateY(-50%) is DPR-safe vertical centring —
	   replaces bottom:17px which was calculated for 48px wrap height and
	   could drift if line-height or border-box geometry shifts by 1px. */
	position: absolute;
	left: 14px;
	top: 50%;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	color: var(--wp--preset--color--contrast-faint);
	pointer-events: none;
}

.si-input-wrap input:focus ~ .si-field-ico { color: var(--wp--preset--color--accent-1); }

/* Password strength meter */
.si-pw-meter {
	display: flex;
	gap: 4px;
	margin-top: 6px;
	height: 4px;
}

.si-pw-meter .si-pw-seg {
	flex: 1;
	background: var(--wp--preset--color--neutral);
	border-radius: 2px;
	transition: background 220ms;
}

.si-pw-lbl {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	margin-top: 4px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* BST-96: Registration error banner
   BST-103: Login error banner (.si-login-error) reuses the same shape */
.si-register-error,
.si-login-error {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 16px;
	margin-bottom: 16px;
	background: rgba(239, 68, 68, 0.12);
	border: 1px solid rgba(239, 68, 68, 0.35);
	border-radius: 6px;
	color: #f87171;
	font-size: 13px;
	line-height: 1.5;
}
.si-register-error svg,
.si-login-error svg {
	flex-shrink: 0;
	color: #f87171;
}

/* Submit button */
.si-submit {
	width: 100%;
	height: 50px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border: 0;
	border-radius: var(--wp--custom--border--radius--sm);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	cursor: pointer;
	transition: background 200ms, transform 200ms, box-shadow 200ms;
	margin-top: 6px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	text-decoration: none;
}

.si-submit:hover {
	background: var(--wp--preset--color--accent-1-hover, var(--wp--preset--color--accent-1));
	transform: translateY(-1px);
	box-shadow: 0 8px 20px -4px rgba(179, 224, 0, 0.35);
}

.si-submit:active { transform: translateY(0); }

/* TOS note */
.si-tos {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-align: center;
	line-height: 1.7;
	margin-top: 4px;
}

.si-tos a {
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: underline;
}

.si-tos a:hover { color: var(--wp--preset--color--accent-1); }

/* Switch hint */
.si-switch {
	text-align: center;
	color: var(--wp--preset--color--contrast-muted);
	font-size: 13px;
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.si-switch button {
	background: transparent;
	border: 0;
	padding: 0;
	color: var(--wp--preset--color--accent-1);
	cursor: pointer;
	font: inherit;
	font-weight: 700;
}

.si-switch button:hover { text-decoration: underline; }

/* Row: remember + forgot */
.si-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.si-check {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	cursor: pointer;
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
}

.si-check input { accent-color: var(--wp--preset--color--accent-1); }

/* Right: marketing / context side */
.si-context {
	position: relative;
	overflow: hidden;
	background:
		radial-gradient(ellipse 70% 50% at 50% 20%, rgba(179,224,0,.10), transparent 60%),
		var(--wp--preset--color--base-elevated);
	border-left: 1px solid var(--wp--preset--color--neutral);
	padding: var(--wp--preset--spacing--70) var(--wp--preset--spacing--60);
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: var(--wp--preset--spacing--50);
	/* BST-102: size to content only — prevents green-grid bg from bleeding to footer */
	align-self: start;
	height: auto;
}

@media (max-width: 920px) { .si-context { display: none; } }

/* Grid background */
.si-context::before {
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
	background-size: 56px 56px;
	mask-image: radial-gradient(ellipse 80% 70% at 50% 50%, black 30%, transparent 80%);
	-webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 50%, black 30%, transparent 80%);
	pointer-events: none;
	animation: siCtxDrift 30s linear infinite;
}

@keyframes siCtxDrift {
	to { background-position: 56px 56px, 56px 56px; }
}

.si-context-head { position: relative; z-index: 1; }

.si-context-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 5px 11px;
	border-radius: 3px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.1em;
}

.si-context-eyebrow .si-pulse {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent-1);
	animation: siPulse 1.6s infinite;
}

@keyframes siPulse {
	0%   { box-shadow: 0 0 0 0 var(--wp--preset--color--accent-1); }
	70%  { box-shadow: 0 0 0 6px transparent; }
	100% { box-shadow: 0 0 0 0 transparent; }
}

.si-context h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 3.4vw, 2.5rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	margin: 18px 0 16px;
	position: relative;
	z-index: 1;
	color: var(--wp--preset--color--contrast);
}

.si-context h2 .si-accent { color: var(--wp--preset--color--accent-1); }

.si-context p {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 15px;
	line-height: 1.6;
	max-width: 460px;
	position: relative;
	z-index: 1;
	margin: 0;
}

/* Feature list */
.si-feats {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	position: relative;
	z-index: 1;
}

.si-feat {
	display: grid;
	grid-template-columns: 36px 1fr;
	gap: 16px;
	padding: var(--wp--preset--spacing--30) 0;
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.si-feat:first-child { border-top: 0; }

.si-feat-num {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--accent-1);
	font-weight: 700;
	padding-top: 2px;
	letter-spacing: 0.08em;
}

.si-feat-body { display: flex; flex-direction: column; gap: 4px; }

.si-feat-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}

.si-feat-text {
	font-size: 13px;
	line-height: 1.5;
	color: var(--wp--preset--color--contrast-muted);
}

/* Bottom trust strip */
.si-trust {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: 14px;
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--neutral);
	flex-wrap: wrap;
}

.si-trust-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

/* BST-99: utility aliases so /lost-password/ and /reset-password/ can use
   .si-context-title / .si-context-lead without conflicting with the existing
   .si-context h2 / .si-context p rules. Both map to the same visual tokens. */
.si-context-title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 3.4vw, 2.5rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	margin: 18px 0 16px;
	position: relative;
	z-index: 1;
	color: var(--wp--preset--color--contrast);
}

.si-context-lead {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 15px;
	line-height: 1.6;
	max-width: 460px;
	position: relative;
	z-index: 1;
	margin: 0;
}

/* BST-99: inline notice (success / info) shown on /signin/?loggedout=1
   and /lost-password/?sent=1. Uses .si-register-error shape but accent colour. */
.si-notice {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 14px;
	border-radius: var(--wp--custom--border--radius--sm);
	font-size: 13px;
	line-height: 1.5;
	border: 1px solid;
}

.si-notice--success {
	background: rgba(179,224,0,.10);
	border-color: rgba(179,224,0,.35);
	color: var(--wp--preset--color--accent-1);
}

.si-notice--error {
	background: rgba(239,68,68,.10);
	border-color: rgba(239,68,68,.35);
	color: var(--wp--preset--color--error, #f87171);
}

.si-notice--info {
	background: rgba(179,224,0,.06);
	border-color: var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--contrast-muted);
}

@media (prefers-reduced-motion: reduce) {
	.si-context::before,
	.si-sso::after,
	.si-context-eyebrow .si-pulse { animation: none !important; }
	.si-tab-thumb { transition: none !important; }
}

/* ──────────── BST-85: /account/ dashboard ──────────── */

/* Account header band */
.ac-band {
	position: relative;
	overflow: hidden;
	padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	background:
		radial-gradient(ellipse 60% 60% at 20% 50%, rgba(179,224,0,.08), transparent 60%),
		var(--wp--preset--color--base);
}

.ac-band > * { margin-block: 0 !important; /* WP block-spacing guard */ }

.ac-band-inner {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--50);
	flex-wrap: wrap;
	position: relative;
	z-index: 1;
}

.ac-band-av {
	width: 96px;
	height: 96px;
	border-radius: 50%;
	background: linear-gradient(135deg, rgba(179,224,0,.14), var(--wp--preset--color--base-raised));
	border: 2px solid var(--wp--preset--color--accent-1);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 36px;
	font-weight: 700;
	color: var(--wp--preset--color--accent-1);
	flex-shrink: 0;
	box-shadow: 0 0 32px rgba(179,224,0,.12);
	position: relative;
	overflow: hidden;
}

.ac-band-av::after {
	content: '';
	position: absolute;
	right: 4px;
	bottom: 4px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--wp--preset--color--success, #4ade80);
	border: 3px solid var(--wp--preset--color--base);
}

.ac-band-av img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 50%;
}

.ac-band-body { flex: 1; min-width: 280px; }

.ac-band-body .ac-band-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin: 0 0 6px;
}

.ac-band-body h1 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 4vw, 2.625rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	margin: 0;
	color: var(--wp--preset--color--contrast);
}

.ac-band-body h1 .ac-band-handle {
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 500;
	font-size: 0.55em;
	letter-spacing: -0.01em;
	margin-left: 14px;
	vertical-align: middle;
}

.ac-band-actions {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

/* Body grid: sidebar (240px) + main content */
.ac-shell {
	display: grid;
	grid-template-columns: 240px 1fr;
	gap: var(--wp--preset--spacing--50);
	padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--70);
	align-items: start;
}

@media (max-width: 880px) {
	.ac-shell { grid-template-columns: 1fr; }
}

/* Sidebar nav */
.ac-side {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	padding: 8px;
	display: flex;
	flex-direction: column;
	gap: 2px;
	position: sticky;
	top: var(--wp--preset--spacing--30);
}

/* BST-106: scoped border-box — prevents any child with width:100%+padding from overflowing
   the content box of .ac-side (confirmed overflow: .ac-tab rect.right was 352 vs content-right 328) */
.ac-side,
.ac-side * {
	box-sizing: border-box;
}

.ac-side > * { margin-block: 0 !important; /* WP block-spacing guard */ }

/* "ACCOUNT" eyebrow label */
.ac-side-label {
	padding: 14px 12px 6px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.12em;
	margin: 0;
}

/* Sidebar nav item */
.ac-tab {
	width: 100%;
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 10px 12px;
	border: 0;
	border-radius: var(--wp--custom--border--radius--sm, 4px);
	background: transparent;
	color: var(--wp--preset--color--contrast-muted);
	font-family: inherit;
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
	text-align: left;
	text-decoration: none;
	transition: background 150ms, color 150ms;
	position: relative;
}

.ac-tab:hover {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

.ac-tab.ac-tab--on {
	background: var(--color-accent-1-soft, rgba(179,224,0,0.14));
	color: var(--wp--preset--color--accent-1);
}

.ac-tab.ac-tab--on::before {
	content: '';
	position: absolute;
	left: 0;
	top: 8px;
	bottom: 8px;
	width: 2px;
	background: var(--wp--preset--color--accent-1);
	border-radius: 2px;
}

.ac-tab .ac-tab-ico {
	width: 16px;
	height: 16px;
	opacity: 0.85;
	flex-shrink: 0;
}

.ac-tab.ac-tab--on .ac-tab-ico { opacity: 1; }

.ac-tab .ac-tab-pill {
	margin-left: auto;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	padding: 2px 7px;
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	background: var(--wp--preset--color--base);
}

.ac-tab.ac-tab--on .ac-tab-pill { color: var(--wp--preset--color--accent-1); }

.ac-side hr {
	margin: 8px 4px;
	border: 0;
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.ac-tab-danger { color: var(--wp--preset--color--contrast-faint) !important; }
.ac-tab-danger:hover {
	color: var(--wp--preset--color--error, #f87171) !important;
	background: rgba(248,113,113,.06) !important;
}

/* Main pane */
.ac-main { min-width: 0; }

.ac-pane-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	margin-bottom: var(--wp--preset--spacing--40);
	gap: var(--wp--preset--spacing--40);
	flex-wrap: wrap;
}

.ac-pane-head h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.75rem;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.1;
	margin: 0;
	color: var(--wp--preset--color--contrast);
}

.ac-pane-head .ac-pane-sub {
	color: var(--wp--preset--color--contrast-muted);
	margin-top: 4px;
	font-size: 14px;
}

/* Stats row */
.ac-stats {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--30);
	margin-bottom: var(--wp--preset--spacing--50);
}

@media (max-width: 760px) { .ac-stats { grid-template-columns: 1fr 1fr; } }

.ac-stat {
	padding: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	position: relative;
	overflow: hidden;
}

.ac-stat .ac-stat-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 8px;
}

.ac-stat .ac-stat-num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.75rem;
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1;
	color: var(--wp--preset--color--contrast);
}

.ac-stat .ac-stat-num--accent { color: var(--wp--preset--color--accent-1); }

.ac-stat .ac-stat-delta {
	margin-top: 6px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--success, #4ade80);
}

/* Section card */
.ac-section {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	overflow: hidden;
	margin-bottom: var(--wp--preset--spacing--40);
}

.ac-section-head {
	padding: var(--wp--preset--spacing--40);
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 14px;
	flex-wrap: wrap;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

.ac-section-head h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	margin: 0;
}

.ac-section-head .ac-section-sub {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.ac-section-body { padding: var(--wp--preset--spacing--40); }

/* Orders table */
.ac-orders { padding: 0; }

.ac-order {
	display: grid;
	grid-template-columns: 64px 1.4fr 1fr auto auto;
	align-items: center;
	gap: 14px;
	padding: 16px var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--neutral);
	transition: background 150ms;
	cursor: pointer;
	text-decoration: none;
}

.ac-order:hover { background: var(--wp--preset--color--base); }
.ac-order:first-child { border-top: 0; }

.ac-order-preview {
	aspect-ratio: 4/3;
	height: 44px;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	position: relative;
	overflow: hidden;
}

.ac-order-info .ac-order-nm {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

.ac-order-info .ac-order-meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	margin-top: 2px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.ac-order-date {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
}

.ac-order-price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}

/* Status pill */
.ac-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 10px;
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-weight: 700;
	white-space: nowrap;
}

.ac-pill--delivered {
	background: rgba(74,222,128,.12);
	color: var(--wp--preset--color--success, #4ade80);
	border: 1px solid rgba(74,222,128,.3);
}

.ac-pill--pending {
	background: rgba(179,224,0,.1);
	color: var(--wp--preset--color--accent-1);
	border: 1px solid var(--wp--preset--color--accent-1);
}

.ac-pill--refunded {
	background: rgba(248,113,113,.1);
	color: var(--wp--preset--color--error, #f87171);
	border: 1px solid rgba(248,113,113,.3);
}

.ac-pill--delivered::before,
.ac-pill--refunded::before {
	content: '';
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
}

.ac-pill--pending::before {
	content: '';
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
	animation: acPillPulse 1.6s infinite;
}

@keyframes acPillPulse {
	0%, 100% { opacity: 1; transform: scale(1); }
	50%       { opacity: 0.5; transform: scale(1.3); }
}

/* Steam trade-URL card */
.ac-trade-card {
	padding: var(--wp--preset--spacing--40);
	background:
		linear-gradient(135deg, rgba(102,192,244,.08), transparent 60%),
		var(--wp--preset--color--base);
	border: 1px solid rgba(102,192,244,.3);
	border-radius: var(--wp--custom--border--radius--md, 8px);
	margin-bottom: var(--wp--preset--spacing--30);
}

.ac-trade-card-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-muted);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 8px;
	display: flex;
	align-items: center;
	gap: 8px;
}

.ac-trade-card-label .ac-check-dot {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--wp--preset--color--success, #4ade80);
	color: var(--wp--preset--color--base);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 9px;
	font-weight: 900;
	flex-shrink: 0;
}

.ac-url-row {
	display: flex;
	align-items: center;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	overflow: hidden;
}

.ac-url-row code {
	flex: 1;
	min-width: 0;
	padding: 12px 14px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ac-url-row button {
	background: var(--wp--preset--color--base);
	border: 0;
	border-left: 1px solid var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--contrast-muted);
	padding: 0 14px;
	height: 44px;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	transition: color 150ms;
	white-space: nowrap;
}

.ac-url-row button:hover { color: var(--wp--preset--color--accent-1); }

.ac-trade-meta {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 12px;
	margin-top: var(--wp--preset--spacing--30);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
}

.ac-trade-meta .ac-meta-k {
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-size: 9px;
	margin-bottom: 4px;
}

.ac-trade-meta .ac-meta-v { color: var(--wp--preset--color--contrast); }

/* Profile form */
.ac-form-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--wp--preset--spacing--40);
}

@media (max-width: 760px) { .ac-form-grid { grid-template-columns: 1fr; } }

.ac-field { display: flex; flex-direction: column; gap: 6px; }

.ac-field label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 600;
}

.ac-field input,
.ac-field select {
	height: 44px;
	padding: 0 14px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast);
	font-family: inherit;
	font-size: 14px;
	outline: none;
	transition: border-color 200ms;
}

.ac-field input:focus,
.ac-field select:focus { border-color: var(--wp--preset--color--accent-1); }

.ac-field .ac-field-hint {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
}

/* Toggle preferences */
.ac-toggle-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--wp--preset--spacing--30) 0;
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	cursor: pointer;
}

.ac-toggle-row:last-child { border-bottom: 0; }

.ac-toggle-row .ac-toggle-body { flex: 1; }

.ac-toggle-row .ac-toggle-nm {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

.ac-toggle-row .ac-toggle-desc {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 13px;
	margin-top: 2px;
	line-height: 1.5;
}

.ac-toggle {
	width: 36px;
	height: 20px;
	border-radius: var(--wp--custom--border--radius--pill, 9999px);
	background: var(--wp--preset--color--neutral);
	position: relative;
	transition: background 200ms;
	flex-shrink: 0;
}

.ac-toggle::before {
	content: '';
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--wp--preset--color--contrast-muted);
	transition: all 200ms;
}

.ac-toggle--on { background: var(--wp--preset--color--accent-1); }
.ac-toggle--on::before { left: 18px; background: var(--wp--preset--color--base); }

/* ── BST-117: Watchlist page — alert list (replaces legacy .ac-watch-grid) ── */

/* Legacy card grid — kept for backward compat; new rows use .ac-watch-list */
.ac-watch-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--30);
}

.ac-watch-card {
	padding: 12px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	transition: border-color 200ms, transform 200ms;
	cursor: pointer;
	text-decoration: none;
	display: block;
}

.ac-watch-card:hover {
	border-color: var(--wp--preset--color--accent-1);
	transform: translateY(-2px);
}

.ac-watch-card .ac-watch-preview {
	aspect-ratio: 4/3;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	margin-bottom: 10px;
}

.ac-watch-card .ac-watch-nm {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

.ac-watch-card .ac-watch-meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	margin-top: 4px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

.ac-watch-price-row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.ac-watch-price-row .ac-watch-target {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--accent-1);
}

.ac-watch-price-row .ac-watch-now {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}

/* New row-based list layout (BST-117) */
.ac-watch-list {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.ac-watch-row {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 14px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	transition: border-color 180ms;
}

.ac-watch-row:hover {
	border-color: var(--wp--preset--color--neutral-strong);
}

/* Thumbnail column */
.ac-watch-row-thumb {
	flex: 0 0 56px;
}

.ac-watch-row-img {
	width: 56px;
	height: 56px;
	object-fit: contain;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base);
	display: block;
}

.ac-watch-row-img--placeholder {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
}

/* Body column */
.ac-watch-row-body {
	flex: 1 1 auto;
	min-width: 0;
}

.ac-watch-row-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.ac-watch-row-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 4px;
}

.ac-watch-price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}

/* Threshold badge — e.g. "−5%" */
.ac-watch-badge {
	display: inline-flex;
	align-items: center;
	padding: 2px 7px;
	background: rgba(179, 224, 0, 0.12); /* accent-1 soft */
	color: var(--wp--preset--color--accent-1);
	border: 1px solid var(--wp--preset--color--accent-1-soft);
	border-radius: 3px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ac-watch-date {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* Remove button */
.ac-watch-row-remove {
	flex: 0 0 auto;
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-faint);
	cursor: pointer;
	transition: border-color 150ms, color 150ms, background 150ms;
}

.ac-watch-row-remove:hover {
	border-color: #f87171; /* error red */
	color: #f87171;
	background: rgba(248, 113, 113, 0.08);
}

/* Empty state */
.ac-watch-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: var(--wp--preset--spacing--60) var(--wp--preset--spacing--40);
	text-align: center;
}

.ac-watch-empty-ico {
	color: var(--wp--preset--color--contrast-faint);
	opacity: 0.5;
	margin-bottom: 4px;
}

.ac-watch-empty-msg {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast-muted);
	margin: 0;
}

.ac-watch-empty-sub {
	font-size: 0.875rem;
	color: var(--wp--preset--color--contrast-faint);
	margin: 0;
}

.ac-watch-link {
	color: var(--wp--preset--color--accent-1);
	text-decoration: none;
}

.ac-watch-link:hover {
	text-decoration: underline;
}

/* Loading skeleton */
.ac-watch-loading {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.ac-watch-skel {
	height: 80px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	position: relative;
	overflow: hidden;
}

.ac-watch-skel::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(
		90deg,
		transparent 0%,
		rgba(255, 255, 255, 0.04) 50%,
		transparent 100%
	);
	background-size: 200% 100%;
	animation: ac-skel-shimmer 1.4s ease-in-out infinite;
}

@keyframes ac-skel-shimmer {
	0%   { background-position: -200% 0; }
	100% { background-position:  200% 0; }
}

@media (prefers-reduced-motion: reduce) {
	.ac-watch-skel::after { animation: none; }
}

@media (prefers-reduced-motion: reduce) {
	.ac-pill--pending::before { animation: none !important; }
}



/* ════════════════════════════════════════════════════════════════════════════
   BST-93 Order Received (Thank-You) page — design v5 pixel-perfect
   Block: main-skins/order-received (src/blocks/order-received/render.php)
   Template: templates/order-confirmation.html (overrides WC default)
   ════════════════════════════════════════════════════════════════════════════ */

/* Outer page wrapper — kill WC's leftover wrapper bleed-through. WP block
   theme renders <main class="bst-order-received-page"> per template. */
.bst-order-received-page {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

/* ── Hero band ─────────────────────────────────────────────────────────── */
.or-hero {
	position: relative;
	overflow: hidden;
	padding-block: var(--wp--preset--spacing--70) var(--wp--preset--spacing--50);
	background:
		radial-gradient(ellipse 70% 60% at 50% 0%, var(--wp--preset--color--accent-1-soft), transparent 60%),
		var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}

/* Dotted grid mask overlay — gives the hero its tactical feel. */
.or-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
	background-size: 56px 56px;
	mask-image: radial-gradient(ellipse 70% 90% at 50% 30%, black 10%, transparent 75%);
	-webkit-mask-image: radial-gradient(ellipse 70% 90% at 50% 30%, black 10%, transparent 75%);
	pointer-events: none;
	opacity: 0.7;
}

.or-hero-inner {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--40);
	max-width: 1280px;
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--40);
}

.or-seal-row {
	display: flex;
	align-items: center;
	gap: var(--wp--preset--spacing--40);
	flex-wrap: wrap;
}

/* Success seal — green pulsing checkmark with dashed rotating rings */
.or-seal {
	position: relative;
	flex-shrink: 0;
	width: 92px;
	height: 92px;
	border-radius: 50%;
	background: radial-gradient(circle at 50% 50%, var(--wp--preset--color--accent-1-soft), transparent 70%);
	display: flex;
	align-items: center;
	justify-content: center;
}

.or-seal::before,
.or-seal::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: 50%;
	border: 1px dashed var(--wp--preset--color--accent-1);
	opacity: 0.4;
}

.or-seal::before {
	animation: or-sealSpin 14s linear infinite;
}

.or-seal::after {
	animation: or-sealSpin 22s linear infinite reverse;
	inset: -8px;
}

@keyframes or-sealSpin {
	to {
		transform: rotate(360deg);
	}
}

.or-seal-core {
	width: 62px;
	height: 62px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow:
		0 0 0 4px var(--wp--preset--color--base),
		0 0 0 5px var(--wp--preset--color--accent-1),
		0 0 36px var(--wp--preset--color--accent-1);
	animation: or-sealPop 600ms ease-out backwards;
}

@keyframes or-sealPop {
	0%   { transform: scale(0.4); opacity: 0; }
	60%  { transform: scale(1.12); }
	100% { transform: scale(1); opacity: 1; }
}

.or-seal-core svg {
	width: 32px;
	height: 32px;
}

.or-headline {
	flex: 1;
	min-width: 260px;
}

.or-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--accent-1);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin-bottom: 8px;
}

.or-h1 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(30px, 4.4vw, 48px);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	margin: 0;
	color: var(--wp--preset--color--contrast);
}

.or-h1 .accent {
	color: var(--wp--preset--color--accent-1);
}

.or-sub {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 15px;
	line-height: 1.6;
	max-width: 620px;
	margin-top: 12px;
}

/* ── Meta strip: 5-col Order # / Date / Total / Email / Payment ────────── */
.or-meta {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	overflow: hidden;
	margin-top: var(--wp--preset--spacing--40);
}

@media (max-width: 880px) {
	.or-meta {
		grid-template-columns: 1fr 1fr;
	}
}

@media (max-width: 480px) {
	.or-meta {
		grid-template-columns: 1fr;
	}
}

.or-meta-cell {
	padding: 16px 18px;
	border-right: 1px solid var(--wp--preset--color--neutral);
	min-width: 0;
}

.or-meta-cell:last-child {
	border-right: 0;
}

@media (max-width: 880px) {
	.or-meta-cell:nth-child(2n) {
		border-right: 0;
	}
	.or-meta-cell {
		border-bottom: 1px solid var(--wp--preset--color--neutral);
	}
	.or-meta-cell:nth-last-child(-n+2) {
		border-bottom: 0;
	}
}

@media (max-width: 480px) {
	.or-meta-cell {
		border-right: 0;
		border-bottom: 1px solid var(--wp--preset--color--neutral);
	}
	.or-meta-cell:last-child {
		border-bottom: 0;
	}
}

.or-meta-k {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: 4px;
}

.or-meta-v {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.or-meta-v.accent {
	color: var(--wp--preset--color--accent-1);
}

.or-meta-v .copy {
	margin-left: 6px;
	padding: 1px 7px;
	border-radius: 3px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--contrast-faint);
	cursor: pointer;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	transition: color 150ms, border-color 150ms;
	vertical-align: middle;
}

.or-meta-v .copy:hover {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
}

.or-meta-v .brand {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.or-meta-v .brand svg {
	display: block;
	background: white;
	padding: 2px 4px;
	border-radius: 2px;
}

/* ── Processing banner ─────────────────────────────────────────────────── */
.or-processing {
	margin-top: var(--wp--preset--spacing--40);
	padding: 16px 18px;
	background:
		linear-gradient(135deg, var(--wp--preset--color--accent-1-soft), transparent 70%),
		var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--accent-1);
	border-radius: var(--wp--custom--border--radius--md);
	display: grid;
	grid-template-columns: 44px 1fr;
	gap: 14px;
	align-items: center;
}

.or-processing .spinner {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--wp--preset--color--base);
	border: 2px solid var(--wp--preset--color--accent-1-soft);
	border-top-color: var(--wp--preset--color--accent-1);
	border-right-color: var(--wp--preset--color--accent-1);
	animation: or-procSpin 1.4s linear infinite;
}

@keyframes or-procSpin {
	to {
		transform: rotate(360deg);
	}
}

.or-processing .body .ttl {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 14px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	display: inline-flex;
	align-items: center;
	gap: 8px;
}

.or-processing .body .ttl .pill {
	padding: 3px 9px;
	border-radius: 999px;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 9px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.or-processing .body .desc {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 13px;
	margin-top: 4px;
	line-height: 1.5;
}

/* ── Body layout (under hero) ──────────────────────────────────────────── */
.or-body {
	padding-block: var(--wp--preset--spacing--50) var(--wp--preset--spacing--70);
	max-width: 1280px;
	margin-inline: auto;
	padding-inline: var(--wp--preset--spacing--40);
}

/* ── Section card ──────────────────────────────────────────────────────── */
.or-section {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	overflow: hidden;
	margin-bottom: var(--wp--preset--spacing--40);
}

.or-section-head {
	padding: 14px var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 14px;
	flex-wrap: wrap;
}

.or-section-head h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	margin: 0;
}

.or-section-head .h-sub {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

/* ── Items table ───────────────────────────────────────────────────────── */
.or-row {
	display: grid;
	grid-template-columns: 64px 1fr 60px auto;
	align-items: center;
	gap: 16px;
	padding: 14px var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--neutral);
}

.or-row:first-of-type {
	border-top: 0;
}

.or-row .preview {
	aspect-ratio: 4 / 3;
	height: 48px;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	background-color: var(--wp--preset--color--base);
	position: relative;
	overflow: hidden;
}

.or-row .preview::before {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(circle at 30% 40%, var(--rarity-tint, transparent), transparent 60%);
	pointer-events: none;
}

.or-row .product a {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 15px;
	font-weight: 600;
	color: var(--wp--preset--color--accent-1);
	text-decoration: none;
	letter-spacing: -0.01em;
}

.or-row .product a:hover {
	text-decoration: underline;
}

.or-row .product .ext {
	color: var(--wp--preset--color--contrast-muted);
	font-weight: 500;
}

.or-row .product .meta {
	margin-top: 4px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.or-row .qty {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
	text-align: center;
}

.or-row .total {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.or-rowfoot {
	display: grid;
	grid-template-columns: 64px 1fr 60px auto;
	gap: 16px;
	align-items: center;
	padding: 16px var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--neutral);
	background: var(--wp--preset--color--base);
}

.or-rowfoot .total-label {
	grid-column: 1 / 4;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-weight: 600;
}

.or-rowfoot .total-value {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.02em;
	text-align: right;
	font-variant-numeric: tabular-nums;
}

/* ── Billing address ───────────────────────────────────────────────────── */
.or-billing {
	padding: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 13px;
	color: var(--wp--preset--color--contrast);
	line-height: 1.7;
}

.or-billing .line {
	color: var(--wp--preset--color--contrast);
}

.or-billing .line.muted {
	color: var(--wp--preset--color--contrast-faint);
}

/* ── Action row ─────────────────────────────────────────────────────────── */
.or-actions {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	margin-top: var(--wp--preset--spacing--40);
}

.or-actions .or-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 12px 22px;
	border-radius: var(--wp--custom--border--radius--sm);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	text-decoration: none;
	transition: background 150ms, color 150ms, border-color 150ms;
}

.or-actions .or-btn-primary {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--accent-1);
}

.or-actions .or-btn-primary:hover {
	background: var(--wp--preset--color--accent-1-hover);
}

.or-actions .or-btn-ghost {
	background: transparent;
	color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--neutral);
}

.or-actions .or-btn-ghost:hover {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
}

/* ── Reduced motion ────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.or-seal::before,
	.or-seal::after,
	.or-seal-core,
	.or-processing .spinner {
		animation: none !important;
	}
}

/* ─────────────────────────────────────────────────────────────────────────
   BST-76 v2 — Wishlist price-drop alert modal (.wl-alerts-modal)
   Tactical style: graphite + radioactive yellow-green accent.

   Layout changes vs v1:
     - Two-column product preview (thumbnail left + meta right)
     - Inline bell icon in header (no large circle)
     - Correct HUD-corner geometry: 12×12px, 2px, all four corners
     - State machine: form / loading / success are EXCLUSIVE siblings
     - Backdrop: blur(8px) + saturate(140%) + rgba(0,0,0,0.6)
     - Open: 180ms fadeIn + scale(0.96→1), Close: 140ms reverse
───────────────────────────────────────────────────────────────────────── */

/* Prevent body scroll when modal is open */
body.wl-modal-open {
	overflow: hidden;
}

/* ── Shared: backdrop + card base ─────────────────────────────────────── */
.wl-alerts-modal,
.wl-alerts-confirm {
	position: fixed;
	inset: 0;
	z-index: 9900;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
}

.wl-alerts-modal[hidden],
.wl-alerts-confirm[hidden] {
	display: none;
}

.wl-alerts-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.6);
	backdrop-filter: blur(8px) saturate(140%);
	-webkit-backdrop-filter: blur(8px) saturate(140%);
}

/* ── Card shell ───────────────────────────────────────────────────────── */
.wl-alerts-card {
	position: relative;
	z-index: 1;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral-strong, var(--wp--preset--color--neutral));
	border-radius: var(--wp--custom--border--radius--lg, var(--wp--custom--border--radius--md, 8px));
	padding: 1.5rem;
	width: 100%;
	max-width: 420px;
	box-shadow: var(--wp--custom--shadow--lg, 0 32px 64px rgba(0, 0, 0, 0.55));
	/* Entrance animation */
	animation: wlModalIn 180ms ease-out both;
}

.wl-alerts-modal--closing .wl-alerts-card {
	animation: wlModalOut 140ms ease-in both;
}

@keyframes wlModalIn {
	from { opacity: 0; transform: scale(0.96); }
	to   { opacity: 1; transform: scale(1); }
}
@keyframes wlModalOut {
	from { opacity: 1; transform: scale(1); }
	to   { opacity: 0; transform: scale(0.96); }
}

/* Smaller variant for confirm panel */
.wl-alerts-card--sm {
	max-width: 300px;
}

/* ── HUD corners — 12×12px, 2px, all four corners, always visible ─────── */
/*   Geometry: position: absolute, inset 12px from card edge (inside border)  */
.wl-alerts-card .wl-hud-corner {
	position: absolute;
	width: 12px;
	height: 12px;
	border: 2px solid var(--wp--preset--color--accent-1);
	opacity: 1; /* always visible on modal — not hover-gated */
	pointer-events: none;
}
.wl-alerts-card .wl-hud-corner.tl { top: 12px;    left: 12px;   border-right: 0; border-bottom: 0; }
.wl-alerts-card .wl-hud-corner.tr { top: 12px;    right: 12px;  border-left:  0; border-bottom: 0; }
.wl-alerts-card .wl-hud-corner.bl { bottom: 12px; left: 12px;   border-right: 0; border-top:    0; }
.wl-alerts-card .wl-hud-corner.br { bottom: 12px; right: 12px;  border-left:  0; border-top:    0; }

/* ── Close button ─────────────────────────────────────────────────────── */
.wl-alerts-close {
	position: absolute;
	top: 0.75rem;
	right: 0.75rem;
	width: 28px;
	height: 28px;
	padding: 0;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: 50%;
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 150ms ease;
	z-index: 2; /* above HUD corners */
}
.wl-alerts-close:hover,
.wl-alerts-close:focus-visible {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	outline: none;
}

/* ── Header: inline bell icon + compact title group ───────────────────── */
.wl-alerts-header {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 1rem;
	padding-right: 2rem; /* clear the close button */
}

/* 16px bell icon — inline, no circle */
.wl-alerts-bell-icon {
	flex-shrink: 0;
	color: var(--wp--preset--color--accent-1);
}

.wl-alerts-title-group {
	display: flex;
	flex-direction: column;
	gap: 0.1rem;
}

.wl-alerts-title {
	font-family: var(--wp--preset--font-family--heading, var(--wp--preset--font-family--chakra-petch));
	font-size: 0.875rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast);
	margin: 0;
	line-height: 1.1;
}

.wl-alerts-subtitle {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--contrast-muted);
	margin: 0;
	line-height: 1.3;
	letter-spacing: 0.03em;
}

/* ── Product preview — two-column, always visible ─────────────────────── */
.wl-alerts-preview {
	display: flex;
	gap: 0.75rem;
	background: var(--wp--preset--color--base-raised, var(--wp--preset--color--base));
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md, 6px);
	overflow: hidden;
	margin-bottom: 0; /* separator handles spacing below */
}
.wl-alerts-preview[hidden] { display: none; }

/* Left column: rarity stripe (3px top) + thumbnail */
.wl-ap-thumb-col {
	flex-shrink: 0;
	width: 150px;
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--base);
	position: relative;
}

.wl-ap-rarity-stripe {
	height: 3px;
	width: 100%;
	background: var(--preview-rarity, var(--wp--preset--color--accent-1));
	box-shadow: 0 0 10px var(--preview-rarity, var(--wp--preset--color--accent-1));
}

.wl-ap-thumb {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 10px;
	aspect-ratio: 16 / 10;
}

.wl-ap-thumb img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.wl-ap-thumb-placeholder {
	color: var(--wp--preset--color--contrast-faint);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	min-height: 64px;
}

/* Right column: meta strip + large name + spec + price */
.wl-ap-meta-col {
	flex: 1;
	min-width: 0;
	padding: 0.625rem 0.75rem 0.625rem 0;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	justify-content: center;
}

/* Meta strip: WEAPON · RARITY · ST™/SOUV */
.wl-ap-meta-strip {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.2rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	line-height: 1.2;
}

.wl-ap-weapon {
	color: var(--wp--preset--color--contrast-muted);
}

.wl-ap-sep {
	color: var(--wp--preset--color--contrast-faint);
}

/* Per-rarity color tokens — mirrors .wl-card-title .rarity in wishlist */
.wl-ap-rarity { color: var(--wp--preset--color--contrast-muted); }
.wl-ap-rarity.rarity-covert         { color: var(--wp--preset--color--rarity-covert, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-classified     { color: var(--wp--preset--color--rarity-classified, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-restricted     { color: var(--wp--preset--color--rarity-restricted, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-mil-spec       { color: var(--wp--preset--color--rarity-mil-spec, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-industrial-grade { color: var(--wp--preset--color--rarity-industrial-grade, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-consumer-grade { color: var(--wp--preset--color--rarity-consumer-grade, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-contraband     { color: var(--wp--preset--color--rarity-contraband, var(--wp--preset--color--contrast-muted)); }
.wl-ap-rarity.rarity-extraordinary  { color: var(--wp--preset--color--rarity-extraordinary, var(--wp--preset--color--contrast-muted)); }

.wl-ap-badge {
	font-size: 0.5625rem;
	font-weight: 700;
	padding: 1px 4px;
	border-radius: 2px;
}
.wl-ap-badge.st {
	background: rgba(255, 165, 0, 0.18);
	color: #ffa500;
}
.wl-ap-badge.sv {
	background: rgba(255, 215, 0, 0.18);
	color: #ffd700;
}

/* Large skin name */
.wl-ap-skin-name {
	font-family: var(--wp--preset--font-family--heading, var(--wp--preset--font-family--chakra-petch));
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	line-height: 1.2;
	letter-spacing: -0.01em;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Spec subline: exterior · pattern N */
.wl-ap-spec {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* Price row */
.wl-ap-price-row {
	display: flex;
	align-items: baseline;
	gap: 0.35rem;
	margin-top: 0.25rem;
}

.wl-ap-price-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.5625rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-muted);
}

.wl-ap-price-value {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875rem;
	font-weight: 700;
	color: var(--wp--preset--color--accent-1);
}

/* ── Separator between preview and form zone ──────────────────────────── */
.wl-alerts-sep {
	height: 1px;
	background: var(--wp--preset--color--neutral-strong, var(--wp--preset--color--neutral));
	margin: 0.875rem 0;
}

/* ── Form ─────────────────────────────────────────────────────────────── */
/* State machine: form/loading/success must be exclusively visible.
   Explicit [hidden] overrides are required because display:flex on these
   elements overrides the browser UA [hidden]{display:none} default. */
.wl-alerts-form[hidden],
.wl-alerts-loading[hidden],
.wl-alerts-success[hidden] {
	display: none !important;
}

.wl-alerts-form {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.wl-alerts-field {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}

.wl-alerts-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-muted);
}

.wl-alerts-input {
	background: var(--wp--preset--color--base-raised, var(--wp--preset--color--base));
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: 3px;
	/* 44px total height (11px top + 11px bottom + line-height + border) */
	padding: 0.6875rem 0.75rem;
	height: 44px;
	box-sizing: border-box;
	font-family: var(--wp--preset--font-family--body, inherit);
	font-size: 0.875rem;
	color: var(--wp--preset--color--contrast);
	outline: none;
	transition: border-color 150ms ease;
	width: 100%;
}
.wl-alerts-input:focus {
	border-color: var(--wp--preset--color--accent-1);
}
.wl-alerts-input::placeholder {
	color: var(--wp--preset--color--contrast-faint);
}

/* Inline error */
.wl-alerts-error {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--accent-1);
	padding: 0.4rem 0.6rem;
	border-left: 2px solid var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft, rgba(179, 224, 0, 0.08));
	border-radius: 0 2px 2px 0;
}
.wl-alerts-error[hidden] { display: none; }

/* Submit button wrapper — for HUD-corner hover effect */
.wl-alerts-submit-wrap {
	position: relative;
}

/* Submit button — accent-1, full width, HUD corners on hover */
.wl-alerts-submit {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border: none;
	border-radius: 3px;
	padding: 0.6875rem 1rem;
	height: 44px;
	box-sizing: border-box;
	font-family: var(--wp--preset--font-family--heading, var(--wp--preset--font-family--chakra-petch));
	font-size: 0.8125rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	cursor: pointer;
	transition: background 150ms ease, filter 150ms ease;
	width: 100%;
	overflow: hidden;
}
.wl-alerts-submit:hover:not(:disabled) {
	background: var(--wp--preset--color--accent-1-hover, var(--wp--preset--color--accent-1));
	filter: brightness(1.08);
}
.wl-alerts-submit:disabled {
	opacity: 0.55;
	cursor: not-allowed;
}

/* HUD corners on submit button hover — same geometry as card corners */
.wl-alerts-submit-wrap::before,
.wl-alerts-submit-wrap::after,
.wl-alerts-submit-wrap > .wl-alerts-submit::before,
.wl-alerts-submit-wrap > .wl-alerts-submit::after {
	content: '';
	position: absolute;
	width: 8px;
	height: 8px;
	border: 2px solid var(--wp--preset--color--base);
	opacity: 0;
	transition: opacity 150ms ease;
	pointer-events: none;
	z-index: 2;
}
.wl-alerts-submit-wrap::before  { top: 4px;    left: 4px;   border-right: 0; border-bottom: 0; }
.wl-alerts-submit-wrap::after   { top: 4px;    right: 4px;  border-left:  0; border-bottom: 0; }
.wl-alerts-submit-wrap > .wl-alerts-submit::before { bottom: 4px; left: 4px;  border-right: 0; border-top: 0; }
.wl-alerts-submit-wrap > .wl-alerts-submit::after  { bottom: 4px; right: 4px; border-left:  0; border-top: 0; }
.wl-alerts-submit-wrap:hover::before,
.wl-alerts-submit-wrap:hover::after,
.wl-alerts-submit-wrap:hover > .wl-alerts-submit::before,
.wl-alerts-submit-wrap:hover > .wl-alerts-submit::after {
	opacity: 1;
}

/* ── Loading state — full-width, centered spinner + text ──────────────── */
.wl-alerts-loading {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	padding: 1.25rem 0;
	outline: none;
}
.wl-alerts-loading[hidden] { display: none; }

.wl-alerts-spinner {
	display: block;
	width: 18px;
	height: 18px;
	border: 2px solid var(--wp--preset--color--neutral);
	border-top-color: var(--wp--preset--color--accent-1);
	border-radius: 50%;
	animation: wlSpin 0.7s linear infinite;
	flex-shrink: 0;
}

@keyframes wlSpin {
	to { transform: rotate(360deg); }
}

.wl-alerts-loading-text {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-muted);
}

/* ── Success state ─────────────────────────────────────────────────────── */
.wl-alerts-success {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 0.5rem;
	padding: 0.75rem 0;
	outline: none; /* receives programmatic focus */
}
.wl-alerts-success[hidden] { display: none; }

.wl-alerts-success-icon {
	width: 44px;
	height: 44px;
	background: var(--wp--preset--color--accent-1-soft, rgba(179, 224, 0, 0.14));
	border: 1px solid var(--wp--preset--color--accent-1);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--wp--preset--color--accent-1);
	margin-bottom: 0.25rem;
}

.wl-alerts-success-msg {
	font-family: var(--wp--preset--font-family--heading, var(--wp--preset--font-family--chakra-petch));
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	margin: 0;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	line-height: 1.3;
}

.wl-alerts-success-sub {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--contrast-muted);
	margin: 0;
	line-height: 1.5;
}

.wl-alerts-success-sub strong {
	color: var(--wp--preset--color--contrast);
	font-weight: 600;
}

/* Done button — ghost style */
.wl-alerts-done {
	margin-top: 0.5rem;
	padding: 0.5rem 1.5rem;
	background: transparent;
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: 3px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	transition: border-color 150ms, color 150ms;
}
.wl-alerts-done:hover,
.wl-alerts-done:focus-visible {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	outline: none;
}

/* ── Confirm panel ─────────────────────────────────────────────────────── */
.wl-alerts-confirm-title {
	font-family: var(--wp--preset--font-family--heading, var(--wp--preset--font-family--chakra-petch));
	font-size: 0.875rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--contrast);
	margin: 0 0 0.4rem;
	padding-right: 2rem; /* clear the close button */
}

.wl-alerts-confirm-sub {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--contrast-muted);
	margin: 0 0 1rem;
	line-height: 1.45;
}

.wl-alerts-confirm-actions {
	display: flex;
	gap: 0.5rem;
}

.wl-alerts-confirm-cancel,
.wl-alerts-confirm-ok {
	flex: 1;
	padding: 0.5rem 0.75rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	border-radius: 3px;
	cursor: pointer;
	transition: all 150ms ease;
	border: 1px solid var(--wp--preset--color--neutral);
}
.wl-alerts-confirm-cancel {
	background: transparent;
	color: var(--wp--preset--color--contrast-muted);
}
.wl-alerts-confirm-cancel:hover,
.wl-alerts-confirm-cancel:focus-visible {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	outline: none;
}
.wl-alerts-confirm-ok {
	background: var(--wp--preset--color--base-raised, var(--wp--preset--color--base));
	color: var(--wp--preset--color--contrast);
}
.wl-alerts-confirm-ok:hover,
.wl-alerts-confirm-ok:focus-visible {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	outline: none;
}

/* ── Reduced motion ─────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.wl-alerts-card,
	.wl-alerts-modal--closing .wl-alerts-card { animation: none; }
	.wl-alerts-spinner       { animation: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   BST-121 — Policy / Legal pages  (shared with BST-118 hero, BST-120 contact)
   Ports design/policy.css to theme tokens.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Policy hero (compact) ──────────────────────────────────── */
.pl-hero {
	position: relative;
	overflow: hidden;
	padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--50);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}
.pl-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(ellipse 50% 60% at 85% 20%, var(--wp--preset--color--accent-1-soft), transparent 65%);
	pointer-events: none;
}
.pl-hero-inner {
	position: relative;
	z-index: 1;
	max-width: 760px;
}

.pl-crumbs {
	display: flex;
	align-items: center;
	gap: 8px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: var(--wp--preset--spacing--40);
}
.pl-crumbs a {
	color: var(--wp--preset--color--contrast-muted);
	transition: color var(--wp--custom--transition--duration);
	text-decoration: none;
}
.pl-crumbs a:hover { color: var(--wp--preset--color--accent-1); }
.pl-crumbs .sep { color: var(--wp--preset--color--contrast-faint); opacity: 0.5; }
.pl-crumbs .here { color: var(--wp--preset--color--accent-1); }

.pl-h1 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2.5rem, 6vw, 4.5rem);
	font-weight: 700;
	letter-spacing: -0.035em;
	line-height: 0.95;
	margin-bottom: var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--contrast);
}

.pl-updated {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}
.pl-updated .v { color: var(--wp--preset--color--contrast-muted); }

/* ── Policy article body ─────────────────────────────────────── */
.pl-main { padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--70); }

.pl-article {
	max-width: 760px;
	font-size: 1rem;
	line-height: 1.75;
	color: var(--wp--preset--color--contrast-muted);
}
.pl-article p {
	margin: 0 0 var(--wp--preset--spacing--40);
}
.pl-article p:last-child { margin-bottom: 0; }

.pl-article h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.5rem, 3vw, 1.875rem);
	font-weight: 700;
	letter-spacing: -0.02em;
	line-height: 1.2;
	color: var(--wp--preset--color--contrast);
	margin-top: var(--wp--preset--spacing--60);
	margin-bottom: var(--wp--preset--spacing--30);
}
.pl-article h2:first-child { margin-top: 0; }

.pl-article h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.1875rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	line-height: 1.3;
	color: var(--wp--preset--color--contrast);
	margin-top: var(--wp--preset--spacing--50);
	margin-bottom: var(--wp--preset--spacing--30);
}

.pl-article strong { color: var(--wp--preset--color--contrast); font-weight: 600; }
.pl-article em { font-style: italic; }

.pl-article a {
	color: var(--wp--preset--color--accent-1);
	border-bottom: 1px solid var(--wp--preset--color--accent-1-soft);
	transition: border-color var(--wp--custom--transition--duration);
	text-decoration: none;
}
.pl-article a:hover { border-bottom-color: var(--wp--preset--color--accent-1); }

.pl-article code {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875rem;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	padding: 1px 7px;
	border-radius: 3px;
	color: var(--wp--preset--color--contrast);
}

.pl-article ul,
.pl-article ol {
	margin: 0 0 var(--wp--preset--spacing--40);
	padding-left: 0;
}
.pl-article ul { list-style: none; }
.pl-article ul li {
	position: relative;
	padding-left: 24px;
	margin-bottom: 10px;
}
.pl-article ul li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.7em;
	width: 12px;
	height: 1px;
	background: var(--wp--preset--color--accent-1);
}
.pl-article ol { padding-left: 24px; }
.pl-article ol li {
	margin-bottom: 10px;
	padding-left: 6px;
}
.pl-article ol li::marker {
	color: var(--wp--preset--color--accent-1);
	font-weight: 600;
}

.pl-article blockquote {
	margin: var(--wp--preset--spacing--40) 0;
	padding-left: var(--wp--preset--spacing--40);
	border-left: 2px solid var(--wp--preset--color--accent-1);
	font-style: italic;
	color: var(--wp--preset--color--contrast-muted);
}

.pl-article hr {
	border: 0;
	height: 1px;
	background: var(--wp--preset--color--neutral);
	margin: var(--wp--preset--spacing--50) 0;
}

/* ── WP post-content inside pl-article: override block editor defaults ── */
.pl-article .wp-block-paragraph,
.pl-article .wp-block-heading { margin-block: 0; }
.pl-article .wp-block-heading + * { margin-top: var(--wp--preset--spacing--30); }

/* ═══════════════════════════════════════════════════════════════════════════
   BST-118 — FAQ page
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── FAQ Hero ──────────────────────────────────────────────── */
.fq-hero {
	position: relative;
	overflow: hidden;
	padding-block: var(--wp--preset--spacing--70) var(--wp--preset--spacing--60);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}
.fq-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse 60% 70% at 90% 20%, var(--wp--preset--color--accent-1-soft), transparent 60%),
		radial-gradient(ellipse 40% 50% at 10% 90%, var(--wp--preset--color--accent-1-soft), transparent 60%);
	pointer-events: none;
}
.fq-hero::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
	background-size: 56px 56px;
	mask-image: radial-gradient(ellipse 80% 60% at center, black, transparent 75%);
	-webkit-mask-image: radial-gradient(ellipse 80% 60% at center, black, transparent 75%);
	pointer-events: none;
}
.fq-hero-inner { position: relative; z-index: 1; }

.fq-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	padding: 5px 11px;
	border-radius: 3px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: var(--wp--preset--spacing--40);
}
.fq-eyebrow .dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--accent-1);
	display: inline-block;
}
.fq-eyebrow .sep { color: var(--wp--preset--color--contrast-faint); }

.fq-h1 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(3.5rem, 9vw, 8rem);
	font-weight: 700;
	letter-spacing: -0.04em;
	line-height: 0.9;
	margin-bottom: var(--wp--preset--spacing--40);
	display: flex;
	align-items: flex-end;
	gap: 24px;
	flex-wrap: wrap;
	color: var(--wp--preset--color--contrast);
}
.fq-h1-tag {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	padding-bottom: 1rem;
}
.fq-h1-tag .accent { color: var(--wp--preset--color--accent-1); }

.fq-lead {
	font-size: 1.125rem;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.6;
	max-width: 620px;
	margin-bottom: var(--wp--preset--spacing--50);
}
.fq-lead code {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875rem;
	color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
	padding: 2px 8px;
	border-radius: 3px;
}

/* Search row */
.fq-search-row {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 12px;
	max-width: 720px;
}
@media (max-width: 600px) { .fq-search-row { grid-template-columns: 1fr; } }

.fq-search {
	position: relative;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--md);
	transition: border-color var(--wp--custom--transition--duration), box-shadow var(--wp--custom--transition--duration);
	display: block;
}
.fq-search:focus-within {
	border-color: var(--wp--preset--color--accent-1);
	box-shadow: 0 0 0 1px var(--wp--preset--color--accent-1), 0 0 32px -4px var(--wp--preset--color--accent-1);
}
.fq-search .fq-search-icon {
	position: absolute;
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	color: var(--wp--preset--color--contrast-faint);
	pointer-events: none;
	line-height: 0;
}
.fq-search:focus-within .fq-search-icon { color: var(--wp--preset--color--accent-1); }
.fq-search input {
	width: 100%;
	box-sizing: border-box;
	padding: 16px 100px 16px 48px;
	background: transparent;
	border: 0;
	outline: 0;
	color: var(--wp--preset--color--contrast);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.9375rem;
}
.fq-search input::placeholder { color: var(--wp--preset--color--contrast-faint); }

.fq-search-clear {
	border: 1px solid var(--wp--preset--color--neutral-strong);
	cursor: pointer;
	background: var(--wp--preset--color--base-elevated);
	color: var(--wp--preset--color--contrast-muted);
	border-radius: var(--wp--custom--border--radius--md);
	padding: 0 18px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	transition: color var(--wp--custom--transition--duration), border-color var(--wp--custom--transition--duration);
}
.fq-search-clear:hover { color: var(--wp--preset--color--accent-1); border-color: var(--wp--preset--color--accent-1); }

.fq-search-status {
	margin-top: 14px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
}
.fq-search-status .num { color: var(--wp--preset--color--accent-1); font-weight: 600; }

/* ── FAQ Main layout ──────────────────────────────────────── */
.fq-main { padding-block: var(--wp--preset--spacing--70); }
.fq-grid {
	display: grid;
	grid-template-columns: 280px 1fr;
	gap: var(--wp--preset--spacing--70);
	align-items: start;
}
@media (max-width: 960px) {
	.fq-grid { grid-template-columns: 1fr; gap: var(--wp--preset--spacing--50); }
}

/* TOC sidebar */
.fq-toc {
	position: sticky;
	top: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
}
@media (max-width: 960px) { .fq-toc { position: relative; top: 0; } }

.fq-toc-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	padding-bottom: var(--wp--preset--spacing--30);
	margin-bottom: var(--wp--preset--spacing--30);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.fq-toc-label .ver { color: var(--wp--preset--color--contrast-muted); }

.fq-toc-list { display: flex; flex-direction: column; gap: 2px; list-style: none; padding: 0; margin: 0; }

.fq-toc-item {
	display: grid;
	grid-template-columns: 28px 1fr auto;
	gap: 10px;
	align-items: center;
	padding: 10px;
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--contrast-muted);
	cursor: pointer;
	transition: color var(--wp--custom--transition--duration), background var(--wp--custom--transition--duration);
	position: relative;
}
.fq-toc-item:hover {
	color: var(--wp--preset--color--contrast);
	background: var(--wp--preset--color--base);
}
.fq-toc-item.on {
	color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
}
.fq-toc-item.on::before {
	content: '';
	position: absolute;
	left: -16px;
	top: 50%;
	transform: translateY(-50%);
	width: 3px;
	height: 60%;
	background: var(--wp--preset--color--accent-1);
	border-radius: 0 2px 2px 0;
}
.fq-toc-item .num {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	letter-spacing: 0.04em;
}
.fq-toc-item.on .num { color: var(--wp--preset--color--accent-1); }
.fq-toc-item .name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: -0.01em;
	line-height: 1.2;
}
.fq-toc-item .count {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	padding: 2px 6px;
	border-radius: 3px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
}
.fq-toc-item.on .count {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
	background: transparent;
}

.fq-toc-help {
	margin-top: var(--wp--preset--spacing--40);
	padding: var(--wp--preset--spacing--30);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
}
.fq-toc-help .h {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 6px;
}
.fq-toc-help .body {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.5;
}
.fq-toc-help a {
	color: var(--wp--preset--color--accent-1);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	text-decoration: none;
}

/* Sections */
.fq-sections { display: flex; flex-direction: column; gap: var(--wp--preset--spacing--70); }
.fq-section { scroll-margin-top: var(--wp--preset--spacing--40); }
.fq-section.hidden { display: none; }

.fq-section-h {
	margin-bottom: var(--wp--preset--spacing--40);
	padding-bottom: var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}
.fq-section-meta {
	display: flex;
	gap: 14px;
	align-items: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: 14px;
}
.fq-section-meta .num {
	color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
	padding: 4px 8px;
	border-radius: 3px;
	border: 1px solid var(--wp--preset--color--accent-1);
	font-weight: 700;
}
.fq-section-meta .bar {
	flex: 1;
	height: 1px;
	background: var(--wp--preset--color--neutral-strong);
}
.fq-section h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 4vw, 2.625rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	color: var(--wp--preset--color--contrast);
}

/* FAQ items */
.fq-list { display: flex; flex-direction: column; gap: 10px; }

.fq-item {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	transition: border-color var(--wp--custom--transition--duration), box-shadow var(--wp--custom--transition--duration);
	overflow: hidden;
}
.fq-item:hover { border-color: var(--wp--preset--color--neutral-strong); }
.fq-item[open] {
	border-color: var(--wp--preset--color--accent-1);
	box-shadow: 0 0 0 1px var(--wp--preset--color--accent-1-soft);
}
.fq-item.hidden { display: none; }

.fq-item summary {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 18px;
	align-items: center;
	padding: var(--wp--preset--spacing--40);
	cursor: pointer;
	list-style: none;
}
.fq-item summary::-webkit-details-marker { display: none; }

.fq-item .qid {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--contrast-faint);
	letter-spacing: 0.04em;
	padding: 4px 8px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: 3px;
	font-variant-numeric: tabular-nums;
	transition: color var(--wp--custom--transition--duration), border-color var(--wp--custom--transition--duration), background var(--wp--custom--transition--duration);
}
.fq-item[open] .qid {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--accent-1-soft);
}

.fq-item .q {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.0625rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	line-height: 1.35;
}
.fq-item summary:hover .q { color: var(--wp--preset--color--accent-1); }

.fq-item .toggle {
	width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	color: var(--wp--preset--color--contrast-muted);
	transition: all var(--wp--custom--transition--duration);
	flex-shrink: 0;
}
.fq-item summary:hover .toggle {
	border-color: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--accent-1);
}
.fq-item .toggle svg { transition: transform var(--wp--custom--transition--duration); }
.fq-item[open] .toggle {
	background: var(--wp--preset--color--accent-1);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--accent-1);
}
.fq-item[open] .toggle svg { transform: rotate(180deg); }

.fq-item .answer {
	padding: 0 var(--wp--preset--spacing--40) var(--wp--preset--spacing--40);
	padding-left: calc(var(--wp--preset--spacing--40) + 60px);
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.7;
	font-size: 0.9375rem;
}
@media (max-width: 600px) {
	.fq-item summary { padding: var(--wp--preset--spacing--30); gap: 12px; }
	.fq-item .answer { padding: 0 var(--wp--preset--spacing--30) var(--wp--preset--spacing--30); padding-left: var(--wp--preset--spacing--30); }
}
.fq-item .answer p { margin: 0 0 14px; }
.fq-item .answer p:last-child { margin-bottom: 0; }
.fq-item .answer a {
	color: var(--wp--preset--color--accent-1);
	border-bottom: 1px solid var(--wp--preset--color--accent-1-soft);
	transition: border-color var(--wp--custom--transition--duration);
	text-decoration: none;
}
.fq-item .answer a:hover { border-bottom-color: var(--wp--preset--color--accent-1); }
.fq-item .answer code {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.8125rem;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	padding: 1px 7px;
	border-radius: 3px;
	color: var(--wp--preset--color--contrast);
}
.fq-item .answer strong { color: var(--wp--preset--color--contrast); font-weight: 600; }

/* "Helpful?" row */
.fq-helpful {
	margin-top: var(--wp--preset--spacing--30);
	padding-top: var(--wp--preset--spacing--30);
	border-top: 1px dashed var(--wp--preset--color--neutral);
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
}
.fq-helpful .label { margin-right: auto; }
.fq-helpful button {
	border: 1px solid var(--wp--preset--color--neutral);
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast-muted);
	padding: 6px 12px;
	border-radius: 3px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	cursor: pointer;
	transition: color var(--wp--custom--transition--duration), border-color var(--wp--custom--transition--duration), background var(--wp--custom--transition--duration);
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.fq-helpful button:hover { color: var(--wp--preset--color--accent-1); border-color: var(--wp--preset--color--accent-1); }
.fq-helpful button.voted { color: var(--wp--preset--color--accent-1); border-color: var(--wp--preset--color--accent-1); background: var(--wp--preset--color--accent-1-soft); }

/* Empty state */
.fq-empty {
	display: none;
	padding: var(--wp--preset--spacing--70) var(--wp--preset--spacing--50);
	text-align: center;
	background: var(--wp--preset--color--base-elevated);
	border: 1px dashed var(--wp--preset--color--neutral-strong);
	border-radius: var(--wp--custom--border--radius--md);
}
.fq-empty.on { display: block; }
.fq-empty .ico { font-family: var(--wp--preset--font-family--mono); font-size: 2rem; color: var(--wp--preset--color--contrast-faint); margin-bottom: 14px; }
.fq-empty .t { font-family: var(--wp--preset--font-family--heading); font-size: 1.375rem; font-weight: 700; letter-spacing: -0.02em; margin-bottom: 8px; color: var(--wp--preset--color--contrast); }
.fq-empty .s { color: var(--wp--preset--color--contrast-muted); font-size: 0.875rem; }

/* Contact CTA inside FAQ */
.fq-contact {
	margin-top: var(--wp--preset--spacing--70);
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--lg);
	padding: var(--wp--preset--spacing--60);
	position: relative;
	overflow: hidden;
}
.fq-contact::before {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(ellipse 60% 80% at 100% 100%, var(--wp--preset--color--accent-1-soft), transparent 60%);
	pointer-events: none;
}
.fq-contact-grid {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--wp--preset--spacing--50);
	align-items: center;
}
@media (max-width: 760px) { .fq-contact-grid { grid-template-columns: 1fr; } }
.fq-contact h3 {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 4vw, 2.375rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.05;
	margin-bottom: 12px;
	color: var(--wp--preset--color--contrast);
}
.fq-contact p {
	color: var(--wp--preset--color--contrast-muted);
	line-height: 1.6;
	margin-bottom: var(--wp--preset--spacing--40);
	max-width: 480px;
}
.fq-contact-meta {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	display: flex;
	gap: var(--wp--preset--spacing--40);
	flex-wrap: wrap;
}
.fq-contact-meta .row { display: flex; align-items: center; gap: 8px; }
.fq-contact-meta .dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--wp--preset--color--success);
	display: inline-block;
}

.fq-contact-cards { display: flex; flex-direction: column; gap: 12px; }
.fq-contact-card {
	display: grid;
	grid-template-columns: 44px 1fr auto;
	gap: 16px;
	align-items: center;
	padding: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	text-decoration: none;
	transition: border-color var(--wp--custom--transition--duration), transform var(--wp--custom--transition--duration);
}
.fq-contact-card:hover {
	border-color: var(--wp--preset--color--accent-1);
	transform: translateX(4px);
}
.fq-contact-card .badge {
	width: 44px;
	height: 44px;
	border-radius: var(--wp--custom--border--radius--sm);
	background: var(--wp--preset--color--accent-1-soft);
	color: var(--wp--preset--color--accent-1);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 1rem;
	font-weight: 700;
}
.fq-contact-card .l {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	margin-bottom: 2px;
}
.fq-contact-card .addr {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
}
.fq-contact-card:hover .addr { color: var(--wp--preset--color--accent-1); }
.fq-contact-card .arr {
	color: var(--wp--preset--color--contrast-faint);
	transition: color var(--wp--custom--transition--duration), transform var(--wp--custom--transition--duration);
}
.fq-contact-card:hover .arr {
	color: var(--wp--preset--color--accent-1);
	transform: translateX(4px);
}

/* Highlight match */
mark.fq-mark {
	background: var(--wp--preset--color--accent-1-soft);
	color: var(--wp--preset--color--accent-1);
	padding: 0 3px;
	border-radius: 3px;
}

/* ═══════════════════════════════════════════════════════════════════════════
   BST-120 — Contact page
   ═══════════════════════════════════════════════════════════════════════════ */

.ct-grid {
	display: grid;
	grid-template-columns: 1fr 1.4fr;
	gap: var(--wp--preset--spacing--70);
	align-items: start;
}
@media (max-width: 900px) {
	.ct-grid { grid-template-columns: 1fr; gap: var(--wp--preset--spacing--50); }
}

.ct-aside {
	position: sticky;
	top: var(--wp--preset--spacing--50);
}
@media (max-width: 900px) { .ct-aside { position: relative; top: 0; } }

.ct-aside .lead {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 3.5vw, 2.25rem);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.1;
	color: var(--wp--preset--color--contrast);
	margin-bottom: var(--wp--preset--spacing--40);
}
.ct-aside .lead .accent { color: var(--wp--preset--color--accent-1); }
.ct-aside p {
	color: var(--wp--preset--color--contrast-muted);
	font-size: 1rem;
	line-height: 1.65;
	margin-bottom: var(--wp--preset--spacing--30);
}
.ct-aside p:last-of-type { margin-bottom: 0; }
.ct-aside p strong { color: var(--wp--preset--color--contrast); font-weight: 600; }
.ct-aside a {
	color: var(--wp--preset--color--accent-1);
	border-bottom: 1px solid var(--wp--preset--color--accent-1-soft);
	text-decoration: none;
}
.ct-aside a:hover { border-bottom-color: var(--wp--preset--color--accent-1); }

/* BST-120: info cards in ct-aside (email, response time). BST-122: Discord card removed. */
.ct-info-cards {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-top: var(--wp--preset--spacing--50);
}

.ct-info-card {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	text-decoration: none;
	color: inherit;
	transition: border-color 180ms, background 180ms;
}

a.ct-info-card:hover {
	border-color: var(--wp--preset--color--accent-1);
	background: var(--wp--preset--color--base-raised);
}

.ct-info-card--static {
	cursor: default;
}

.ct-info-ico {
	flex: 0 0 auto;
	width: 32px;
	height: 32px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(179, 224, 0, 0.1);
	border-radius: var(--wp--custom--border--radius--sm);
	color: var(--wp--preset--color--accent-1);
}

.ct-info-body {
	min-width: 0;
}

.ct-info-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--wp--preset--color--contrast-faint);
	margin-bottom: 2px;
}

.ct-info-value {
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--wp--preset--color--contrast-muted);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

a.ct-info-card:hover .ct-info-value {
	color: var(--wp--preset--color--accent-1);
}

.ct-card {
	background: var(--wp--preset--color--base-elevated);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--md);
	padding: var(--wp--preset--spacing--60);
}
@media (max-width: 600px) { .ct-card { padding: var(--wp--preset--spacing--50); } }

/* Fluent Forms integration — override form field styles to match design */
.ct-card .ff-el-form-control,
.ct-card .ff-el-form-control:focus {
	background: var(--wp--preset--color--base) !important;
	border: 1px solid var(--wp--preset--color--neutral-strong) !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	color: var(--wp--preset--color--contrast) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-size: 0.9375rem !important;
	padding: 13px 14px !important;
	transition: border-color var(--wp--custom--transition--duration), box-shadow var(--wp--custom--transition--duration) !important;
	box-shadow: none !important;
}
.ct-card .ff-el-form-control:focus {
	border-color: var(--wp--preset--color--accent-1) !important;
	box-shadow: 0 0 0 1px var(--wp--preset--color--accent-1) !important;
}
.ct-card .ff-el-form-control::placeholder { color: var(--wp--preset--color--contrast-faint) !important; }
.ct-card .ff-el-form-control textarea { min-height: 160px; resize: vertical; }

.ct-card .ff-btn-submit,
.ct-card .ff_submit_btn_wrapper .ff-btn {
	background: var(--wp--preset--color--accent-1) !important;
	color: var(--wp--preset--color--base) !important;
	border: none !important;
	border-radius: var(--wp--custom--border--radius--sm) !important;
	padding: 14px 28px !important;
	font-family: var(--wp--preset--font-family--mono) !important;
	font-size: 0.75rem !important;
	text-transform: uppercase !important;
	letter-spacing: 0.1em !important;
	font-weight: 700 !important;
	cursor: pointer !important;
	transition: background var(--wp--custom--transition--duration), transform var(--wp--custom--transition--duration) !important;
}
.ct-card .ff-btn-submit:hover,
.ct-card .ff_submit_btn_wrapper .ff-btn:hover {
	background: var(--wp--preset--color--accent-1-hover, var(--wp--preset--color--accent-1)) !important;
	transform: translateY(-1px) !important;
}

.ct-card .ff-el-group label {
	font-family: var(--wp--preset--font-family--mono) !important;
	font-size: 0.625rem !important;
	color: var(--wp--preset--color--contrast-faint) !important;
	text-transform: uppercase !important;
	letter-spacing: 0.1em !important;
}

/* ── BST-130: Per-order detail view ────────────────────────────────────── */

/* Back link */
.od-back {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-muted);
	text-decoration: none;
	margin-bottom: var(--wp--preset--spacing--40);
	transition: color 150ms;
}
.od-back:hover { color: var(--wp--preset--color--accent-1); }

/* Order header: title + status pill side-by-side */
.od-header {
	align-items: center;
}
.od-header h2 { margin: 0; }

/* Items section */
.od-items {
	display: flex;
	flex-direction: column;
}

.od-item {
	display: grid;
	grid-template-columns: 88px 1fr auto auto;
	align-items: start;
	gap: 16px;
	padding: var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--neutral);
}
.od-item:last-child { border-bottom: 0; }

.od-item-thumb {
	aspect-ratio: 4/3;
	width: 88px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
}
.od-item-thumb img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.od-item-eyebrow {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	color: var(--wp--preset--color--contrast-faint);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-bottom: 4px;
}

.od-item-name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 15px;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	margin-bottom: 8px;
}
.od-item-name a {
	color: inherit;
	text-decoration: none;
}
.od-item-name a:hover { color: var(--wp--preset--color--accent-1); }

.od-item-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.od-meta-tag {
	display: inline-flex;
	align-items: center;
	padding: 2px 8px;
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--neutral);
	border-radius: var(--wp--custom--border--radius--sm);
	font-size: 11px;
	color: var(--wp--preset--color--contrast-muted);
}
.od-meta-tag--mono {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	letter-spacing: 0.04em;
}
.od-meta-tag--ext {
	border-color: currentColor;
}
.od-meta-tag--link {
	color: var(--wp--preset--color--accent-1);
	border-color: var(--wp--preset--color--accent-1-soft);
	text-decoration: none;
	transition: background 150ms;
}
.od-meta-tag--link:hover {
	background: var(--wp--preset--color--accent-1-soft);
}

.od-item-qty {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 12px;
	color: var(--wp--preset--color--contrast-muted);
	white-space: nowrap;
	padding-top: 2px;
}

.od-item-price {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 16px;
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
	letter-spacing: -0.01em;
	white-space: nowrap;
}

/* Totals */
.od-totals {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.od-total-row {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	font-size: 14px;
	color: var(--wp--preset--color--contrast-muted);
}
.od-total-row span:last-child {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	font-size: 15px;
}
.od-total-row--grand {
	padding-top: 10px;
	border-top: 1px solid var(--wp--preset--color--neutral);
	font-weight: 700;
	color: var(--wp--preset--color--contrast);
}
.od-total-row--grand span:last-child {
	font-size: 20px;
	color: var(--wp--preset--color--accent-1);
}

/* Billing + Steam meta rows */
.od-billing {
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.od-billing-row {
	display: flex;
	gap: 16px;
	font-size: 14px;
	align-items: baseline;
}
.od-billing-label {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--contrast-faint);
	min-width: 80px;
	flex-shrink: 0;
}

/* ── Responsive: mobile stacks ─────────────────────────────────────────── */
@media (max-width: 600px) {
	.od-item {
		grid-template-columns: 72px 1fr;
		grid-template-rows: auto auto;
	}
	.od-item-qty,
	.od-item-price {
		grid-column: 2;
	}
	.od-item-price { text-align: left; }

	.od-billing-row { flex-wrap: wrap; gap: 4px; }
	.od-billing-label { min-width: 100%; }
}

/* ── Reduced motion (all new pages) ────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
	.fq-toc-item,
	.fq-item,
	.fq-item .toggle svg,
	.fq-contact-card,
	.ct-card .ff-el-form-control,
	.pl-crumbs a { transition-duration: 0.001ms !important; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   BST-153 — OOS PDP "Notify Me When Back In Stock" CTA
   Tactical style: graphite base, accent-1 primary button.
   Location: injected via inc/alerts.php into .ms-pp-buybox after add-to-cart.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── OOS "Notify me" button — BST-153 v2 ─────────────────────────────────────
   For out-of-stock products, render_block REPLACES the add-to-cart-form output
   with #bst-oos-notify, so this button sits in the EXACT add-to-cart slot inside
   .ms-pp-buy-actions (WISHLIST stays beside it). It must match the add-to-cart
   button's footprint: flex:2, order:2, 52px tall. */
.ms-pp-buybox .ms-pp-buy-actions .ms-pp-oos-notify {
	flex: 2;
	order: 2;
	min-width: 0;
	width: 100%;
	height: 52px;
	margin: 0;
	padding: 0 18px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* Bell icon inside the OOS button (inherits currentColor). */
.bst-oos-bell {
	flex-shrink: 0;
}

/* ── OOS status badge — inline pill to the RIGHT of the price ─────────────── */
/* render_block wraps price + badge in .ms-pp-price-row so the status sits on the
   same line as the price (€76.23 · OUT OF STOCK), not as a full-width bar. */
.ms-pp-price-row {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 12px;
	width: 100%;
}
.ms-pp-price-row .ms-pp-price {
	flex: 0 0 auto;
	margin: 0;
}
.ms-pp-stock-badge {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	align-self: center;
	padding: 4px 10px;
	border-radius: var(--wp--custom--border--radius--sm, 4px);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	line-height: 1.2;
	white-space: nowrap;
}
.ms-pp-stock-badge--oos {
	color: var(--wp--preset--color--contrast-faint);
	background: var(--wp--preset--color--base-elevated);
	border: 1px dashed var(--wp--preset--color--neutral-strong);
}

/* Mobile: OOS notify button goes full-width like the add-to-cart slot does. */
@media (max-width: 480px) {
	.ms-pp-buybox .ms-pp-buy-actions .ms-pp-oos-notify { flex: 1 1 auto; }
}

/* ── w-full utility ─────────────────────────────────────────────────────── */
.w-full {
	width: 100%;
}

/* ═══════════════════════════════════════════════════════════════════════════
   BST-153 — Watchlist alert_type badges
   Extends .ac-watch-badge (BST-117) with alert_type–specific variants.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Base alert_type label ──────────────────────────────────────────────── */
.ac-watch-alert-type {
	display: inline-flex;
	align-items: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.07em;
	padding: 2px 6px;
	border-radius: 3px;
	line-height: 1.4;
	flex-shrink: 0;
}

/* Price drop — accent-1 on soft accent background */
.ac-watch-alert-type--pd {
	background: rgba(179, 224, 0, 0.10);
	color: var(--wp--preset--color--accent-1);
	border: 1px solid rgba(179, 224, 0, 0.25);
}

/* Back in stock — blue-tinted for differentiation */
.ac-watch-alert-type--bis {
	background: rgba(96, 165, 250, 0.10);
	color: #60a5fa;
	border: 1px solid rgba(96, 165, 250, 0.25);
}

/* ── "Now in stock!" nudge for BIS alerts where item is available ──────── */
.ac-watch-stock-live {
	display: inline-flex;
	align-items: center;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.625rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.07em;
	padding: 2px 6px;
	border-radius: 3px;
	background: rgba(74, 222, 128, 0.12);
	color: #4ade80;
	border: 1px solid rgba(74, 222, 128, 0.30);
	flex-shrink: 0;
}
