/*
 * components.css — component-specific styles for JoomShopping overrides.
 *
 * Only styles that are structural / repeated across overrides. Tokens are
 * read from template.css. Selectors mirror the prototype DOM I use in the
 * .php overrides — they do NOT re-use sj_topdeal's .si-*/.sj-*/.sp-* selectors
 * (per Q4 resolution: refresh_pkg selectors target sj_topdeal, not the new
 * template).
 */

/* Prototype card (used in category grid, cart line item, checkout section, product card) */
.hp-card { background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); }
.hp-card--panel { border-radius: var(--hp-radius-lg); padding: 1.25rem; }
.hp-card--panel-lg { border-radius: var(--hp-radius-lg); padding: var(--hp-space-6); }

/* Buttons — the primary CTA is used everywhere */
.hp-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--hp-space-2); border-radius: var(--hp-radius); font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease; }
.hp-btn--primary { background: var(--hp-primary); color: var(--hp-primary-foreground); padding: 0 var(--hp-space-6); height: 2.75rem; border: 1px solid transparent; }
.hp-btn--primary:hover { background: var(--hp-primary-hover); }
.hp-btn--outline { background: var(--hp-card); color: var(--hp-text); border: 1px solid var(--hp-border); padding: 0 var(--hp-space-3); height: 2.5rem; }
.hp-btn--outline:hover { background: var(--hp-nav); }
.hp-btn--sm { height: 2rem; padding: 0 var(--hp-space-3); font-size: var(--hp-fs-xs); }

/* Product card (list_products/product.php) */
.hp-product-card { display: flex; flex-direction: column; overflow: hidden; border-radius: var(--hp-radius); border: 1px solid var(--hp-border); background: var(--hp-card); transition: box-shadow 200ms ease; }
.hp-product-card:hover { box-shadow: 0 8px 24px -12px rgba(45,36,22,0.18); }
.hp-product-card__image-wrap { position: relative; display: block; aspect-ratio: 1 / 1; background: var(--hp-header); overflow: hidden; }
.hp-product-card__image { width: 100%; height: 100%; object-fit: contain; padding: var(--hp-space-6); transition: transform 300ms ease; }
.hp-product-card:hover .hp-product-card__image { transform: scale(1.05); }
.hp-product-card__body { display: flex; flex: 1; flex-direction: column; padding: var(--hp-space-4); }
.hp-product-card__eyebrow { font-size: var(--hp-fs-xs); font-weight: var(--hp-fw-medium); text-transform: uppercase; letter-spacing: 0.025em; color: var(--hp-text-muted); }
.hp-product-card__title { margin-top: var(--hp-space-1); font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-semibold); line-height: 1.375; color: var(--hp-text); text-wrap: pretty; }
.hp-product-card__title:hover { color: var(--hp-primary); }
.hp-product-card__compat { margin-top: 0.375rem; font-size: var(--hp-fs-xs); color: var(--hp-text-secondary); }
.hp-product-card__stock { margin-top: var(--hp-space-3); }
.hp-product-card__footer { margin-top: auto; display: flex; align-items: flex-end; justify-content: space-between; gap: var(--hp-space-2); padding-top: var(--hp-space-4); }
.hp-product-card__price-old { font-size: var(--hp-fs-xs); color: var(--hp-text-muted); text-decoration: line-through; display: block; }
.hp-product-card__price { font-size: var(--hp-fs-lg); font-weight: var(--hp-fw-semibold); color: var(--hp-text); }
.hp-product-card__sale-badge { position: absolute; left: 0.75rem; top: 0.75rem; padding: 0.25rem 0.5rem; font-size: var(--hp-fs-xs); font-weight: var(--hp-fw-medium); color: var(--hp-primary-foreground); background: var(--hp-primary); border-radius: var(--hp-radius-full); }

/* Stock badge */
.hp-stock-badge { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.25rem 0.5rem; border-radius: var(--hp-radius-full); font-size: var(--hp-fs-xs); font-weight: var(--hp-fw-medium); }
.hp-stock-badge--in { color: var(--hp-success); background: color-mix(in oklab, var(--hp-success) 12%, transparent); }
.hp-stock-badge--out { color: var(--hp-error); background: color-mix(in oklab, var(--hp-error) 12%, transparent); }

/* Trust strip (module or inline) */
.hp-trust-tile { display: flex; align-items: flex-start; gap: var(--hp-space-3); padding: 1.25rem var(--hp-space-4); background: var(--hp-card); }
.hp-trust-tile__icon { margin-top: 0.125rem; width: 1.25rem; height: 1.25rem; flex-shrink: 0; color: var(--hp-primary); }
.hp-trust-tile__title { font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); line-height: 1.15; color: var(--hp-text); }
.hp-trust-tile__detail { font-size: var(--hp-fs-xs); color: var(--hp-text-secondary); }

/* Product detail — preserve JoomShopping JS anchors (id="comjshop" etc.) */
#comjshop.productfull { display: block; }
#comjshop .productfull-wrap, .hp-product-detail { display: grid; gap: var(--hp-space-8); }
@media (min-width: 1024px) { .hp-product-detail { grid-template-columns: 1fr 1fr; gap: var(--hp-space-12); } }
.hp-product-detail__gallery { display: block; }
.hp-product-detail__gallery-main { position: relative; aspect-ratio: 1 / 1; overflow: hidden; border-radius: var(--hp-radius-lg); border: 1px solid var(--hp-border); background: var(--hp-card); }
.hp-product-detail__gallery-main img { width: 100%; height: 100%; object-fit: contain; padding: 2.5rem; }
.hp-product-detail__thumbs { margin-top: var(--hp-space-3); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--hp-space-3); }
.hp-product-detail__thumb { position: relative; aspect-ratio: 1 / 1; overflow: hidden; border-radius: var(--hp-radius); border: 1px solid var(--hp-border); background: var(--hp-card); cursor: pointer; padding: 0; }
.hp-product-detail__thumb--active { border-color: var(--hp-primary); }
.hp-product-detail__thumb img { width: 100%; height: 100%; object-fit: contain; padding: 0.75rem; }
.hp-product-detail__eyebrow { font-size: var(--hp-fs-xs); font-weight: var(--hp-fw-medium); text-transform: uppercase; letter-spacing: 0.025em; color: var(--hp-text-muted); }
.hp-product-detail__title { margin-top: var(--hp-space-2); font-size: var(--hp-fs-2xl); font-weight: var(--hp-fw-bold); line-height: 1.15; letter-spacing: -0.015em; color: var(--hp-text); text-wrap: balance; }
@media (min-width: 640px) { .hp-product-detail__title { font-size: 1.875rem; } }
.hp-product-detail__compat-pill { display: inline-flex; align-items: center; padding: 0.25rem 0.625rem; border-radius: var(--hp-radius); border: 1px solid var(--hp-border); background: var(--hp-header); font-size: var(--hp-fs-xs); font-weight: var(--hp-fw-medium); color: var(--hp-text-secondary); }
.hp-product-detail__price-row { margin-top: 1.25rem; display: flex; align-items: flex-end; gap: var(--hp-space-3); }
.hp-product-detail__price-old { font-size: var(--hp-fs-base); color: var(--hp-text-muted); text-decoration: line-through; }
.hp-product-detail__price { font-size: 1.875rem; font-weight: var(--hp-fw-bold); color: var(--hp-text); }
.hp-product-detail__vat-note { margin-top: var(--hp-space-1); font-size: var(--hp-fs-xs); color: var(--hp-text-muted); }
.hp-product-detail__short { margin-top: 1.25rem; line-height: var(--hp-lh-body); color: var(--hp-text-secondary); }
.hp-product-detail__buy-row { margin-top: var(--hp-space-6); display: flex; flex-direction: column; gap: var(--hp-space-3); }
@media (min-width: 640px) { .hp-product-detail__buy-row { flex-direction: row; align-items: center; } }
.hp-product-detail__qty { display: inline-flex; height: 2.75rem; align-items: center; border-radius: var(--hp-radius); border: 1px solid var(--hp-border); background: var(--hp-card); }
.hp-product-detail__qty-btn { display: inline-flex; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; color: var(--hp-text); }
.hp-product-detail__qty-btn:hover { color: var(--hp-primary); }
.hp-product-detail__qty-input { width: 2.5rem; height: 2.75rem; text-align: center; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); font-variant-numeric: tabular-nums; border: 0; background: transparent; color: var(--hp-text); }
.hp-product-detail__qty-input:focus { outline: none; }
.hp-product-detail__cta { flex: 1; }
@media (min-width: 640px) { .hp-product-detail__cta { flex: none; } }

/* Attribute selectors — preserve JoomShopping structure inside .hp-attr wrappers */
.hp-attr-block { margin-top: var(--hp-space-4); }
.hp-attr-block__label { display: block; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); color: var(--hp-text); margin-bottom: 0.375rem; }
#comjshop select[name^="jshop_attr_id"], .hp-attr-block select { height: 2.75rem; width: 100%; border-radius: 0.375rem; border: 1px solid var(--hp-border); background: var(--hp-card); padding: 0 var(--hp-space-3); font-size: var(--hp-fs-sm); color: var(--hp-text); }
#comjshop select[name^="jshop_attr_id"]:focus, .hp-attr-block select:focus { border-color: var(--hp-primary); outline: none; box-shadow: 0 0 0 2px color-mix(in oklab, var(--hp-primary) 20%, transparent); }
.hp-attr-block input[type="radio"] + label { display: inline-flex; align-items: center; gap: var(--hp-space-2); padding: var(--hp-space-2) var(--hp-space-3); border: 1px solid var(--hp-border); border-radius: 0.375rem; margin-right: var(--hp-space-2); margin-bottom: var(--hp-space-2); cursor: pointer; font-size: var(--hp-fs-sm); }
.hp-attr-block input[type="radio"]:checked + label { border-color: var(--hp-primary); background: var(--hp-header); }

/* Cart line item (cart-view.tsx port) */
.hp-cart-line { display: flex; gap: var(--hp-space-4); padding: var(--hp-space-4); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); background: var(--hp-card); }
.hp-cart-line__image { position: relative; width: 6rem; height: 6rem; flex-shrink: 0; overflow: hidden; border-radius: 0.375rem; background: var(--hp-header); }
.hp-cart-line__image img { width: 100%; height: 100%; object-fit: contain; padding: var(--hp-space-2); }
.hp-cart-line__body { display: flex; min-width: 0; flex: 1; flex-direction: column; }
.hp-cart-line__eyebrow { font-size: var(--hp-fs-xs); color: var(--hp-text-muted); }
.hp-cart-line__title { display: block; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-semibold); color: var(--hp-text); text-wrap: pretty; }
.hp-cart-line__title:hover { color: var(--hp-primary); }
.hp-cart-line__compat { margin-top: 0.125rem; font-size: var(--hp-fs-xs); color: var(--hp-text-secondary); }
.hp-cart-line__remove { flex-shrink: 0; color: var(--hp-text-muted); transition: color 120ms ease; }
.hp-cart-line__remove:hover { color: var(--hp-error); }
.hp-cart-line__qty { display: inline-flex; height: 2.25rem; align-items: center; border-radius: 0.375rem; border: 1px solid var(--hp-border); }
.hp-cart-line__qty-btn { display: inline-flex; width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center; }
.hp-cart-line__qty input { width: 2rem; height: 2.25rem; text-align: center; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); border: 0; background: transparent; }
.hp-cart-line__total { text-align: right; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-semibold); color: var(--hp-text); }

/* Cart summary sidebar */
.hp-cart-summary { border-radius: var(--hp-radius-lg); border: 1px solid var(--hp-border); background: var(--hp-card); padding: 1.25rem; }
.hp-cart-summary__title { font-size: var(--hp-fs-base); font-weight: var(--hp-fw-semibold); color: var(--hp-text); }
.hp-cart-summary__row { display: flex; justify-content: space-between; font-size: var(--hp-fs-sm); }
.hp-cart-summary__row-label { color: var(--hp-text-secondary); }
.hp-cart-summary__row-value { font-weight: var(--hp-fw-medium); color: var(--hp-text); }
.hp-cart-summary__total { display: flex; align-items: baseline; justify-content: space-between; border-top: 1px solid var(--hp-border); padding-top: var(--hp-space-4); margin-top: var(--hp-space-4); }
.hp-cart-summary__total-label { font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); color: var(--hp-text); }
.hp-cart-summary__total-value { font-size: var(--hp-fs-xl); font-weight: var(--hp-fw-bold); color: var(--hp-text); }

/* Empty state (cart empty branch — Q9 result) */
.hp-empty-card { border-radius: var(--hp-radius-lg); border: 1px solid var(--hp-border); background: var(--hp-card); padding: var(--hp-space-12); text-align: center; }
.hp-empty-card__title { font-size: var(--hp-fs-lg); font-weight: var(--hp-fw-semibold); color: var(--hp-text); }
.hp-empty-card__body { margin: var(--hp-space-2) auto 0; max-width: 28rem; font-size: var(--hp-fs-sm); color: var(--hp-text-secondary); }

/* STAGE 227 (2026-07-20): fix vertical centering of .hp-empty-card on the
   com_jshopping search-noresult page. Root cause was a wrapper reset elsewhere
   in this file:
       .hp-main .mx-auto.max-w-7xl.py-8 > div:first-child { padding-top: 0 !important; }
   The jshopping search noresult template renders <div class="hp-empty-card mt-6">
   as the DIRECT first child of the .py-8 layout wrapper, so that reset kills
   padding-top:48px and the text jams against the top edge (visual gap.top≈1,
   gap.bot≈49). The com_finder search page was NOT affected because its H1 form
   sits before .hp-empty-card, so the reset targets the H1 wrapper instead.
   Two-part fix:
   (A) restore padding-top explicitly for .hp-empty-card when it lands as the
       first child — this beats the reset on class specificity even with
       !important (both have !important; ours has more classes).
   (B) apply flex-column centering to EVERY .hp-empty-card so heading + body
       always behave as one vertically-centered group, regardless of parent
       (this also covers com_finder, com_content/category, jshopping cart etc.). */
.hp-main .mx-auto.max-w-7xl.py-8 > .hp-empty-card:first-child {
	padding-top: var(--hp-space-12) !important;
}
.hp-empty-card {
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}

/* Checkout step indicator (checkout/menu.php port) */
.hp-stepper { display: flex; align-items: center; gap: var(--hp-space-2); overflow-x: auto; margin-bottom: var(--hp-space-8); padding-bottom: var(--hp-space-2); }
.hp-stepper__item { display: flex; align-items: center; gap: var(--hp-space-2); }
.hp-stepper__num { display: inline-flex; width: 1.75rem; height: 1.75rem; align-items: center; justify-content: center; border-radius: var(--hp-radius-full); font-size: var(--hp-fs-xs); font-weight: var(--hp-fw-semibold); background: var(--hp-nav); color: var(--hp-text-secondary); }
.hp-stepper__label { white-space: nowrap; font-size: var(--hp-fs-sm); color: var(--hp-text-secondary); }
.hp-stepper__connector { margin: 0 0.25rem; height: 1px; width: 1.5rem; background: var(--hp-border); }
@media (min-width: 640px) { .hp-stepper__connector { width: 2.5rem; } }
.hp-stepper__item--current .hp-stepper__num,
.hp-stepper__item--done .hp-stepper__num { background: var(--hp-primary); color: var(--hp-primary-foreground); }
.hp-stepper__item--current .hp-stepper__label,
.hp-stepper__item--done .hp-stepper__label { font-weight: var(--hp-fw-medium); color: var(--hp-text); }

/* Radio option row (delivery + payment method) */
.hp-radio-row { display: flex; cursor: pointer; align-items: center; gap: var(--hp-space-3); padding: var(--hp-space-4); border-radius: var(--hp-radius); border: 1px solid var(--hp-border); background: var(--hp-card); transition: border-color 120ms ease, background-color 120ms ease; }
.hp-radio-row:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); }
.hp-radio-row--selected, .hp-radio-row:has(input:checked) { border-color: var(--hp-primary); background: var(--hp-header); }
.hp-radio-row__custom { display: inline-flex; width: 1.25rem; height: 1.25rem; flex-shrink: 0; align-items: center; justify-content: center; border-radius: var(--hp-radius-full); border: 2px solid var(--hp-border); }
.hp-radio-row--selected .hp-radio-row__custom, .hp-radio-row:has(input:checked) .hp-radio-row__custom { border-color: var(--hp-primary); }
.hp-radio-row__dot { display: none; width: 0.625rem; height: 0.625rem; background: var(--hp-primary); border-radius: var(--hp-radius-full); }
.hp-radio-row--selected .hp-radio-row__dot, .hp-radio-row:has(input:checked) .hp-radio-row__dot { display: block; }
.hp-radio-row__label { flex: 1; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); color: var(--hp-text); }
.hp-radio-row__detail { display: block; font-size: var(--hp-fs-xs); color: var(--hp-text-secondary); }
.hp-radio-row__price { font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); color: var(--hp-text); }

/* Form field (checkout, login, contact) */
.hp-field { display: block; }
.hp-field__label { display: block; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-medium); color: var(--hp-text); margin-bottom: 0.375rem; }
.hp-field__required { color: var(--hp-primary); }
.hp-field__input { display: block; width: 100%; height: 2.75rem; border-radius: 0.375rem; border: 1px solid var(--hp-border); background: var(--hp-card); padding: 0 var(--hp-space-3); font-size: var(--hp-fs-sm); color: var(--hp-text); }
.hp-field__input:focus { border-color: var(--hp-primary); outline: none; box-shadow: 0 0 0 2px color-mix(in oklab, var(--hp-primary) 20%, transparent); }
.hp-field__input::placeholder { color: var(--hp-text-muted); }

/* JoomShopping default output — soft-normalize for surfaces we haven't overridden yet (manufacturer/vendor/wishlist per D1) */
.jshop, .jshop_list_product, #comjshop { color: var(--hp-text); }
.jshop table.cart, .jshop table.jshop_subtotal { width: 100%; border-collapse: collapse; }
.jshop table.cart th, .jshop table.cart td { padding: var(--hp-space-3) var(--hp-space-4); border-bottom: 1px solid var(--hp-border); text-align: left; }
.jshop_pagination { margin-top: var(--hp-space-6); display: flex; justify-content: center; gap: var(--hp-space-2); }
.jshop_pagination .pagination a, .jshop_pagination .pagination span { display: inline-flex; align-items: center; justify-content: center; min-width: 2.25rem; height: 2.25rem; padding: 0 var(--hp-space-2); border: 1px solid var(--hp-border); border-radius: 0.375rem; font-size: var(--hp-fs-sm); color: var(--hp-text); background: var(--hp-card); }
.jshop_pagination .pagination .active a, .jshop_pagination .pagination .active span { background: var(--hp-primary); border-color: var(--hp-primary); color: var(--hp-primary-foreground); }

/* ===== Hide JoomShopping vendor/copyright injection ===== */
/* The <span id="mxcpr"> element contains "Copyright MAXXmarketing GmbH" + "JoomShopping Download & Support" — added by the com_jshopping component itself, not by any override. Hidplanet is licensed and does not need this vendor attribution in the frontend chrome. */
#mxcpr, .jshop-copyright, .jshop-poweredby { display: none !important; }

/* ===== Header cart badge — real count via JSFactory::getCart(), no module HTML injection ===== */
.hp-cart-badge {
	display: inline-flex; min-width: 1.25rem; height: 1.25rem;
	padding: 0 0.375rem; align-items: center; justify-content: center;
	border-radius: 9999px; background: var(--hp-primary); color: var(--hp-primary-foreground);
	font-size: 0.6875rem; font-weight: var(--hp-fw-semibold);
}
/* Safety: if the JoomShopping cart module ever ends up in the DOM anyway, hide it */
.hp-cart-link #jshop_module_cart { display: none !important; }

/* =========================================================================
 * PRODUCT GRID — DEFENSIVE FULL-WIDTH RESPONSIVE OVERRIDE
 *
 * Owner screenshot showed: cards extremely narrow, only small left column
 * used, huge empty area on right, titles/buttons clipped. This override forces
 * a truly responsive grid regardless of any conflicting rule from
 * com_jshopping/css/default.css, plugin stylesheets, or earlier utility
 * classes with same specificity.
 *
 * Behavior:
 *   auto-fill minmax(240px, 1fr) → grid fits as many ≥240px cards as parent width allows.
 *     - ~1440px viewport (with 80rem container + 16px padding): 4 cards per row
 *     - ~1024px: 4 cards
 *     - ~768px: 3 cards
 *     - ~480px: 2 cards
 *     - <380px: 1 card
 *   width:100%; max-width:100% — kills any parent-imposed narrower box.
 *   !important on grid-template-columns to beat any later cascade override.
 * ========================================================================= */
.hp-home-featured-grid,
.hp-product-grid,
#comjshop_list_product,
#comjshop_list_product > .grid,
.hp-category-products .grid,
.jshop_list_product > .grid {
	display: grid !important;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;
	gap: 1rem !important;
	width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box;
	float: none !important;
}

/* Mobile: allow smaller cards to prevent 1-card horizontal underuse on narrow phones */
@media (max-width: 480px) {
	.hp-home-featured-grid,
	.hp-product-grid,
	#comjshop_list_product,
	#comjshop_list_product > .grid,
	.hp-category-products .grid,
	.jshop_list_product > .grid {
		grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)) !important;
		gap: 0.5rem !important;
	}
}

/* Individual card — full cell, clamp text, tight footer */
.hp-home-featured-grid .hp-product-card,
.hp-product-grid .hp-product-card,
.hp-category-products .hp-product-card { width: 100%; box-sizing: border-box; min-height: 100%; min-width: 0; }
.hp-product-card__body { min-height: 0; padding: 0.875rem; }
.hp-product-card__title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.4em; }
.hp-product-card__footer { flex-wrap: wrap; gap: 0.5rem; align-items: center; justify-content: space-between; }
.hp-product-card__footer .hp-btn--sm { white-space: nowrap; padding: 0 0.75rem; height: 2rem; flex-shrink: 0; }
.hp-product-card__price { white-space: nowrap; }

/* Kill any JoomShopping Bootstrap-2 row-fluid / sblock inheritance that could
 * squash cards inside my template's home/category regions. Category page
 * uses my override so this is defensive only. */
.hp-app section .row-fluid,
.hp-app section .row-fluid0 { display: contents !important; margin: 0 !important; }
.hp-app section [class*="sblock"] { width: auto !important; float: none !important; padding: 0 !important; }

/* No horizontal overflow anywhere */
html, body { overflow-x: hidden; }
.hp-app { min-width: 0; overflow-x: hidden; }

/* Homepage container width safety — ensures max-w-7xl actually reaches 80rem or 100% */
.hp-app section > .mx-auto.max-w-7xl,
.hp-app main > .mx-auto.max-w-7xl {
	width: 100%;
	max-width: min(80rem, 100%);
	margin-left: auto;
	margin-right: auto;
	box-sizing: border-box;
}

/* =========================================================================
 * PHASE 9 — CATALOGUE POLISH
 * Homepage category tiles, product card refinement, useful-materials cards,
 * category-page "read more" section. No new colour tokens, no marketing style.
 * ========================================================================= */

/* Homepage category tiles — replaces the ДИ/ИН/КЛ initial placeholders with a
 * finished catalogue-style card: line icon on a subtle bg, single-line label. */
.hp-cat-tile { display: flex; flex-direction: column; align-items: center; gap: var(--hp-space-3); padding: var(--hp-space-5, 1.25rem) var(--hp-space-3); text-align: center; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); text-decoration: none; transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; min-height: 8rem; }
.hp-cat-tile:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); box-shadow: 0 6px 18px -10px rgba(45, 36, 22, 0.20); transform: translateY(-1px); }
.hp-cat-tile__icon { display: flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: var(--hp-radius); background: var(--hp-header); color: var(--hp-primary); flex-shrink: 0; }
.hp-cat-tile__icon svg { width: 1.5rem; height: 1.5rem; }
.hp-cat-tile__label { font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-semibold); line-height: 1.25; color: var(--hp-text); margin: 0; }
.hp-cat-tile:hover .hp-cat-tile__label { color: var(--hp-primary); }
@media (max-width: 480px) {
	.hp-cat-tile { min-height: 7rem; padding: var(--hp-space-4) var(--hp-space-2); gap: var(--hp-space-2); }
	.hp-cat-tile__icon { width: 2.25rem; height: 2.25rem; }
	.hp-cat-tile__icon svg { width: 1.25rem; height: 1.25rem; }
	.hp-cat-tile__label { font-size: var(--hp-fs-xs); }
}

/* Homepage featured product cards — tighter alignment, consistent card height */
.hp-home-featured-grid { align-items: stretch; }
.hp-home-featured-grid .hp-product-card { display: flex; flex-direction: column; height: 100%; }
.hp-home-featured-grid .hp-product-card__image-wrap { aspect-ratio: 4 / 3; background: var(--hp-header); }
.hp-home-featured-grid .hp-product-card__image { padding: var(--hp-space-4); }
.hp-home-featured-grid .hp-product-card__body { padding: 0.875rem 0.875rem 1rem; }
.hp-home-featured-grid .hp-product-card__title { min-height: 2.6em; }
.hp-home-featured-grid .hp-product-card__stock { margin-top: var(--hp-space-2); }
.hp-home-featured-grid .hp-product-card__footer { padding-top: var(--hp-space-3); border-top: 1px solid var(--hp-border); align-items: center; }
.hp-home-featured-grid .hp-product-card__price { font-size: var(--hp-fs-base); }
@media (max-width: 480px) {
	.hp-home-featured-grid .hp-product-card__body { padding: 0.75rem; }
	.hp-home-featured-grid .hp-product-card__title { font-size: 0.8125rem; min-height: 2.4em; }
	.hp-home-featured-grid .hp-product-card__price { font-size: 0.875rem; }
	.hp-home-featured-grid .hp-product-card__footer .hp-btn--sm { padding: 0 0.5rem; font-size: 0.6875rem; height: 1.75rem; }
	.hp-home-featured-grid .hp-product-card__stock { margin-top: var(--hp-space-1); }
	.hp-home-featured-grid .hp-stock-badge { font-size: 0.6875rem; padding: 0.125rem 0.375rem; }
}

/* Homepage useful-materials cards — calm technical link tiles, not banners */
#hp-home-info a.group { padding: var(--hp-space-5, 1.25rem) var(--hp-space-4); background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; min-height: 5.5rem; }
#hp-home-info a.group:hover { border-color: color-mix(in oklab, var(--hp-primary) 35%, transparent); box-shadow: 0 4px 14px -8px rgba(45, 36, 22, 0.16); }
#hp-home-info a.group svg { color: var(--hp-primary); background: var(--hp-header); padding: 0.375rem; width: 2rem; height: 2rem; border-radius: var(--hp-radius); box-sizing: border-box; margin-top: 0; flex-shrink: 0; }
#hp-home-info a.group h3 { font-size: 0.9375rem; line-height: 1.35; letter-spacing: -0.01em; }
#hp-home-info a.group p { color: var(--hp-text-muted); font-size: 0.75rem; }

/* Homepage section rhythm — a hair tighter than py-12 so the visual centre of
 * gravity sits earlier and desktop hero doesn't feel empty. Keep mobile compact. */
#hp-home-categories { padding-top: 3rem; padding-bottom: 3rem; }
#hp-home-info { padding-top: 3rem; padding-bottom: 3.5rem; }
@media (min-width: 1024px) {
	#hp-home-categories { padding-top: 3.5rem; padding-bottom: 3.5rem; }
	#hp-home-info { padding-top: 3.5rem; padding-bottom: 4rem; }
}

/* Category page "Подробнее" section — houses the moved-down long description.
 * Compact info box (border + subtle bg + narrower max-width for readability). */
.hp-cat-longdesc { margin-top: 3rem; padding: 1.5rem var(--hp-space-6); background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); }
.hp-cat-longdesc__title { font-size: var(--hp-fs-lg); font-weight: var(--hp-fw-semibold); color: var(--hp-text); margin: 0 0 var(--hp-space-3); letter-spacing: -0.005em; }
.hp-cat-longdesc__body { max-width: 52rem; color: var(--hp-text-secondary); font-size: 0.9375rem; line-height: 1.65; }
.hp-cat-longdesc__body p { margin: 0 0 var(--hp-space-3); }
.hp-cat-longdesc__body p:last-child { margin-bottom: 0; }
.hp-cat-longdesc__body img { max-width: 100%; height: auto; border-radius: var(--hp-radius); border: 1px solid var(--hp-border); margin: 0.5rem 0; }
@media (min-width: 1024px) { .hp-cat-longdesc { padding: 2rem 2.25rem; } }

/* Category page short intro — displayed only for categories that have a
 * hp_intro_key entry in the override. Tight, catalogue tone. */
.hp-cat-intro { margin: 0 0 1.5rem; padding: 1rem 1.25rem; background: var(--hp-header); border-left: 3px solid var(--hp-primary); border-radius: 0 var(--hp-radius) var(--hp-radius) 0; color: var(--hp-text-secondary); font-size: 0.9375rem; line-height: 1.55; max-width: 52rem; }
.hp-cat-intro ul { list-style: disc; padding-left: 1.15rem; margin: 0; }
.hp-cat-intro ul li { margin: 0 0 0.35rem; }
.hp-cat-intro ul li:last-child { margin-bottom: 0; }

/* =========================================================================
 * PHASE 10 — DIAGNOSTIC-FIRST HOMEPAGE FUNNEL
 * BMW → Opel → VAG → Universal direction cards. Neutral catalogue tone.
 * ========================================================================= */
.hp-diag-grid { align-items: stretch; }
.hp-diag-card { display: flex; flex-direction: column; gap: 0.5rem; height: 100%; padding: 1.25rem 1.25rem 1rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; }
.hp-diag-card:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); box-shadow: 0 8px 22px -14px rgba(45,36,22,0.22); transform: translateY(-1px); }
.hp-diag-card--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, transparent); background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)) 0%, var(--hp-card) 42%); }
.hp-diag-card__head { display: flex; align-items: center; justify-content: space-between; }
.hp-diag-card__icon { display: flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: var(--hp-radius); background: var(--hp-header); color: var(--hp-primary); }
.hp-diag-card__icon svg { width: 1.35rem; height: 1.35rem; }
.hp-diag-card__rank { font-size: 0.75rem; font-weight: var(--hp-fw-semibold); letter-spacing: 0.06em; color: var(--hp-text-muted); font-variant-numeric: tabular-nums; }
.hp-diag-card__title { margin: 0.25rem 0 0; font-size: var(--hp-fs-base); font-weight: var(--hp-fw-semibold); line-height: 1.3; color: var(--hp-text); letter-spacing: -0.005em; }
.hp-diag-card__body { margin: 0; font-size: 0.8125rem; line-height: 1.5; color: var(--hp-text-secondary); }
.hp-diag-card__actions { margin-top: auto; padding-top: 0.75rem; display: flex; flex-direction: column; align-items: flex-start; gap: 0.5rem; border-top: 1px solid var(--hp-border); }
.hp-diag-card__cta { display: inline-flex; align-items: center; gap: 0.5rem; font-size: var(--hp-fs-sm); font-weight: var(--hp-fw-semibold); color: var(--hp-primary); background: none; padding: 0.375rem 0; }
.hp-diag-card__cta svg { width: 1rem; height: 1rem; transition: transform 150ms ease; }
.hp-diag-card__cta:hover { color: var(--hp-primary-hover); }
.hp-diag-card:hover .hp-diag-card__cta svg { transform: translateX(2px); }
.hp-diag-card__guide { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: var(--hp-text-muted); }
.hp-diag-card__guide svg { width: 0.9375rem; height: 0.9375rem; }
.hp-diag-card__guide:hover { color: var(--hp-primary); }
@media (max-width: 640px) {
	.hp-diag-card { padding: 1rem; }
	.hp-diag-card__title { font-size: 0.9375rem; }
	.hp-diag-card__body { font-size: 0.75rem; }
}

/* Category hero — the DB image is usually 800×600 (~0.75 aspect). Cap height
 * so the actual catalogue (subcats + products) becomes visible well within
 * the first fold on 1440. The image keeps its intrinsic ratio; we just crop
 * the frame. */
.hp-cat-hero { max-width: 40rem; max-height: 18rem; }
.hp-cat-hero img { display: block; width: 100%; height: 100%; max-height: 18rem; object-fit: cover; object-position: center; }
@media (max-width: 640px) {
	.hp-cat-hero { max-height: 12rem; }
	.hp-cat-hero img { max-height: 12rem; }
}

/* =========================================================================
 * PHASE 11 — BMW DIAGNOSTIC PRODUCT UI BLOCKS
 * Rendered by html/com_jshopping/product/product_default.php between the
 * gallery+info split and the description tabs when the product is a BMW
 * diagnostic (category 10 + BMW/ENET/D-CAN/K+DCAN/ICOM/vLinker/BimmerCode
 * in the name). Non-BMW products render exactly as before.
 * ========================================================================= */
.hp-bmw-blocks .hp-bmw-block { background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); padding: 1.25rem 1.25rem 1.15rem; }
.hp-bmw-blocks .hp-bmw-block__head { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.85rem; }
.hp-bmw-blocks .hp-bmw-block__head h3 { margin: 0; font-size: 0.9375rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); letter-spacing: -0.005em; }
.hp-bmw-blocks .hp-bmw-block__head-icon { width: 1.15rem; height: 1.15rem; color: var(--hp-primary); flex-shrink: 0; }

/* Purpose — chip list */
.hp-bmw-chip-list { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; padding: 0; margin: 0; }
.hp-bmw-chip-list li { display: inline-flex; align-items: center; padding: 0.35rem 0.75rem; background: var(--hp-header); border: 1px solid var(--hp-border); border-radius: var(--hp-radius-full); font-size: 0.8125rem; color: var(--hp-text-secondary); line-height: 1.2; }

/* Compatibility check — checkmark list */
.hp-bmw-check-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.55rem; }
.hp-bmw-check-list li { display: flex; align-items: flex-start; gap: 0.6rem; font-size: 0.8125rem; color: var(--hp-text-secondary); line-height: 1.45; }
.hp-bmw-check-list__dot { display: inline-block; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--hp-primary); flex-shrink: 0; margin-top: 0.42rem; }

/* Materials — 3-up link cards */
.hp-bmw-material-card { display: flex; align-items: flex-start; gap: 0.85rem; padding: 0.9rem 1rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; }
.hp-bmw-material-card:hover { border-color: color-mix(in oklab, var(--hp-primary) 35%, transparent); box-shadow: 0 4px 14px -8px rgba(45,36,22,0.18); transform: translateY(-1px); }
.hp-bmw-material-card__icon { display: flex; align-items: center; justify-content: center; width: 2.1rem; height: 2.1rem; border-radius: var(--hp-radius); background: var(--hp-header); color: var(--hp-primary); flex-shrink: 0; }
.hp-bmw-material-card__icon svg { width: 1.15rem; height: 1.15rem; }
.hp-bmw-material-card__body { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.hp-bmw-material-card__title { font-size: 0.875rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); line-height: 1.3; }
.hp-bmw-material-card__desc { font-size: 0.75rem; color: var(--hp-text-muted); line-height: 1.35; }
.hp-bmw-material-card__cta { margin-top: 0.35rem; display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.75rem; font-weight: var(--hp-fw-semibold); color: var(--hp-primary); }
.hp-bmw-material-card__cta svg { width: 0.85rem; height: 0.85rem; transition: transform 150ms ease; }
.hp-bmw-material-card:hover .hp-bmw-material-card__cta svg { transform: translateX(2px); }

/* Important — subtle amber-hint tone (no red alarm) */
.hp-bmw-block--important { background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 25%, var(--hp-border)); }
.hp-bmw-important__body { margin: 0; font-size: 0.8125rem; color: var(--hp-text-secondary); line-height: 1.55; max-width: 60rem; }

/* Related BMW diagnostic products strip */
.hp-bmw-related__title { margin: 0; font-size: 1.35rem; font-weight: var(--hp-fw-bold); color: var(--hp-text); letter-spacing: -0.01em; }
.hp-bmw-related__subtitle { margin: 0.35rem 0 0; font-size: 0.875rem; color: var(--hp-text-muted); }
.hp-bmw-related-card { display: flex; flex-direction: column; overflow: hidden; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; min-width: 0; }
.hp-bmw-related-card:hover { border-color: color-mix(in oklab, var(--hp-primary) 35%, transparent); box-shadow: 0 6px 18px -10px rgba(45,36,22,0.20); transform: translateY(-1px); }
.hp-bmw-related-card__image-wrap { aspect-ratio: 4 / 3; background: var(--hp-header); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.hp-bmw-related-card__image { max-width: 100%; max-height: 100%; width: auto; height: auto; padding: 0.75rem; object-fit: contain; }
.hp-bmw-related-card__body { display: flex; flex-direction: column; gap: 0.35rem; padding: 0.75rem 0.85rem 0.9rem; min-width: 0; }
.hp-bmw-related-card__name { font-size: 0.8125rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.hp-bmw-related-card__price { font-size: 0.875rem; font-weight: var(--hp-fw-semibold); color: var(--hp-primary); }

@media (max-width: 480px) {
	.hp-bmw-blocks .hp-bmw-block { padding: 1rem 1rem 0.95rem; }
	.hp-bmw-material-card { padding: 0.75rem 0.85rem; }
	.hp-bmw-material-card__title { font-size: 0.8125rem; }
	.hp-bmw-material-card__desc { font-size: 0.7rem; }
	.hp-bmw-related__title { font-size: 1.15rem; }
}

/* Description-tab tables: legacy product descriptions embed <table> markup with
 * fixed column widths that push past 390 px on mobile. Wrap them in a
 * horizontal scroll shell so the page itself never overflows. */
[data-tab-panel="description"] table,
.hp-cat-longdesc__body table,
.jshop table {
	max-width: 100%;
	width: 100%;
	display: block;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border-collapse: collapse;
}
[data-tab-panel="description"] img,
[data-tab-panel="description"] iframe,
.hp-cat-longdesc__body img,
.hp-cat-longdesc__body iframe { max-width: 100%; height: auto; }

/* =========================================================================
 * PHASE 12 — OPEL / OP-COM UI BLOCK ADDITIONS
 * Version / kit clarity block (2016 vs 2021 pill cards) + inline material
 * note. Uses the same tokens as BMW blocks; no new colours introduced.
 * ========================================================================= */
.hp-opel-version__body { margin: 0 0 0.85rem; font-size: 0.8125rem; color: var(--hp-text-secondary); line-height: 1.55; max-width: 60rem; }
.hp-opel-version__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }
@media (max-width: 480px) { .hp-opel-version__grid { grid-template-columns: 1fr; } }
.hp-opel-version-card { display: flex; flex-direction: column; gap: 0.35rem; padding: 0.85rem 1rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); text-decoration: none; transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; }
.hp-opel-version-card:not(.hp-opel-version-card--current):hover { border-color: color-mix(in oklab, var(--hp-primary) 35%, transparent); box-shadow: 0 4px 14px -8px rgba(45,36,22,0.16); transform: translateY(-1px); }
.hp-opel-version-card__head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.hp-opel-version-card__label { font-size: 0.9375rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); letter-spacing: -0.005em; }
.hp-opel-version-card__sub { font-size: 0.75rem; color: var(--hp-text-muted); line-height: 1.4; }
.hp-opel-version-card__head svg { width: 1rem; height: 1rem; color: var(--hp-primary); flex-shrink: 0; transition: transform 150ms ease; }
.hp-opel-version-card:hover .hp-opel-version-card__head svg { transform: translateX(2px); }
.hp-opel-version-card--current { background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); cursor: default; }
.hp-opel-version-card__pill { display: inline-flex; align-items: center; padding: 0.15rem 0.5rem; background: var(--hp-primary); color: var(--hp-primary-foreground); border-radius: var(--hp-radius-full); font-size: 0.6875rem; font-weight: var(--hp-fw-semibold); letter-spacing: 0.02em; }

/* Inline material note card — same shell as .hp-bmw-material-card, no CTA link. */
.hp-opel-inline-note { cursor: default; }
.hp-opel-inline-note:hover { border-color: var(--hp-border); box-shadow: none; transform: none; }

/* =========================================================================
 * PHASE 12 — HERO ABOVE-THE-FOLD DIAGNOSTIC MINI-PANEL
 * Replaces the previous empty monitor-icon placeholder on the right side of
 * the hero with 4 clickable mini-cards in BMW → Opel → VAG → Universal
 * commercial order. Uses same tokens as .hp-diag-card / .hp-cat-tile.
 * ========================================================================= */
.hp-hero-panel { background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius-lg, 12px); padding: 1.25rem 1.15rem; box-shadow: 0 4px 24px -16px rgba(45,36,22,0.10); }
.hp-hero-panel__head { margin-bottom: 0.85rem; }
.hp-hero-panel__eyebrow { display: inline-block; font-size: 0.6875rem; font-weight: var(--hp-fw-semibold); letter-spacing: 0.08em; text-transform: uppercase; color: var(--hp-primary); }
.hp-hero-panel__title { margin: 0.2rem 0 0; font-size: 0.9375rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); letter-spacing: -0.005em; }
.hp-hero-panel__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6rem; }
.hp-hero-mini { display: flex; flex-direction: column; gap: 0.3rem; padding: 0.75rem 0.85rem 0.7rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); text-decoration: none; transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; min-width: 0; }
.hp-hero-mini:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); box-shadow: 0 6px 18px -12px rgba(45,36,22,0.22); transform: translateY(-1px); }
.hp-hero-mini--primary { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)) 0%, var(--hp-card) 60%); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); }
.hp-hero-mini__head { display: flex; align-items: center; justify-content: space-between; gap: 0.35rem; }
.hp-hero-mini__icon { display: inline-flex; align-items: center; justify-content: center; width: 1.85rem; height: 1.85rem; border-radius: var(--hp-radius); background: var(--hp-header); color: var(--hp-primary); flex-shrink: 0; }
.hp-hero-mini__icon svg { width: 1.1rem; height: 1.1rem; }
.hp-hero-mini__rank { font-size: 0.6875rem; font-weight: var(--hp-fw-semibold); letter-spacing: 0.06em; color: var(--hp-text-muted); font-variant-numeric: tabular-nums; }
.hp-hero-mini__title { font-size: 0.9375rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); line-height: 1.2; letter-spacing: -0.005em; margin-top: 0.15rem; }
.hp-hero-mini__sub { font-size: 0.6875rem; color: var(--hp-text-muted); line-height: 1.4; }
.hp-hero-mini__cta { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 0.6875rem; font-weight: var(--hp-fw-semibold); color: var(--hp-primary); margin-top: 0.2rem; }
.hp-hero-mini__cta svg { width: 0.8rem; height: 0.8rem; transition: transform 150ms ease; }
.hp-hero-mini:hover .hp-hero-mini__cta svg { transform: translateX(2px); }
@media (max-width: 640px) {
	.hp-hero-panel { padding: 1rem 0.9rem; }
	.hp-hero-panel__grid { gap: 0.55rem; }
	.hp-hero-mini { padding: 0.65rem 0.7rem 0.6rem; }
	.hp-hero-mini__icon { width: 1.65rem; height: 1.65rem; }
	.hp-hero-mini__icon svg { width: 1rem; height: 1rem; }
	.hp-hero-mini__title { font-size: 0.875rem; }
	.hp-hero-mini__sub { font-size: 0.625rem; }
}

/* =========================================================================
 * PHASE 13 — DESCRIPTION-TAB TYPOGRAPHY POLISH
 * The legacy product description on OP-COM (and similar older products) is a
 * long wall of RU prose with embedded <p>/<img>/<table>. It was untouched
 * by earlier phases but reads dense at default line-heights. This block adds
 * calmer spacing/rhythm ONLY inside the description tab; the JS/DOM anchors
 * around it (data-tab-panel, add-to-cart form, product image, price) are
 * not affected.
 * ========================================================================= */
[data-tab-panel="description"] { font-size: 0.9375rem; }
[data-tab-panel="description"] > div { max-width: 62rem; }
[data-tab-panel="description"] p { line-height: 1.65; margin: 0 0 0.85rem; }
[data-tab-panel="description"] p:last-child { margin-bottom: 0; }
[data-tab-panel="description"] strong { color: var(--hp-text); }
[data-tab-panel="description"] h2, [data-tab-panel="description"] h3, [data-tab-panel="description"] h4 { margin-top: 1.5rem; margin-bottom: 0.5rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); letter-spacing: -0.005em; }
[data-tab-panel="description"] h2 { font-size: 1.15rem; }
[data-tab-panel="description"] h3 { font-size: 1rem; }
[data-tab-panel="description"] h4 { font-size: 0.9375rem; }
[data-tab-panel="description"] ul, [data-tab-panel="description"] ol { padding-left: 1.25rem; margin: 0 0 0.85rem; }
[data-tab-panel="description"] li { line-height: 1.55; margin-bottom: 0.3rem; }
[data-tab-panel="description"] img { display: block; margin: 0.85rem auto; border-radius: var(--hp-radius); border: 1px solid var(--hp-border); max-height: 26rem; object-fit: contain; }
[data-tab-panel="description"] table { margin: 0.85rem 0; font-size: 0.8125rem; border-collapse: collapse; }
[data-tab-panel="description"] table th, [data-tab-panel="description"] table td { padding: 0.4rem 0.6rem; border: 1px solid var(--hp-border); }
[data-tab-panel="description"] table th { background: var(--hp-header); font-weight: var(--hp-fw-semibold); }
@media (max-width: 640px) {
	[data-tab-panel="description"] { font-size: 0.875rem; }
	[data-tab-panel="description"] p { line-height: 1.6; margin-bottom: 0.75rem; }
	[data-tab-panel="description"] img { max-height: 18rem; }
}

/* =========================================================================
 * PHASE 14 — VAG DIAGNOSTIC UI BLOCK ADDITIONS
 * Tool-type chip row (VCDS / ODIS / VAG-CAN / KKL) highlighting the current
 * tool. Reuses the BMW block shell for the rest of the layout.
 * ========================================================================= */
.hp-vag-tooltype__body { margin: 0 0 0.85rem; font-size: 0.8125rem; color: var(--hp-text-secondary); line-height: 1.55; max-width: 60rem; }
.hp-vag-tooltype__chips { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.hp-vag-tt-chip { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.85rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius-full); font-size: 0.8125rem; font-weight: var(--hp-fw-medium); color: var(--hp-text-secondary); line-height: 1.2; }
.hp-vag-tt-chip--current { background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); color: var(--hp-text); }
.hp-vag-tt-chip__pill { display: inline-flex; align-items: center; padding: 0.1rem 0.45rem; background: var(--hp-primary); color: var(--hp-primary-foreground); border-radius: var(--hp-radius-full); font-size: 0.625rem; font-weight: var(--hp-fw-semibold); letter-spacing: 0.02em; }

/* =========================================================================
 * PHASE 17 — DIAGNOSTIC HUB (only rendered on /ru/diagnostika, category 10)
 * 4 grouped anchor sections (BMW / Opel / VAG / Universal) above the
 * ordinary product grid. Existing products + existing article URLs only.
 * ========================================================================= */
.hp-diag-hub { margin: 0 0 3rem; }
.hp-diag-hub__head { margin: 0 0 1.5rem; }
.hp-diag-hub__title { margin: 0; font-size: 1.35rem; font-weight: var(--hp-fw-bold); color: var(--hp-text); letter-spacing: -0.01em; }
.hp-diag-hub__body { margin: 0.35rem 0 0; font-size: 0.9375rem; color: var(--hp-text-muted); max-width: 52rem; }

/* Phase 17B: stronger visual separation so BMW chips can't be misread as
 * belonging to the next (Opel) group. Wider bottom gap, more inner bottom
 * padding for the material chip row to breathe, and a gentle drop shadow so
 * each group reads as one self-contained card. */
.hp-diag-hub__group { margin: 1rem 0 2.5rem; padding: 1.25rem 1.25rem 1.5rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); box-shadow: 0 2px 12px -8px rgba(45, 36, 22, 0.14); /* scroll-margin so sticky header doesn't cover the group title */ scroll-margin-top: 6rem; }
.hp-diag-hub__group:last-of-type { margin-bottom: 1.5rem; }
.hp-diag-hub__group--accent { border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)) 0%, var(--hp-card) 22%); }
.hp-diag-hub__group-head { display: flex; align-items: center; gap: 0.85rem; margin: 0 0 1rem; }
.hp-diag-hub__group-icon { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: var(--hp-radius); background: var(--hp-header); color: var(--hp-primary); flex-shrink: 0; }
.hp-diag-hub__group-icon svg { width: 1.4rem; height: 1.4rem; }
.hp-diag-hub__group-title { margin: 0; font-size: 1.05rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); letter-spacing: -0.005em; }
.hp-diag-hub__group-sub { margin: 0.15rem 0 0; font-size: 0.8125rem; color: var(--hp-text-muted); }

.hp-diag-hub__products { align-items: stretch; }
.hp-diag-hub__product { display: flex; flex-direction: column; overflow: hidden; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); transition: border-color 150ms ease, box-shadow 200ms ease, transform 150ms ease; min-width: 0; text-decoration: none; }
.hp-diag-hub__product:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); box-shadow: 0 6px 18px -10px rgba(45,36,22,0.22); transform: translateY(-1px); }
.hp-diag-hub__product-image-wrap { aspect-ratio: 4 / 3; background: var(--hp-header); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.hp-diag-hub__product-image { max-width: 100%; max-height: 100%; width: auto; height: auto; padding: 0.65rem; object-fit: contain; }
.hp-diag-hub__product-body { display: flex; flex: 1; flex-direction: column; gap: 0.25rem; padding: 0.6rem 0.75rem 0.7rem; min-width: 0; }
.hp-diag-hub__product-name { font-size: 0.75rem; font-weight: var(--hp-fw-semibold); color: var(--hp-text); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2em; }
.hp-diag-hub__product-meta { margin-top: auto; display: flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; flex-wrap: wrap; }
.hp-diag-hub__product-price { font-weight: var(--hp-fw-semibold); color: var(--hp-primary); }
.hp-diag-hub__product-stock { display: inline-flex; align-items: center; padding: 0.1rem 0.4rem; background: color-mix(in oklab, var(--hp-success) 12%, transparent); color: var(--hp-success); border-radius: var(--hp-radius-full); font-size: 0.625rem; font-weight: var(--hp-fw-medium); }

.hp-diag-hub__materials { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-top: 1.15rem; padding-top: 1rem; border-top: 1px dashed var(--hp-border); font-size: 0.75rem; color: var(--hp-text-muted); }
.hp-diag-hub__material-chip { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.3rem 0.7rem; background: var(--hp-header); border: 1px solid var(--hp-border); border-radius: var(--hp-radius-full); font-size: 0.75rem; color: var(--hp-text-secondary); text-decoration: none; transition: border-color 150ms ease, color 150ms ease; }
.hp-diag-hub__material-chip:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); color: var(--hp-primary); }
.hp-diag-hub__material-chip svg { width: 0.85rem; height: 0.85rem; color: var(--hp-primary); flex-shrink: 0; }

.hp-diag-hub__browse { margin: 1.25rem 0 2rem; text-align: center; }
.hp-diag-hub__browse-link { display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.55rem 1.1rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: var(--hp-radius); font-size: 0.875rem; font-weight: var(--hp-fw-medium); color: var(--hp-text-secondary); text-decoration: none; transition: border-color 150ms ease, color 150ms ease; }
.hp-diag-hub__browse-link:hover { border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent); color: var(--hp-primary); }
.hp-diag-hub__browse-link svg { width: 1rem; height: 1rem; }

@media (max-width: 480px) {
	.hp-diag-hub__group { padding: 1rem 1rem 1.2rem; margin-bottom: 2rem; }
	.hp-diag-hub__group-icon { width: 2.25rem; height: 2.25rem; }
	.hp-diag-hub__group-icon svg { width: 1.15rem; height: 1.15rem; }
	.hp-diag-hub__group-title { font-size: 0.95rem; }
	.hp-diag-hub__group-sub { font-size: 0.75rem; }
	.hp-diag-hub__product-name { font-size: 0.7rem; }
	.hp-diag-hub__materials { font-size: 0.7rem; }
	.hp-diag-hub__material-chip { font-size: 0.7rem; padding: 0.25rem 0.55rem; }
}

/* ==========================================================================
 * Phase 22 — Photo well + section/subcat hub polish
 *
 * Purpose: real product photos (mostly white studio backgrounds) need a
 * calm frame that sits well on the warm beige site background. We do NOT
 * touch the source image — we frame it in a neutral card, keep it centred
 * with object-fit:contain, and apply a light border + soft shadow.
 *
 * Blend/multiply is INTENTIONALLY NOT used: tested on Xenon lamp (bright
 * glass), silver/chrome key shell, black BMW grille, colourful diagnostic
 * dongles — blend/multiply darkens transparent-ish white halos to grey and
 * kills detail on the diagnostic UI (screens/LEDs). Photo well approach
 * chosen instead — safe for every product family.
 * ========================================================================== */

.hp-photo-well {
	background: #ffffff;
	border: 1px solid #eae4d6;
	border-radius: 12px;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 6px 20px -12px rgba(112, 88, 45, 0.15);
	aspect-ratio: 4 / 3;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 8px;
}

.hp-photo-well img,
.hp-photo-well .jshop_img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
	display: block;
}

.hp-section-hub__grid,
.hp-subcat-hub__grid { row-gap: 1rem; }

.hp-section-hub__tile,
.hp-subcat-hub__tile {
	display: flex;
	flex-direction: column;
	transition: box-shadow 180ms ease, transform 180ms ease, border-color 180ms ease;
}
.hp-section-hub__tile:hover,
.hp-subcat-hub__tile:hover {
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05), 0 12px 24px -18px rgba(243, 111, 33, 0.35);
	transform: translateY(-1px);
}

.hp-section-hub__thumb,
.hp-subcat-hub__thumb {
	margin-bottom: 0.25rem;
}

/* Tiles that fall back to noimage placeholder: soften the empty look with a
 * subtle warm gradient so they don't scream "MISSING" as loud as before. */
[data-hp-img-kind="noimage"] .hp-photo-well {
	background: linear-gradient(140deg, #fbf8f1 0%, #f5eede 100%);
}
[data-hp-img-kind="noimage"] .hp-photo-well img,
[data-hp-img-kind="noimage"] .hp-photo-well .jshop_img {
	opacity: 0.4;
	filter: grayscale(1);
}

/* Product listing cards: give the existing card image container the same
 * photo-well treatment so listing grids feel consistent with hub tiles. */
.hp-product-card__image-wrap {
	background: #ffffff;
	border-bottom: 1px solid #f0ece2;
	border-radius: 12px 12px 0 0;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 4 / 3;
	padding: 10px;
}
.hp-product-card__image {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

/* Product detail page hero image container also gets the well treatment. */
.hp-product-detail__gallery-main,
.jshop_img_description {
	background: #ffffff;
	border: 1px solid #eae4d6;
	border-radius: 14px;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 12px 32px -18px rgba(112, 88, 45, 0.18);
	overflow: hidden;
	padding: 16px;
}

/* Mobile: keep tile heights ergonomic, no horizontal overflow. */
@media (max-width: 640px) {
	.hp-photo-well {
		aspect-ratio: 4 / 3;
		padding: 6px;
	}
	.hp-product-card__image-wrap { padding: 8px; }
}

/* Phase 22 — Pagination visual repair
 * Joomla core emits nested .pagination containers. Tailwind reset had
 * collapsed the inner ul.pagination to a vertical stack of page numbers,
 * which the audit flagged as "strange vertical control artefact". Force
 * a horizontal flex layout with visible chips.
 */
.jshop_pagination {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.5rem;
	margin-top: 2rem;
}
.jshop_pagination nav.pagination__wrapper,
.jshop_pagination > div.pagination {
	width: 100%;
	display: flex;
	justify-content: center;
}
.jshop_pagination ul.pagination {
	display: inline-flex;
	flex-wrap: wrap;
	list-style: none;
	padding: 0;
	margin: 0;
	gap: 0.25rem;
}
.jshop_pagination ul.pagination li {
	list-style: none;
}
.jshop_pagination ul.pagination .page-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25rem;
	height: 2.25rem;
	padding: 0 0.65rem;
	border: 1px solid var(--hp-border);
	background: var(--hp-card);
	color: var(--hp-text-secondary);
	border-radius: var(--hp-radius);
	font-size: 0.875rem;
	line-height: 1;
	text-decoration: none;
	transition: border-color 150ms, color 150ms, background 150ms;
}
.jshop_pagination ul.pagination .page-link:hover {
	border-color: color-mix(in oklab, var(--hp-primary) 40%, transparent);
	color: var(--hp-primary);
}
.jshop_pagination ul.pagination .active .page-link {
	background: var(--hp-primary);
	border-color: var(--hp-primary);
	color: #fff;
}
.jshop_pagination ul.pagination .disabled .page-link {
	opacity: 0.4;
	pointer-events: none;
}
.jshop_pagination .pagination_result_counter { text-align: center; margin-top: 0.5rem; }

/* ==========================================================================
 * Phase 23 — Corrective UI reset
 * - Compact category tile with mini real-photo thumbnail (revert P22 giant)
 * - Stronger "Доступно сразу" green badge
 * - Pagination hides disabled prev/next (removes empty side boxes)
 * - Contacts article structured cards
 * - Removes VAT note (rendered PHP is already gone; keep CSS to hide any
 *   stale cached copy just in case)
 * ========================================================================== */

/* Mini photo well: 72×72 thumbnail slot for compact category tiles */
.hp-photo-well--mini {
	width: 72px;
	height: 72px;
	background: #ffffff;
	border: 1px solid #eae4d6;
	border-radius: 10px;
	padding: 6px;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	aspect-ratio: auto;
}
.hp-photo-well--mini img,
.hp-photo-well--mini .jshop_img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
	display: block;
}

/* Compact tile row layout */
.hp-section-hub__tile--compact,
.hp-subcat-hub__tile--compact {
	min-height: 96px;
}
.hp-section-hub__tile--compact h3,
.hp-subcat-hub__tile--compact h3 {
	font-size: 0.9rem;
}

@media (max-width: 640px) {
	.hp-photo-well--mini { width: 64px; height: 64px; padding: 5px; }
	.hp-section-hub__tile--compact,
	.hp-subcat-hub__tile--compact { min-height: 88px; }
}

/* Stronger "Доступно сразу" green badge — closer to live Hidplanet green */
.hp-stock-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.3rem 0.7rem;
	font-size: 0.8125rem;
	font-weight: 600;
	border-radius: 999px;
	line-height: 1;
	letter-spacing: 0.01em;
}
.hp-stock-badge--in,
.hp-stock-badge.available,
#available_now {
	background: #dcf5df;
	color: #166534;
	border: 1px solid #86efac;
}
.hp-stock-badge--out,
.hp-stock-badge.not_available,
#not_available {
	background: #fde2e2;
	color: #b91c1c;
	border: 1px solid #fca5a5;
}
.hp-stock-badge--in::before {
	content: '';
	width: 6px;
	height: 6px;
	border-radius: 999px;
	background: #16a34a;
	box-shadow: 0 0 0 2px rgba(22, 163, 74, 0.18);
}

/* Pagination: hide disabled prev/next so we don't render empty boxes */
.jshop_pagination ul.pagination li.disabled { display: none; }
/* Keep prev/next arrow characters visible even if Joomla's icon font is absent */
.jshop_pagination ul.pagination .page-link .icon-angle-double-left::before,
.jshop_pagination ul.pagination .page-link .icon-previous::before {
	content: '\00AB'; /* « */
}
.jshop_pagination ul.pagination .page-link .icon-angle-double-right::before,
.jshop_pagination ul.pagination .page-link .icon-next::before {
	content: '\00BB'; /* » */
}
.jshop_pagination ul.pagination .page-link .icon-angle-left::before {
	content: '\2039'; /* ‹ */
}
.jshop_pagination ul.pagination .page-link .icon-angle-right::before {
	content: '\203A'; /* › */
}

/* Contacts page structured layout */
.hp-contacts-page { max-width: 60rem; }
.hp-contacts-card {
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 6px 20px -12px rgba(112, 88, 45, 0.15);
}
.hp-contacts-card__title { color: #1a1a1a; }
.hp-contacts-card--map { padding: 0; }
.hp-contacts-map iframe {
	width: 100%;
	height: 100%;
	min-height: 260px;
	border: 0;
	display: block;
	border-radius: 0.5rem;
}
.hp-contacts-card--map { min-height: 260px; overflow: hidden; }

/* Contacts article body override: neutralise old inline blue button style */
.hp-contacts-page .prose a[style*="background-color"] {
	background: transparent !important;
	color: var(--hp-primary, #f36f21) !important;
	padding: 0 !important;
	border-radius: 0 !important;
	text-decoration: underline;
	font-weight: 500;
}
.hp-contacts-page .prose p { margin-bottom: 0.9rem; }
.hp-contacts-page .prose strong { color: #1a1a1a; }

/* Kill any residual VAT note element if one leaks from cache */
.hp-product-detail__vat-note { display: none !important; }

@media (max-width: 640px) {
	.hp-contacts-card--map { min-height: 220px; }
	.hp-contacts-map iframe { min-height: 220px; }
}

/* ==========================================================================
 * Phase 24 — Warm surface + density polish
 * (loads AFTER all previous P17/P20/P21/P22/P23 rules — wins by source order
 *  where specificity is identical)
 *
 * Palette:
 *   warm page bg     : #f2eee6 (existing hp-header-bg / body background)
 *   warm card bg     : #fbf7ee (ivory, ~5° warmer than page)
 *   warm border      : #eae4d6
 *   soft shadow      : rgba(112, 88, 45, 0.14)
 *   photo well bg    : #fdfaf3 (very light warm — reads as white but still
 *                      belongs to the beige palette)
 *   photo well ring  : rgba(112, 88, 45, 0.10)
 * ========================================================================== */

/* Warm the card surface for the section/subcat hub tiles + product cards
 * without touching cart / product-detail form / navigation surfaces. */
.hp-section-hub__tile,
.hp-subcat-hub__tile,
.hp-product-card {
	background: #fbf7ee !important;
	border-color: #eae4d6 !important;
}
.hp-section-hub__tile:hover,
.hp-subcat-hub__tile:hover {
	background: #fbf5e6 !important;
	box-shadow: 0 1px 2px rgba(112, 88, 45, 0.05), 0 12px 24px -18px rgba(243, 111, 33, 0.4);
}

/* Photo well: warm ivory background instead of harsh white, subtle warm ring */
.hp-photo-well,
.hp-photo-well--mini,
.hp-product-card__image-wrap,
.hp-product-detail__gallery-main,
.jshop_img_description {
	background: #fdfaf3 !important;
	border-color: #eae4d6 !important;
	box-shadow: inset 0 0 0 1px rgba(112, 88, 45, 0.05), 0 1px 2px rgba(15, 23, 42, 0.03), 0 8px 22px -18px rgba(112, 88, 45, 0.24);
}

/* Denser + slightly larger compact tile */
.hp-photo-well--mini {
	width: 84px;
	height: 84px;
	padding: 6px;
	border-radius: 12px;
}
@media (max-width: 640px) {
	.hp-photo-well--mini { width: 74px; height: 74px; padding: 5px; }
}

.hp-section-hub__tile--compact,
.hp-subcat-hub__tile--compact {
	min-height: 108px;
	padding: 0.85rem;
	gap: 0.9rem;
}
@media (max-width: 640px) {
	.hp-section-hub__tile--compact,
	.hp-subcat-hub__tile--compact { min-height: 98px; padding: 0.7rem; gap: 0.7rem; }
}
.hp-section-hub__tile--compact h3,
.hp-subcat-hub__tile--compact h3 {
	font-size: 0.95rem;
	font-weight: 600;
	color: #1a1a1a;
}
.hp-section-hub__tile--compact p,
.hp-subcat-hub__tile--compact p {
	font-size: 0.78rem;
	color: #6b7280;
}

/* Slightly larger product card title + tighter card padding */
.hp-product-card__title {
	font-size: 0.92rem;
	line-height: 1.35;
	color: #1a1a1a;
}
.hp-product-card__body { padding: 0.9rem 1rem 1.05rem !important; }
.hp-product-card__price { font-size: 1.05rem; font-weight: 700; color: #1a1a1a; }

/* Diagnostics hub — reduce vertical gap between head and first group */
section.hp-diag-hub { margin-top: 1rem; }
section.hp-diag-hub .hp-diag-hub__head { margin-bottom: 0.5rem; }
section.hp-diag-hub .hp-diag-hub__head + .hp-diag-hub__group,
section.hp-diag-hub .hp-diag-hub__group:first-of-type { margin-top: 1.5rem; }
section.hp-diag-hub .hp-diag-hub__group { padding: 1.1rem 1.2rem 1.3rem; }
section.hp-diag-hub .hp-diag-hub__group-head { margin-bottom: 0.75rem; }
@media (max-width: 640px) {
	section.hp-diag-hub .hp-diag-hub__head + .hp-diag-hub__group,
	section.hp-diag-hub .hp-diag-hub__group:first-of-type { margin-top: 1.25rem; }
	section.hp-diag-hub .hp-diag-hub__group { padding: 0.9rem 0.9rem 1.1rem; }
}

/* Warm the diagnostic-hub group card too */
.hp-diag-hub__group {
	background: #fbf7ee !important;
	border-color: #eae4d6 !important;
}
.hp-diag-hub__group--accent {
	background: linear-gradient(180deg, rgba(243, 111, 33, 0.08) 0%, #fbf7ee 45%) !important;
	border-color: rgba(243, 111, 33, 0.4) !important;
}

/* Hub mini-cards use the warm photo-well too */
.hp-diag-hub__product {
	background: #fbf7ee;
	border: 1px solid #eae4d6;
	border-radius: 12px;
}
.hp-diag-hub__product-image-wrap {
	background: #fdfaf3;
	border-radius: 10px;
	padding: 6px;
}

/* Category page: reduce top block whitespace between H1 and hub */
.hp-category-page .mb-6 { margin-bottom: 1rem !important; }
.hp-category-page .jshop_list_category { margin-bottom: 1.25rem !important; }
.hp-section-hub { margin-bottom: 1.25rem !important; }
.hp-category-other-heading { margin-top: 1.25rem !important; margin-bottom: 0.75rem !important; }

/* Article/contacts cards get the same warm treatment */
.hp-contacts-card,
.hp-article,
.hp-article__body { background: #fbf7ee !important; border-color: #eae4d6 !important; }
.hp-contacts-card--map { background: #fdfaf3 !important; }

/* Footer stays on the warm page tone (no change to bg-header token) */

/* Ensure the mobile menu drawer keeps a readable warm card too */
[data-hp-menu-panel], .hp-mobile-menu { background: #fbf7ee !important; }

/* ==========================================================================
 * Phase 25 — Commercial UI tightening
 * - Product listing cards: tighter body padding, smaller vertical gaps
 * - Product page purchase area: tighter gap between title/price/badge/CTA
 * - Category tiles: micro tweaks
 * - Diagnostic hub mini-card stock badge: match main "Доступно сразу" style
 * - Contacts page: "Условия гарантии..." link styled as a warm CTA button
 * - Final photo well softening (already warm from P24 — tune padding only)
 * ========================================================================== */

/* -- product listing card compaction ----------------------------------- */
.hp-product-card {
	overflow: hidden;
}
.hp-product-card__image-wrap {
	aspect-ratio: 5 / 4 !important;
	padding: 8px !important;
}
.hp-product-card__body {
	padding: 0.7rem 0.8rem 0.85rem !important;
	display: flex;
	flex-direction: column;
	gap: 0.35rem !important;
}
.hp-product-card__title {
	font-size: 0.86rem !important;
	line-height: 1.3 !important;
	color: #1a1a1a;
	margin: 0 !important;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.hp-product-card__stock {
	margin: 0 !important;
	padding: 0 !important;
}
.hp-product-card__footer {
	margin-top: auto !important;
	padding-top: 0.4rem !important;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
}
.hp-product-card__price {
	font-size: 1rem !important;
	font-weight: 700 !important;
	color: #1a1a1a;
}
.hp-product-card .hp-btn--primary,
.hp-product-card .hp-btn--outline {
	padding: 0.45rem 0.75rem !important;
	font-size: 0.82rem !important;
	min-height: 34px;
	line-height: 1;
}

@media (max-width: 640px) {
	.hp-product-card__body { padding: 0.6rem 0.7rem 0.75rem !important; gap: 0.3rem !important; }
	.hp-product-card__title { font-size: 0.82rem !important; }
	.hp-product-card__price { font-size: 0.95rem !important; }
	.hp-product-card .hp-btn--primary { padding: 0.4rem 0.65rem !important; font-size: 0.78rem !important; min-height: 32px; }
}

/* -- diagnostic hub mini product stock badge — unify with green pill ---- */
.hp-diag-hub__product-stock {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.2rem 0.55rem;
	background: #dcf5df;
	color: #166534;
	border: 1px solid #86efac;
	border-radius: 999px;
	font-size: 0.72rem;
	font-weight: 600;
	line-height: 1;
}
.hp-diag-hub__product-stock::before {
	content: '';
	width: 5px; height: 5px; border-radius: 999px;
	background: #16a34a;
}

/* -- product page compact purchase area -------------------------------- */
.hp-product-detail__info { display: flex; flex-direction: column; gap: 0.65rem; }
.hp-product-detail__eyebrow { margin: 0; }
.hp-product-detail__title {
	font-size: 1.6rem !important;
	line-height: 1.2 !important;
	margin: 0 !important;
	color: #1a1a1a;
}
.hp-product-detail__price-row { margin-top: 0.4rem !important; }
.hp-product-detail__price {
	font-size: 1.4rem !important;
	font-weight: 700 !important;
	color: #b91c1c;
}
.hp-product-detail__info > .mt-4 { margin-top: 0.5rem !important; } /* stock badge wrapper */
.hp-product-detail__short { margin-top: 0.6rem !important; margin-bottom: 0 !important; font-size: 0.9rem; color: #4b5563; }
.hp-product-detail__buy-row { margin-top: 0.75rem !important; padding-top: 0 !important; }
.hp-product-detail__info > ul.hp-card { margin-top: 0.75rem !important; padding: 0.85rem 1rem !important; }
.hp-product-detail__info > ul.hp-card li { padding: 0 !important; }

@media (max-width: 640px) {
	.hp-product-detail__title { font-size: 1.35rem !important; }
	.hp-product-detail__price { font-size: 1.25rem !important; }
	.hp-product-detail__info { gap: 0.5rem; }
	.hp-product-detail__info > ul.hp-card { margin-top: 0.6rem !important; padding: 0.7rem 0.85rem !important; }
}

/* -- category tiles: even tighter internal spacing --------------------- */
.hp-section-hub__tile--compact,
.hp-subcat-hub__tile--compact {
	min-height: 96px !important;
	padding: 0.75rem !important;
	gap: 0.75rem !important;
}
.hp-section-hub__tile--compact h3,
.hp-subcat-hub__tile--compact h3 {
	font-size: 0.9rem !important;
	line-height: 1.25 !important;
}
.hp-section-hub__tile--compact p,
.hp-subcat-hub__tile--compact p {
	margin-top: 0.15rem !important;
	font-size: 0.75rem !important;
}
.hp-photo-well--mini { width: 76px !important; height: 76px !important; padding: 5px !important; }
@media (max-width: 640px) {
	.hp-section-hub__tile--compact,
	.hp-subcat-hub__tile--compact { min-height: 84px !important; padding: 0.6rem !important; gap: 0.6rem !important; }
	.hp-photo-well--mini { width: 66px !important; height: 66px !important; padding: 4px !important; }
}

/* -- contacts page: warranty/return button ----------------------------- */
.hp-contacts-page .prose a[href*="warranty-and-refund"],
.hp-contacts-page .prose a[style*="background-color"] {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.55rem 1rem !important;
	background: #f36f21 !important;
	color: #ffffff !important;
	border-radius: 10px !important;
	text-decoration: none !important;
	font-weight: 600;
	font-size: 0.95rem;
	line-height: 1.2;
	box-shadow: 0 1px 2px rgba(15,23,42,0.06), 0 6px 18px -10px rgba(243,111,33,0.5);
	transition: background 150ms;
}
.hp-contacts-page .prose a[href*="warranty-and-refund"]:hover,
.hp-contacts-page .prose a[style*="background-color"]:hover {
	background: #d95f18 !important;
}
.hp-contacts-page .prose a[href*="warranty-and-refund"]::before,
.hp-contacts-page .prose a[style*="background-color"]::before {
	content: '';
	display: inline-block;
	width: 16px;
	height: 16px;
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>');
	background-repeat: no-repeat;
}

@media (max-width: 640px) {
	.hp-contacts-page .prose a[href*="warranty-and-refund"],
	.hp-contacts-page .prose a[style*="background-color"] {
		width: 100%;
		justify-content: center;
	}
}

/* -- photo well final softening ---------------------------------------- */
.hp-photo-well,
.hp-photo-well--mini,
.hp-product-card__image-wrap,
.hp-product-detail__gallery-main,
.jshop_img_description {
	background: #fdfaf3 !important;
	border: 1px solid #eae4d6 !important;
}

/* -- section hub head tightening --------------------------------------- */
.hp-section-hub__head { margin-bottom: 0.65rem !important; }
.hp-section-hub__title { font-size: 1rem !important; margin: 0 !important; }
.hp-section-hub__body { margin-top: 0.15rem !important; }

/* ==========================================================================
 * Phase 25B — Balanced density + full-card diag click + diag spacing + qty
 * ========================================================================== */

/* --- Rebalance product listing card density -------------------------- */
.hp-product-card__image-wrap { aspect-ratio: 4 / 3 !important; padding: 10px !important; }
.hp-product-card__body       { padding: 0.85rem 0.95rem 1rem !important; gap: 0.5rem !important; }
.hp-product-card__title      { font-size: 0.9rem !important; line-height: 1.35 !important; }
.hp-product-card__footer     { padding-top: 0.5rem !important; gap: 0.6rem; }
.hp-product-card__price      { font-size: 1.05rem !important; }
.hp-product-card .hp-btn--primary,
.hp-product-card .hp-btn--outline {
	padding: 0.55rem 0.9rem !important;
	font-size: 0.85rem !important;
	min-height: 38px;
}
@media (max-width: 640px) {
	.hp-product-card__body { padding: 0.75rem 0.85rem 0.9rem !important; gap: 0.45rem !important; }
	.hp-product-card__title { font-size: 0.85rem !important; }
	.hp-product-card__price { font-size: 1rem !important; }
	.hp-product-card .hp-btn--primary { padding: 0.5rem 0.75rem !important; font-size: 0.82rem !important; min-height: 36px; }
}

/* --- Rebalance product page purchase area --------------------------- */
.hp-product-detail__info { gap: 0.9rem !important; }
.hp-product-detail__title { font-size: 1.7rem !important; line-height: 1.2 !important; }
.hp-product-detail__price-row { margin-top: 0.5rem !important; }
.hp-product-detail__price { font-size: 1.45rem !important; }
.hp-product-detail__info > .mt-4 { margin-top: 0.7rem !important; }
.hp-product-detail__short { margin-top: 0.75rem !important; }
.hp-product-detail__buy-row { margin-top: 0.9rem !important; }
.hp-product-detail__info > ul.hp-card { margin-top: 0.9rem !important; padding: 0.95rem 1.05rem !important; }
@media (max-width: 640px) {
	.hp-product-detail__title { font-size: 1.4rem !important; }
	.hp-product-detail__info { gap: 0.7rem !important; }
	.hp-product-detail__info > ul.hp-card { padding: 0.8rem 0.95rem !important; }
}

/* --- Diagnostics vertical spacing fix (tighter) ---------------------- */
.hp-category-page[id="comjshop"] .mb-6:first-child { margin-bottom: 0.6rem !important; }
.hp-diag-filter { margin: 0.75rem 0 0.75rem !important; padding: 12px 14px !important; }
.hp-diag-filter__row { gap: 6px !important; }
section.hp-diag-hub { margin-top: 0.5rem !important; }
section.hp-diag-hub .hp-diag-hub__head { margin-bottom: 0.35rem !important; }
section.hp-diag-hub .hp-diag-hub__head + .hp-diag-hub__group,
section.hp-diag-hub .hp-diag-hub__group:first-of-type { margin-top: 1rem !important; }
section.hp-diag-hub .hp-diag-hub__group { margin-top: 5rem !important; padding: 1rem 1.1rem 1.2rem !important; }
section.hp-diag-hub .hp-diag-hub__group-head { margin-bottom: 0.6rem !important; }
@media (max-width: 640px) {
	.hp-diag-filter { margin: 0.6rem 0 0.6rem !important; padding: 10px 12px !important; }
	section.hp-diag-hub .hp-diag-hub__group { margin-top: 3.25rem !important; padding: 0.85rem 0.9rem 1rem !important; }
	section.hp-diag-hub .hp-diag-hub__head + .hp-diag-hub__group,
	section.hp-diag-hub .hp-diag-hub__group:first-of-type { margin-top: 0.85rem !important; }
}

/* --- Full-card clickable diagnostic direction cards ------------------ */
.hp-diag-hub__group--clickable { position: relative; }
.hp-diag-hub__group-cover {
	position: absolute; inset: 0;
	z-index: 1;
	display: block;
	border-radius: inherit;
	text-indent: -9999px;
	overflow: hidden;
	cursor: pointer;
}
.hp-diag-hub__group--clickable:hover {
	box-shadow: 0 1px 2px rgba(15,23,42,0.05), 0 16px 28px -20px rgba(243,111,33,0.35);
	border-color: rgba(243,111,33,0.45) !important;
	transform: translateY(-1px);
	transition: box-shadow 180ms, transform 180ms, border-color 180ms;
}
.hp-diag-hub__group-cover:focus-visible {
	outline: 2px solid #f36f21;
	outline-offset: 3px;
	border-radius: inherit;
}
.hp-diag-hub__group--clickable .hp-diag-hub__group-head,
.hp-diag-hub__group--clickable .hp-diag-hub__products,
.hp-diag-hub__group--clickable .hp-diag-hub__materials { position: relative; z-index: 2; }
.hp-diag-hub__group--clickable .hp-diag-hub__product,
.hp-diag-hub__group--clickable .hp-diag-hub__material-chip {
	position: relative; z-index: 3;
}

/* --- Quantity input visibility guarantee ---------------------------- */
.hp-product-detail__qty {
	display: inline-flex;
	align-items: center;
	height: 44px;
	background: #ffffff !important;
	border: 1px solid #eae4d6 !important;
	border-radius: 8px;
	overflow: hidden;
}
.hp-product-detail__qty-input {
	width: 3rem !important;
	height: 44px !important;
	background: #ffffff !important;
	color: #1a1a1a !important;
	font-size: 1rem !important;
	font-weight: 600 !important;
	text-align: center !important;
	border: 0 !important;
	appearance: textfield;
	-moz-appearance: textfield;
	-webkit-appearance: none;
	padding: 0 !important;
	line-height: 44px;
}
.hp-product-detail__qty-input::-webkit-outer-spin-button,
.hp-product-detail__qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.hp-product-detail__qty-btn {
	width: 40px;
	height: 44px;
	background: #ffffff;
	color: #1a1a1a;
	border: 0;
	border-left: 1px solid #eae4d6;
	border-right: 1px solid #eae4d6;
	cursor: pointer;
}
.hp-product-detail__qty-btn--minus { border-left: 0; }
.hp-product-detail__qty-btn--plus  { border-right: 0; }
.hp-product-detail__qty-btn:hover { color: #f36f21; background: #fdfaf3; }
@media (max-width: 640px) {
	.hp-product-detail__qty { height: 42px; }
	.hp-product-detail__qty-input { height: 42px !important; line-height: 42px; width: 2.6rem !important; }
	.hp-product-detail__qty-btn { height: 42px; width: 36px; }
}

/* ==========================================================================
 * Phase 26 — Article / instruction / legal template
 * Warm ivory card wrap, readable typography, related product card
 * ========================================================================== */

.hp-article {
	max-width: 780px;
	margin-left: auto;
	margin-right: auto;
	padding: 0 16px;
}
.hp-article__header {
	margin-bottom: 18px;
}
.hp-article__crumb {
	margin: 0 0 8px;
	font-size: 13px;
	color: #7a6a52;
}
.hp-article__crumb-home { color: inherit; }
.hp-article__crumb-home:hover { color: #f36f21; }
.hp-article__title {
	font-size: 1.85rem;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: #1a1a1a;
	margin: 0;
}
@media (min-width: 640px) {
	.hp-article__title { font-size: 2.2rem; }
}

.hp-article__card {
	background: #fbf7ee;
	border: 1px solid #eae4d6;
	border-radius: 14px;
	padding: 28px 32px;
	box-shadow: 0 1px 2px rgba(15,23,42,0.03), 0 12px 32px -20px rgba(112,88,45,0.22);
}
@media (max-width: 640px) {
	.hp-article__card { padding: 18px 18px; border-radius: 12px; }
}

.hp-article__intro {
	font-size: 1rem;
	line-height: 1.65;
	color: #3a2f1e;
	margin-bottom: 20px;
}
.hp-article__body { font-size: 15px; line-height: 1.65; color: #1a1a1a; }
.hp-article__body h1,
.hp-article__body h2,
.hp-article__body h3,
.hp-article__body h4 {
	color: #1a1a1a;
	margin-top: 26px;
	margin-bottom: 10px;
	line-height: 1.3;
	font-weight: 700;
}
.hp-article__body h1 { font-size: 1.5rem; }
.hp-article__body h2 { font-size: 1.25rem; }
.hp-article__body h3 { font-size: 1.1rem; }
.hp-article__body h4 { font-size: 1rem; }
.hp-article__body h2:first-child,
.hp-article__body h3:first-child { margin-top: 0; }
.hp-article__body p { margin: 0 0 12px; }
.hp-article__body ul,
.hp-article__body ol { margin: 0 0 14px; padding-left: 1.3rem; }
.hp-article__body ul li,
.hp-article__body ol li { margin-bottom: 6px; }
.hp-article__body ol { list-style: decimal outside; }
.hp-article__body ul { list-style: disc outside; }
.hp-article__body a { color: #b95a1a; text-decoration: underline; text-underline-offset: 2px; }
.hp-article__body a:hover { color: #f36f21; }
.hp-article__body strong { color: #1a1a1a; }
.hp-article__body img {
	max-width: 100%;
	height: auto;
	border-radius: 10px;
	border: 1px solid #eae4d6;
	background: #fdfaf3;
	padding: 6px;
	margin: 12px 0;
}
.hp-article__body table {
	width: 100%;
	border-collapse: collapse;
	margin: 14px 0;
	font-size: 14px;
}
.hp-article__body th,
.hp-article__body td {
	border: 1px solid #eae4d6;
	padding: 8px 10px;
	vertical-align: top;
}
.hp-article__body th { background: #f5eede; text-align: left; font-weight: 600; }
.hp-article__body code {
	background: #f5eede;
	border-radius: 4px;
	padding: 1px 5px;
	font-size: 0.92em;
	color: #5c3a10;
}
.hp-article__body blockquote {
	background: #fdfaf3;
	border-left: 4px solid #f36f21;
	padding: 10px 14px;
	margin: 14px 0;
	color: #3a2f1e;
	border-radius: 0 8px 8px 0;
}
.hp-article__body hr {
	border: 0;
	height: 1px;
	background: #eae4d6;
	margin: 20px 0;
}

/* Neutralise inline yellow legacy styles in warranty/instruction articles */
.hp-article__body [style*="background-color"] {
	background: transparent !important;
	padding: 0 !important;
	color: inherit !important;
	border-radius: 0 !important;
}
.hp-article__body a[style*="background-color"] {
	display: inline-block;
	background: #f36f21 !important;
	color: #ffffff !important;
	padding: 8px 14px !important;
	border-radius: 10px !important;
	text-decoration: none;
	font-weight: 600;
	margin: 4px 0;
	box-shadow: 0 1px 2px rgba(15,23,42,0.06), 0 6px 18px -10px rgba(243,111,33,0.5);
}
.hp-article__body a[style*="background-color"]:hover { background: #d95f18 !important; }

/* Instruction-only tweaks */
.hp-article--instruction .hp-article__body img { max-width: 480px; }

/* Legal (warranty) — number-heading formatting */
.hp-article--legal .hp-article__body ol { list-style: decimal outside; padding-left: 1.5rem; }
.hp-article--legal .hp-article__body ol > li { margin-bottom: 10px; }

/* Related product / category CTA card at bottom of an instruction article */
.hp-article__related {
	margin-top: 20px;
	max-width: 780px;
	margin-left: auto;
	margin-right: auto;
	padding: 0 16px;
}
.hp-article__related-label {
	font-size: 13px;
	font-weight: 600;
	color: #7a6a52;
	letter-spacing: 0.01em;
	margin-bottom: 8px;
	text-transform: uppercase;
}
.hp-article__related-card {
	display: flex;
	align-items: center;
	gap: 14px;
	background: #fbf7ee;
	border: 1px solid #eae4d6;
	border-radius: 14px;
	padding: 16px 18px;
	text-decoration: none;
	color: #1a1a1a;
	transition: box-shadow 180ms, border-color 180ms, transform 180ms;
}
.hp-article__related-card:hover {
	border-color: rgba(243,111,33,0.4);
	box-shadow: 0 1px 2px rgba(15,23,42,0.05), 0 16px 28px -20px rgba(243,111,33,0.35);
	transform: translateY(-1px);
}
.hp-article__related-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	background: #fdfaf3;
	color: #f36f21;
	border-radius: 10px;
	border: 1px solid #eae4d6;
	flex-shrink: 0;
}
.hp-article__related-icon svg { width: 20px; height: 20px; }
.hp-article__related-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.hp-article__related-title { font-size: 0.95rem; font-weight: 600; color: #1a1a1a; }
.hp-article__related-sub { font-size: 0.8rem; color: #7a6a52; }
.hp-article__related-cta {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 0.85rem;
	font-weight: 600;
	color: #f36f21;
	flex-shrink: 0;
}
.hp-article__related-cta svg { width: 14px; height: 14px; }
@media (max-width: 640px) {
	.hp-article__related-card { padding: 12px 14px; gap: 10px; }
	.hp-article__related-icon { width: 36px; height: 36px; }
	.hp-article__related-cta span { display: none; }
}

/* ==========================================================================
 * Phase 27 — Corrective consolidation
 * - Structured article sections + callouts + checklists
 * - Inner page top spacing reduction
 * - Product card commercial block tightening
 * - Category tile text hierarchy boost
 * ========================================================================== */

/* --- Structured article sections + callouts ------------------------- */
.hp-article__section {
	margin: 0 0 18px;
	padding: 0;
}
.hp-article__section + .hp-article__section {
	border-top: 1px dashed #eae4d6;
	padding-top: 18px;
}
.hp-article__section-title {
	display: flex;
	align-items: baseline;
	gap: 0.55rem;
	font-size: 1.25rem !important;
	line-height: 1.3 !important;
	font-weight: 700;
	color: #1a1a1a;
	margin: 0 0 14px !important;
}
.hp-article__section-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.9rem;
	height: 1.9rem;
	background: #f36f21;
	color: #fff;
	border-radius: 999px;
	font-size: 0.9rem;
	font-weight: 700;
	line-height: 1;
	flex-shrink: 0;
	padding: 0 0.5rem;
}
.hp-article__step {
	display: flex;
	align-items: baseline;
	gap: 0.55rem;
	font-size: 1.05rem !important;
	font-weight: 600 !important;
	color: #1a1a1a;
	margin: 14px 0 8px !important;
}
.hp-article__step-num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.55rem;
	height: 1.55rem;
	background: #fdfaf3;
	color: #b95a1a;
	border: 1px solid #eae4d6;
	border-radius: 999px;
	font-size: 0.8rem;
	font-weight: 700;
	line-height: 1;
	flex-shrink: 0;
}
.hp-article__callout {
	margin: 12px 0;
	padding: 12px 16px;
	background: #fff4e5;
	border: 1px solid #f7c087;
	border-left: 4px solid #f36f21;
	border-radius: 10px;
}
.hp-article__callout p { margin: 0; font-size: 0.95rem; color: #3a2f1e; }
.hp-article__callout-label {
	display: inline-block;
	background: #f36f21;
	color: #fff;
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	margin-bottom: 6px;
}
.hp-article__callout--warn { background: #fef2f2; border-color: #fca5a5; border-left-color: #b91c1c; }
.hp-article__callout--warn .hp-article__callout-label { background: #b91c1c; }
.hp-article__checklist {
	list-style: none !important;
	padding-left: 0 !important;
	margin: 10px 0 !important;
}
.hp-article__checklist li {
	position: relative;
	padding: 4px 4px 4px 30px;
	line-height: 1.55;
}
.hp-article__checklist li::before {
	content: '';
	position: absolute;
	left: 4px; top: 8px;
	width: 18px; height: 18px;
	background: #16a34a;
	border-radius: 999px;
	box-shadow: 0 0 0 3px rgba(22,163,74,0.15);
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>');
	background-repeat: no-repeat;
	background-size: 12px 12px;
	background-position: center;
}
.hp-article__bullets {
	list-style: none !important;
	padding-left: 0 !important;
	margin: 10px 0 !important;
}
.hp-article__bullets li {
	position: relative;
	padding: 3px 3px 3px 20px;
	line-height: 1.55;
}
.hp-article__bullets li::before {
	content: '';
	position: absolute;
	left: 6px; top: 10px;
	width: 6px; height: 6px;
	background: #f36f21;
	border-radius: 999px;
}

/* --- Inner page top spacing ---------------------------------------- */
main, .hp-main { padding-top: 0 !important; }
.hp-category-page[id="comjshop"] { padding-top: 12px !important; }
.hp-category-page[id="comjshop"] > .mb-6:first-child { margin-top: 0 !important; padding-top: 0 !important; }
.hp-article { padding-top: 12px !important; }
.hp-article__header { margin-bottom: 14px !important; }
.hp-page,
.jshop_categ,
.jshop_prod_description { padding-top: 8px !important; }
@media (max-width: 640px) {
	.hp-category-page[id="comjshop"] { padding-top: 8px !important; }
	.hp-article { padding-top: 8px !important; }
	.hp-article__header { margin-bottom: 10px !important; }
}

/* --- Product listing card: commercial block tighter ---------------- */
.hp-product-card__body { gap: 0.35rem !important; padding: 0.75rem 0.85rem 0.85rem !important; }
.hp-product-card__title { margin-bottom: 0 !important; }
.hp-product-card__stock { margin: 0 !important; padding: 0 !important; }
.hp-product-card__footer {
	margin-top: 0.35rem !important;
	padding-top: 0.45rem !important;
	border-top: 1px dashed rgba(112,88,45,0.08);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	flex-wrap: nowrap;
}
.hp-product-card__price { margin: 0 !important; line-height: 1; }
.hp-product-card .hp-btn--primary,
.hp-product-card .hp-btn--outline {
	padding: 0.45rem 0.7rem !important;
	font-size: 0.82rem !important;
	min-height: 34px !important;
	white-space: nowrap;
}
@media (max-width: 640px) {
	.hp-product-card__body { padding: 0.7rem 0.8rem 0.8rem !important; gap: 0.32rem !important; }
	.hp-product-card__title { font-size: 0.82rem !important; }
	.hp-product-card__price { font-size: 0.95rem !important; }
	.hp-product-card .hp-btn--primary { padding: 0.4rem 0.6rem !important; font-size: 0.78rem !important; min-height: 32px !important; }
}

/* --- Category tile text hierarchy boost ---------------------------- */
.hp-section-hub__tile--compact h3,
.hp-subcat-hub__tile--compact h3 {
	font-size: 1rem !important;
	line-height: 1.25 !important;
	font-weight: 700 !important;
	color: #1a1a1a !important;
}
.hp-section-hub__tile--compact p,
.hp-subcat-hub__tile--compact p {
	font-size: 0.85rem !important;
	color: #b95a1a !important;
	font-weight: 600 !important;
	margin-top: 0.2rem !important;
}
.hp-section-hub__tile--compact svg,
.hp-subcat-hub__tile--compact svg {
	color: #f36f21 !important;
	width: 20px !important;
	height: 20px !important;
	transition: transform 200ms;
}
.hp-section-hub__tile--compact:hover svg,
.hp-subcat-hub__tile--compact:hover svg {
	transform: translateX(3px);
}
.hp-section-hub__tile--compact,
.hp-subcat-hub__tile--compact {
	min-height: 96px !important;
	padding: 0.85rem !important;
	gap: 0.9rem !important;
}
.hp-photo-well--mini { width: 84px !important; height: 84px !important; padding: 6px !important; }
@media (max-width: 640px) {
	.hp-section-hub__tile--compact h3,
	.hp-subcat-hub__tile--compact h3 { font-size: 0.95rem !important; }
	.hp-section-hub__tile--compact p,
	.hp-subcat-hub__tile--compact p { font-size: 0.8rem !important; }
	.hp-photo-well--mini { width: 72px !important; height: 72px !important; padding: 5px !important; }
	.hp-section-hub__tile--compact,
	.hp-subcat-hub__tile--compact { padding: 0.7rem !important; gap: 0.7rem !important; min-height: 86px !important; }
}
/* ==========================================================================
 * Phase 29 — Post-architecture design polish
 * Appended to templates/hidplanet_staging/css/components.css
 * Scope: article template polish, product card density, category tile
 * hierarchy, internal spacing, hub visuals. NO architecture changes.
 * ========================================================================== */

/* --- Article template polish --------------------------------------- */
.hp-article {
	max-width: 860px !important;
	padding-top: 20px !important;
}
.hp-article__title {
	font-size: 2rem !important;
	margin-bottom: 4px !important;
}
@media (min-width: 640px) {
	.hp-article__title { font-size: 2.4rem !important; }
}
.hp-article__card {
	padding: 32px 36px !important;
	border-radius: 16px !important;
}
@media (max-width: 640px) {
	.hp-article__card { padding: 20px 20px !important; border-radius: 12px !important; }
}
.hp-article__body { font-size: 15.5px !important; line-height: 1.7 !important; }

/* Section number pill — bigger and more prominent */
.hp-article__section-title {
	font-size: 1.35rem !important;
	font-weight: 700 !important;
	margin-bottom: 16px !important;
	padding-bottom: 8px !important;
	border-bottom: 1px solid #eae4d6;
}
.hp-article__section-num {
	min-width: 2.1rem !important;
	height: 2.1rem !important;
	font-size: 0.95rem !important;
	box-shadow: 0 4px 12px -4px rgba(243,111,33,0.4);
}
.hp-article__section + .hp-article__section {
	margin-top: 24px !important;
	padding-top: 24px !important;
}

/* Callouts — stronger visual emphasis */
.hp-article__callout {
	margin: 16px 0 !important;
	padding: 14px 18px !important;
	border-radius: 12px !important;
	box-shadow: 0 2px 8px -4px rgba(0,0,0,0.08);
}
.hp-article__callout-label {
	font-size: 0.75rem !important;
	padding: 3px 12px !important;
	margin-bottom: 8px !important;
}
.hp-article__callout p {
	font-size: 0.98rem !important;
	font-weight: 500 !important;
}
.hp-article__callout--warn {
	background: #fef2f2 !important;
	border-color: #fca5a5 !important;
	border-left-width: 5px !important;
	border-left-color: #b91c1c !important;
}

/* Step markers — sharper */
.hp-article__step {
	font-size: 1.1rem !important;
	margin-top: 18px !important;
	margin-bottom: 10px !important;
}
.hp-article__step-num {
	width: 1.7rem !important;
	height: 1.7rem !important;
	font-size: 0.85rem !important;
	background: #f36f21 !important;
	color: #fff !important;
	border-color: #f36f21 !important;
}

/* Article body H2/H3 — stronger */
.hp-article__body h2 { font-size: 1.35rem !important; font-weight: 700 !important; margin-top: 26px !important; }
.hp-article__body h3 { font-size: 1.15rem !important; font-weight: 600 !important; margin-top: 20px !important; }

/* Neutralize any leftover legacy inline yellow blocks */
.hp-article__body [style*="background-color"],
.hp-article__body [style*="background:"] {
	background: transparent !important;
	color: inherit !important;
	padding: 0 !important;
	border-radius: 0 !important;
}
/* But preserve orange CTA buttons for backwards-compat */
.hp-article__body a[style*="background-color"] {
	display: inline-block;
	background: #f36f21 !important;
	color: #fff !important;
	padding: 10px 18px !important;
	border-radius: 10px !important;
	text-decoration: none !important;
	font-weight: 600 !important;
	margin: 6px 0 !important;
	box-shadow: 0 6px 18px -10px rgba(243,111,33,0.5);
}

/* --- Product card density --------------------------------------- */
/* Tighten commercial block: title→stock→price→button gaps */
.hp-product-card__body {
	padding: 0.9rem !important;
	gap: 0.5rem !important;
}
.hp-product-card__stock {
	margin-top: 0.4rem !important;
}
.hp-product-card__footer {
	padding-top: 0.65rem !important;
	gap: 0.5rem !important;
	align-items: center !important;
}
.hp-product-card__price {
	font-size: 1.05rem !important;
	font-weight: 700 !important;
	color: #1a1a1a;
}
.hp-product-card__footer .hp-btn--sm,
.hp-product-card__footer .hp-btn {
	height: 2.2rem !important;
	padding: 0 0.85rem !important;
	font-size: 0.87rem !important;
	font-weight: 600 !important;
}
@media (max-width: 640px) {
	.hp-product-card__body { padding: 0.75rem !important; gap: 0.4rem !important; }
	.hp-product-card__footer { padding-top: 0.5rem !important; }
	.hp-product-card__footer .hp-btn--sm { height: 2rem !important; padding: 0 0.7rem !important; font-size: 0.82rem !important; }
}

/* --- Category tile / subcat hub hierarchy ------------------------ */
/* Larger title + more visible product count on category tiles */
.hp-subcat-hub__tile h3,
.hp-subcat-hub__tile--compact h3 {
	font-size: 1rem !important;
	font-weight: 700 !important;
	color: #1a1a1a !important;
	letter-spacing: -0.01em;
}
.hp-subcat-hub__tile p,
.hp-subcat-hub__tile--compact p {
	font-size: 0.85rem !important;
	color: #b95a1a !important;
	font-weight: 600 !important;
	letter-spacing: 0.01em;
}
.hp-subcat-hub__tile:hover,
.hp-subcat-hub__tile--compact:hover {
	border-color: rgba(243,111,33,0.5) !important;
	box-shadow: 0 8px 22px -12px rgba(243,111,33,0.35) !important;
	transform: translateY(-1px);
}
.hp-cat-tile__label { font-size: 0.95rem !important; font-weight: 700 !important; }

/* --- Internal page top spacing --------------------------------- */
main.hp-main { padding-top: 8px !important; }
.hp-category-page[id="comjshop"] { padding-top: 8px !important; }
.hp-article__header { margin-bottom: 12px !important; }

/* --- Diagnostics hub — 5-tile grid better balance ---------------- */
/* On /ru/diagnostics landing, ensure the 5 tiles look balanced on a single row */
.hp-maincategory .grid { row-gap: 12px !important; }

/* Article related-product card polish */
.hp-article__related-card {
	padding: 18px 20px !important;
	border-radius: 14px !important;
}
.hp-article__related-title { font-size: 1rem !important; font-weight: 700 !important; }
.hp-article__related-sub { font-size: 0.85rem !important; color: #7a6a52; }
/* ==========================================================================
 * Phase 30 — Product card commercial block repair
 * Price and add-to-cart button are now on separate vertical rows.
 * Fixes button clipping/overflow on long titles + non-RU languages.
 * ========================================================================== */

/* Force vertical stacking of the entire commercial block */
.hp-product-card__footer {
	display: flex !important;
	flex-direction: column !important;
	flex-wrap: nowrap !important;
	justify-content: flex-start !important;
	align-items: stretch !important;
	gap: 0.55rem !important;
	padding-top: 0.6rem !important;
}

/* Price on its own row — no flex growth, just a line */
.hp-product-card__footer .hp-product-card__price {
	font-size: 1.15rem !important;
	font-weight: 700 !important;
	line-height: 1.15 !important;
	color: #1a1a1a !important;
	white-space: nowrap !important;
	margin: 0 !important;
	padding: 0 !important;
}

/* Button full-width on its own row */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--sm {
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	height: 2.35rem !important;
	padding: 0 0.75rem !important;
	font-size: 0.88rem !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	box-sizing: border-box !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex-shrink: 0 !important;
}

/* Mobile: keep same vertical layout, small height/padding */
@media (max-width: 640px) {
	.hp-product-card__footer {
		gap: 0.5rem !important;
		padding-top: 0.55rem !important;
	}
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1.05rem !important;
	}
	.hp-product-card__footer .hp-btn,
	.hp-product-card__footer .hp-btn--sm {
		height: 2.2rem !important;
		font-size: 0.85rem !important;
		padding: 0 0.6rem !important;
	}
}

/* Card body: ensure the footer sticks to the bottom with breathing room */
.hp-product-card__body {
	padding: 0.9rem !important;
	gap: 0.5rem !important;
}
@media (max-width: 640px) {
	.hp-product-card__body {
		padding: 0.75rem !important;
	}
}

/* Old-price line (strikethrough) stays above the current price */
.hp-product-card__footer .hp-product-card__price-old {
	font-size: 0.8rem !important;
	color: #7a6a52 !important;
	text-decoration: line-through !important;
	display: block !important;
	margin: 0 !important;
}

/* Category tile product count — Russian plural helper class emits
 * .hp-count with a data-plural attribute for finer control if needed */
.hp-maincategory__count,
.hp-subcat-hub__count {
	font-size: 0.8rem !important;
	font-weight: 600 !important;
	color: #b95a1a !important;
	line-height: 1.3 !important;
	letter-spacing: 0.01em !important;
}
/* ==========================================================================
 * Phase 31 — v0 A+B hybrid product card, photo well, tighter top spacing
 * Overrides Phase 30 vertical layout with:
 *   - horizontal action row (price left, button right)
 *   - safe flex-wrap for narrow mobile
 *   - CSS-only photo well radial gradient
 *   - title 2-line clamp for equal-height cards
 *   - reduced internal page top padding
 * ========================================================================== */

/* --- Photo well: white center → warm ivory edges (Variant C idea) --- */
.hp-product-card__image-wrap {
	background: radial-gradient(
		120% 120% at 50% 42%,
		#ffffff 0%,
		#ffffff 45%,
		#fdfaf3 75%,
		#fbf7ee 100%
	) !important;
	overflow: hidden !important;
}

/* --- Card body density (Variant B) --- */
.hp-product-card__body {
	padding: 0.75rem 0.85rem 0.8rem !important;
	gap: 0.35rem !important;
	display: flex !important;
	flex-direction: column !important;
}

/* --- Title 2-line clamp for equal-height cards --- */
.hp-product-card__title {
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	min-height: 2.55em !important;
	max-height: 2.55em !important;
	font-size: 0.85rem !important;
	line-height: 1.25 !important;
	font-weight: 600 !important;
	color: #1a1a1a !important;
	margin: 0 !important;
}

/* --- Stock badge sits tight under title --- */
.hp-product-card__stock {
	margin-top: 0.25rem !important;
}

/* --- Action row: horizontal price left, compact button right (Variant A) --- */
.hp-product-card__footer {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: wrap !important;
	justify-content: space-between !important;
	align-items: center !important;
	gap: 10px !important;
	margin-top: auto !important;
	padding-top: 0.7rem !important;
	min-width: 0 !important;
}
.hp-product-card__footer .hp-product-card__price-old {
	flex: 1 1 100% !important;
	font-size: 0.75rem !important;
	color: #7a6a52 !important;
	text-decoration: line-through !important;
	display: block !important;
	margin: 0 0 -2px !important;
	line-height: 1 !important;
}
.hp-product-card__footer .hp-product-card__price {
	flex: 0 0 auto !important;
	font-size: 1.05rem !important;
	font-weight: 700 !important;
	line-height: 1.15 !important;
	color: #1a1a1a !important;
	white-space: nowrap !important;
	margin: 0 !important;
	padding: 0 !important;
}

/* --- Compact orange button on the right (Variant A) --- */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--sm {
	flex: 0 0 auto !important;
	width: auto !important;
	min-width: 108px !important;
	max-width: 100% !important;
	height: 2.1rem !important;
	padding: 0 0.85rem !important;
	font-size: 0.83rem !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	box-sizing: border-box !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.35rem !important;
}

/* --- Mobile: wrap safely so button never clips --- */
@media (max-width: 640px) {
	.hp-product-card__body {
		padding: 0.65rem 0.7rem 0.7rem !important;
	}
	.hp-product-card__title {
		font-size: 0.82rem !important;
	}
	.hp-product-card__footer {
		gap: 8px !important;
		padding-top: 0.55rem !important;
	}
	.hp-product-card__footer .hp-btn,
	.hp-product-card__footer .hp-btn--sm {
		height: 1.95rem !important;
		font-size: 0.78rem !important;
		padding: 0 0.65rem !important;
		min-width: 90px !important;
	}
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1rem !important;
	}
}

/* --- Extra-narrow phones (~360px): allow button to become full row so
 *     it never clips even with long localized labels --- */
@media (max-width: 380px) {
	.hp-product-card__footer .hp-btn,
	.hp-product-card__footer .hp-btn--sm {
		flex: 1 1 100% !important;
		min-width: 0 !important;
	}
}

/* --- Reduce internal category-page top spacing --- */
main.hp-main { padding-top: 4px !important; }
.hp-category-page[id="comjshop"] { padding-top: 4px !important; }
.hp-category-page[id="comjshop"] > .mb-6:first-child { margin-top: 0 !important; }
#comjshop.jshop.hp-category-page h1 {
	margin-top: 0 !important;
	margin-bottom: 0.85rem !important;
}
.hp-maincategory h1 { margin-bottom: 0.85rem !important; }
@media (max-width: 640px) {
	main.hp-main { padding-top: 2px !important; }
	#comjshop.jshop.hp-category-page h1 { margin-bottom: 0.7rem !important; }
}

/* --- Product grid row rhythm --- */
.hp-product-grid,
.hp-home-featured-grid,
.hp-category-products {
	row-gap: 1rem !important;
}
/* ==========================================================================
 * Product Card FINAL Refinement — screenshot-direction polish
 * - price 24px desktop / 21px mobile
 * - stronger equal-height enforcement (no stair-step)
 * - consistent title/stock/action rows across cards in a row
 * - photo well preserved
 * ========================================================================== */

/* Equal-height card wrapper (grid children) */
.hp-home-featured-grid .hp-product-card,
.hp-product-grid .hp-product-card,
.hp-category-products .hp-product-card {
	display: flex !important;
	flex-direction: column !important;
	height: 100% !important;
	min-height: 0 !important;
}

/* Image / photo well — consistent height */
.hp-product-card__image-wrap {
	aspect-ratio: 1 / 1 !important;
	flex: 0 0 auto !important;
	background: radial-gradient(
		120% 120% at 50% 42%,
		#ffffff 0%,
		#ffffff 45%,
		#fbf8ef 76%,
		#f4efe3 100%
	) !important;
	overflow: hidden !important;
}

/* Card body — flex column, footer pinned to bottom */
.hp-product-card__body {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	padding: 0.85rem 0.9rem 0.9rem !important;
	gap: 0.4rem !important;
	min-height: 0 !important;
}

/* Title — 2-line clamp with fixed height so cards align */
.hp-product-card__title {
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	min-height: 2.6em !important;
	max-height: 2.6em !important;
	font-size: 0.88rem !important;
	line-height: 1.3 !important;
	font-weight: 600 !important;
	color: #1a1a1a !important;
	margin: 0 !important;
	flex: 0 0 auto !important;
}

/* Stock badge row — fixed height so alignment is consistent */
.hp-product-card__stock {
	min-height: 1.9rem !important;
	max-height: 1.9rem !important;
	display: flex !important;
	align-items: center !important;
	margin-top: 0.15rem !important;
	flex: 0 0 auto !important;
}

/* Action row — pinned to bottom, horizontal */
.hp-product-card__footer {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: wrap !important;
	justify-content: space-between !important;
	align-items: center !important;
	gap: 12px !important;
	margin-top: auto !important;
	padding-top: 0.8rem !important;
	min-width: 0 !important;
	flex: 0 0 auto !important;
}

/* Old-price line (strike-through) */
.hp-product-card__footer .hp-product-card__price-old {
	flex: 1 1 100% !important;
	font-size: 0.75rem !important;
	color: #7a6a52 !important;
	text-decoration: line-through !important;
	line-height: 1 !important;
	margin: 0 0 -2px !important;
	display: block !important;
}

/* Price — 24px desktop per owner spec */
.hp-product-card__footer .hp-product-card__price {
	flex: 0 0 auto !important;
	font-size: 1.5rem !important;      /* 24px */
	font-weight: 700 !important;
	line-height: 1 !important;
	color: #1a1a1a !important;
	white-space: nowrap !important;
	margin: 0 !important;
	padding: 0 !important;
	letter-spacing: -0.01em !important;
}

/* Add-to-cart button — compact right side, non-clipping */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--sm {
	flex: 0 0 auto !important;
	width: auto !important;
	min-width: 118px !important;
	max-width: 100% !important;
	height: 2.25rem !important;
	padding: 0 0.95rem !important;
	font-size: 0.85rem !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	box-sizing: border-box !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.4rem !important;
}

/* Mobile: price 21px, safe wrap */
@media (max-width: 640px) {
	.hp-product-card__body {
		padding: 0.7rem 0.75rem 0.75rem !important;
		gap: 0.35rem !important;
	}
	.hp-product-card__title {
		font-size: 0.83rem !important;
	}
	.hp-product-card__stock {
		min-height: 1.8rem !important;
		max-height: 1.8rem !important;
	}
	.hp-product-card__footer {
		gap: 8px !important;
		padding-top: 0.6rem !important;
	}
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1.35rem !important;   /* 21.6px */
	}
	.hp-product-card__footer .hp-btn,
	.hp-product-card__footer .hp-btn--sm {
		height: 2.05rem !important;
		font-size: 0.8rem !important;
		padding: 0 0.7rem !important;
		min-width: 96px !important;
	}
}

/* Extra-narrow phones: action row wraps to two lines so button never clips */
@media (max-width: 380px) {
	.hp-product-card__footer .hp-btn,
	.hp-product-card__footer .hp-btn--sm {
		flex: 1 1 100% !important;
		min-width: 0 !important;
	}
}
/* ==========================================================================
/* ==========================================================================
/* ==========================================================================
/* ==========================================================================
/* ==========================================================================
/* ==========================================================================
 * PHASE 31C — VISUAL DRIFT REPAIR
 *   1. Product card rebalance: price 20-22px desktop / 18-20px mobile
 *   2. Photo well RESET: prefer CLEAN white area over double frame
 *   3. Category tile visual recomposition: image + title + count + arrow
 *   4. Diagnostics hub + benefits row spacing polish
 *   5. Whole tile clickable — links are <a> already; ensure hover state
 *
 * NO architecture changes. NO alias changes. NO DB writes.
 * ========================================================================== */

/* =====================================================================
 * 1. PRODUCT CARD — rebalanced
 * =====================================================================*/

.hp-product-card {
	display: flex !important;
	flex-direction: column !important;
	height: 100% !important;
	border: 1px solid rgba(210, 200, 178, 0.42) !important;
	border-radius: 12px !important;
	background: #ffffff !important;
	overflow: hidden !important;
	transition: box-shadow 220ms ease, border-color 180ms ease, transform 180ms ease;
}
.hp-product-card:hover {
	border-color: rgba(190, 150, 90, 0.58) !important;
	box-shadow: 0 12px 28px -18px rgba(45, 36, 22, 0.32) !important;
	transform: translateY(-1px);
}

.hp-product-card__body {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	padding: 0.85rem 0.95rem 0.95rem !important;
	gap: 0.5rem !important;
	min-height: 0 !important;
}

.hp-product-card__eyebrow { display: none !important; }
.hp-product-card__compat  { display: none !important; }

.hp-product-card__title {
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	min-height: 2.6em !important;
	max-height: 2.6em !important;
	font-size: 0.9rem !important;   /* 14.4px */
	line-height: 1.3 !important;
	font-weight: 600 !important;
	color: #1a1a1a !important;
	margin: 0 !important;
	flex: 0 0 auto !important;
}

/* Footer — column: meta-row on top, full-width button below */
.hp-product-card__footer {
	display: flex !important;
	flex-direction: column !important;
	margin-top: auto !important;
	padding-top: 0.5rem !important;
	gap: 0.55rem !important;
	min-width: 0 !important;
	border-top: 0 !important;
}

/* Stock badge + price on ONE row, baseline-aligned */
.hp-product-card__meta-row {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 0.6rem !important;
	min-width: 0 !important;
	flex-wrap: nowrap !important;
}

.hp-product-card__footer .hp-product-card__stock,
.hp-product-card__meta-row .hp-product-card__stock {
	margin: 0 !important;
	padding: 0 !important;
	flex: 0 1 auto !important;
	min-width: 0 !important;
	display: flex !important;
	align-items: center !important;
}

.hp-product-card__meta-row .hp-stock-badge {
	font-size: 0.72rem !important;
	line-height: 1 !important;
	padding: 0.3rem 0.55rem !important;
	border-radius: 999px !important;
	white-space: nowrap !important;
	font-weight: 500 !important;
}

.hp-product-card__price-block {
	display: flex !important;
	flex-direction: column !important;
	align-items: flex-end !important;
	line-height: 1 !important;
	margin-left: auto !important;
	flex: 0 0 auto !important;
}
.hp-product-card__price-block .hp-product-card__price-old {
	font-size: 0.72rem !important;
	color: #8a7a5f !important;
	text-decoration: line-through !important;
	line-height: 1 !important;
	margin: 0 0 2px !important;
	display: block !important;
}
.hp-product-card__price-block .hp-product-card__price,
.hp-product-card__footer .hp-product-card__price {
	font-size: 1.25rem !important;   /* 20px — rebalanced, not dominant */
	font-weight: 700 !important;
	line-height: 1 !important;
	color: #1a1a1a !important;
	white-space: nowrap !important;
	margin: 0 !important;
	padding: 0 !important;
	letter-spacing: -0.005em !important;
	display: inline-block !important;
}

/* Full-width button (with normal side padding) */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--primary,
.hp-product-card__footer .hp-btn--outline,
.hp-product-card__footer .hp-btn--sm,
.hp-product-card__footer .hp-btn--block {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.4rem !important;
	width: 100% !important;
	max-width: 100% !important;
	flex: 0 0 auto !important;
	height: 2.35rem !important;
	min-height: 2.35rem !important;
	padding: 0 1rem !important;
	font-size: 0.86rem !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	box-sizing: border-box !important;
	border-radius: 8px !important;
}

/* Mobile: comfortable, no overflow */
@media (max-width: 640px) {
	.hp-product-card__body {
		padding: 0.7rem 0.75rem 0.8rem !important;
		gap: 0.4rem !important;
	}
	.hp-product-card__title {
		font-size: 0.85rem !important;
		line-height: 1.28 !important;
		min-height: 2.55em !important;
		max-height: 2.55em !important;
	}
	.hp-product-card__footer { padding-top: 0.45rem !important; gap: 0.5rem !important; }
	.hp-product-card__meta-row .hp-stock-badge {
		font-size: 0.63rem !important;
		padding: 0.22rem 0.42rem !important;
		line-height: 1 !important;
	}
	.hp-product-card__price-block .hp-product-card__price,
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1.125rem !important;   /* 18px mobile */
	}
	.hp-product-card__footer .hp-btn,
	.hp-product-card__footer .hp-btn--primary,
	.hp-product-card__footer .hp-btn--outline,
	.hp-product-card__footer .hp-btn--sm,
	.hp-product-card__footer .hp-btn--block {
		height: 2.15rem !important;
		font-size: 0.82rem !important;
		padding: 0 0.8rem !important;
	}
}

/* =====================================================================
 * 2. PHOTO WELL — RESET (Option B: clean neutral canvas, no double frame)
 *    Removes the beige `.hp-header` inner background and every nested
 *    border. Uses a single soft-neutral surface behind the product.
 * =====================================================================*/
.hp-product-card__image-wrap,
a.hp-product-card__image-wrap {
	aspect-ratio: 1 / 1 !important;
	background: #fbfaf6 !important;   /* whisper of warm neutral, NOT beige box */
	border: 0 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.35) !important;
	padding: 0 !important;
	overflow: hidden !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	position: relative !important;
	box-shadow: none !important;
}
.hp-product-card__image {
	width: 100% !important;
	height: 100% !important;
	padding: 8% !important;
	object-fit: contain !important;
	transition: transform 300ms ease !important;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
.hp-product-card:hover .hp-product-card__image { transform: scale(1.03) !important; }

/* Home featured grid + Diag hub products — same clean well */
.hp-home-featured-grid .hp-product-card__image-wrap,
.hp-diag-hub__product-image-wrap {
	aspect-ratio: 1 / 1 !important;
	background: #fbfaf6 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.35) !important;
	border: 0 !important;
}
.hp-home-featured-grid .hp-product-card__image,
.hp-diag-hub__product-image { padding: 8% !important; }

/* Kill any generic `.hp-photo-well` grey/beige inner backgrounds on subcat/section tiles */
.hp-photo-well,
.hp-photo-well--mini {
	background: #fbfaf6 !important;
	border: 0 !important;
	box-shadow: none !important;
}

/* =====================================================================
 * 3. CATEGORY TILE VISUAL RECOMPOSITION
 *    Consistent thumbnail-left composition: image | title+count | arrow
 * =====================================================================*/

.hp-subcat-hub__tile,
.hp-section-hub__tile {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	gap: 0.85rem !important;
	padding: 0.75rem 0.9rem !important;
	background: #ffffff !important;
	border: 1px solid rgba(210, 200, 178, 0.42) !important;
	border-radius: 10px !important;
	transition: border-color 180ms ease, box-shadow 220ms ease, transform 150ms ease !important;
	min-height: 92px !important;
	text-decoration: none !important;
	position: relative !important;
	text-align: left !important;
}
.hp-subcat-hub__tile:hover,
.hp-section-hub__tile:hover {
	border-color: rgba(190, 150, 90, 0.62) !important;
	box-shadow: 0 8px 20px -14px rgba(45, 36, 22, 0.28) !important;
	transform: translateY(-1px) !important;
}
.hp-subcat-hub__tile:focus-visible,
.hp-section-hub__tile:focus-visible {
	outline: 2px solid var(--hp-primary) !important;
	outline-offset: 3px !important;
}

.hp-subcat-hub__thumb,
.hp-section-hub__thumb {
	width: 60px !important;
	height: 60px !important;
	flex: 0 0 60px !important;
	border-radius: 8px !important;
	overflow: hidden !important;
	background: #fbfaf6 !important;
	border: 1px solid rgba(210, 200, 178, 0.5) !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
}
.hp-subcat-hub__thumb img,
.hp-section-hub__thumb img {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
	padding: 8% !important;
	background: transparent !important;
}

/* Title / count / arrow layout */
.hp-subcat-hub__tile > .min-w-0,
.hp-section-hub__tile > .min-w-0 {
	flex: 1 1 auto !important;
	min-width: 0 !important;
}
.hp-subcat-hub__tile h3,
.hp-section-hub__tile h3 {
	font-size: 0.88rem !important;
	font-weight: 600 !important;
	line-height: 1.28 !important;
	color: #1a1a1a !important;
	margin: 0 !important;
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
}
.hp-subcat-hub__count,
.hp-section-hub__count {
	font-size: 0.72rem !important;
	font-weight: 600 !important;
	color: #b47a1c !important;
	margin: 3px 0 0 !important;
	line-height: 1 !important;
}
.hp-subcat-hub__tile svg,
.hp-section-hub__tile svg {
	width: 1rem !important;
	height: 1rem !important;
	color: #b8a680 !important;
	flex-shrink: 0 !important;
	transition: transform 180ms ease, color 180ms ease !important;
}
.hp-subcat-hub__tile:hover svg,
.hp-section-hub__tile:hover svg {
	color: var(--hp-primary) !important;
	transform: translateX(2px) !important;
}

/* NO IMAGE fallback: hide the arrow inside broken images */
.hp-subcat-hub__tile[data-hp-img-kind="noimage"] .hp-subcat-hub__thumb {
	background: #f4efe3 !important;
}
.hp-subcat-hub__tile[data-hp-img-kind="noimage"] .hp-subcat-hub__thumb img {
	opacity: 0.55 !important;
}

/* Mobile spacing */
@media (max-width: 640px) {
	.hp-subcat-hub__tile,
	.hp-section-hub__tile {
		padding: 0.65rem 0.75rem !important;
		gap: 0.7rem !important;
		min-height: 82px !important;
	}
	.hp-subcat-hub__thumb,
	.hp-section-hub__thumb {
		width: 52px !important;
		height: 52px !important;
		flex: 0 0 52px !important;
	}
	.hp-subcat-hub__tile h3,
	.hp-section-hub__tile h3 { font-size: 0.82rem !important; }
	.hp-subcat-hub__count,
	.hp-section-hub__count { font-size: 0.68rem !important; }
}

/* =====================================================================
 * 4. DIAGNOSTIC-CARD whole-tile click (kept from P31B, still needed)
 * =====================================================================*/
.hp-diag-card { position: relative !important; cursor: pointer; }
.hp-diag-card__cta { position: static !important; }
.hp-diag-card__cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	border-radius: inherit;
	background: transparent;
}
.hp-diag-card:focus-within,
.hp-diag-card:has(.hp-diag-card__cta:focus-visible) {
	outline: 2px solid var(--hp-primary);
	outline-offset: 3px;
}
.hp-diag-card__cta:focus-visible { outline: none; }
.hp-diag-card__actions { position: static !important; }
.hp-diag-card__guide { position: relative !important; z-index: 3 !important; }
.hp-diag-card__head,
.hp-diag-card__title,
.hp-diag-card__body {
	position: relative; z-index: 2; pointer-events: none;
}
.hp-diag-card__cta > span,
.hp-diag-card__cta > svg { position: relative; z-index: 4; }

/* =====================================================================
 * 5. DIAGNOSTICS HEADING + INTRO SPACING
 * =====================================================================*/
#hp-diag-directions {
	padding-top: 1.25rem !important;
	padding-bottom: 0.4rem !important;
}
#hp-diag-directions > .mb-6 { margin-bottom: 0.85rem !important; }
#hp-diag-directions h2 {
	font-size: 1.25rem !important;
	font-weight: 700 !important;
	letter-spacing: -0.01em !important;
	line-height: 1.2 !important;
}
#hp-diag-directions p {
	font-size: 0.85rem !important;
	margin-top: 0.2rem !important;
	line-height: 1.4 !important;
}

.hp-diag-hub { margin: 0 0 1.4rem !important; }
.hp-diag-hub__head { margin: 0 0 0.85rem !important; }
.hp-diag-hub__title { font-size: 1.1rem !important; font-weight: 700 !important; line-height: 1.2 !important; }
.hp-diag-hub__body  { font-size: 0.85rem !important; margin-top: 0.2rem !important; line-height: 1.45 !important; }
section.hp-diag-hub .hp-diag-hub__head + .hp-diag-hub__group,
section.hp-diag-hub .hp-diag-hub__group:first-of-type { margin-top: 0.85rem !important; }
section.hp-diag-hub .hp-diag-hub__group { margin-top: 1.4rem !important; padding: 1rem 1.1rem 1.15rem !important; }

/* =====================================================================
 * 6. BENEFITS ROW SPACING (final)
 * =====================================================================*/
.hp-trust-tile {
	padding: 1.05rem 1.4rem !important;
	gap: 0.9rem !important;
	align-items: flex-start !important;
}
.hp-trust-tile__icon {
	width: 1.35rem !important;
	height: 1.35rem !important;
	margin-top: 0.15rem !important;
	color: var(--hp-primary) !important;
	flex-shrink: 0 !important;
}
.hp-trust-tile__title {
	font-size: 0.9rem !important;
	font-weight: 600 !important;
	line-height: 1.25 !important;
	margin: 0 !important;
}
.hp-trust-tile__detail {
	font-size: 0.78rem !important;
	color: var(--hp-text-secondary) !important;
	margin: 0.15rem 0 0 !important;
	line-height: 1.35 !important;
}
@media (max-width: 640px) {
	.hp-trust-tile { padding: 0.85rem 0.95rem !important; gap: 0.7rem !important; }
	.hp-trust-tile__icon { width: 1.15rem !important; height: 1.15rem !important; }
	.hp-trust-tile__title { font-size: 0.82rem !important; }
	.hp-trust-tile__detail { font-size: 0.72rem !important; }
}
/* ==========================================================================
 * PHASE 32 — FINAL VISUAL QA
 *   Additive CSS only. Product-card DOM/href logic untouched.
 * ==========================================================================*/

/* Category page header + short intro paragraph */
.hp-category-page .mb-6 { margin-bottom: 1.1rem !important; }
.hp-category-page h1.text-2xl,
.hp-category-page h1.sm\:text-3xl,
.hp-category-page h1 {
	font-size: 1.5rem !important;   /* 24 px */
	font-weight: 700 !important;
	letter-spacing: -0.01em !important;
	line-height: 1.15 !important;
	margin: 0 !important;
}
@media (min-width: 640px) {
	.hp-category-page h1 {
		font-size: 1.65rem !important;   /* 26.4 px on sm+ */
	}
}
.hp-cat-intro { margin-top: 0.5rem !important; }
.hp-cat-intro__lede {
	margin: 0 !important;
	font-size: 0.9rem !important;
	line-height: 1.5 !important;
	color: var(--hp-text-secondary, #4d453b) !important;
	max-width: 62rem !important;
}
.hp-cat-intro ul {
	margin: 0.3rem 0 0 1rem !important;
	padding: 0 !important;
	font-size: 0.88rem !important;
	color: var(--hp-text-secondary, #4d453b) !important;
	line-height: 1.5 !important;
}

/* Kill dead vertical space between title/intro and first grid */
.hp-category-page .mb-6 + .jshop_list_category,
.hp-category-page .mb-6 + .hp-section-hub,
.hp-category-page .mb-6 + .jshop_list_product,
.hp-category-page .mb-6 + .hp-product-grid { margin-top: 0.5rem !important; }
.hp-category-page .jshop_list_category { margin-bottom: 1.25rem !important; }
.hp-category-page .jshop_list_category > .grid { row-gap: 0.75rem !important; }

/* Prevent hero image from adding dead space when there IS a real intro */
.hp-cat-hero {
	max-width: 42rem !important;
	margin: 0.75rem 0 0 !important;
}
.hp-cat-hero img { max-height: 220px !important; object-fit: contain !important; }

/* Mobile: h1 smaller, intro compact */
@media (max-width: 640px) {
	.hp-category-page h1 { font-size: 1.3rem !important; }
	.hp-cat-intro__lede { font-size: 0.85rem !important; }
	.hp-cat-intro ul { font-size: 0.82rem !important; }
}

/* Final touch on photo well — keep Phase 31C setup, softer inner glow */
.hp-product-card__image-wrap,
a.hp-product-card__image-wrap {
	background:
		radial-gradient(120% 100% at 50% 40%,
			#ffffff 0%,
			#ffffff 45%,
			#faf6ec 80%,
			#f3ecd8 100%) !important;
	border: 0 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.32) !important;
}
.hp-home-featured-grid .hp-product-card__image-wrap,
.hp-diag-hub__product-image-wrap {
	background:
		radial-gradient(120% 100% at 50% 40%,
			#ffffff 0%,
			#ffffff 45%,
			#faf6ec 80%,
			#f3ecd8 100%) !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.32) !important;
}

/* Product card price down 1 pt for final balance */
.hp-product-card__price-block .hp-product-card__price,
.hp-product-card__footer .hp-product-card__price {
	font-size: 1.2rem !important;   /* 19.2 px — clear but never dominant */
}
@media (max-width: 640px) {
	.hp-product-card__price-block .hp-product-card__price,
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1.1rem !important;   /* 17.6 px mobile */
	}
}

/* Category tile visual — carry Phase 31C pattern, dial arrow contrast */
.hp-subcat-hub__tile svg,
.hp-section-hub__tile svg { color: #8c7a52 !important; }
.hp-subcat-hub__tile:hover svg,
.hp-section-hub__tile:hover svg { color: var(--hp-primary) !important; }

/* Diagnostics hub / benefits row spacing final */
.hp-trust-tile { padding: 1.05rem 1.4rem !important; gap: 0.9rem !important; }
.hp-diag-hub__title { font-size: 1.1rem !important; }
/* ==========================================================================
 * PHASE 32B — PRODUCT CARD ROW ALIGNMENT FIX
 *   Enforce fixed-zone card structure:
 *     1. image area (aspect 1:1)
 *     2. title area (fixed 2-line height)
 *     3. stock/price row (fixed height, stock LEFT, price RIGHT)
 *     4. button row (fixed height, full-width)
 *
 *   Product-card href logic UNTOUCHED (Phase 31D fix preserved).
 * ========================================================================== */

/* Card wrapper — equal-height flex column across every grid row */
.hp-product-card {
	display: flex !important;
	flex-direction: column !important;
	height: 100% !important;
	border: 1px solid rgba(210, 200, 178, 0.42) !important;
	border-radius: 12px !important;
	background: #ffffff !important;
	overflow: hidden !important;
}

/* Image area — clean, single subtle bottom seam only, no double frame */
.hp-product-card__image-wrap,
a.hp-product-card__image-wrap {
	aspect-ratio: 1 / 1 !important;
	background: #fbfaf6 !important;   /* Option B: clean near-white ivory */
	border: 0 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.32) !important;
	padding: 0 !important;
	overflow: hidden !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	position: relative !important;
	box-shadow: none !important;
}
.hp-product-card__image {
	width: 100% !important;
	height: 100% !important;
	padding: 8% !important;
	object-fit: contain !important;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
.hp-home-featured-grid .hp-product-card__image-wrap,
.hp-diag-hub__product-image-wrap {
	background: #fbfaf6 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.32) !important;
	border: 0 !important;
}

/* Body — 4 fixed zones stacked */
.hp-product-card__body {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	padding: 0.85rem 0.95rem 0.95rem !important;
	gap: 0 !important;              /* zones own their own spacing */
	min-height: 0 !important;
}

/* Zone 2: title — FIXED 2-line clamp height */
.hp-product-card__eyebrow { display: none !important; }
.hp-product-card__compat  { display: none !important; }
.hp-product-card__title {
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	min-height: 2.6em !important;
	max-height: 2.6em !important;
	font-size: 0.9rem !important;
	line-height: 1.3 !important;
	font-weight: 600 !important;
	color: #1a1a1a !important;
	margin: 0 0 0.7rem !important;
	flex: 0 0 auto !important;
}
.hp-product-card__title a,
.hp-product-card__body > a {
	color: inherit !important;
	text-decoration: none !important;
}

/* Zone 3 + 4: footer container — always pinned to card bottom */
.hp-product-card__footer {
	display: flex !important;
	flex-direction: column !important;
	margin-top: auto !important;    /* KEY: pushes stock/price + button to the bottom */
	padding: 0 !important;
	gap: 0.55rem !important;        /* between meta-row and button */
	min-width: 0 !important;
	border-top: 0 !important;
}

/* Zone 3: meta-row — stock LEFT, price RIGHT, one row, FIXED height */
.hp-product-card__meta-row {
	display: flex !important;
	flex-direction: row !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 0.6rem !important;
	min-width: 0 !important;
	flex-wrap: nowrap !important;
	height: 2rem !important;         /* fixed 32 px row so button below always aligns */
	min-height: 2rem !important;
	max-height: 2rem !important;
}

/* Stock badge — pinned left, no ambiguity */
.hp-product-card__meta-row .hp-product-card__stock,
.hp-product-card__footer   .hp-product-card__stock {
	margin: 0 !important;
	padding: 0 !important;
	flex: 0 1 auto !important;
	min-width: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: flex-start !important;
}
.hp-product-card__meta-row .hp-stock-badge {
	font-size: 0.72rem !important;
	line-height: 1 !important;
	padding: 0.32rem 0.6rem !important;
	border-radius: 999px !important;
	white-space: nowrap !important;
	font-weight: 500 !important;
	display: inline-flex !important;
	align-items: center !important;
}

/* Price block — pinned right */
.hp-product-card__price-block {
	display: flex !important;
	flex-direction: column !important;
	align-items: flex-end !important;
	line-height: 1 !important;
	margin-left: auto !important;
	flex: 0 0 auto !important;
	text-align: right !important;
}
.hp-product-card__price-block .hp-product-card__price-old {
	font-size: 0.72rem !important;
	color: #8a7a5f !important;
	text-decoration: line-through !important;
	line-height: 1 !important;
	margin: 0 0 2px !important;
	display: block !important;
}
.hp-product-card__price-block .hp-product-card__price,
.hp-product-card__footer .hp-product-card__price {
	font-size: 1.25rem !important;      /* 20 px desktop — visible not dominant */
	font-weight: 700 !important;
	line-height: 1 !important;
	color: #1a1a1a !important;
	white-space: nowrap !important;
	margin: 0 !important;
	padding: 0 !important;
	letter-spacing: -0.005em !important;
	display: inline-block !important;
}

/* Zone 4: button row — FIXED height, full width inside content, comfortable padding */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--primary,
.hp-product-card__footer .hp-btn--outline,
.hp-product-card__footer .hp-btn--sm,
.hp-product-card__footer .hp-btn--block {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.4rem !important;
	width: 100% !important;
	max-width: 100% !important;
	flex: 0 0 auto !important;
	height: 2.35rem !important;         /* 37.6 px — comfortable, not huge */
	min-height: 2.35rem !important;
	max-height: 2.35rem !important;
	padding: 0 1rem !important;
	font-size: 0.86rem !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	box-sizing: border-box !important;
	border-radius: 8px !important;
	text-align: center !important;
}

/* Mobile: everything scales down but the alignment invariants stay */
@media (max-width: 640px) {
	.hp-product-card__body {
		padding: 0.7rem 0.75rem 0.8rem !important;
	}
	.hp-product-card__title {
		font-size: 0.85rem !important;
		line-height: 1.28 !important;
		min-height: 2.55em !important;
		max-height: 2.55em !important;
		margin: 0 0 0.6rem !important;
	}
	.hp-product-card__meta-row {
		height: 1.85rem !important;
		min-height: 1.85rem !important;
		max-height: 1.85rem !important;
		gap: 0.4rem !important;
	}
	.hp-product-card__meta-row .hp-stock-badge {
		font-size: 0.63rem !important;
		padding: 0.24rem 0.48rem !important;
	}
	.hp-product-card__price-block .hp-product-card__price,
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1.15rem !important;   /* 18.4 px mobile */
	}
	.hp-product-card__footer .hp-btn {
		height: 2.15rem !important;
		font-size: 0.82rem !important;
		padding: 0 0.8rem !important;
	}
}
/* ==========================================================================
/* ==========================================================================
/* ==========================================================================
 * PHASE 32C — VISIBLE TOP-SPACING + CARD BOTTOM + PHOTO AREA FIX
 * ==========================================================================*/

/* ==== TASK 1: KILL DEAD TOP SPACE ========================================= */

/* The category page sits inside a `.mx-auto.max-w-7xl.px-4.py-8` wrapper
   whose py-8 = 32 px top+bottom. That single rule contributes >50 % of
   the visible dead space. Trim it to py-3 = 12 px. */
.hp-main .mx-auto.max-w-7xl.py-8,
main.hp-main .mx-auto.max-w-7xl.py-8,
.hp-main > .mx-auto.max-w-7xl {
	padding-top: 0.35rem !important;    /* 5.6 px — was 32 px */
	padding-bottom: 1.25rem !important;
}
/* Also kill the 4 px padding on main + the 24 px breadcrumb / pt-6
   container that sits between header and main content. */
main.hp-main,
main.hp-main.flex-1 { padding-top: 0 !important; }
.hp-app > .mx-auto.max-w-7xl.pt-6,
.hp-app > div.mx-auto.max-w-7xl { padding-top: 0.6rem !important; padding-bottom: 0 !important; }
.hp-main .mx-auto.max-w-7xl.py-8 > div:first-child {
	padding-top: 0 !important;
	margin-top: 0 !important;
}
.hp-main .mx-auto.max-w-7xl.py-8 > .jshop,
.hp-main .mx-auto.max-w-7xl.py-8 > .jshop.hp-category-page {
	padding-top: 0 !important;
	margin-top: 0 !important;
}
.hp-main { padding-top: 0 !important; }

/* Trim category-page inner container spacing */
.hp-category-page { padding-top: 0 !important; }
.hp-category-page .mb-6 { margin-bottom: 0.75rem !important; }

/* H1 sits directly under menu without inner top padding */
.hp-category-page > .mb-6 { padding-top: 0 !important; }
.hp-category-page h1 { margin-top: 0 !important; padding-top: 0 !important; }

/* Intro block right beneath H1, no big gap */
.hp-cat-intro { margin-top: 0.5rem !important; }

/* Grid starts close after intro / hero */
.hp-category-page .mb-6 + .jshop_list_category,
.hp-category-page .mb-6 + .hp-section-hub,
.hp-category-page .mb-6 + .jshop_list_product,
.hp-category-page .mb-6 + .hp-product-grid { margin-top: 0.5rem !important; }

/* ==== TASK 2: PRODUCT CARD BOTTOM — DESIGNED ROW ========================== */

.hp-product-card {
	display: flex !important;
	flex-direction: column !important;
	height: 100% !important;
	border: 1px solid rgba(210, 200, 178, 0.42) !important;
	border-radius: 12px !important;
	background: #ffffff !important;
	overflow: hidden !important;
}

.hp-product-card__body {
	display: flex !important;
	flex-direction: column !important;
	flex: 1 1 auto !important;
	padding: 0.75rem 0.85rem 0.85rem !important;
	gap: 0 !important;
	min-height: 0 !important;
}

.hp-product-card__eyebrow,
.hp-product-card__compat  { display: none !important; }

/* Title — FIXED 2-line clamp, margin below acts as separator */
.hp-product-card__title {
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	min-height: 2.55em !important;
	max-height: 2.55em !important;
	font-size: 0.875rem !important;
	line-height: 1.28 !important;
	font-weight: 600 !important;
	color: #1a1a1a !important;
	margin: 0 0 0.55rem !important;
	flex: 0 0 auto !important;
}

/* Footer — column, pinned to bottom, DESIGNED gap between meta-row and button */
.hp-product-card__footer {
	display: flex !important;
	flex-direction: column !important;
	margin-top: auto !important;
	padding: 0 !important;
	gap: 0.6rem !important;   /* ~10 px between meta-row and button */
	border-top: 0 !important;
}

/* Meta row — stock LEFT, price RIGHT, BASELINE aligned, fixed height */
.hp-product-card__meta-row {
	display: flex !important;
	flex-direction: row !important;
	align-items: baseline !important;    /* baseline align stock badge text + price */
	justify-content: space-between !important;
	gap: 0.6rem !important;
	min-width: 0 !important;
	flex-wrap: nowrap !important;
	height: auto !important;
	min-height: 1.8rem !important;
	max-height: 1.8rem !important;
}

/* Stock chip on LEFT — smaller, calmer */
.hp-product-card__meta-row .hp-product-card__stock,
.hp-product-card__footer   .hp-product-card__stock {
	margin: 0 !important;
	padding: 0 !important;
	flex: 0 1 auto !important;
	min-width: 0 !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: flex-start !important;
}
.hp-product-card__meta-row .hp-stock-badge {
	font-size: 0.7rem !important;         /* 11.2 px — calmer */
	line-height: 1 !important;
	padding: 0.3rem 0.55rem !important;
	border-radius: 999px !important;
	white-space: nowrap !important;
	font-weight: 500 !important;
	display: inline-flex !important;
	align-items: center !important;
	gap: 0.35rem !important;
	background: #e6f4ec !important;       /* soft green chip — designed */
	color: #1b6a3d !important;
	border: 1px solid rgba(27, 106, 61, 0.15) !important;
}

/* Price on RIGHT — 18-20 px, calm */
.hp-product-card__price-block {
	display: flex !important;
	flex-direction: column !important;
	align-items: flex-end !important;
	line-height: 1 !important;
	margin-left: auto !important;
	flex: 0 0 auto !important;
	text-align: right !important;
}
.hp-product-card__price-block .hp-product-card__price-old {
	font-size: 0.72rem !important;
	color: #8a7a5f !important;
	text-decoration: line-through !important;
	line-height: 1 !important;
	margin: 0 0 2px !important;
	display: block !important;
}
.hp-product-card__price-block .hp-product-card__price,
.hp-product-card__footer .hp-product-card__price {
	font-size: 1.15rem !important;   /* 18.4 px — visible not dominant */
	font-weight: 700 !important;
	line-height: 1 !important;
	color: #1a1a1a !important;
	white-space: nowrap !important;
	margin: 0 !important;
	padding: 0 !important;
	letter-spacing: -0.005em !important;
	display: inline-block !important;
}

/* Button — comfortable 42-44 px height, full-width in content */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--primary,
.hp-product-card__footer .hp-btn--outline,
.hp-product-card__footer .hp-btn--sm,
.hp-product-card__footer .hp-btn--block {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.4rem !important;
	width: 100% !important;
	max-width: 100% !important;
	flex: 0 0 auto !important;
	height: 2.65rem !important;         /* 42.4 px */
	min-height: 2.65rem !important;
	max-height: 2.65rem !important;
	padding: 0 1rem !important;
	font-size: 0.86rem !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	box-sizing: border-box !important;
	border-radius: 8px !important;
	text-align: center !important;
}

/* Mobile — mirror the invariants but scale down */
@media (max-width: 640px) {
	.hp-main .mx-auto.max-w-7xl.py-8 {
		padding-top: 0.5rem !important;
		padding-bottom: 1rem !important;
	}
	.hp-category-page .mb-6 { margin-bottom: 0.6rem !important; }
	.hp-product-card__body { padding: 0.65rem 0.7rem 0.75rem !important; }
	.hp-product-card__title {
		font-size: 0.83rem !important;
		line-height: 1.25 !important;
		min-height: 2.5em !important;
		max-height: 2.5em !important;
		margin: 0 0 0.45rem !important;
	}
	.hp-product-card__meta-row {
		min-height: 1.7rem !important;
		max-height: 1.7rem !important;
		gap: 0.35rem !important;
	}
	.hp-product-card__meta-row .hp-stock-badge {
		font-size: 0.63rem !important;
		padding: 0.24rem 0.45rem !important;
	}
	.hp-product-card__price-block .hp-product-card__price,
	.hp-product-card__footer .hp-product-card__price {
		font-size: 1.05rem !important;   /* 16.8 px mobile */
	}
	.hp-product-card__footer .hp-btn {
		height: 2.35rem !important;
		font-size: 0.82rem !important;
		padding: 0 0.8rem !important;
	}
}

/* ==== TASK 3: FLAT PHOTO AREA — NO INNER FRAME =========================== */

.hp-product-card__image-wrap,
a.hp-product-card__image-wrap {
	aspect-ratio: 1 / 1 !important;
	background: #ffffff !important;     /* flat white — no gradient */
	border: 0 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.22) !important;
	padding: 0 !important;
	overflow: hidden !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	position: relative !important;
	box-shadow: none !important;
}
.hp-product-card__image {
	width: 100% !important;
	height: 100% !important;
	padding: 10% !important;             /* comfortable breathing room, keeps product visible */
	object-fit: contain !important;
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}

/* Home featured grid + diag hub — same clean flat surface */
.hp-home-featured-grid .hp-product-card__image-wrap,
.hp-diag-hub__product-image-wrap {
	background: #ffffff !important;
	border: 0 !important;
	border-bottom: 1px solid rgba(210, 200, 178, 0.22) !important;
}

/* ─────────────────────────────────────────────────────────────
 * Phase 33 FIX3 — required attribute pill UI
 * Wired by template.js hpBuildPills(): each .hp-attr-block gets a
 * <div class="hp-attr-pills"> appended next to the native <select>
 * (or radio group). The native control is hidden but kept in the DOM
 * so JoomShopping's #block_price handler (window.jshop.setAttrValue)
 * keeps firing on pill click.
 * ───────────────────────────────────────────────────────────── */

.hp-attr-block__label .hp-required {
	color: #dc2626;
	margin-left: 0.125rem;
	font-weight: var(--hp-fw-medium);
}

.hp-attr-block__values.hp-attr-block__values--pills select,
.hp-attr-block__values.hp-attr-block__values--pills .input_type_radio {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0; border: 0;
	overflow: hidden; clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
}

.hp-attr-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 0.375rem;
}

.hp-attr-pill {
	display: inline-flex;
	justify-content: flex-start;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0.875rem;
	min-height: 2.5rem;
	border-radius: 999px;
	border: 1px solid var(--hp-border, #e5e7eb);
	background: var(--hp-card, #ffffff);
	color: var(--hp-text, #0f172a);
	font-size: var(--hp-fs-sm, 0.875rem);
	font-weight: var(--hp-fw-medium, 500);
	cursor: pointer;
	transition: border-color 120ms ease, background-color 120ms ease, box-shadow 120ms ease, transform 60ms ease;
	line-height: 1.25;
	text-align: left;
	appearance: none;
	-webkit-appearance: none;
}

.hp-attr-pill:hover {
	border-color: var(--hp-primary, #2563eb);
	background: color-mix(in oklab, var(--hp-primary, #2563eb) 6%, var(--hp-card, #ffffff));
}

.hp-attr-pill:focus-visible {
	outline: none;
	border-color: var(--hp-primary, #2563eb);
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #2563eb) 20%, transparent);
}

.hp-attr-pill:active {
	transform: translateY(1px);
}

.hp-attr-pill--active,
.hp-attr-pill[aria-checked="true"] {
	border-color: var(--hp-primary, #2563eb);
	background: var(--hp-primary, #2563eb);
	color: var(--hp-primary-foreground, #ffffff);
	box-shadow: 0 1px 2px 0 rgb(0 0 0 / 8%);
}

.hp-attr-pill--active:hover,
.hp-attr-pill[aria-checked="true"]:hover {
	background: color-mix(in oklab, var(--hp-primary, #2563eb) 88%, black);
	border-color: color-mix(in oklab, var(--hp-primary, #2563eb) 88%, black);
	color: var(--hp-primary-foreground, #ffffff);
}

.hp-attr-pill__img {
	width: 1.25rem;
	height: 1.25rem;
	object-fit: cover;
	border-radius: 0.25rem;
	flex-shrink: 0;
}

.hp-attr-pill__label {
	display: block;
	min-width: 0;
	text-align: left;
	white-space: normal;
}

.hp-attr-group-name {
	margin: 0.75rem 0 0.25rem;
	font-size: var(--hp-fs-sm, 0.875rem);
	font-weight: var(--hp-fw-medium, 500);
	color: var(--hp-text-muted, #64748b);
}

.hp-product-detail__required-note {
	margin: 0.5rem 0 0;
	font-size: var(--hp-fs-xs, 0.75rem);
	color: var(--hp-text-muted, #64748b);
}

.hp-product-detail__free-attrs .hp-attr-block input[type="text"],
.hp-product-detail__free-attrs .hp-attr-block textarea,
.hp-product-detail__free-attrs .hp-attr-block select {
	width: 100%;
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.375rem;
	padding: 0.5rem 0.75rem;
	font-size: var(--hp-fs-sm, 0.875rem);
	background: var(--hp-card, #ffffff);
}

@media (max-width: 640px) {
	.hp-attr-pill { padding: 0.5rem 0.75rem; min-height: 2.75rem; }
	.hp-attr-pills { gap: 0.375rem; }
}

/* ─────────────────────────────────────────────────────────────
 * Phase 33 FIX4 — shipping / payment tiles + button readability
 * ───────────────────────────────────────────────────────────── */

/* --- Shipping tiles --- */
.hp-shipping-tiles,
.hp-payment-tiles {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.75rem;
	margin-top: 1rem;
}

@media (min-width: 640px) {
	.hp-shipping-tiles { grid-template-columns: 1fr; }
	.hp-payment-tiles  { grid-template-columns: 1fr 1fr; }
}

.hp-shipping-tile,
.hp-payment-tile {
	display: grid;
	grid-template-columns: auto auto 1fr auto;
	align-items: center;
	gap: 0.875rem;
	padding: 1rem;
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.75rem;
	background: var(--hp-card, #ffffff);
	cursor: pointer;
	transition: border-color 120ms ease, box-shadow 120ms ease, background-color 120ms ease;
	position: relative;
}

.hp-payment-tile { grid-template-columns: auto auto 1fr; }

.hp-shipping-tile:hover,
.hp-payment-tile:hover {
	border-color: var(--hp-primary, #ea580c);
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 4%, var(--hp-card, #ffffff));
}

.hp-shipping-tile:focus-within,
.hp-payment-tile:focus-within {
	outline: none;
	border-color: var(--hp-primary, #ea580c);
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #ea580c) 20%, transparent);
}

.hp-shipping-tile--selected,
.hp-payment-tile--selected {
	border-color: var(--hp-primary, #ea580c);
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 6%, var(--hp-card, #ffffff));
	box-shadow: 0 1px 2px 0 rgb(0 0 0 / 6%);
}

.hp-shipping-tile__radio,
.hp-payment-tile__radio {
	width: 1.125rem;
	height: 1.125rem;
	border-radius: 999px;
	border: 2px solid color-mix(in oklab, currentColor 30%, transparent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	transition: border-color 120ms ease;
	background: #fff;
}

.hp-shipping-tile__dot,
.hp-payment-tile__dot {
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 999px;
	background: transparent;
	transition: background-color 120ms ease;
}

.hp-shipping-tile--selected .hp-shipping-tile__radio,
.hp-payment-tile--selected .hp-payment-tile__radio {
	border-color: var(--hp-primary, #ea580c);
}
.hp-shipping-tile--selected .hp-shipping-tile__dot,
.hp-payment-tile--selected .hp-payment-tile__dot {
	background: var(--hp-primary, #ea580c);
}

.hp-shipping-tile__icon,
.hp-payment-tile__icon {
	width: 2.5rem; height: 2.5rem;
	border-radius: 0.5rem;
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 8%, var(--hp-card, #ffffff));
	color: var(--hp-primary, #ea580c);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.hp-shipping-tile__icon svg,
.hp-payment-tile__icon svg { width: 1.25rem; height: 1.25rem; }

.hp-shipping-tile__body,
.hp-payment-tile__body {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
	min-width: 0;
}

.hp-shipping-tile__title,
.hp-payment-tile__title {
	font-weight: 600;
	color: var(--hp-text, #0f172a);
	font-size: 0.95rem;
	line-height: 1.35;
}

.hp-shipping-tile__desc,
.hp-payment-tile__desc {
	font-size: 0.8125rem;
	color: var(--hp-text-muted, #64748b);
	line-height: 1.4;
}

.hp-shipping-tile__price {
	font-weight: 700;
	color: var(--hp-text, #0f172a);
	font-size: 1rem;
	white-space: nowrap;
	padding-left: 0.5rem;
}

@media (max-width: 640px) {
	.hp-shipping-tile,
	.hp-payment-tile {
		grid-template-columns: auto 1fr auto;
		gap: 0.625rem;
	}
	.hp-shipping-tile__icon,
	.hp-payment-tile__icon { display: none; }
	.hp-shipping-tile__price { grid-column: 2 / -1; padding-left: 0; }
	.hp-shipping-tile__body { grid-column: 2; }
}

/* --- Checkout button readability fix (Phase 33 FIX4 / Task H) --- */
/* On hover/focus/active the primary button used to fade into black; text became
   unreadable. Keep the button bright and text-foreground contrast high. */

.hp-btn.hp-btn--primary,
button.hp-btn.hp-btn--primary,
a.hp-btn.hp-btn--primary {
	background: var(--hp-primary, #ea580c);
	color: var(--hp-primary-foreground, #ffffff);
	border: 1px solid var(--hp-primary, #ea580c);
	font-weight: 600;
	transition: background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease, transform 60ms ease;
}

.hp-btn.hp-btn--primary:hover,
button.hp-btn.hp-btn--primary:hover,
a.hp-btn.hp-btn--primary:hover {
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 90%, black);
	border-color: color-mix(in oklab, var(--hp-primary, #ea580c) 90%, black);
	color: #ffffff;
}

.hp-btn.hp-btn--primary:focus,
.hp-btn.hp-btn--primary:focus-visible {
	outline: none;
	background: var(--hp-primary, #ea580c);
	color: #ffffff;
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #ea580c) 30%, transparent);
}

.hp-btn.hp-btn--primary:active {
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 85%, black);
	color: #ffffff;
	transform: translateY(1px);
}

.hp-btn.hp-btn--primary[disabled],
.hp-btn.hp-btn--primary[aria-disabled="true"] {
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 40%, var(--hp-card, #ffffff));
	color: #ffffff;
	border-color: color-mix(in oklab, var(--hp-primary, #ea580c) 40%, var(--hp-card, #ffffff));
	cursor: not-allowed;
	opacity: 0.75;
}

/* ─────────────────────────────────────────────────────────────
 * Phase 33 FIX5 — force-hide native attribute <select>,
 *   clean cart summary, delivery-first checkout skeleton
 * ───────────────────────────────────────────────────────────── */

/* Force-hide the native <select> once pill converter has run.
 * The rule in FIX3 lost specificity vs "#comjshop select[name^=jshop_attr_id]"
 * (id-selector wins over class-selectors). !important on width/height forces
 * the select down to 1x1 so it does not reserve the 44px layout gap that
 * looked to buyers like a "dropdown still shown". */
.hp-attr-block__values.hp-attr-block__values--pills select,
#comjshop .hp-attr-block__values.hp-attr-block__values--pills select,
.hp-attr-block .hp-attr-block__values--pills select {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: -1px !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Kill the empty white strip that appeared under "Итог заказа" when all
 * conditional rows resolved to false. FIX5 rewrites the DL to always emit
 * Items + Delivery + Total, but this rule is defensive if some other
 * layout produces an empty row. */
.hp-cart-summary__list:empty { display: none !important; }
.hp-cart-summary__row:empty { display: none !important; }

/* Delivery-line placeholder text (right side of summary) — subdued grey */
.hp-cart-summary__row-value--delivery {
    color: var(--hp-text-muted, #64748b);
    font-weight: 500;
}

/* Delivery-first checkout container. Set on <body> for /checkout via JS.
 * Ensures shipping tiles section renders visually before address form,
 * even though the CheckoutController still calls display() in the wrong
 * order. Uses CSS grid `order:` on child sections. */
body.hp-checkout-page main,
body.hp-checkout-page main > .item-page,
body.hp-checkout-page main > article,
body.hp-checkout-page #jshop_module_content {
    display: flex;
    flex-direction: column;
}
body.hp-checkout-page .hp-checkout-shippings { order: 1; margin-bottom: 1.5rem; }
body.hp-checkout-page .jshop_payment          { order: 3; margin-top: 1.5rem; }
body.hp-checkout-page .jshop_checkout_address_form,
body.hp-checkout-page form[name="loginForm"],
body.hp-checkout-page form[name="loginForm"]  { order: 2; margin-top: 1.5rem; }
body.hp-checkout-page .jshop_previewfinish    { order: 4; margin-top: 1.5rem; }

/* Small badge shown above the address form to explain why fields are now dynamic. */
.hp-delivery-first-badge {
    display: inline-block;
    padding: 0.375rem 0.75rem;
    border-radius: 999px;
    background: color-mix(in oklab, var(--hp-primary, #ea580c) 10%, transparent);
    color: var(--hp-primary, #ea580c);
    font-size: 0.8125rem;
    font-weight: 600;
    margin-bottom: 0.75rem;
}

/* Dynamic-fields — hide/show based on data-hp-delivery-mode on <body>. */
body[data-hp-delivery-mode="parcel"] .hp-field--full-address,
body[data-hp-delivery-mode="pickup"] .hp-field--full-address { display: none !important; }

body[data-hp-delivery-mode="parcel"] .hp-field--company,
body[data-hp-delivery-mode="pickup"] .hp-field--company { display: none !important; }

body[data-hp-delivery-mode="parcel"] .hp-field--last-name,
body[data-hp-delivery-mode="pickup"] .hp-field--last-name { display: none !important; }

/* Omniva locker picker placeholder — only visible in parcel mode. */
.hp-omniva-picker { display: none; }
body[data-hp-delivery-mode="parcel"] .hp-omniva-picker { display: block; }

.hp-omniva-picker {
    padding: 0.875rem 1rem;
    border: 1px dashed var(--hp-border, #e5e7eb);
    border-radius: 0.5rem;
    background: var(--hp-nav, #f8fafc);
    margin-top: 0.5rem;
}
.hp-omniva-picker__label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--hp-text-muted, #64748b);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.25rem;
}
.hp-omniva-picker__select {
    width: 100%;
    border: 1px solid var(--hp-border, #e5e7eb);
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem;
    background: var(--hp-card, #ffffff);
    font-size: 0.875rem;
}

/* Delivery-first mode: hide the customer form's own "Продолжить" button so
 * the buyer only sees the checkout-level continue button below the payment
 * section. */
body.hp-checkout-page form[name="loginForm"] > .flex.items-center.gap-3:has(button[value="step2"]) { display: none; }

/* ─────────────────────────────────────────────────────────────
 * Phase 039 — homepage first-screen restructure + brand filter
 * ───────────────────────────────────────────────────────────── */

/* Hide the hero mini card rank number (defensive — PHP already skips it) */
.hp-hero-mini__rank { display: none !important; }

/* Compact secondary hint replacing the old "К маркам" button */
.hp-hero-hint {
	color: var(--hp-text-muted, #64748b);
	font-size: 0.875rem;
	padding: 0 0.25rem;
}

/* Trust tile — clickable variant */
.hp-trust-tile--link {
	text-decoration: none;
	color: inherit;
	cursor: pointer;
	transition: background-color 120ms ease, transform 60ms ease;
}
.hp-trust-tile--link:hover {
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 4%, var(--hp-card, #ffffff));
}
.hp-trust-tile--link:hover .hp-trust-tile__icon {
	color: var(--hp-primary, #ea580c);
}
.hp-trust-tile--link:active { transform: translateY(1px); }

/* "What diagnostics can do" section */
.hp-diag-usecase-grid { }
.hp-diag-usecase {
	display: block;
	padding: 1rem 1.1rem;
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.6rem;
	background: var(--hp-card, #ffffff);
	color: var(--hp-text, #0f172a);
	text-decoration: none;
	transition: border-color 120ms ease, box-shadow 120ms ease, transform 60ms ease;
}
.hp-diag-usecase:hover {
	border-color: color-mix(in oklab, var(--hp-primary, #ea580c) 40%, var(--hp-border, #e5e7eb));
	box-shadow: 0 4px 12px -8px rgb(0 0 0 / 15%);
}
.hp-diag-usecase__icon {
	display: inline-flex;
	align-items: center; justify-content: center;
	width: 1.85rem; height: 1.85rem;
	border-radius: 0.4rem;
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 10%, var(--hp-card, #ffffff));
	color: var(--hp-primary, #ea580c);
	margin-bottom: 0.6rem;
}
.hp-diag-usecase__icon svg { width: 1.1rem; height: 1.1rem; }
.hp-diag-usecase__title {
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1.25;
	margin: 0 0 0.35rem;
	color: var(--hp-text, #0f172a);
}
.hp-diag-usecase__body {
	font-size: 0.8125rem;
	line-height: 1.4;
	color: var(--hp-text-muted, #64748b);
	margin: 0;
}

/* Brand filter on /other-marques page */
.hp-other-filter {
	margin: 1.25rem auto 1.5rem;
	max-width: 68rem;
	padding: 0 1rem;
}
.hp-other-filter__inner {
	background: var(--hp-card, #ffffff);
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.75rem;
	padding: 1rem 1.25rem;
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.625rem;
}
.hp-other-filter__label {
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--hp-text-muted, #64748b);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.hp-other-filter__select {
	width: 100%;
	padding: 0.6rem 0.85rem;
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.4rem;
	background: var(--hp-card, #ffffff);
	color: var(--hp-text, #0f172a);
	font-size: 0.95rem;
	font-weight: 500;
	cursor: pointer;
}
.hp-other-filter__select:focus {
	outline: none;
	border-color: var(--hp-primary, #ea580c);
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #ea580c) 18%, transparent);
}
.hp-other-filter__caution {
	font-size: 0.8125rem;
	color: var(--hp-text-muted, #64748b);
	margin: 0;
	line-height: 1.4;
}
.hp-other-filter__empty {
	margin-top: 0.4rem;
	padding: 0.75rem 0.85rem;
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 6%, var(--hp-card, #ffffff));
	border: 1px solid color-mix(in oklab, var(--hp-primary, #ea580c) 25%, var(--hp-border, #e5e7eb));
	border-radius: 0.5rem;
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}
.hp-other-filter__empty-text {
	font-size: 0.875rem;
	color: var(--hp-text, #0f172a);
	margin: 0;
}
.hp-other-filter__universal {
	display: inline-flex;
	align-items: center;
	gap: 0.375rem;
	color: var(--hp-primary, #ea580c);
	font-weight: 600;
	font-size: 0.875rem;
	text-decoration: none;
}
.hp-other-filter__universal:hover { text-decoration: underline; }

/* ===== Phase 040 — real logo asset, mobile home entry ===== */
.hp-logo-link { padding: 2px 0; }
.hp-logo-img {
	display: block;
	height: 30px;
	width: auto;
	max-width: 200px;
}
@media (min-width: 768px) {
	.hp-logo-img { height: 36px; max-width: 240px; }
}
@media (min-width: 1024px) {
	.hp-logo-img { height: 40px; max-width: 260px; }
}
.hp-footer-logo-link { padding: 2px 0; margin-bottom: 4px; }
.hp-footer-logo-img {
	display: block;
	height: 24px;
	width: auto;
	max-width: 160px;
	opacity: 0.95;
}
/* Mobile Home entry - subtle emphasis (top of mobile nav). */
.hp-topnav__item--home a {
	background: rgba(255, 90, 30, 0.06);
	color: hsl(var(--foreground));
}
.hp-topnav__item--home a svg {
	color: hsl(var(--primary));
}
/* ===== /Phase 040 ===== */

/* =========================================================================
 * Phase 041 — additive CSS
 *   1. CTA button state fixes (readable text on hover/focus/active/tap)
 *   2. Text logo (replaces /images/logo.png)
 *   3. Mobile home icon button in header top bar
 *   4. Diagnostic finder page styling
 *   5. Cookie-banner safety-net hide (belt-and-suspenders; module already
 *      unpublished at DB level — see cookie_banner_temp_disable.md)
 * ========================================================================= */

/* -------------------------------------------------------------------------
 * 1) CTA primary button — keep foreground WHITE on every interaction state.
 *
 *    The previous Tailwind-utility only set hover; on mobile tap or focus,
 *    the browser applied its default darken filter and the text/arrow lost
 *    contrast against orange. -webkit-tap-highlight-color and explicit color
 *    rules keep the label white with a subtle background shift, so BOTH the
 *    label and the arrow stay clearly readable.
 * ------------------------------------------------------------------------- */
.hp-cta-primary {
	-webkit-tap-highlight-color: rgba(0, 0, 0, 0.10);
	transition: background-color 0.15s ease-out, box-shadow 0.15s ease-out, transform 0.05s linear;
}
.hp-cta-primary,
.hp-cta-primary:link,
.hp-cta-primary:visited,
.hp-cta-primary:hover,
.hp-cta-primary:focus,
.hp-cta-primary:focus-visible,
.hp-cta-primary:active {
	color: var(--hp-primary-foreground, #ffffff) !important;
	text-decoration: none;
}
.hp-cta-primary svg,
.hp-cta-primary:hover svg,
.hp-cta-primary:focus svg,
.hp-cta-primary:focus-visible svg,
.hp-cta-primary:active svg {
	color: var(--hp-primary-foreground, #ffffff);
	stroke: currentColor;
}
.hp-cta-primary:hover {
	background-color: var(--hp-primary-hover, #c55c0a) !important;
}
.hp-cta-primary:focus-visible {
	outline: 2px solid #ffffff;
	outline-offset: 2px;
	box-shadow: 0 0 0 4px rgba(232, 112, 32, 0.35);
}
.hp-cta-primary:active {
	background-color: var(--hp-primary-hover, #c55c0a) !important;
	transform: translateY(1px);
}

/* -------------------------------------------------------------------------
 * 2) Text logo — replaces the /images/logo.png bitmap that had a black
 *    "HID" segment invisible on the dark header background. Text logo is
 *    always crisp, always contrast-safe, and uses a canonical ".LV".
 * ------------------------------------------------------------------------- */
.hp-logo-link--text,
.hp-footer-logo-link--text {
	text-decoration: none;
}
.hp-logo-text {
	display: inline-flex;
	align-items: baseline;
	gap: 0;
	font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-weight: 800;
	font-size: 1.35rem;
	letter-spacing: 0.01em;
	line-height: 1;
	color: var(--hp-primary-foreground, #ffffff);
	white-space: nowrap;
}
.hp-logo-text__name {
	color: var(--hp-primary-foreground, #ffffff);
}
.hp-logo-text__dot {
	color: var(--hp-primary, #e87020);
	margin-left: 1px;
}
.hp-logo-text__accent {
	color: var(--hp-primary, #e87020);
}
@media (min-width: 640px) {
	.hp-logo-text { font-size: 1.5rem; }
}
@media (min-width: 1024px) {
	.hp-logo-text { font-size: 1.625rem; }
}
.hp-logo-text--footer {
	font-size: 1.15rem;
	opacity: 0.95;
}

/* -------------------------------------------------------------------------
 * 3) Mobile direct-Home control in the top header row.
 *    Sits between the hamburger and the logo, mobile-only (lg:hidden).
 * ------------------------------------------------------------------------- */
.hp-home-mobile {
	color: var(--hp-primary-foreground, #ffffff);
	text-decoration: none;
	transition: background-color 0.15s ease-out, color 0.15s ease-out;
}
.hp-home-mobile:hover,
.hp-home-mobile:focus-visible {
	background-color: rgba(232, 112, 32, 0.14);
	color: var(--hp-primary, #e87020);
}

/* -------------------------------------------------------------------------
 * 4) Diagnostic finder page — 3-column grid: brand, task, results.
 *    Client-only interactive; JS lives in template index.php.
 * ------------------------------------------------------------------------- */
#hp-diag-finder { color: var(--hp-foreground); }
.hp-finder-grid { display: grid; gap: 1.5rem; }
@media (min-width: 1024px) {
	.hp-finder-grid { grid-template-columns: 1fr 1fr 1.2fr; }
}
.hp-finder-col {
	background: var(--hp-card, #ffffff);
	border: 1px solid var(--hp-border, #e5e2df);
	border-radius: 12px;
	padding: 1.25rem;
}
.hp-finder-col--results {
	background: linear-gradient(180deg,
		color-mix(in oklab, var(--hp-primary, #e87020) 5%, var(--hp-card, #ffffff)) 0%,
		var(--hp-card, #ffffff) 55%);
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 25%, var(--hp-border, #e5e2df));
}
.hp-finder-col__title {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 1rem;
	font-weight: 600;
	color: var(--hp-foreground, #1a1a1a);
	margin: 0 0 0.75rem 0;
}
.hp-finder-col__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.5rem;
	height: 1.5rem;
	border-radius: 999px;
	background: var(--hp-primary, #e87020);
	color: var(--hp-primary-foreground, #ffffff);
	font-size: 0.75rem;
	font-weight: 700;
}
.hp-finder-choices {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}
.hp-finder-choice {
	display: block;
	width: 100%;
	text-align: left;
	padding: 0.6rem 0.85rem;
	border: 1px solid var(--hp-border, #e5e2df);
	border-radius: 8px;
	background: transparent;
	color: var(--hp-foreground, #1a1a1a);
	font-size: 0.9rem;
	font-weight: 500;
	cursor: pointer;
	transition: border-color 0.15s ease-out, background-color 0.15s ease-out, color 0.15s ease-out;
	-webkit-tap-highlight-color: rgba(0, 0, 0, 0.10);
}
.hp-finder-choice:hover {
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 55%, var(--hp-border, #e5e2df));
	color: var(--hp-primary, #e87020);
}
.hp-finder-choice:focus-visible {
	outline: 2px solid var(--hp-primary, #e87020);
	outline-offset: 2px;
}
.hp-finder-choice.is-selected {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 10%, transparent);
	border-color: var(--hp-primary, #e87020);
	color: var(--hp-primary, #e87020);
	font-weight: 600;
}
.hp-finder-results__hint {
	margin: 0.25rem 0 0 0;
	color: var(--hp-muted-foreground, #6b6660);
	font-size: 0.9rem;
	line-height: 1.5;
}
.hp-finder-results__list {
	list-style: none;
	padding: 0;
	margin: 0.25rem 0 0 0;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}
.hp-finder-results__item { margin: 0; padding: 0; }
.hp-finder-results__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 0.7rem 0.9rem;
	background: #ffffff;
	border: 1px solid var(--hp-border, #e5e2df);
	border-radius: 8px;
	color: var(--hp-foreground, #1a1a1a);
	font-size: 0.92rem;
	font-weight: 500;
	text-decoration: none;
	transition: border-color 0.15s ease-out, box-shadow 0.15s ease-out;
}
.hp-finder-results__link:hover,
.hp-finder-results__link:focus-visible {
	border-color: var(--hp-primary, #e87020);
	color: var(--hp-primary, #e87020);
	box-shadow: 0 4px 14px -8px rgba(232, 112, 32, 0.35);
	text-decoration: none;
}
.hp-finder-results__label { flex: 1 1 auto; min-width: 0; }
.hp-finder-results__arrow { width: 1rem; height: 1rem; flex-shrink: 0; color: var(--hp-primary, #e87020); }
.hp-finder-compat {
	margin-top: 1rem;
	padding: 0.65rem 0.85rem;
	background: color-mix(in oklab, var(--hp-primary, #e87020) 6%, #ffffff);
	border-left: 3px solid var(--hp-primary, #e87020);
	border-radius: 4px;
}
.hp-finder-compat__text {
	margin: 0;
	color: var(--hp-muted-foreground, #6b6660);
	font-size: 0.78rem;
	line-height: 1.5;
}
.hp-finder-alt { text-decoration: none; }
.hp-finder-alt:hover { text-decoration: none; }

/* -------------------------------------------------------------------------
 * 5) Cookie-banner safety net (belt-and-suspenders).
 *
 *    The 8 mod_ebstickycookienotice module instances (ids 250, 251, 252,
 *    254, 263, 265, 274, 275) are already published=0 in the staging DB —
 *    see cookie_banner_temp_disable.md for exact ids, positions and restore
 *    steps. This rule is a safety net in case any late-loading module or
 *    third-party script re-inserts a cookie banner: on staging only, any
 *    element carrying a "cookie" / "consent" / "gdpr" / "ebssn" hook is
 *    hidden. Live rollout must (a) re-publish the correct language modules
 *    and (b) remove this block so real consent UI can render again.
 * ------------------------------------------------------------------------- */
body.hp-stage-cookie-off #ebssnBox,
body.hp-stage-cookie-off .ebssn-box,
body.hp-stage-cookie-off [class*="ebssn"],
body.hp-stage-cookie-off [id*="ebssn"],
body.hp-stage-cookie-off [class*="cookie-notice"],
body.hp-stage-cookie-off [id*="cookie-notice"],
body.hp-stage-cookie-off [class*="cookie-banner"],
body.hp-stage-cookie-off [id*="cookie-banner"],
body.hp-stage-cookie-off [class*="cookie-consent"],
body.hp-stage-cookie-off [id*="cookie-consent"],
body.hp-stage-cookie-off [id*="cookieConsent"],
body.hp-stage-cookie-off [class*="cookieConsent"],
body.hp-stage-cookie-off [class*="gdpr-"],
body.hp-stage-cookie-off [id*="gdpr-"] {
	display: none !important;
	visibility: hidden !important;
}
/* ===== /Phase 041 ===== */

/* =====================================================================
 * Phase 042 — WINDOW 2 CART CHECKOUT (currency, safe-stop, flash, hidden)
 * Scope: cart + checkout only. No homepage / header / finder impact.
 * ===================================================================== */

/* Safe-stop panel shown after "Confirm order" on the review section.
   Signals to buyer that staging does NOT create a real order. */
.hp-safe-stop {
	border: 1px solid #f59e0b;
	background: #fffbeb;
	color: #78350f;
	border-radius: 12px;
	padding: 20px 22px;
}
.hp-safe-stop.hidden { display: none; }
.hp-safe-stop__title {
	font-size: 16px;
	font-weight: 700;
	margin: 0 0 8px;
	color: #92400e;
	line-height: 1.3;
}
.hp-safe-stop__body {
	font-size: 14px;
	margin: 0 0 10px;
	line-height: 1.5;
}
.hp-safe-stop__list {
	list-style: disc;
	padding-left: 20px;
	margin: 0 0 6px;
	font-size: 13px;
	line-height: 1.6;
}
.hp-safe-stop__list li { margin-bottom: 4px; }

/* Anchor scroll flash (briefly highlights the section the buyer just jumped to). */
.hp-flash {
	animation: hpFlash 1.5s ease-out;
}
@keyframes hpFlash {
	0%   { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.5); }
	40%  { box-shadow: 0 0 0 8px rgba(59, 130, 246, 0.18); }
	100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); }
}

/* Fallback .hidden helper (in case Tailwind is missing on the checkout page). */
.hp-safe-stop.hidden,
#hp-checkout-safe-stop.hidden { display: none !important; }

/* Cart line total: nudge tabular-nums so currency alignment is clean. */
.hp-cart-line__total p,
.hp-cart-summary__row-value,
.hp-cart-summary__total-value {
	font-variant-numeric: tabular-nums;
}

/* ===== /Phase 042 ===== */

/* ============================================================================
 * Phase 043 — finder result desc block (paragraph shown above the item list).
 * ==========================================================================*/
.hp-finder-results__desc {
	margin: 0 0 0.75rem;
	padding: 0.75rem 0.9rem;
	background: color-mix(in oklab, var(--hp-primary, #e87020) 5%, #fff);
	border: 1px solid color-mix(in oklab, var(--hp-primary, #e87020) 22%, var(--hp-border, #e2d9cc));
	border-radius: 0.5rem;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var(--hp-text, #2d2416);
}
.hp-finder-results__list { margin-top: 0.25rem; }
/* ===== /Phase 043 ===== */

/* ==========================================================================
 * Phase 044 — WINDOW 2: cart / checkout UX fixes
 * Scope: only cart/checkout classes + product-detail buy row.
 *   • Mobile add-to-cart button collapsed-strip fix
 *   • True step-by-step checkout (only one .hp-checkout-step visible)
 *   • Progress bar
 *   • Delivery-mode driven customer field visibility
 *   • Second-address checkbox permanently hidden
 * ========================================================================== */

/* ---- (B) Product page mobile add-to-cart button ---- */
/* Root cause: the .hp-btn had no explicit min-height and the mobile buy-row
   became a plain flex column where the button collapsed if any parent had
   line-height:1 or align-items:center with no intrinsic height. Force
   min-height + full-width + readable padding + icon-first alignment. */
.hp-product-detail__buy-row {
	align-items: stretch;
}
.hp-product-detail__cta,
button.hp-product-detail__cta,
a.hp-product-detail__cta {
	min-height: 52px !important;
	height: auto !important;
	padding: 0 1.25rem !important;
	font-size: 1rem !important;
	line-height: 1.2 !important;
	font-weight: 600 !important;
	gap: 0.5rem !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	white-space: nowrap;
}
.hp-product-detail__cta > svg,
button.hp-product-detail__cta > svg {
	width: 1.15rem !important;
	height: 1.15rem !important;
	flex: 0 0 auto;
}
@media (max-width: 640px) {
	.hp-product-detail__buy-row {
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 0.6rem !important;
	}
	.hp-product-detail__qty {
		align-self: flex-start;
		height: 48px !important;
	}
	.hp-product-detail__qty-btn { height: 48px !important; width: 44px !important; }
	.hp-product-detail__qty-input { height: 48px !important; line-height: 48px !important; width: 3.2rem !important; }
	.hp-product-detail__cta,
	button.hp-product-detail__cta {
		width: 100% !important;
		min-height: 52px !important;
		padding: 0 1.25rem !important;
		font-size: 1.05rem !important;
		line-height: 1.15 !important;
		font-weight: 600 !important;
	}
}

/* ---- (C) True step visibility ---- */
/* Every .hp-checkout-step is hidden by default. JS reveals one at a time
   via the [hidden] attribute + .hp-checkout-step--active. The [hidden]
   attribute is the strongest signal so it wins even if grid utilities
   would otherwise show the section. */
.hp-checkout-step[hidden] { display: none !important; }
.hp-checkout-step--active { display: block !important; }
.hp-checkout-step--active.grid { display: grid !important; }

/* Belt-and-braces: while JS boot is pending, all four steps are rendered on
   the raw single-page. Hide 2/3/4 until JS marks step 1 active. */
body.hp-checkout-page:not([data-hp-checkout-step]) .hp-checkout-step[data-hp-step-id="2"],
body.hp-checkout-page:not([data-hp-checkout-step]) .hp-checkout-step[data-hp-step-id="3"],
body.hp-checkout-page:not([data-hp-checkout-step]) .hp-checkout-step[data-hp-step-id="4"] {
	display: none !important;
}

/* ---- (C) Progress bar ---- */
.hp-checkout-progress {
	display: flex;
	gap: 0.4rem;
	flex-wrap: wrap;
	margin: 0 0 1.5rem;
	padding: 0.75rem 1rem;
	background: var(--hp-card, #fff);
	border: 1px solid var(--hp-border, #e2d9cc);
	border-radius: 0.6rem;
	box-shadow: 0 1px 2px rgba(0,0,0,0.03);
}
.hp-checkout-progress__step {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	flex: 1 1 0;
	min-width: 0;
	padding: 0.5rem 0.6rem;
	border: 0;
	background: transparent;
	color: var(--hp-muted-text, #7a6a52);
	font-size: 0.85rem;
	font-weight: 500;
	cursor: pointer;
	border-radius: 0.4rem;
	transition: background 120ms ease, color 120ms ease;
}
.hp-checkout-progress__step:disabled {
	cursor: not-allowed;
	opacity: 0.6;
}
.hp-checkout-progress__step:not(:disabled):hover {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 8%, #fff);
	color: var(--hp-text, #2d2416);
}
.hp-checkout-progress__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.6rem;
	height: 1.6rem;
	border-radius: 999px;
	background: color-mix(in oklab, var(--hp-primary, #e87020) 10%, #fff);
	color: var(--hp-muted-text, #7a6a52);
	font-weight: 700;
	font-size: 0.82rem;
	border: 1px solid var(--hp-border, #e2d9cc);
	flex: 0 0 auto;
}
.hp-checkout-progress__label {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.hp-checkout-progress__step--active {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 14%, #fff);
	color: var(--hp-text, #2d2416);
}
.hp-checkout-progress__step--active .hp-checkout-progress__num {
	background: var(--hp-primary, #e87020);
	color: #fff;
	border-color: var(--hp-primary, #e87020);
}
.hp-checkout-progress__step--done .hp-checkout-progress__num {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 30%, #fff);
	color: #fff;
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 40%, #fff);
}
@media (max-width: 640px) {
	.hp-checkout-progress { padding: 0.5rem; gap: 0.25rem; }
	.hp-checkout-progress__step { padding: 0.4rem 0.35rem; font-size: 0.75rem; gap: 0.35rem; }
	.hp-checkout-progress__num { width: 1.4rem; height: 1.4rem; font-size: 0.75rem; }
	.hp-checkout-progress__label { display: none; }
	.hp-checkout-progress__step--active .hp-checkout-progress__label { display: inline; }
}

/* ---- (D) Second-address checkbox: safety net ----
   PHP already dropped the section, but if any cached HTML still contains it
   the CSS blocks it. Also hide any legacy JSHOP_USE_DIFFERENT_DELIVERY_ADDRESS
   text node containers by attribute match. */
label:has(> input[name="d_adress"]),
#hp_d_adress,
input[name="d_adress"]:not([type="hidden"]),
#hp_mailing_block {
	display: none !important;
	visibility: hidden !important;
	height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
}

/* ---- (E) Delivery-mode driven customer field visibility ---- */
/* Default (before JS sets mode): show only universal fields (--any). */
.hp-cust-fld { display: block; }
body[data-hp-delivery-mode="parcel"]  .hp-cust-fld:not(.hp-cust-fld--any):not(.hp-cust-fld--parcel)  { display: none !important; }
body[data-hp-delivery-mode="courier"] .hp-cust-fld:not(.hp-cust-fld--any):not(.hp-cust-fld--courier) { display: none !important; }
body[data-hp-delivery-mode="pickup"]  .hp-cust-fld:not(.hp-cust-fld--any):not(.hp-cust-fld--pickup)  { display: none !important; }

/* Locker picker: exists only for parcel mode. */
body:not([data-hp-delivery-mode="parcel"]) .hp-omniva-picker { display: none !important; }
.hp-omniva-picker { padding: 0 !important; }

/* Field error state (used by JS validator). */
.hp-field__input--err {
	border-color: #dc2626 !important;
	box-shadow: 0 0 0 2px rgba(220,38,38,0.15) !important;
}

/* ---- (C) Step-nav row polish ---- */
.hp-checkout-step-nav { margin-top: 1.25rem; }
@media (max-width: 640px) {
	.hp-checkout-step-nav { flex-direction: column; align-items: stretch; }
	.hp-checkout-step-nav .hp-btn { width: 100%; justify-content: center; }
}

/* ---- Customer step hint copy ---- */
.hp-cust-fields-hint {
	margin: 0.25rem 0 0.75rem;
	color: var(--hp-muted-text, #7a6a52);
	font-size: 0.85rem;
	line-height: 1.35;
}
.hp-cust-fields-hint:empty { display: none; }

/* ===== /Phase 044 ===== */

/* ============================================================================
 * Phase 044 — homepage header contrast + finder placement cleanup
 * ----------------------------------------------------------------------------
 *  A) Logo readability — HIDPLANET name must be dark on the light warm header.
 *     Previous CSS pointed to --hp-primary-foreground (white); it stayed white
 *     even after the header background lightened. Owner reported it was almost
 *     invisible on mobile. Force to --hp-text; keep .LV orange. `.hp-logo-text`
 *     color is also normalized so if the .LV markup ever regresses to a single
 *     span, the base color is still dark, not white.
 *  B) Mobile Home icon (.hp-home-mobile) — was rendered in white; make it a
 *     small pill with warm tint + border for clear visibility. Keeps 36x36 tap
 *     size and lg:hidden gate from Phase 041/042.
 *  C) Diagnostics CTA card — clean replacement for the raw inline finder block
 *     that used to render on /diagnostics (cat 77). The block was too "raw"
 *     per owner review; the proper finder page is at /diagnostics/finder.
 * ==========================================================================*/

/* A) Logo readability — force dark text; .LV stays accent-orange */
.hp-logo-text,
.hp-logo-text__name {
	color: var(--hp-text, #2d2416);
}
.hp-logo-text__dot,
.hp-logo-text__accent {
	color: var(--hp-primary, #e87020);
}
.hp-logo-link:hover .hp-logo-text__name { color: var(--hp-primary, #e87020); }
.hp-logo-link:focus-visible {
	outline: 2px solid var(--hp-primary, #e87020);
	outline-offset: 2px;
	border-radius: 4px;
}
.hp-footer-logo-link .hp-logo-text__name { color: var(--hp-text, #2d2416); }

/* B) Home control visibility — light warm-tinted pill with dark icon */
a.hp-home-mobile,
a.hp-home-mobile:link,
a.hp-home-mobile:visited {
	color: var(--hp-text, #2d2416);
	background: color-mix(in oklab, var(--hp-primary, #e87020) 8%, #fff);
	border: 1px solid color-mix(in oklab, var(--hp-primary, #e87020) 28%, var(--hp-border, #e2d9cc));
	text-decoration: none;
}
a.hp-home-mobile:hover {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 16%, #fff);
	color: var(--hp-primary, #e87020);
	border-color: var(--hp-primary, #e87020);
}
a.hp-home-mobile:focus,
a.hp-home-mobile:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #e87020) 32%, transparent);
	color: var(--hp-primary, #e87020);
	border-color: var(--hp-primary, #e87020);
}
a.hp-home-mobile:active {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 20%, #fff);
}
a.hp-home-mobile svg {
	color: currentColor;
	stroke: currentColor;
}

/* C) Diagnostics CTA card — replaces the raw inline finder on /diagnostics */
.hp-diag-cta-card {
	margin: 20px 0 24px;
	padding: 18px 20px;
	background: #ffffff;
	border: 1px solid color-mix(in oklab, var(--hp-primary, #e87020) 30%, var(--hp-border, #e2d9cc));
	border-radius: 14px;
	box-shadow: 0 1px 2px rgba(15,23,42,0.04);
	display: flex;
	flex-direction: column;
	gap: 12px;
}
@media (min-width: 768px) {
	.hp-diag-cta-card {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 20px;
	}
}
.hp-diag-cta-card__body { flex: 1 1 auto; min-width: 0; }
.hp-diag-cta-card__title {
	margin: 0 0 4px;
	font-size: 18px;
	font-weight: 700;
	color: var(--hp-text, #2d2416);
	line-height: 1.25;
}
.hp-diag-cta-card__text {
	margin: 0;
	font-size: 14px;
	color: var(--hp-text-secondary, #6b5b42);
	line-height: 1.5;
}
.hp-diag-cta-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	height: 44px;
	padding: 0 18px;
	border-radius: 10px;
	background: var(--hp-primary, #e87020);
	color: var(--hp-primary-foreground, #fff);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	flex-shrink: 0;
	white-space: nowrap;
	transition: background-color 120ms ease, box-shadow 120ms ease;
}
.hp-diag-cta-card__cta:hover,
.hp-diag-cta-card__cta:focus,
.hp-diag-cta-card__cta:focus-visible,
.hp-diag-cta-card__cta:active {
	background: var(--hp-primary-hover, #c55c0a);
	color: var(--hp-primary-foreground, #fff);
	text-decoration: none;
	outline: none;
}
.hp-diag-cta-card__cta:focus-visible {
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #e87020) 32%, transparent);
}
.hp-diag-cta-card__cta svg {
	color: currentColor;
	width: 16px;
	height: 16px;
}
/* ===== /Phase 044 ===== */

/* ============================================================================
 * Phase 045 — homepage / finder / header final technical polish.
 * ---------------------------------------------------------------------------- 
 *  Small self-review fixes applied autonomously after screenshot audit:
 *    A) Hero CTA "Подобрать диагностику" was wrapping to two lines in narrow
 *       hero columns on some viewports. Force single-line + a sensible
 *       min-width so it always reads as one clean pill.
 *    B) Focus discipline for the diagnostics CTA card and top-nav item — a
 *       small polish so keyboard users see the same 3px primary-32% ring
 *       used elsewhere in the design system.
 * ==========================================================================*/

/* A) Hero CTA — never wrap the primary label */
a.hp-cta-primary,
a.hp-hero-cta {
	white-space: nowrap;
}
/* At >= md the hero column has room; ensure the CTA stays as a clean pill */
@media (min-width: 768px) {
	a.hp-cta-primary { min-width: 220px; justify-content: center; }
}

/* B) Diagnostics CTA card — reinforce Phase 044 focus ring on all states */
.hp-diag-cta-card__cta:focus-visible {
	outline: none;
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #e87020) 32%, transparent);
}
/* ===== /Phase 045 ===== */

/* ============================================================================
 * Phase 046 — WINDOW 2 — cart / checkout final technical polish.
 * ----------------------------------------------------------------------------
 * Scope: cart, checkout step-flow, order review, safe-stop panel.
 *   Does NOT touch homepage / header / mobile-menu / logo / finder classes.
 *
 *   A) Review-aside "Доставка" row hides when the delivery cell has no
 *      textContent yet (before JS has populated it). Prevents the visual
 *      "empty white strip" the FIX5 report warned about.
 *   B) Review summary values (total, delivery) use larger emphasis so the
 *      buyer's eye lands on the final number, not the labels.
 *   C) The safe-stop panel now uses a warm amber card that reads as an alert
 *      but is not scary red. Adds a "test-mode" left border.
 *   D) Cart-summary title "Итог заказа" alignment fix — was drifting left of
 *      the values on mobile; enforce space-between at all viewports.
 *   E) Step-progress pills — active step gets a subtle brand-orange underline
 *      instead of just the numbered circle, so the current step is obvious
 *      even at a glance on mobile where labels are hidden.
 *   F) Payment-tile description text — cap at two lines with ellipsis so
 *      long IBAN blobs don't blow up the tile height on mobile.
 * ==========================================================================*/

/* A) Hide empty delivery row */
[data-hp-rv-row="delivery"] [data-hp-rv="delivery"]:empty ~ * ,
.hp-cart-summary__row[data-hp-rv-row="delivery"]:has([data-hp-rv="delivery"]:empty) {
	display: none !important;
}

/* B) Emphasise final total number */
.hp-cart-summary__total-value[data-hp-rv="total"] {
	font-variant-numeric: tabular-nums;
	letter-spacing: -0.01em;
}

/* C) Safe-stop panel: warm-amber alert card, brand-orange left border */
.hp-safe-stop {
	background: #fff8ec;
	border: 1px solid #f0d59a;
	border-left: 4px solid var(--hp-primary, #e87020);
	border-radius: 12px;
	padding: 16px 20px;
	color: #4b3a1c;
	box-shadow: 0 2px 6px rgba(232, 112, 32, 0.08);
}
.hp-safe-stop__title {
	color: #b45309;
	font-weight: 700;
	font-size: 1.05rem;
	line-height: 1.35;
	margin: 0 0 6px;
}
.hp-safe-stop__body { margin: 0 0 8px; line-height: 1.45; }
.hp-safe-stop__list { list-style: disc; padding-left: 20px; margin: 6px 0 12px; }
.hp-safe-stop__list li { margin-bottom: 3px; }

/* D) Cart-summary title alignment (mobile drift) */
.hp-cart-summary__row { display: flex; justify-content: space-between; align-items: baseline; }
.hp-cart-summary__row-value { text-align: right; }

/* E) Active step-progress pill — brand-orange underline */
.hp-checkout-progress__step--active {
	position: relative;
}
.hp-checkout-progress__step--active::after {
	content: "";
	position: absolute;
	left: 12%; right: 12%; bottom: -2px;
	height: 2px;
	background: var(--hp-primary, #e87020);
	border-radius: 2px;
}

/* F) Payment-tile description clamp */
.hp-payment-tile__desc {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	text-overflow: ellipsis;
	line-height: 1.35;
}

/* G) MOBILE overflow fix — CheckoutView review grid was inheriting
 *    grid-template-columns from the widest child (a nowrap product name span
 *    ~ 720px min-content), pushing the aside "Итог заказа" values off-screen.
 *    Force min-width:0 on the two grid children and cap product-name intrinsic
 *    width so the review card fits within a 390px viewport.
 * ---------------------------------------------------------------------------- */
#hp-checkout-review { min-width: 0; }
#hp-checkout-review > * { min-width: 0; }
#hp-checkout-review .space-y-6 { min-width: 0; }
#hp-checkout-review .space-y-6 > * { min-width: 0; }
#hp-checkout-review .hp-card--panel-lg { min-width: 0; overflow: hidden; }
#hp-checkout-review ul li { min-width: 0; }
#hp-checkout-review li > span.truncate,
#hp-checkout-review li > span.min-w-0.flex-1 {
	min-width: 0;
	max-width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	flex: 1 1 0;
}
@media (max-width: 640px) {
	#hp-checkout-review li > span.truncate,
	#hp-checkout-review li > span.min-w-0.flex-1 { max-width: 60vw; }
}

/* H) Aside summary width cap — even if the grid intrinsic tries to widen the
 *    aside, keep it visible in the viewport on mobile. */
#hp-checkout-review aside { min-width: 0; max-width: 100%; }
#hp-checkout-review aside .hp-cart-summary { max-width: 100%; }

/* I) Customer information block: keep the two-column grid safe on mobile */
#hp-checkout-review .grid.sm\:grid-cols-2 { min-width: 0; }
#hp-checkout-review .grid.sm\:grid-cols-2 > div { min-width: 0; overflow-wrap: anywhere; }

/* J) Same fix for the customer step 2 and shipping step 1 — they share
 *    the same grid + aside layout. */
#hp-checkout-customer, #hp-checkout-shipping, #hp-checkout-payment { min-width: 0; }
#hp-checkout-customer > *, #hp-checkout-shipping > *, #hp-checkout-payment > * { min-width: 0; }

/* ===== /Phase 046 ===== */


/* ============================================================================
 * Phase 049 — direct Home icon always in mobile header (near logo).
 * ----------------------------------------------------------------------------
 *  Owner review found the Phase 041 !$isHome gate effectively hid the direct
 *  Home control on entry paths (icon buried inside the mobile menu drawer).
 *  Rules:
 *   1) Icon is now rendered on EVERY page including homepage.
 *   2) Tap area >= 44x44 on mobile (accessibility min). Base .hp-home-mobile
 *      keeps size-9 (36px) box, but we override to 44x44 via CSS so we don't
 *      have to touch every Tailwind utility.
 *   3) Homepage-only ".hp-home-mobile--soft" variant is unobtrusive (less
 *      saturated background, still visible) so it doesn't scream when you're
 *      already home; buyer confidence stays intact.
 *   4) High-specificity a.hp-home-mobile rules from Phase 044-B keep visible
 *      color contrast on the warm header (dark icon on light warm pill).
 * ==========================================================================*/

a.hp-home-mobile,
a.hp-home-mobile:link,
a.hp-home-mobile:visited {
	min-width: 44px;
	min-height: 44px;
	width: 44px;
	height: 44px;
	padding: 0;
	box-sizing: border-box;
}
a.hp-home-mobile svg {
	width: 22px;
	height: 22px;
	flex: 0 0 auto;
}

/* Homepage variant — visible but unobtrusive (already home). */
a.hp-home-mobile.hp-home-mobile--soft,
a.hp-home-mobile.hp-home-mobile--soft:link,
a.hp-home-mobile.hp-home-mobile--soft:visited {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 4%, #fff);
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 18%, var(--hp-border, #e2d9cc));
	opacity: 0.9;
}
a.hp-home-mobile.hp-home-mobile--soft:hover,
a.hp-home-mobile.hp-home-mobile--soft:focus-visible {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 12%, #fff);
	border-color: var(--hp-primary, #e87020);
	color: var(--hp-primary, #e87020);
	opacity: 1;
}

/* Ensure the icon never collapses when the header row squeezes on very small
   viewports (iPhone SE etc). It should always keep its 44px reserved space. */
.hp-home-mobile { flex: 0 0 auto; }

/* ===== /Phase 049 ===== */

/* ============================================================================
 * Phase 049 — direct Home icon position fix in mobile header.
 * ----------------------------------------------------------------------------
 * Owner review: Home icon was only reachable via the opened drawer on the
 * homepage (Phase 041 hid it under !$isHome). Site is technically complex —
 * buyer must NEVER lose the "back to home" affordance from the header.
 * Fix in index.php: removed the isHome gate; always render hp-home-mobile in
 * the mobile header top row (lg:hidden) with hp-home-mobile--soft class + 
 * aria-current="page" when the user is already on home.
 *
 * This CSS block:
 *   A) Boost tap area to >= 44 x 44 while keeping the visible 36x36 pill —
 *      meets WCAG 2.5.5 target-size AAA / iOS HIG 44pt minimum.
 *   B) Style the "you are on home" state so the icon reads as a soft indicator
 *      rather than a full call-to-action button (matches aria-current).
 * ==========================================================================*/

/* A) tap area >= 44x44 (position: relative for the ::before hitbox) */
a.hp-home-mobile {
	position: relative;
}
a.hp-home-mobile::before {
	content: '';
	position: absolute;
	inset: -4px;                 /* extend hitbox 4px around the 36px pill = 44px */
	border-radius: inherit;
}

/* B) --soft indicator style when already on home */
a.hp-home-mobile.hp-home-mobile--soft,
a.hp-home-mobile.hp-home-mobile--soft:link,
a.hp-home-mobile.hp-home-mobile--soft:visited {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 5%, #fff);
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 18%, var(--hp-border, #e2d9cc));
	color: color-mix(in oklab, var(--hp-text, #2d2416) 70%, transparent);
}
a.hp-home-mobile.hp-home-mobile--soft:hover,
a.hp-home-mobile.hp-home-mobile--soft:focus-visible {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 12%, #fff);
	color: var(--hp-primary, #e87020);
	border-color: var(--hp-primary, #e87020);
}
/* ===== /Phase 049 ===== */

/* ============================================================================
 * Phase 049 — WINDOW 2 — Cart + checkout final UX fix.
 * Owner review after 048 flagged 11 buyer-facing issues in cart / checkout /
 * delivery / payment / review. This block appends CSS-only fixes; template.js
 * and previewfinish.php carry the JS + DOM sides.
 *
 *   B) Cart quantity value between "−" and "+" — invisible/low contrast
 *      Force explicit foreground color, font-weight, tabular-nums, min-width
 *      for 3-digit qty, always readable on desktop AND mobile.
 *
 *   D) Checkout step indicator — never truncate labels on mobile
 *      Old rule hid all labels except active, but the active label still ran
 *      off the pill. New rule: on mobile hide ALL labels inside the pill row,
 *      surface the active step title in a dedicated .hp-checkout-progress__current
 *      block below the pills. No "Достав..." ellipsis anywhere.
 *
 *   E) First-step delivery tiles — no prices
 *      Price is misleading before country/details are chosen. Hide the
 *      .hp-shipping-tile__price cell entirely; final price shows in the
 *      review summary (delivery row) after selection.
 *
 *   F) Omniva locker picker — country selector first, then locker list
 *      New .hp-omniva-country wrapper visible only in parcel mode. Locker
 *      select styled the same as picker.
 *
 *   H) Payment-tile MOCK badge — clearly labelled "MOCK" pill on staging so
 *      buyer / owner cannot mistake it for a live gateway.
 *
 *   I) Review product row — proper 3-column layout (thumb / title+attr+qty /
 *      line total). Title 2-line clamp, attribute on own line, quantity
 *      always visible, line total right-aligned. Thumbnail fallback for
 *      missing image.
 * ==========================================================================*/

/* --- B) Cart quantity stepper contrast + width fix ------------------------ */
.hp-cart-line__qty {
	background: #fff;
	display: inline-flex;
	flex: 0 0 auto;
	max-width: 140px;
}
.hp-cart-line__qty input[type="number"],
.hp-cart-line__qty input.inputbox {
	color: #1f2937 !important;              /* dark foreground on white */
	font-weight: 600;
	font-size: 15px;
	line-height: 1;
	width: 48px !important;                 /* fixed so number is centred */
	min-width: 40px;
	max-width: 60px;
	padding: 0 6px;
	text-align: center;
	font-variant-numeric: tabular-nums;
	background: transparent;
	border: 0;
	appearance: textfield;
	-moz-appearance: textfield;
}
.hp-cart-line__qty input[type="number"]::-webkit-outer-spin-button,
.hp-cart-line__qty input[type="number"]::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}
.hp-cart-line__qty-btn {
	color: #1f2937;
	font-weight: 600;
	background: transparent;
	border: 0;
	cursor: pointer;
}
.hp-cart-line__qty-btn:hover { color: var(--hp-primary, #e87020); }
.hp-cart-line__qty-btn:focus-visible { outline: 2px solid var(--hp-primary, #e87020); outline-offset: 2px; }
/* Wrapper: give the whole stepper a visible border + white bg so it stands out */
.hp-cart-line__qty {
	border: 1px solid var(--hp-border, #e2d9cc);
	border-radius: 8px;
}
@media (max-width: 480px) {
	.hp-cart-line__qty input[type="number"],
	.hp-cart-line__qty input.inputbox {
		font-size: 16px;                      /* iOS zoom avoidance + readability */
		min-width: 2.4ch;
	}
	.hp-cart-line__qty-btn { min-width: 34px; }
}

/* --- D) Checkout step indicator — mobile-safe labels --------------------- */
/* Hide the inline label on ALL pills at <= 640px (was: hide except active) */
@media (max-width: 640px) {
	.hp-checkout-progress__label { display: none !important; }
	.hp-checkout-progress__step--active .hp-checkout-progress__label { display: none !important; }
}
/* Current-step title block rendered below the pill row by template.js */
.hp-checkout-progress__current {
	display: none;
	margin: 8px 4px 0;
	font-size: 14px;
	font-weight: 600;
	color: var(--hp-text, #2d2416);
	line-height: 1.35;
}
.hp-checkout-progress__current-num {
	color: var(--hp-primary, #e87020);
	margin-right: 6px;
}
@media (max-width: 640px) {
	.hp-checkout-progress__current { display: block; }
	.hp-checkout-progress { flex-wrap: nowrap; overflow: hidden; }
	.hp-checkout-progress__step {
		flex: 1 1 auto;
		min-width: 0;
		padding: 0.55rem 0.4rem;
	}
	.hp-checkout-progress__num { margin: 0 auto; }
	.hp-checkout-progress__step--active { justify-content: center; }
}

/* --- E) First-step delivery tiles: hide price cell ---------------------- */
/* Owner report #5: shipping method stand_price (3/4/7/12 EUR) is misleading
   because real cost depends on chosen country. Hide the price in the tile;
   the final review row shows the real price. */
.hp-shipping-tiles .hp-shipping-tile__price {
	display: none !important;
}
/* Give the tile body an extra subtitle line for the price note */
.hp-shipping-tile__body { grid-column: 3 / -1; }
.hp-shipping-tile__subprice {
	display: block;
	margin-top: 4px;
	font-size: 12px;
	color: var(--hp-text-muted, #7d6f5a);
	font-style: italic;
}

/* --- F) Omniva country selector (parcel mode only) --------------------- */
.hp-omniva-country { display: none; }
body[data-hp-delivery-mode="parcel"] .hp-omniva-country { display: block; }
.hp-omniva-country { padding: 0 !important; }
body:not([data-hp-delivery-mode="parcel"]) .hp-omniva-country { display: none !important; }

/* --- G) Courier country hint for both baltics + eu courier mode -------- */
.hp-courier-hint { display: none; margin-top: 6px; font-size: 12px; color: var(--hp-text-muted, #7d6f5a); font-style: italic; }
body[data-hp-delivery-mode="courier"] .hp-courier-hint,
body[data-hp-delivery-mode="courier-eu"] .hp-courier-hint { display: block; }

/* Also treat courier-eu like courier for existing courier-only fields */
body[data-hp-delivery-mode="courier-eu"] .hp-cust-fld--courier { display: block !important; }

/* --- H) Payment MOCK badge --------------------------------------------- */
.hp-payment-tile__mock {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 6px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.06em;
	background: #fff5e6;
	color: #b45309;
	border: 1px solid #f0d59a;
	border-radius: 4px;
	vertical-align: 1px;
	text-transform: uppercase;
}
.hp-payment-tile--mock {
	position: relative;
}
.hp-payment-tile--mock::after {
	content: "STAGING MOCK — реальный платёж не выполняется";
	position: absolute;
	left: 0; right: 0; bottom: -18px;
	font-size: 10px;
	color: #b45309;
	text-align: left;
	padding-left: 12px;
	pointer-events: none;
}
.hp-payment-tiles { padding-bottom: 22px; } /* room for MOCK note */

/* --- I) Review product row rebuild ------------------------------------ */
/* Owner reports #8, #9, #11: broken thumbs, aggressive truncation, missing
   qty/attribute/line-total. Replace the flex+truncate row with a proper
   3-column grid. */
#hp-checkout-review ul.hp-review-items {
	list-style: none;
	padding: 0;
	margin: 16px 0 0;
	border-top: 1px solid var(--hp-border, #e2d9cc);
}
#hp-checkout-review ul.hp-review-items > li {
	display: grid;
	grid-template-columns: 64px 1fr auto;
	gap: 12px;
	padding: 12px 0;
	border-bottom: 1px solid var(--hp-border, #e2d9cc);
	align-items: flex-start;
}
#hp-checkout-review ul.hp-review-items > li:last-child { border-bottom: 0; }
.hp-review-item__thumb {
	width: 64px;
	height: 64px;
	border-radius: 8px;
	overflow: hidden;
	background: #f5efe6;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #b8a887;
	flex-shrink: 0;
}
.hp-review-item__thumb img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	display: block;
}
.hp-review-item__thumb-fallback {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
}
.hp-review-item__body {
	min-width: 0;
}
.hp-review-item__name {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 14px;
	font-weight: 600;
	color: var(--hp-text, #2d2416);
	line-height: 1.35;
	word-break: break-word;
	white-space: normal;
}
.hp-review-item__attr {
	display: block;
	margin-top: 2px;
	font-size: 12px;
	color: var(--hp-text-muted, #7d6f5a);
	line-height: 1.35;
}
.hp-review-item__qty {
	display: block;
	margin-top: 4px;
	font-size: 12px;
	color: var(--hp-text-secondary, #4b3a1c);
	font-variant-numeric: tabular-nums;
}
.hp-review-item__price {
	display: block;
	margin-top: 4px;
	font-size: 13px;
	font-weight: 600;
	color: var(--hp-text, #2d2416);
	text-align: right;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.hp-review-item__linetotal {
	font-size: 13px;
	font-weight: 700;
	color: var(--hp-primary, #e87020);
	text-align: right;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
@media (max-width: 480px) {
	#hp-checkout-review ul.hp-review-items > li {
		grid-template-columns: 48px 1fr auto;
	}
	.hp-review-item__thumb { width: 48px; height: 48px; }
}

/* --- I) Review reassurance banner --------------------------------------- */
.hp-review-reassure {
	background: #f0f9f0;
	border: 1px solid #cfe6cf;
	border-left: 4px solid #319743;
	color: #235824;
	padding: 10px 14px;
	border-radius: 8px;
	font-size: 13px;
	line-height: 1.4;
	margin: 12px 0 4px;
}
.hp-review-reassure svg {
	width: 16px;
	height: 16px;
	vertical-align: -3px;
	margin-right: 6px;
	color: #319743;
}

/* --- E/J) Cart summary delivery row — short + wrap-safe on all viewports */
/* Force the row-value to grow only up to what fits within the flex row.   */
/* white-space:normal ensures no forced nowrap, and word-break:break-word  */
/* handles narrow columns gracefully.                                      */
.hp-cart-summary__row,
.hp-cart-summary__row--delivery {
	gap: 8px;
	overflow: hidden;                /* clip if truly needed */
}
.hp-cart-summary__row-value--delivery,
.hp-cart-summary__row-value {
	white-space: normal !important;
	text-align: right;
	line-height: 1.35;
	word-break: normal;
	overflow-wrap: anywhere;
	min-width: 0;
	max-width: 60%;
	flex: 1 1 auto;
}
@media (max-width: 480px) {
	.hp-cart-summary__row-value--delivery,
	.hp-cart-summary__row-value { max-width: 65%; font-size: 13px; }
}
/* Also ensure the aside itself never overflows the viewport on mobile */
@media (max-width: 1023px) {
	.hp-cart-wrap > form > .grid,
	.hp-cart-page .hp-cart-layout {
		grid-template-columns: 1fr !important;
		min-width: 0;
	}
	.hp-cart-wrap > form > .grid > *,
	.hp-cart-page .hp-cart-layout > * {
		min-width: 0;
		max-width: 100%;
	}
	.hp-cart-wrap aside,
	.hp-cart-page aside {
		width: 100%;
		max-width: 100%;
		min-width: 0;
	}
}
.hp-cart-wrap .hp-cart-summary,
.hp-cart-page .hp-cart-summary {
	max-width: 100%;
	min-width: 0;
	overflow: hidden;
}
/* Prevent the total EUR value from forcing horizontal overflow */
.hp-cart-summary__total-value {
	max-width: 100%;
	overflow-wrap: anywhere;
}

/* ===== /Phase 049 ===== */

/* ============================================================================
 * Phase 051 — top main menu pill style.
 * ----------------------------------------------------------------------------
 *  Owner-approved direction: menu items as rounded pill buttons; active/hover
 *  in soft warm beige/orange; inactive as white/light pill; no aggressive
 *  full-fill orange; overall calm warm automotive style. Keeps the existing
 *  8 nav items and the existing $hp_menu_active_key active-detection logic
 *  (URL first non-lang segment → key), no PHP markup change required.
 *
 *  Scope:
 *    - Desktop nav bar only (`nav.hp-topnav:not(.hp-mobile-nav)`)
 *    - Mobile drawer nav (`nav.hp-topnav.hp-mobile-nav`) gets a lighter
 *      background tint on .is-active so the "you are here" cue still reads,
 *      but the drawer row layout stays intact per brief ("do not redesign
 *      mobile menu deeply").
 * ==========================================================================*/

/* Desktop pill nav */
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__list {
	gap: 0.5rem;
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
}

nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link {
	display: inline-flex;
	align-items: center;
	height: 2.25rem;                     /* 36px pill */
	padding: 0 0.95rem;                  /* ~15px horizontal */
	border-radius: 9999px;               /* full pill */
	background: #ffffff;
	border: 1px solid var(--hp-border, #e2d9cc);
	color: var(--hp-text, #2d2416);
	font-size: 0.875rem;                 /* text-sm */
	font-weight: 500;                    /* base weight */
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
	transition: background-color 150ms ease-out, color 150ms ease-out,
	            border-color 150ms ease-out, box-shadow 150ms ease-out;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link:hover,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link:focus-visible {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 8%, #fff);
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 24%,
	                        var(--hp-border, #e2d9cc));
	color: var(--hp-primary, #e87020);
	outline: none;
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #e87020) 20%,
	                                transparent);
}

nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link:active {
	transform: translateY(1px);
}

/* Active section — warm beige/orange soft background */
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__item.is-active .hp-topnav__link,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link[aria-current="page"] {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 14%, #fff);
	border-color: color-mix(in oklab, var(--hp-primary, #e87020) 40%,
	                        var(--hp-border, #e2d9cc));
	color: var(--hp-primary-hover, #c55c0a);
	font-weight: 600;
}

nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__item.is-active .hp-topnav__link:hover,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link[aria-current="page"]:hover {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 18%, #fff);
	color: var(--hp-primary-hover, #c55c0a);
}

/* Even list spacing regardless of viewport */
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__list {
	flex-wrap: nowrap;
	overflow-x: auto;               /* safety net if 8 items overflow narrower desktops */
	scrollbar-width: none;
}
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__list::-webkit-scrollbar { display: none; }

/* Mobile drawer — light active-state cue only (drawer row layout intact) */
nav.hp-topnav.hp-mobile-nav .hp-topnav__item.is-active .hp-topnav__link {
	background: color-mix(in oklab, var(--hp-primary, #e87020) 10%, #fff);
	color: var(--hp-primary-hover, #c55c0a);
	font-weight: 600;
}
/* ===== /Phase 051 ===== */

/* ============================================================================
 * Phase 052 — homepage trust strip spacing + В наличии clickable.
 * ----------------------------------------------------------------------------
 *  Owner review after 051: the "В наличии / Доставка / Гарантия / Контакты"
 *  strip visually merged into the hero directions above and the "Что можно
 *  делать диагностикой" block below. Also, "В наличии" was the only tile
 *  without a target — that was corrected in index.php (now → /{lang}/diagnostics,
 *  the flagship catalogue). This CSS block only adds vertical breathing room
 *  above and below the strip so it reads as a deliberate separate block on
 *  desktop and mobile, without creating dead white space.
 * ==========================================================================*/

/* NOTE: class "hp-trust-strip" already exists in template.css and turns any
   element into a 2/4-col grid — using it here would collapse the 4 tiles into
   the left half. Use a namespaced "hp-trust-section" instead. */
.hp-trust-section {
	/* Phase 053 density fix — Phase 052's 32/44/48 px margins wasted first-screen
	   pixels with a large empty warm-beige band above and below the strip.
	   Halved to 20 / 24 / 28 px. Enough for a deliberate visual break (the
	   section's own border-y already draws the line) without dead space. */
	margin-top: 1.25rem;
	margin-bottom: 1.25rem;
}
@media (min-width: 768px) {
	.hp-trust-section { margin-top: 1.5rem; margin-bottom: 1.5rem; }
}
@media (min-width: 1024px) {
	.hp-trust-section { margin-top: 1.75rem; margin-bottom: 1.75rem; }
}

/* Preserve the equal 4-column feel while ensuring cells stay legible with the
   new stock link — icon color always primary; no layout jump. */
a.hp-trust-tile.hp-trust-tile--link:focus-visible {
	outline: none;
	box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--hp-primary, #e87020) 45%, transparent);
}
/* ===== /Phase 052 ===== */

/* ==========================================================================
 *  Phase 051 — WINDOW 2 — Cart / Checkout final owner error fixes
 *  Owner errors from the 050 review:
 *    - Back / Continue buttons still visually different sizes
 *    - Progress bar has an unnecessary orange underline under active step
 *    - Public "STAGING MOCK" strip still visible under EveryPay/PayPal tiles
 *  These rules are appended at END of components.css so they take precedence
 *  over the earlier legacy blocks (5134-5162 & 4821-4832) whose owners
 *  either got wiped by other windows or predate the current UX brief.
 * ==========================================================================*/

/* Task E: hard-kill customer-facing MOCK badge + STAGING strip on payment tiles.
   Public checkout must show clean labels only. Backend safe-stop still intercepts
   real gateway hits. */
.hp-payment-tile__mock { display: none !important; }
.hp-payment-tile--mock::after { content: none !important; }
.hp-payment-tiles { padding-bottom: 0 !important; }

/* Task C: kill the brand-orange underline under the active checkout progress
   step. Active state remains visible via pill background + orange number. */
.hp-checkout-progress__step--active::after { content: none !important; }

/* Task B: Back and Continue buttons visually equal on every checkout step.
   Height, padding family and border-radius match; min-width forces same
   visual weight regardless of label length. Both stay full-width on mobile. */
.hp-checkout-step-nav .hp-btn--outline,
.hp-checkout-step-nav .hp-btn--primary {
    height: 2.75rem !important;
    padding: 0 1.25rem !important;
    border-radius: var(--hp-radius) !important;
    min-width: 10rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--hp-space-2);
    font-weight: var(--hp-fw-medium);
    line-height: 1;
}
@media (max-width: 640px) {
    .hp-checkout-step-nav .hp-btn--outline,
    .hp-checkout-step-nav .hp-btn--primary { min-width: 0; width: 100%; }
}

/* Task E follow-up: also hide the leftover Step 1 tile price cell if it
   somehow renders (owner report from Phase 050). */
.hp-shipping-tile__price { display: none !important; }

/* ============================================================
   PHASE 054 — HOMEPAGE HERO MINI-CARDS 5 VISUAL VARIANTS
   Owner review only. Activated by GET ?minicardsv=1..5 which
   adds body.hp-minicardsv-<n>. Baseline (no param) unchanged.
   Applies to .hp-hero-mini inside .hp-hero-panel__grid only.
   No official automotive brand marks are used — monograms are
   neutral 3-letter marks: BMW / OPL / VAG / ALL / OBD.
   ============================================================ */

/* --- BASELINE (permanent) additions ---
   Add data-hp-mini monogram element (rendered by PHP as
   .hp-hero-mini__mono). Hidden at baseline, shown by variants. */
.hp-hero-mini__mono { display: none; }

/* ============================================================
   VARIANT 1 — PREMIUM MINIMAL
   Cleaner cards, stronger typography, subtle warm accent bar.
   Softer icon badge, extra padding, primary card gets amber
   top-border accent.
   ============================================================ */
body.hp-minicardsv-1 .hp-hero-panel { padding: 1.6rem 1.4rem; background: color-mix(in oklab, var(--hp-card) 96%, var(--hp-primary) 4%); border-color: color-mix(in oklab, var(--hp-primary) 20%, var(--hp-border)); }
body.hp-minicardsv-1 .hp-hero-panel__eyebrow { color: var(--hp-primary); font-size: 0.72rem; letter-spacing: 0.14em; }
body.hp-minicardsv-1 .hp-hero-panel__title { font-size: 1.05rem; letter-spacing: -0.01em; }
body.hp-minicardsv-1 .hp-hero-panel__grid { gap: 0.75rem; grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.hp-minicardsv-1 .hp-hero-mini { position: relative; padding: 1rem 1rem 0.9rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, var(--hp-primary) 12%, var(--hp-border)); border-radius: 10px; box-shadow: 0 1px 2px rgba(45,36,22,0.04); }
body.hp-minicardsv-1 .hp-hero-mini::before { content: ""; position: absolute; top: 0; left: 12px; right: 12px; height: 2px; background: linear-gradient(90deg, var(--hp-primary) 0%, transparent 55%); border-radius: 2px; opacity: 0.65; }
body.hp-minicardsv-1 .hp-hero-mini--primary { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)) 0%, var(--hp-card) 55%); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); }
body.hp-minicardsv-1 .hp-hero-mini--primary::before { background: var(--hp-primary); opacity: 1; height: 3px; }
body.hp-minicardsv-1 .hp-hero-mini__icon { width: 2.1rem; height: 2.1rem; border-radius: 999px; background: color-mix(in oklab, var(--hp-primary) 12%, transparent); color: var(--hp-primary); }
body.hp-minicardsv-1 .hp-hero-mini__icon svg { width: 1.15rem; height: 1.15rem; }
body.hp-minicardsv-1 .hp-hero-mini__title { font-size: 1.02rem; font-weight: 700; letter-spacing: -0.015em; margin-top: 0.5rem; }
body.hp-minicardsv-1 .hp-hero-mini__sub { font-size: 0.72rem; color: var(--hp-text-muted); line-height: 1.45; }
body.hp-minicardsv-1 .hp-hero-mini__cta { margin-top: 0.5rem; font-size: 0.72rem; font-weight: 600; }
body.hp-minicardsv-1 .hp-hero-mini:hover { transform: translateY(-2px); box-shadow: 0 10px 24px -18px rgba(45,36,22,0.35); border-color: var(--hp-primary); }
@media (max-width: 640px) {
  body.hp-minicardsv-1 .hp-hero-mini { padding: 0.85rem 0.85rem 0.75rem; }
  body.hp-minicardsv-1 .hp-hero-mini__title { font-size: 0.94rem; }
  body.hp-minicardsv-1 .hp-hero-mini__sub { font-size: 0.68rem; }
}

/* ============================================================
   VARIANT 2 — TECHNICAL DIAGNOSTIC
   Scanner/ECU inspired. Dark warm icon "display" tile with
   thin 2-pixel scanline pattern. Monospace CTA. Corner ticks
   on hover suggest technical interface.
   ============================================================ */
body.hp-minicardsv-2 .hp-hero-panel { background: linear-gradient(180deg, var(--hp-card) 0%, color-mix(in oklab, var(--hp-card) 92%, #1e1912 8%) 100%); border-color: color-mix(in oklab, var(--hp-primary) 25%, var(--hp-border)); }
body.hp-minicardsv-2 .hp-hero-panel::before { content: none; }
body.hp-minicardsv-2 .hp-hero-panel__grid { gap: 0.6rem; }
body.hp-minicardsv-2 .hp-hero-mini { position: relative; padding: 0.85rem 0.9rem 0.75rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 6px; background-image: repeating-linear-gradient(0deg, transparent 0px, transparent 3px, color-mix(in oklab, var(--hp-primary) 3%, transparent) 3px, color-mix(in oklab, var(--hp-primary) 3%, transparent) 4px); overflow: hidden; }
body.hp-minicardsv-2 .hp-hero-mini::before,
body.hp-minicardsv-2 .hp-hero-mini::after { content: ""; position: absolute; width: 8px; height: 8px; border-color: var(--hp-primary); opacity: 0.55; transition: opacity 200ms ease; }
body.hp-minicardsv-2 .hp-hero-mini::before { top: 4px; left: 4px; border-top: 1.5px solid; border-left: 1.5px solid; }
body.hp-minicardsv-2 .hp-hero-mini::after { bottom: 4px; right: 4px; border-bottom: 1.5px solid; border-right: 1.5px solid; }
body.hp-minicardsv-2 .hp-hero-mini:hover::before,
body.hp-minicardsv-2 .hp-hero-mini:hover::after { opacity: 1; }
body.hp-minicardsv-2 .hp-hero-mini__icon { background: #1f1810; color: color-mix(in oklab, var(--hp-primary) 90%, #ffd39a 10%); border: 1px solid color-mix(in oklab, var(--hp-primary) 45%, #1f1810); border-radius: 4px; width: 2rem; height: 2rem; box-shadow: inset 0 0 6px rgba(255, 170, 60, 0.15); }
body.hp-minicardsv-2 .hp-hero-mini__icon svg { width: 1.1rem; height: 1.1rem; }
body.hp-minicardsv-2 .hp-hero-mini__title { font-family: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace; font-size: 0.9rem; font-weight: 700; letter-spacing: 0; margin-top: 0.45rem; text-transform: uppercase; }
body.hp-minicardsv-2 .hp-hero-mini__title::before { content: "> "; color: var(--hp-primary); font-weight: 700; }
body.hp-minicardsv-2 .hp-hero-mini__sub { font-family: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace; font-size: 0.68rem; color: var(--hp-text-muted); }
body.hp-minicardsv-2 .hp-hero-mini__cta { font-family: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace; font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.06em; }
body.hp-minicardsv-2 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 60%, var(--hp-border)); box-shadow: 0 0 0 1px color-mix(in oklab, var(--hp-primary) 25%, transparent) inset; }

/* ============================================================
   VARIANT 3 — BRAND-GROUP MONOGRAM
   Neutral 3-letter monograms replace the SVG icon:
   BMW / OPL / VAG / ALL / OBD. Boxed like a stamp / brand plate.
   Cards get structured header row with monogram left, title right.
   NOT official brand logos — just letter combinations.
   ============================================================ */
body.hp-minicardsv-3 .hp-hero-panel__grid { gap: 0.65rem; }
body.hp-minicardsv-3 .hp-hero-mini { padding: 0.85rem 0.95rem 0.8rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 8px; }
body.hp-minicardsv-3 .hp-hero-mini__head { align-items: center; gap: 0.55rem; margin-bottom: 0.15rem; }
body.hp-minicardsv-3 .hp-hero-mini__icon { display: none; }
body.hp-minicardsv-3 .hp-hero-mini__mono { display: inline-flex; align-items: center; justify-content: center; min-width: 2.3rem; height: 1.7rem; padding: 0 0.4rem; font-family: Georgia, "Times New Roman", ui-serif, serif; font-weight: 700; font-size: 0.82rem; letter-spacing: 0.04em; color: var(--hp-primary); background: color-mix(in oklab, var(--hp-primary) 8%, transparent); border: 1px solid color-mix(in oklab, var(--hp-primary) 55%, transparent); border-radius: 3px; text-transform: uppercase; }
body.hp-minicardsv-3 .hp-hero-mini--primary .hp-hero-mini__mono { color: #fff; background: var(--hp-primary); border-color: var(--hp-primary); }
body.hp-minicardsv-3 .hp-hero-mini__title { font-size: 0.92rem; font-weight: 700; letter-spacing: -0.005em; margin-top: 0; }
body.hp-minicardsv-3 .hp-hero-mini__sub { font-size: 0.7rem; margin-top: 0.35rem; }
body.hp-minicardsv-3 .hp-hero-mini__cta { margin-top: 0.4rem; font-size: 0.68rem; }
body.hp-minicardsv-3 .hp-hero-mini:hover .hp-hero-mini__mono { background: color-mix(in oklab, var(--hp-primary) 22%, transparent); }
@media (max-width: 640px) {
  body.hp-minicardsv-3 .hp-hero-mini__mono { min-width: 2rem; height: 1.5rem; font-size: 0.72rem; }
}

/* ============================================================
   VARIANT 4 — COMPACT COMMERCIAL
   Tighter padding, no CTA line (arrow chevron on right instead),
   sub-text limited to one line. Fits more above the fold.
   Grid stays 2-col to fit hero right panel width.
   ============================================================ */
body.hp-minicardsv-4 .hp-hero-panel { padding: 1rem 0.9rem; }
body.hp-minicardsv-4 .hp-hero-panel__head { margin-bottom: 0.55rem; }
body.hp-minicardsv-4 .hp-hero-panel__grid { gap: 0.45rem; }
body.hp-minicardsv-4 .hp-hero-mini { position: relative; padding: 0.55rem 1.8rem 0.55rem 0.7rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 7px; gap: 0.15rem; }
body.hp-minicardsv-4 .hp-hero-mini__head { margin-bottom: 0; }
body.hp-minicardsv-4 .hp-hero-mini__icon { width: 1.4rem; height: 1.4rem; }
body.hp-minicardsv-4 .hp-hero-mini__icon svg { width: 0.85rem; height: 0.85rem; }
body.hp-minicardsv-4 .hp-hero-mini__title { font-size: 0.82rem; margin-top: 0.2rem; line-height: 1.15; }
body.hp-minicardsv-4 .hp-hero-mini__sub { font-size: 0.62rem; line-height: 1.25; margin-top: 0.05rem; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
body.hp-minicardsv-4 .hp-hero-mini__cta { display: none; }
body.hp-minicardsv-4 .hp-hero-mini::after { content: "›"; position: absolute; right: 0.75rem; top: 50%; transform: translateY(-50%); font-size: 1.15rem; line-height: 1; color: var(--hp-primary); font-weight: 700; opacity: 0.6; transition: opacity 150ms ease, transform 150ms ease; }
body.hp-minicardsv-4 .hp-hero-mini:hover::after { opacity: 1; transform: translate(3px, -50%); }
body.hp-minicardsv-4 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
@media (max-width: 640px) {
  body.hp-minicardsv-4 .hp-hero-panel__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.hp-minicardsv-4 .hp-hero-mini { padding: 0.5rem 1.6rem 0.5rem 0.6rem; }
}

/* ============================================================
   VARIANT 5 — VISUAL FEATURE CARD
   Larger icon area at top (feature strip), bigger title,
   longer sub-text room. Cards feel like guided entries.
   ============================================================ */
body.hp-minicardsv-5 .hp-hero-panel { padding: 1.35rem 1.2rem; }
body.hp-minicardsv-5 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-minicardsv-5 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 10px; overflow: hidden; }
body.hp-minicardsv-5 .hp-hero-mini__head { position: relative; display: flex; align-items: center; justify-content: center; padding: 0.9rem 0.75rem 0.6rem; background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 4%, var(--hp-card)) 100%); border-bottom: 1px solid color-mix(in oklab, var(--hp-primary) 15%, var(--hp-border)); margin-bottom: 0; }
body.hp-minicardsv-5 .hp-hero-mini__icon { width: 3rem; height: 3rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); border-radius: 999px; color: var(--hp-primary); box-shadow: 0 4px 12px -8px rgba(45,36,22,0.25); }
body.hp-minicardsv-5 .hp-hero-mini__icon svg { width: 1.5rem; height: 1.5rem; }
body.hp-minicardsv-5 .hp-hero-mini__title { padding: 0.65rem 0.85rem 0; font-size: 1rem; font-weight: 700; letter-spacing: -0.01em; margin-top: 0; }
body.hp-minicardsv-5 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.72rem; line-height: 1.45; }
body.hp-minicardsv-5 .hp-hero-mini__cta { padding: 0.5rem 0.85rem 0.85rem; margin-top: 0.35rem; font-size: 0.72rem; font-weight: 600; }
body.hp-minicardsv-5 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 22%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)) 100%); }
body.hp-minicardsv-5 .hp-hero-mini--primary .hp-hero-mini__icon { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-minicardsv-5 .hp-hero-mini:hover { box-shadow: 0 12px 26px -18px rgba(45,36,22,0.35); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); }
@media (max-width: 640px) {
  body.hp-minicardsv-5 .hp-hero-mini__head { padding: 0.7rem 0.6rem 0.5rem; }
  body.hp-minicardsv-5 .hp-hero-mini__icon { width: 2.4rem; height: 2.4rem; }
  body.hp-minicardsv-5 .hp-hero-mini__icon svg { width: 1.15rem; height: 1.15rem; }
  body.hp-minicardsv-5 .hp-hero-mini__title { padding: 0.55rem 0.7rem 0; font-size: 0.9rem; }
  body.hp-minicardsv-5 .hp-hero-mini__sub { padding: 0.2rem 0.7rem 0; font-size: 0.68rem; }
  body.hp-minicardsv-5 .hp-hero-mini__cta { padding: 0.4rem 0.7rem 0.7rem; }
}
/* ============================================================
   END PHASE 054
   ============================================================ */

/* ==========================================================================
 *  Phase 052 — WINDOW 2 — Cart / Product buy controls / Preliminary sum
 *  Appended at END so it wins the cascade over earlier product-detail rules
 *  (lines 72-80, 1314-1358) whose 44px qty stepper broke visual parity with
 *  the 52px "В корзину" CTA. Also handles cart-item grid alignment (owner
 *  Task C) and preliminary-sum label sizing (owner Task D).
 * ==========================================================================*/

/* Task B: product page — quantity stepper visually harmonized with CTA.
   Both are 52px tall on desktop and mobile, share border-radius, both
   participate in the same buy-row flex group. */
.hp-product-detail__buy-row { align-items: center !important; }
.hp-product-detail__qty {
    height: 52px !important;
    min-height: 52px !important;
    border-radius: var(--hp-radius) !important;
    border: 1px solid var(--hp-border);
    background: var(--hp-card);
}
.hp-product-detail__qty-btn {
    width: 44px !important;
    height: 52px !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.hp-product-detail__qty-input {
    height: 52px !important;
    width: 44px !important;
    font-size: 15px;
    font-weight: 600;
    text-align: center;
    color: var(--hp-text);
}
.hp-product-detail__cta {
    height: 52px !important;
    min-height: 52px !important;
    border-radius: var(--hp-radius) !important;
    padding: 0 1.25rem !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--hp-space-2);
    font-weight: var(--hp-fw-medium);
}
@media (min-width: 640px) {
    /* desktop: qty and CTA sit side-by-side, both 52px tall, cta flex-fixed */
    .hp-product-detail__buy-row { flex-direction: row !important; gap: 0.75rem; }
    .hp-product-detail__cta { flex: 0 0 auto !important; min-width: 12rem; }
}

/* Task C: cart page item row alignment. Convert loose flex to a proper
   grid: [thumb] [body] [qty] [price] [remove]. Prevents the stair-stepped
   look owner reported. */
.hp-cart-line { align-items: stretch !important; }
@media (min-width: 768px) {
    .hp-cart-line {
        display: grid !important;
        grid-template-columns: 96px 1fr 140px 140px 40px !important;
        gap: 0.75rem 1rem !important;
        align-items: start !important;
    }
    .hp-cart-line__thumb { grid-column: 1; }
    .hp-cart-line__body  { grid-column: 2; }
    .hp-cart-line__qty   { grid-column: 3; align-self: center; justify-self: start; }
    .hp-cart-line__total { grid-column: 4; align-self: center; text-align: right !important; justify-self: end; }
    .hp-cart-line__remove{ grid-column: 5; align-self: start; justify-self: end; }
    /* Kill the ancestor flex that used to justify-between the qty+total below */
    .hp-cart-line .flex.items-end.justify-between { display: contents !important; }
    .hp-cart-line .mt-auto { margin-top: 0 !important; }
}
.hp-cart-line__body { min-width: 0; }
.hp-cart-line__title { display: block; overflow: hidden; text-overflow: ellipsis; }

/* Task D: cart summary before receiving method is selected shows
   "Предварительная сумма" via new lang key; wrap gracefully long labels
   in narrow columns without cutting text. */
.hp-cart-summary__total-label {
    line-height: 1.15;
    word-break: keep-all;
    overflow-wrap: normal;
}
@media (max-width: 640px) {
    .hp-cart-summary__total-label { font-size: 0.95rem; }
}

/* ==========================================================================
 *  Phase 052 ADDENDUM — WINDOW 2 — Cohesive checkout progress-flow bar
 *  Owner brief: the checkout step indicator looked like 4 separate static
 *  labels. Redesign into a connected progress flow so completed / active /
 *  upcoming states are visually distinct and the buyer can see progress
 *  toward order completion. Warm Hidplanet colours (orange, beige, muted).
 * ==========================================================================*/

/* The connecting flow line lives on the container as a pseudo-element behind
   all step numbers. Its width represents completed progress. Steps themselves
   sit above via z-index. */
.hp-checkout-progress {
    position: relative;
    background: #fdfaf3 !important;
    border: 1px solid color-mix(in oklab, var(--hp-primary, #e87020) 14%, #ece0cc) !important;
    padding: 0.85rem 1.1rem !important;
    gap: 0 !important;
    justify-content: space-between;
    overflow: hidden;
}
.hp-checkout-progress::before {
    /* the muted future track */
    content: "";
    position: absolute;
    left: calc(1.1rem + 0.8rem);
    right: calc(1.1rem + 0.8rem);
    top: 50%;
    height: 2px;
    background: color-mix(in oklab, var(--hp-primary, #e87020) 12%, #ece0cc);
    z-index: 0;
    transform: translateY(-50%);
    border-radius: 2px;
}
.hp-checkout-progress::after {
    /* the completed / active orange gradient overlay — width driven by
       body[data-hp-checkout-step] so the flow visibly advances. Step 1 = 0%,
       step 2 = 33%, step 3 = 66%, step 4 = 100%. */
    content: "";
    position: absolute;
    left: calc(1.1rem + 0.8rem);
    top: 50%;
    height: 2px;
    background: linear-gradient(90deg,
        color-mix(in oklab, var(--hp-primary, #e87020) 55%, #fff) 0%,
        var(--hp-primary, #e87020) 100%);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
    transition: width 300ms ease;
    width: 0;
}
body[data-hp-checkout-step="1"] .hp-checkout-progress::after { width: 0; }
body[data-hp-checkout-step="2"] .hp-checkout-progress::after { width: calc((100% - 2 * (1.1rem + 0.8rem)) * 0.333); }
body[data-hp-checkout-step="3"] .hp-checkout-progress::after { width: calc((100% - 2 * (1.1rem + 0.8rem)) * 0.666); }
body[data-hp-checkout-step="4"] .hp-checkout-progress::after { width: calc(100% - 2 * (1.1rem + 0.8rem)); }

/* Each step is a stack: number circle above, label below. z-index so
   circles cover the connecting line cleanly. */
.hp-checkout-progress__step {
    position: relative;
    z-index: 2;
    flex: 0 1 auto !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0.35rem 0.4rem !important;
    gap: 0.35rem !important;
    background: transparent !important;
    text-align: center;
}
.hp-checkout-progress__num {
    width: 2rem !important;
    height: 2rem !important;
    font-size: 0.9rem !important;
    background: #fff !important;
    border: 2px solid color-mix(in oklab, var(--hp-primary, #e87020) 22%, #ece0cc) !important;
    color: var(--hp-muted-text, #7a6a52) !important;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
    transition: background 200ms ease, color 200ms ease, border-color 200ms ease;
}
.hp-checkout-progress__label {
    color: var(--hp-muted-text, #7a6a52);
    font-weight: 500;
    max-width: 8rem;
    white-space: normal;
    line-height: 1.15;
}

/* Completed step: warm beige-orange fill, softer than active. */
.hp-checkout-progress__step--done .hp-checkout-progress__num {
    background: color-mix(in oklab, var(--hp-primary, #e87020) 60%, #fff) !important;
    border-color: color-mix(in oklab, var(--hp-primary, #e87020) 65%, #fff) !important;
    color: #fff !important;
}
.hp-checkout-progress__step--done .hp-checkout-progress__label {
    color: color-mix(in oklab, var(--hp-primary, #e87020) 55%, var(--hp-text, #2d2416));
    font-weight: 600;
}

/* Active step: strong orange fill + emphasized label. Underline is
   forcibly removed (already handled by the phase-051 rule
   `.hp-checkout-progress__step--active::after { content: none !important; }`).  */
.hp-checkout-progress__step--active .hp-checkout-progress__num {
    background: var(--hp-primary, #e87020) !important;
    border-color: var(--hp-primary, #e87020) !important;
    color: #fff !important;
    box-shadow: 0 2px 6px color-mix(in oklab, var(--hp-primary, #e87020) 40%, transparent);
    transform: scale(1.08);
}
.hp-checkout-progress__step--active .hp-checkout-progress__label {
    color: var(--hp-text, #2d2416);
    font-weight: 700;
}

/* Mobile: hide labels for non-active steps; show current label below the row
   via existing .hp-checkout-progress__current widget in template.js. */
@media (max-width: 640px) {
    .hp-checkout-progress { padding: 0.7rem 0.75rem !important; }
    .hp-checkout-progress__step { gap: 0.2rem !important; }
    .hp-checkout-progress__num { width: 1.75rem !important; height: 1.75rem !important; font-size: 0.82rem !important; }
    .hp-checkout-progress__label { display: none !important; }
    .hp-checkout-progress__step--active .hp-checkout-progress__label { display: inline !important; font-size: 0.72rem; }
}

/* ============================================================
   PHASE 055 — HOMEPAGE HERO MINI-CARDS
   BRAND-INSPIRED ADAPTED-MARK VARIANTS
   Owner review only. Activated by GET ?dircardsv=1..5 which
   adds body.hp-dircardsv-<n>. Baseline (no param) unchanged.
   Independent from Phase 054 ?minicardsv= (both can coexist).
   Applies to .hp-hero-mini inside .hp-hero-panel__grid only.

   LEGAL NOTE: brand marks are ADAPTED, not copied. Monochrome
   (uses currentColor). No official brand colors, no exact
   trademark geometry. See brand_inspired_logo_safety_notes.md
   in the Phase 055 report ZIP for the per-mark justification.
   ============================================================ */

/* --- BASELINE (permanent) additions ---
   Adapted brand SVG span is rendered by PHP but hidden by default.
   Variants show it in their own framing. Same for the neutral
   monogram from Phase 054. */
.hp-hero-mini__brand { display: none; }

/* ============================================================
   VARIANT 1 — MONOCHROME PREMIUM BADGES
   Large dark-brown/black badge tile at top-left of each card,
   holding the adapted brand mark in warm-cream color. Card body
   below stays warm. Subtle orange accent on primary card only.
   Feels premium and serious.
   ============================================================ */
body.hp-dircardsv-1 .hp-hero-panel { padding: 1.4rem 1.15rem; background: color-mix(in oklab, var(--hp-card) 96%, var(--hp-primary) 4%); }
body.hp-dircardsv-1 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-dircardsv-1 .hp-hero-mini { padding: 0.85rem 0.9rem 0.75rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 8px; box-shadow: 0 1px 2px rgba(45,36,22,0.05); }
body.hp-dircardsv-1 .hp-hero-mini__head { display: flex; align-items: center; gap: 0.55rem; margin-bottom: 0.35rem; }
body.hp-dircardsv-1 .hp-hero-mini__icon { display: none; }
body.hp-dircardsv-1 .hp-hero-mini__brand { display: inline-flex; align-items: center; justify-content: center; width: 2.35rem; height: 2.35rem; padding: 0.35rem; background: #26201a; color: #f4efe7; border-radius: 5px; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.04); }
body.hp-dircardsv-1 .hp-hero-mini__brand svg { width: 100%; height: 100%; }
body.hp-dircardsv-1 .hp-hero-mini__mono { display: none; }
body.hp-dircardsv-1 .hp-hero-mini__title { font-size: 0.95rem; font-weight: 700; letter-spacing: -0.005em; margin-top: 0; line-height: 1.15; }
body.hp-dircardsv-1 .hp-hero-mini__sub { font-size: 0.7rem; margin-top: 0.35rem; }
body.hp-dircardsv-1 .hp-hero-mini__cta { margin-top: 0.4rem; font-size: 0.7rem; font-weight: 600; }
body.hp-dircardsv-1 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-dircardsv-1 .hp-hero-mini--primary .hp-hero-mini__brand { background: var(--hp-primary); color: #fff; }
body.hp-dircardsv-1 .hp-hero-mini:hover { box-shadow: 0 6px 16px -12px rgba(45,36,22,0.28); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); transform: translateY(-1px); }
@media (max-width: 640px) {
  body.hp-dircardsv-1 .hp-hero-mini__brand { width: 2rem; height: 2rem; padding: 0.3rem; }
  body.hp-dircardsv-1 .hp-hero-mini__title { font-size: 0.85rem; }
}

/* ============================================================
   VARIANT 2 — DIAGNOSTIC LINE-ART SYSTEM
   Adapted mark rendered as thin-line-art on a subtle warm tile.
   Under the mark a horizontal "cable/bus" line connects mark to
   the title. Whole card reads like technical schematics.
   ============================================================ */
body.hp-dircardsv-2 .hp-hero-panel__grid { gap: 0.6rem; }
body.hp-dircardsv-2 .hp-hero-mini { padding: 0.9rem 0.9rem 0.75rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 8px; position: relative; }
body.hp-dircardsv-2 .hp-hero-mini__head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; position: relative; }
body.hp-dircardsv-2 .hp-hero-mini__icon { display: none; }
body.hp-dircardsv-2 .hp-hero-mini__mono { display: none; }
body.hp-dircardsv-2 .hp-hero-mini__brand { display: inline-flex; width: 2.2rem; height: 2.2rem; padding: 0.15rem; color: color-mix(in oklab, var(--hp-primary) 85%, var(--hp-text) 15%); background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border: 1px dashed color-mix(in oklab, var(--hp-primary) 35%, var(--hp-border)); border-radius: 4px; }
body.hp-dircardsv-2 .hp-hero-mini__brand svg { width: 100%; height: 100%; stroke-width: 1.35; }
body.hp-dircardsv-2 .hp-hero-mini__head::after { content: ""; position: absolute; left: 2.75rem; right: 0.2rem; top: 50%; height: 1px; background: repeating-linear-gradient(90deg, color-mix(in oklab, var(--hp-primary) 35%, var(--hp-border)) 0 6px, transparent 6px 10px); opacity: 0.85; }
body.hp-dircardsv-2 .hp-hero-mini__title { font-size: 0.92rem; font-weight: 700; letter-spacing: -0.005em; line-height: 1.15; margin-top: 0; }
body.hp-dircardsv-2 .hp-hero-mini__sub { font-size: 0.7rem; margin-top: 0.35rem; }
body.hp-dircardsv-2 .hp-hero-mini__cta { margin-top: 0.4rem; font-size: 0.7rem; font-weight: 600; }
body.hp-dircardsv-2 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-dircardsv-2 .hp-hero-mini--primary .hp-hero-mini__brand { color: var(--hp-primary); border-style: solid; border-color: var(--hp-primary); background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); }
body.hp-dircardsv-2 .hp-hero-mini:hover .hp-hero-mini__brand { background: color-mix(in oklab, var(--hp-primary) 12%, var(--hp-card)); }

/* ============================================================
   VARIANT 3 — DARK HEADER CARDS
   Top strip of each card is dark brown/black with the adapted
   mark in warm-cream, and the brand name TEXT next to the mark.
   Body of card stays warm with sub-text + CTA. Very commercial.
   ============================================================ */
body.hp-dircardsv-3 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-dircardsv-3 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 8px; overflow: hidden; gap: 0; }
body.hp-dircardsv-3 .hp-hero-mini__head { padding: 0.55rem 0.7rem; background: #26201a; color: #f4efe7; margin-bottom: 0; display: flex; align-items: center; gap: 0.55rem; }
body.hp-dircardsv-3 .hp-hero-mini__icon { display: none; }
body.hp-dircardsv-3 .hp-hero-mini__mono { display: none; }
body.hp-dircardsv-3 .hp-hero-mini__brand { display: inline-flex; width: 1.85rem; height: 1.85rem; padding: 0.25rem; color: #f4efe7; background: transparent; border: 1px solid rgba(255,255,255,0.15); border-radius: 3px; flex-shrink: 0; }
body.hp-dircardsv-3 .hp-hero-mini__brand svg { width: 100%; height: 100%; }
body.hp-dircardsv-3 .hp-hero-mini__title { padding: 0; margin: 0; font-size: 0.9rem; font-weight: 700; color: #fff; letter-spacing: 0; order: 2; flex: 1; }
body.hp-dircardsv-3 .hp-hero-mini__head { position: relative; }
body.hp-dircardsv-3 .hp-hero-mini__head .hp-hero-mini__title { position: absolute; left: 3.1rem; top: 50%; transform: translateY(-50%); font-size: 0.9rem; }
body.hp-dircardsv-3 .hp-hero-mini__sub { padding: 0.55rem 0.75rem 0.1rem; font-size: 0.72rem; color: var(--hp-text-muted); }
body.hp-dircardsv-3 .hp-hero-mini__cta { padding: 0.15rem 0.75rem 0.65rem; font-size: 0.7rem; font-weight: 600; }
body.hp-dircardsv-3 .hp-hero-mini--primary .hp-hero-mini__head { background: var(--hp-primary); }
body.hp-dircardsv-3 .hp-hero-mini--primary .hp-hero-mini__brand { border-color: rgba(255,255,255,0.4); }
body.hp-dircardsv-3 .hp-hero-mini:hover { box-shadow: 0 8px 20px -14px rgba(45,36,22,0.35); }
@media (max-width: 640px) {
  body.hp-dircardsv-3 .hp-hero-mini__head { padding: 0.45rem 0.6rem; }
  body.hp-dircardsv-3 .hp-hero-mini__head .hp-hero-mini__title { left: 2.85rem; font-size: 0.85rem; }
  body.hp-dircardsv-3 .hp-hero-mini__brand { width: 1.7rem; height: 1.7rem; }
}

/* ============================================================
   VARIANT 4 — COMPACT FIRST-SCREEN CARDS
   Adapted mark tucked left of a compact 2-line info block.
   Icon smaller, no CTA line — chevron on right instead. Cards
   ~35% shorter than baseline. Optimised for first-screen density.
   ============================================================ */
body.hp-dircardsv-4 .hp-hero-panel { padding: 1rem 0.85rem; }
body.hp-dircardsv-4 .hp-hero-panel__head { margin-bottom: 0.5rem; }
body.hp-dircardsv-4 .hp-hero-panel__grid { gap: 0.4rem; }
body.hp-dircardsv-4 .hp-hero-mini { position: relative; padding: 0.55rem 1.65rem 0.55rem 2.5rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 6px; gap: 0.1rem; }
body.hp-dircardsv-4 .hp-hero-mini__head { position: absolute; left: 0.55rem; top: 50%; transform: translateY(-50%); margin: 0; }
body.hp-dircardsv-4 .hp-hero-mini__icon { display: none; }
body.hp-dircardsv-4 .hp-hero-mini__mono { display: none; }
body.hp-dircardsv-4 .hp-hero-mini__brand { display: inline-flex; width: 1.7rem; height: 1.7rem; color: var(--hp-primary); background: color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 25%, var(--hp-border)); border-radius: 4px; padding: 0.2rem; }
body.hp-dircardsv-4 .hp-hero-mini__brand svg { width: 100%; height: 100%; }
body.hp-dircardsv-4 .hp-hero-mini__title { font-size: 0.85rem; font-weight: 700; line-height: 1.1; margin-top: 0; }
body.hp-dircardsv-4 .hp-hero-mini__sub { font-size: 0.62rem; line-height: 1.25; margin-top: 0.05rem; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
body.hp-dircardsv-4 .hp-hero-mini__cta { display: none; }
body.hp-dircardsv-4 .hp-hero-mini::after { content: "›"; position: absolute; right: 0.7rem; top: 50%; transform: translateY(-50%); font-size: 1.1rem; line-height: 1; color: var(--hp-primary); font-weight: 700; opacity: 0.55; transition: opacity 150ms ease, transform 150ms ease; }
body.hp-dircardsv-4 .hp-hero-mini:hover::after { opacity: 1; transform: translate(3px, -50%); }
body.hp-dircardsv-4 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); }
body.hp-dircardsv-4 .hp-hero-mini--primary .hp-hero-mini__brand { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }

/* ============================================================
   VARIANT 5 — PRODUCT-CATEGORY STYLE CARDS
   Feels like an ecommerce category tile: adapted mark badge on a
   soft warm gradient strip at top, big title + short "benefit"
   sub-text + strong CTA button (not just a text link). Sales-y.
   ============================================================ */
body.hp-dircardsv-5 .hp-hero-panel { padding: 1.25rem 1.05rem; }
body.hp-dircardsv-5 .hp-hero-panel__grid { gap: 0.65rem; }
body.hp-dircardsv-5 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 10px; overflow: hidden; }
body.hp-dircardsv-5 .hp-hero-mini__head { position: relative; height: 3.6rem; padding: 0; background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 12%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 4%, var(--hp-card)) 100%); border-bottom: 1px solid color-mix(in oklab, var(--hp-primary) 15%, var(--hp-border)); margin-bottom: 0; display: flex; align-items: center; justify-content: center; }
body.hp-dircardsv-5 .hp-hero-mini__icon { display: none; }
body.hp-dircardsv-5 .hp-hero-mini__mono { display: none; }
body.hp-dircardsv-5 .hp-hero-mini__brand { display: inline-flex; width: 2.5rem; height: 2.5rem; padding: 0.35rem; background: var(--hp-card); color: var(--hp-primary); border: 1px solid color-mix(in oklab, var(--hp-primary) 30%, var(--hp-border)); border-radius: 6px; box-shadow: 0 2px 6px -4px rgba(45,36,22,0.2); }
body.hp-dircardsv-5 .hp-hero-mini__brand svg { width: 100%; height: 100%; }
body.hp-dircardsv-5 .hp-hero-mini__title { padding: 0.55rem 0.85rem 0; font-size: 0.95rem; font-weight: 700; letter-spacing: -0.005em; margin-top: 0; line-height: 1.15; }
body.hp-dircardsv-5 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.7rem; line-height: 1.4; }
body.hp-dircardsv-5 .hp-hero-mini__cta { display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; margin: 0.6rem 0.85rem 0.85rem; padding: 0.4rem 0.7rem; background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); color: var(--hp-primary); border: 1px solid color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); border-radius: 6px; font-size: 0.72rem; font-weight: 700; transition: background 150ms ease, color 150ms ease; }
body.hp-dircardsv-5 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 26%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)) 100%); }
body.hp-dircardsv-5 .hp-hero-mini--primary .hp-hero-mini__brand { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-dircardsv-5 .hp-hero-mini--primary .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-dircardsv-5 .hp-hero-mini:hover .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-dircardsv-5 .hp-hero-mini:hover { box-shadow: 0 10px 22px -16px rgba(45,36,22,0.32); border-color: color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); }
@media (max-width: 640px) {
  body.hp-dircardsv-5 .hp-hero-mini__head { height: 3rem; }
  body.hp-dircardsv-5 .hp-hero-mini__brand { width: 2.1rem; height: 2.1rem; }
  body.hp-dircardsv-5 .hp-hero-mini__title { padding: 0.5rem 0.7rem 0; font-size: 0.88rem; }
  body.hp-dircardsv-5 .hp-hero-mini__sub { padding: 0.15rem 0.7rem 0; font-size: 0.66rem; }
  body.hp-dircardsv-5 .hp-hero-mini__cta { margin: 0.5rem 0.7rem 0.7rem; }
}
/* ============================================================
   END PHASE 055
   ============================================================ */

/* Phase 055 V3 patch — title is a sibling of head, not a child, so we
   position the head+title as absolute overlay on top of the card. */
body.hp-dircardsv-3 .hp-hero-mini { position: relative; padding-top: 2.8rem; }
body.hp-dircardsv-3 .hp-hero-mini__head { position: absolute; top: 0; left: 0; right: 0; height: 2.8rem; padding: 0 0.7rem; background: #26201a; color: #f4efe7; margin: 0; display: flex; align-items: center; gap: 0.55rem; }
body.hp-dircardsv-3 .hp-hero-mini__title { position: absolute; top: 0; left: 3.1rem; height: 2.8rem; display: flex; align-items: center; margin: 0; padding: 0; font-size: 0.92rem; font-weight: 700; color: #fff; z-index: 2; line-height: 1; }
body.hp-dircardsv-3 .hp-hero-mini--primary .hp-hero-mini__title { color: #fff; }
body.hp-dircardsv-3 .hp-hero-mini__sub { padding: 0.6rem 0.75rem 0.15rem; }
body.hp-dircardsv-3 .hp-hero-mini__cta { padding: 0.15rem 0.75rem 0.7rem; }
@media (max-width: 640px) {
  body.hp-dircardsv-3 .hp-hero-mini { padding-top: 2.4rem; }
  body.hp-dircardsv-3 .hp-hero-mini__head { height: 2.4rem; padding: 0 0.6rem; }
  body.hp-dircardsv-3 .hp-hero-mini__title { height: 2.4rem; left: 2.85rem; font-size: 0.85rem; }
}

/* ============================================================
   PHASE 056 — HOMEPAGE HERO MINI-CARDS
   RECOGNIZABLE ORIGINAL BRAND-CUE VARIANTS
   Owner review only. Activated by GET ?brandcuev=1..5 which
   adds body.hp-brandcuev-<n>. Baseline (no param) unchanged.
   Independent from Phase 054 ?minicardsv=  and Phase 055 ?dircardsv=.

   LEGAL NOTE: brand names appear as text wordmarks inside .cue SVGs
   (nominative-fair-use category labels for a diagnostic-tool shop),
   drawn in the site's own sans-serif — NOT any brand's official
   typeface, colors, or geometry. See brand_cue_legal_safety_notes.md.
   ============================================================ */

/* --- BASELINE (permanent) additions ---
   New cue span is hidden by default; variants show it. */
.hp-hero-mini__cue { display: none; }
.hp-hero-mini__cue svg { display: block; }

/* ============================================================
   VARIANT 1 — STRONG MONOCHROME BRAND-CUE BADGES
   Big cue plate at top of each card. Dark warm plate with cream
   wordmark. Primary card plate switches to orange with white text.
   Highest single-glance recognition.
   ============================================================ */
body.hp-brandcuev-1 .hp-hero-panel__grid { gap: 0.65rem; }
body.hp-brandcuev-1 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 8px; overflow: hidden; gap: 0; }
body.hp-brandcuev-1 .hp-hero-mini__head { display: block; padding: 0.5rem 0.65rem; background: #22201a; color: #f4efe7; margin: 0; }
body.hp-brandcuev-1 .hp-hero-mini__icon,
body.hp-brandcuev-1 .hp-hero-mini__mono,
body.hp-brandcuev-1 .hp-hero-mini__brand { display: none; }
body.hp-brandcuev-1 .hp-hero-mini__cue { display: block; width: 100%; height: 2.4rem; color: #f4efe7; }
body.hp-brandcuev-1 .hp-hero-mini__cue svg { width: 100%; height: 100%; }
body.hp-brandcuev-1 .hp-hero-mini__title { padding: 0.55rem 0.75rem 0; margin: 0; font-size: 0.85rem; font-weight: 700; color: var(--hp-text); letter-spacing: 0; }
body.hp-brandcuev-1 .hp-hero-mini__sub { padding: 0.2rem 0.75rem 0.1rem; font-size: 0.7rem; }
body.hp-brandcuev-1 .hp-hero-mini__cta { padding: 0.35rem 0.75rem 0.65rem; font-size: 0.7rem; font-weight: 600; }
body.hp-brandcuev-1 .hp-hero-mini--primary .hp-hero-mini__head { background: var(--hp-primary); }
body.hp-brandcuev-1 .hp-hero-mini--primary .hp-hero-mini__cue { color: #fff; }
body.hp-brandcuev-1 .hp-hero-mini:hover { box-shadow: 0 8px 22px -14px rgba(45,36,22,0.36); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); }

/* ============================================================
   VARIANT 2 — DIAGNOSTIC EQUIPMENT CARDS
   Cue on warm-tint plate with tool-shop framing. Corner brackets
   suggest scanner display. Card padding is generous.
   ============================================================ */
body.hp-brandcuev-2 .hp-hero-panel__grid { gap: 0.65rem; }
body.hp-brandcuev-2 .hp-hero-mini { padding: 0.85rem 0.85rem 0.75rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, var(--hp-primary) 20%, var(--hp-border)); border-radius: 8px; position: relative; }
body.hp-brandcuev-2 .hp-hero-mini__head { display: block; margin-bottom: 0.45rem; position: relative; padding: 0.4rem 0.45rem; background: color-mix(in oklab, var(--hp-primary) 5%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 5px; }
body.hp-brandcuev-2 .hp-hero-mini__icon,
body.hp-brandcuev-2 .hp-hero-mini__mono,
body.hp-brandcuev-2 .hp-hero-mini__brand { display: none; }
body.hp-brandcuev-2 .hp-hero-mini__cue { display: block; width: 100%; height: 2.3rem; color: color-mix(in oklab, var(--hp-primary) 82%, var(--hp-text) 18%); }
body.hp-brandcuev-2 .hp-hero-mini__cue svg { width: 100%; height: 100%; }
body.hp-brandcuev-2 .hp-hero-mini__head::before,
body.hp-brandcuev-2 .hp-hero-mini__head::after { content: ""; position: absolute; width: 8px; height: 8px; border-color: var(--hp-primary); opacity: 0.7; }
body.hp-brandcuev-2 .hp-hero-mini__head::before { top: -2px; left: -2px; border-top: 1.5px solid; border-left: 1.5px solid; }
body.hp-brandcuev-2 .hp-hero-mini__head::after { bottom: -2px; right: -2px; border-bottom: 1.5px solid; border-right: 1.5px solid; }
body.hp-brandcuev-2 .hp-hero-mini__title { font-size: 0.92rem; font-weight: 700; letter-spacing: -0.005em; margin-top: 0; }
body.hp-brandcuev-2 .hp-hero-mini__sub { font-size: 0.7rem; margin-top: 0.35rem; }
body.hp-brandcuev-2 .hp-hero-mini__cta { margin-top: 0.4rem; font-size: 0.7rem; font-weight: 600; }
body.hp-brandcuev-2 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-brandcuev-2 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 12%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-brandcuev-2 .hp-hero-mini--primary .hp-hero-mini__cue { color: var(--hp-primary); }
body.hp-brandcuev-2 .hp-hero-mini:hover { box-shadow: 0 8px 20px -14px rgba(45,36,22,0.32); }

/* ============================================================
   VARIANT 3 — EMBLEM + TEXT LOCKUP
   Cue on the LEFT (2/5 width) inside a warm bordered plate;
   title + sub + CTA on the right. Reads as a category lockup.
   ============================================================ */
body.hp-brandcuev-3 .hp-hero-panel__grid { gap: 0.65rem; }
body.hp-brandcuev-3 .hp-hero-mini { padding: 0.6rem 0.75rem 0.6rem 0.65rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 8px; display: grid; grid-template-columns: 44% 56%; grid-template-rows: auto auto auto; gap: 0.15rem 0.7rem; align-items: center; }
body.hp-brandcuev-3 .hp-hero-mini__head { grid-row: 1 / span 3; grid-column: 1; margin: 0; padding: 0.5rem 0.45rem; background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 25%, var(--hp-border)); border-radius: 6px; display: flex; align-items: center; justify-content: center; min-height: 3.4rem; }
body.hp-brandcuev-3 .hp-hero-mini__icon,
body.hp-brandcuev-3 .hp-hero-mini__mono,
body.hp-brandcuev-3 .hp-hero-mini__brand { display: none; }
body.hp-brandcuev-3 .hp-hero-mini__cue { display: block; width: 100%; height: 2.4rem; color: color-mix(in oklab, var(--hp-primary) 85%, var(--hp-text) 15%); }
body.hp-brandcuev-3 .hp-hero-mini__cue svg { width: 100%; height: 100%; }
body.hp-brandcuev-3 .hp-hero-mini__title { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.9rem; font-weight: 700; letter-spacing: -0.005em; }
body.hp-brandcuev-3 .hp-hero-mini__sub { grid-column: 2; grid-row: 2; margin: 0; font-size: 0.68rem; line-height: 1.3; }
body.hp-brandcuev-3 .hp-hero-mini__cta { grid-column: 2; grid-row: 3; margin: 0; font-size: 0.68rem; font-weight: 600; }
body.hp-brandcuev-3 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 20%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-brandcuev-3 .hp-hero-mini--primary .hp-hero-mini__cue { color: var(--hp-primary); }
body.hp-brandcuev-3 .hp-hero-mini:hover .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 15%, var(--hp-card)); }

/* ============================================================
   VARIANT 4 — COMPACT DENSE FIRST-SCREEN
   Cue plate on left (narrow), title compact, sub 1-line, CTA off,
   chevron right. Panel shrinks noticeably.
   ============================================================ */
body.hp-brandcuev-4 .hp-hero-panel { padding: 0.85rem 0.85rem; }
body.hp-brandcuev-4 .hp-hero-panel__head { margin-bottom: 0.5rem; }
body.hp-brandcuev-4 .hp-hero-panel__grid { gap: 0.4rem; }
body.hp-brandcuev-4 .hp-hero-mini { padding: 0.45rem 1.6rem 0.45rem 0.45rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 6px; display: grid; grid-template-columns: 3.2rem 1fr; gap: 0.1rem 0.55rem; align-items: center; position: relative; }
body.hp-brandcuev-4 .hp-hero-mini__head { grid-row: 1 / span 2; grid-column: 1; margin: 0; padding: 0.25rem; background: color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 4px; display: flex; align-items: center; justify-content: center; height: 1.85rem; }
body.hp-brandcuev-4 .hp-hero-mini__icon,
body.hp-brandcuev-4 .hp-hero-mini__mono,
body.hp-brandcuev-4 .hp-hero-mini__brand { display: none; }
body.hp-brandcuev-4 .hp-hero-mini__cue { display: block; width: 100%; height: 100%; color: color-mix(in oklab, var(--hp-primary) 85%, var(--hp-text) 15%); }
body.hp-brandcuev-4 .hp-hero-mini__cue svg { width: 100%; height: 100%; }
body.hp-brandcuev-4 .hp-hero-mini__title { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.82rem; font-weight: 700; line-height: 1.1; }
body.hp-brandcuev-4 .hp-hero-mini__sub { grid-column: 2; grid-row: 2; margin: 0; font-size: 0.62rem; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
body.hp-brandcuev-4 .hp-hero-mini__cta { display: none; }
body.hp-brandcuev-4 .hp-hero-mini::after { content: "›"; position: absolute; right: 0.65rem; top: 50%; transform: translateY(-50%); font-size: 1.1rem; line-height: 1; color: var(--hp-primary); font-weight: 700; opacity: 0.55; transition: opacity 150ms ease, transform 150ms ease; }
body.hp-brandcuev-4 .hp-hero-mini:hover::after { opacity: 1; transform: translate(3px, -50%); }
body.hp-brandcuev-4 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-brandcuev-4 .hp-hero-mini--primary .hp-hero-mini__head { background: var(--hp-primary); border-color: var(--hp-primary); }
body.hp-brandcuev-4 .hp-hero-mini--primary .hp-hero-mini__cue { color: #fff; }

/* ============================================================
   VARIANT 5 — PREMIUM DARK-ACCENT
   Dark warm strip across the top with the cue on it (like V1 but
   taller strip and stronger accent), warm-cream card body below,
   button-style CTA. Feels like premium diagnostic-shop category.
   ============================================================ */
body.hp-brandcuev-5 .hp-hero-panel { padding: 1.25rem 1rem; }
body.hp-brandcuev-5 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-brandcuev-5 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 10px; overflow: hidden; gap: 0; }
body.hp-brandcuev-5 .hp-hero-mini__head { display: block; padding: 0.55rem 0.75rem; background: linear-gradient(180deg, #2b241a 0%, #1e1912 100%); color: #f4efe7; margin: 0; }
body.hp-brandcuev-5 .hp-hero-mini__icon,
body.hp-brandcuev-5 .hp-hero-mini__mono,
body.hp-brandcuev-5 .hp-hero-mini__brand { display: none; }
body.hp-brandcuev-5 .hp-hero-mini__cue { display: block; width: 100%; height: 2.7rem; color: #f4efe7; }
body.hp-brandcuev-5 .hp-hero-mini__cue svg { width: 100%; height: 100%; }
body.hp-brandcuev-5 .hp-hero-mini__title { padding: 0.6rem 0.85rem 0; margin: 0; font-size: 0.95rem; font-weight: 700; letter-spacing: -0.005em; }
body.hp-brandcuev-5 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.7rem; line-height: 1.4; }
body.hp-brandcuev-5 .hp-hero-mini__cta { display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; margin: 0.55rem 0.85rem 0.85rem; padding: 0.42rem 0.7rem; background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); color: var(--hp-primary); border: 1px solid color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); border-radius: 6px; font-size: 0.72rem; font-weight: 700; }
body.hp-brandcuev-5 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 90%, #2b241a) 0%, var(--hp-primary) 100%); }
body.hp-brandcuev-5 .hp-hero-mini--primary .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-brandcuev-5 .hp-hero-mini:hover .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-brandcuev-5 .hp-hero-mini:hover { box-shadow: 0 10px 26px -18px rgba(45,36,22,0.4); }
@media (max-width: 640px) {
  body.hp-brandcuev-5 .hp-hero-mini__cue { height: 2.4rem; }
  body.hp-brandcuev-5 .hp-hero-mini__title { padding: 0.5rem 0.7rem 0; font-size: 0.88rem; }
}
/* ============================================================
   END PHASE 056
   ============================================================ */

/* ==========================================================================
 *  Phase 053 — WINDOW 2 — Cart / Checkout final UX validation + payment notice
 *  Owner errors after 052:
 *    B) cart row still stair-stepped
 *    C) cart "Обновить" icon looks like browser refresh
 *    D) checkout Data step Back button shifts left outside form grid
 *    G) progress "circles on a line" component rejected — new segmented design
 *    H) EveryPay / PayPal wordmarks too small/unreadable
 *    I) payment-aware confirmation notice
 * ==========================================================================*/

/* Task B: cart row grid tightened. Fixes remaining "stair-step":
   - stack thumb+body under a common flex, qty column strictly aligned
   - vertical stripe divider so multi-product carts read as tabular
   - fixed remove-icon column so title never wraps under it. */
.hp-cart-line {
    background: #fff;
    border: 1px solid var(--hp-border, #e2d9cc);
    border-radius: 0.75rem;
    padding: 1rem;
    align-items: stretch !important;
}
@media (min-width: 768px) {
    .hp-cart-line {
        display: grid !important;
        grid-template-columns: 88px minmax(0, 1fr) 130px 120px 32px !important;
        grid-template-rows: auto !important;
        gap: 0 1rem !important;
        align-items: center !important;
    }
    .hp-cart-line__image { grid-column: 1; grid-row: 1; align-self: center; }
    .hp-cart-line__body {
        grid-column: 2 !important;
        grid-row: 1 !important;
        min-width: 0;
        display: block !important;
        padding-right: 0.5rem;
    }
    /* Kill the flex-between wrapper that used to place qty+total below body */
    .hp-cart-line > .flex,
    .hp-cart-line .flex.items-end.justify-between,
    .hp-cart-line .mt-auto { display: contents !important; }
    .hp-cart-line__qty    { grid-column: 3 !important; grid-row: 1 !important; align-self: center !important; justify-self: start !important; }
    .hp-cart-line__total  { grid-column: 4 !important; grid-row: 1 !important; align-self: center !important; text-align: right !important; justify-self: end !important; }
    .hp-cart-line__remove { grid-column: 5 !important; grid-row: 1 !important; align-self: center !important; justify-self: end !important; }
}
.hp-cart-line__image {
    display: block;
    width: 88px;
    height: 88px;
    overflow: hidden;
    border-radius: 0.5rem;
    background: #fdfaf3;
    border: 1px solid var(--hp-border, #e2d9cc);
}
.hp-cart-line__image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}
.hp-cart-line__title { display: block; overflow: hidden; text-overflow: ellipsis; }
.hp-cart-line__remove {
    display: inline-flex;
    width: 32px; height: 32px;
    align-items: center; justify-content: center;
    border-radius: 999px;
    color: var(--hp-muted-text, #7a6a52);
    background: transparent;
    border: 1px solid transparent;
    transition: color 120ms, background 120ms, border-color 120ms;
}
.hp-cart-line__remove:hover {
    color: #c94b4b;
    background: #fdf3f3;
    border-color: #f3d5d5;
}
/* Mobile stacked card layout */
@media (max-width: 767px) {
    .hp-cart-line { padding: 0.85rem; }
    .hp-cart-line__image { float: left; margin: 0 0.85rem 0.4rem 0; }
    .hp-cart-line__body { min-width: 0; }
    .hp-cart-line__remove { float: right; }
    .hp-cart-line .flex.items-end.justify-between {
        clear: both;
        display: flex !important;
        margin-top: 0.6rem;
        align-items: center;
        justify-content: space-between;
    }
    .hp-cart-line__qty   { align-self: center; }
    .hp-cart-line__total { align-self: center; text-align: right; }
}

/* Cart action button harmony (Task C helper): make Обновить / Продолжить look one family. */
form#updateCart > .flex.items-center.gap-3 {
    align-items: stretch !important;
}
form#updateCart > .flex.items-center.gap-3 .hp-btn--outline {
    height: 2.5rem;
    padding: 0 0.95rem;
    border-radius: var(--hp-radius);
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    line-height: 1;
}

/* Task D: Data-step Back button alignment — the .hp-checkout-step-nav
   sat inside .hp-cust-fields-panel with negative-look margins. Force the
   nav to sit flush with the form left edge on every step. */
.hp-checkout-step .hp-checkout-step-nav {
    margin-left: 0 !important;
    padding-left: 0 !important;
    justify-content: flex-start;
}
#hp-checkout-customer .hp-checkout-step-nav {
    /* Data step is inside a grid with an aside; make the nav align with
       the LEFT COLUMN, not span both columns. */
    grid-column: 1 !important;
    margin-top: 1.25rem !important;
    padding-top: 0 !important;
}

/* Task G: replace circles-on-line with a segmented progress ribbon.
   Overrides the phase-052 "flow" design (which owner considered
   circles+line). Four equal segments inside ONE rounded pill container;
   completed segments filled warm-orange gradient; active segment strong
   orange; upcoming muted. No standalone circles floating. */
.hp-checkout-progress {
    display: flex !important;
    padding: 0 !important;
    gap: 0 !important;
    background: color-mix(in oklab, var(--hp-primary, #e87020) 6%, #fdfaf3) !important;
    border: 1px solid color-mix(in oklab, var(--hp-primary, #e87020) 18%, #ece0cc) !important;
    border-radius: 999px !important;
    overflow: hidden !important;
    box-shadow: 0 1px 2px rgba(0,0,0,0.03);
    margin: 0 0 1.5rem;
}
.hp-checkout-progress::before,
.hp-checkout-progress::after { content: none !important; display: none !important; }
.hp-checkout-progress__step {
    position: relative;
    flex: 1 1 0 !important;
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0.5rem !important;
    padding: 0.65rem 0.5rem !important;
    background: transparent !important;
    color: var(--hp-muted-text, #7a6a52) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    cursor: default;
    font-weight: 500;
    font-size: 0.85rem;
    border: 0 !important;
    text-align: center;
    z-index: 1;
}
/* Chevron divider between segments */
.hp-checkout-progress__step + .hp-checkout-progress__step::before {
    content: "";
    position: absolute;
    left: 0;
    top: 20%;
    bottom: 20%;
    width: 1px;
    background: color-mix(in oklab, var(--hp-primary, #e87020) 20%, #ece0cc);
    z-index: 0;
}
.hp-checkout-progress__num {
    width: 1.5rem !important;
    height: 1.5rem !important;
    border-radius: 999px !important;
    font-size: 0.78rem !important;
    background: #fff !important;
    color: var(--hp-muted-text, #7a6a52) !important;
    border: 1.5px solid color-mix(in oklab, var(--hp-primary, #e87020) 26%, #ece0cc) !important;
    box-shadow: none !important;
    display: inline-flex; align-items: center; justify-content: center;
    flex: 0 0 auto;
    transform: none !important;
    transition: background 200ms, color 200ms, border-color 200ms;
}
.hp-checkout-progress__label {
    color: inherit;
    max-width: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Completed: warm-orange fill across full segment */
.hp-checkout-progress__step--done {
    background: color-mix(in oklab, var(--hp-primary, #e87020) 28%, #fff) !important;
    color: color-mix(in oklab, var(--hp-primary, #e87020) 70%, var(--hp-text, #2d2416)) !important;
}
.hp-checkout-progress__step--done .hp-checkout-progress__num {
    background: color-mix(in oklab, var(--hp-primary, #e87020) 70%, #fff) !important;
    border-color: color-mix(in oklab, var(--hp-primary, #e87020) 70%, #fff) !important;
    color: #fff !important;
}

/* Active: strongest visual point */
.hp-checkout-progress__step--active {
    background: var(--hp-primary, #e87020) !important;
    color: #fff !important;
    font-weight: 700 !important;
}
.hp-checkout-progress__step--active .hp-checkout-progress__num {
    background: #fff !important;
    color: var(--hp-primary, #e87020) !important;
    border-color: #fff !important;
    font-weight: 700 !important;
}

/* Mobile: only active step label visible; others show number only */
@media (max-width: 640px) {
    .hp-checkout-progress__step { padding: 0.55rem 0.3rem !important; font-size: 0.72rem !important; }
    .hp-checkout-progress__num { width: 1.4rem !important; height: 1.4rem !important; font-size: 0.7rem !important; }
    .hp-checkout-progress__label { display: none !important; }
    .hp-checkout-progress__step--active .hp-checkout-progress__label { display: inline !important; }
}

/* Task H: bigger, more readable payment-tile wordmarks.
   Icon column is now a 96×36 (desktop) / 80×32 (mobile) slot, so the
   svg <text> is legible without zoom. */
.hp-payment-tile__icon--wordmark {
    width: 96px !important;
    height: 36px !important;
    flex: 0 0 auto !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    padding: 2px 4px !important;
}
.hp-payment-tile__icon--wordmark svg {
    width: 100% !important;
    height: 100% !important;
    max-width: 96px !important;
    max-height: 32px !important;
}
@media (max-width: 640px) {
    .hp-payment-tile__icon--wordmark { width: 80px !important; height: 32px !important; }
}

/* Task E: OBDMarket-style shake + invalid-field highlight for required
   fields. Triggered by adding class .hp-shake to the button + .hp-invalid
   to the offending field. */
@keyframes hpShakeX {
    0%,100% { transform: translateX(0); }
    15%     { transform: translateX(-6px); }
    30%     { transform: translateX(6px); }
    45%     { transform: translateX(-4px); }
    60%     { transform: translateX(4px); }
    75%     { transform: translateX(-2px); }
    90%     { transform: translateX(2px); }
}
.hp-shake { animation: hpShakeX 480ms ease-in-out; }
.hp-invalid,
.hp-field__input.hp-invalid,
select.hp-invalid,
input.hp-invalid {
    border-color: #d0532a !important;
    background-color: #fef6f2 !important;
    box-shadow: 0 0 0 2px rgba(208,83,42,.15);
}
.hp-invalid-msg {
    display: block;
    color: #b03e1c;
    font-size: 0.78rem;
    margin-top: 0.25rem;
    font-weight: 500;
}

/* Task I: payment-aware confirmation notice — calm neutral info card.
   Sits above the safe-stop panel, changes copy when the buyer picks a
   different payment method. */
.hp-payment-notice {
    margin: 1rem 0;
    padding: 0.85rem 1rem;
    background: color-mix(in oklab, var(--hp-primary, #e87020) 6%, #fffaf3);
    border-left: 3px solid var(--hp-primary, #e87020);
    border-radius: 0.5rem;
    color: var(--hp-text, #2d2416);
    font-size: 0.9rem;
    line-height: 1.45;
}
.hp-payment-notice strong { display: block; margin-bottom: 0.15rem; font-weight: 600; }

/* ============================================================
   PHASE 057 — HOMEPAGE HERO MINI-CARDS
   LARGE WORDMARK + AUTOMOTIVE-CONTEXT VARIANTS
   Owner review only. Activated by GET ?logostyv=1..5 which
   adds body.hp-logostyv-<n>. Baseline (no param) unchanged.
   Independent from 054/055/056 preview systems.

   LEGAL NOTE: cues are large brand-name TEXT wordmarks in the
   shop's own sans-serif with wide letter-spacing (nominative
   fair use category labels for a diagnostic-compatibility
   retailer) plus generic descriptive automotive imagery
   (steering wheel outline, gauge dial, OBD-II connector,
   generic car silhouette, cable). NO trademark logo geometry
   is reproduced. See brand_usage_safety_notes.md.
   ============================================================ */

/* --- BASELINE (permanent) additions ---
   Logo cue span hidden by default; variants show it. */
.hp-hero-mini__logo { display: none; }
.hp-hero-mini__logo svg { display: block; }

/* ============================================================
   VARIANT 1 — CLEAN MONOCHROME LOGO CARDS
   Cue plate at top on warm-tint background; wordmark + imagery
   in dark warm color. Card body below stays clean.
   ============================================================ */
body.hp-logostyv-1 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-logostyv-1 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 8px; overflow: hidden; gap: 0; }
body.hp-logostyv-1 .hp-hero-mini__head { display: block; padding: 0.7rem 0.9rem; background: color-mix(in oklab, var(--hp-primary) 5%, var(--hp-card)); border-bottom: 1px solid color-mix(in oklab, var(--hp-primary) 15%, var(--hp-border)); margin: 0; }
body.hp-logostyv-1 .hp-hero-mini__icon,
body.hp-logostyv-1 .hp-hero-mini__mono,
body.hp-logostyv-1 .hp-hero-mini__brand,
body.hp-logostyv-1 .hp-hero-mini__cue { display: none; }
body.hp-logostyv-1 .hp-hero-mini__logo { display: block; width: 100%; height: 3rem; color: var(--hp-text); }
body.hp-logostyv-1 .hp-hero-mini__logo svg { width: 100%; height: 100%; }
body.hp-logostyv-1 .hp-hero-mini__title { padding: 0.55rem 0.85rem 0; margin: 0; font-size: 0.9rem; font-weight: 700; letter-spacing: -0.005em; }
body.hp-logostyv-1 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.7rem; }
body.hp-logostyv-1 .hp-hero-mini__cta { padding: 0.4rem 0.85rem 0.7rem; font-size: 0.7rem; font-weight: 600; }
body.hp-logostyv-1 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 22%, var(--hp-card)); }
body.hp-logostyv-1 .hp-hero-mini--primary .hp-hero-mini__logo { color: var(--hp-primary); }
body.hp-logostyv-1 .hp-hero-mini:hover { box-shadow: 0 8px 22px -14px rgba(45,36,22,0.32); }

/* ============================================================
   VARIANT 2 — LOGO BADGE INSIDE WARM CARD
   Large centered logo badge on a distinct warm plate above the
   text block. Feels premium ecommerce.
   ============================================================ */
body.hp-logostyv-2 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-logostyv-2 .hp-hero-mini { padding: 0.85rem 0.85rem 0.75rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 10px; }
body.hp-logostyv-2 .hp-hero-mini__head { display: flex; align-items: center; justify-content: center; margin: 0 0 0.55rem; padding: 0.65rem 0.75rem; background: color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 20%, var(--hp-border)); border-radius: 8px; }
body.hp-logostyv-2 .hp-hero-mini__icon,
body.hp-logostyv-2 .hp-hero-mini__mono,
body.hp-logostyv-2 .hp-hero-mini__brand,
body.hp-logostyv-2 .hp-hero-mini__cue { display: none; }
body.hp-logostyv-2 .hp-hero-mini__logo { display: block; width: 100%; height: 3.2rem; color: color-mix(in oklab, var(--hp-primary) 78%, var(--hp-text) 22%); }
body.hp-logostyv-2 .hp-hero-mini__logo svg { width: 100%; height: 100%; }
body.hp-logostyv-2 .hp-hero-mini__title { font-size: 0.92rem; font-weight: 700; margin-top: 0; }
body.hp-logostyv-2 .hp-hero-mini__sub { font-size: 0.7rem; margin-top: 0.3rem; }
body.hp-logostyv-2 .hp-hero-mini__cta { margin-top: 0.4rem; font-size: 0.7rem; font-weight: 600; }
body.hp-logostyv-2 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-logostyv-2 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 16%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-logostyv-2 .hp-hero-mini--primary .hp-hero-mini__logo { color: var(--hp-primary); }
body.hp-logostyv-2 .hp-hero-mini:hover .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 14%, var(--hp-card)); }

/* ============================================================
   VARIANT 3 — HORIZONTAL COMPACT LOGO NAVIGATION
   Logo left (46% width) + title/sub/CTA right. Compact height.
   ============================================================ */
body.hp-logostyv-3 .hp-hero-panel__grid { gap: 0.55rem; }
body.hp-logostyv-3 .hp-hero-mini { padding: 0.55rem 0.75rem 0.55rem 0.6rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 7px; display: grid; grid-template-columns: 46% 54%; grid-template-rows: auto auto auto; column-gap: 0.6rem; row-gap: 0.05rem; align-items: center; }
body.hp-logostyv-3 .hp-hero-mini__head { grid-row: 1 / span 3; grid-column: 1; margin: 0; padding: 0.4rem 0.4rem; background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 5px; display: flex; align-items: center; justify-content: center; min-height: 3rem; }
body.hp-logostyv-3 .hp-hero-mini__icon,
body.hp-logostyv-3 .hp-hero-mini__mono,
body.hp-logostyv-3 .hp-hero-mini__brand,
body.hp-logostyv-3 .hp-hero-mini__cue { display: none; }
body.hp-logostyv-3 .hp-hero-mini__logo { display: block; width: 100%; height: 2.6rem; color: color-mix(in oklab, var(--hp-primary) 85%, var(--hp-text) 15%); }
body.hp-logostyv-3 .hp-hero-mini__logo svg { width: 100%; height: 100%; }
body.hp-logostyv-3 .hp-hero-mini__title { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.87rem; font-weight: 700; line-height: 1.1; }
body.hp-logostyv-3 .hp-hero-mini__sub { grid-column: 2; grid-row: 2; margin: 0; font-size: 0.65rem; line-height: 1.3; }
body.hp-logostyv-3 .hp-hero-mini__cta { grid-column: 2; grid-row: 3; margin: 0; font-size: 0.66rem; font-weight: 600; }
body.hp-logostyv-3 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 20%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-logostyv-3 .hp-hero-mini--primary .hp-hero-mini__logo { color: var(--hp-primary); }

/* ============================================================
   VARIANT 4 — DARK TECHNICAL HEADER + LOGO
   Dark warm strip at top with reversed light-cream logo; warm
   card body below. Serious diagnostic-shop style.
   ============================================================ */
body.hp-logostyv-4 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-logostyv-4 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241a 15%, var(--hp-border)); border-radius: 9px; overflow: hidden; gap: 0; }
body.hp-logostyv-4 .hp-hero-mini__head { display: block; padding: 0.65rem 0.85rem; background: #22201a; margin: 0; position: relative; }
body.hp-logostyv-4 .hp-hero-mini__head::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg, transparent 0%, var(--hp-primary) 50%, transparent 100%); opacity: 0.55; }
body.hp-logostyv-4 .hp-hero-mini__icon,
body.hp-logostyv-4 .hp-hero-mini__mono,
body.hp-logostyv-4 .hp-hero-mini__brand,
body.hp-logostyv-4 .hp-hero-mini__cue { display: none; }
body.hp-logostyv-4 .hp-hero-mini__logo { display: block; width: 100%; height: 3rem; color: #f4efe7; }
body.hp-logostyv-4 .hp-hero-mini__logo svg { width: 100%; height: 100%; }
body.hp-logostyv-4 .hp-hero-mini__title { padding: 0.55rem 0.85rem 0; margin: 0; font-size: 0.9rem; font-weight: 700; }
body.hp-logostyv-4 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.7rem; }
body.hp-logostyv-4 .hp-hero-mini__cta { padding: 0.4rem 0.85rem 0.7rem; font-size: 0.7rem; font-weight: 600; }
body.hp-logostyv-4 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 90%, #2b241a) 0%, var(--hp-primary) 100%); }
body.hp-logostyv-4 .hp-hero-mini--primary .hp-hero-mini__head::after { background: linear-gradient(90deg, transparent 0%, #fff 50%, transparent 100%); opacity: 0.4; }
body.hp-logostyv-4 .hp-hero-mini:hover { box-shadow: 0 10px 26px -18px rgba(45,36,22,0.4); }

/* ============================================================
   VARIANT 5 — LARGE CATEGORY TILES
   Extra-tall cards with prominent logo (60% of card height) on
   a soft warm gradient; big title + button CTA below.
   ============================================================ */
body.hp-logostyv-5 .hp-hero-panel__grid { gap: 0.75rem; }
body.hp-logostyv-5 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, var(--hp-primary) 15%, var(--hp-border)); border-radius: 12px; overflow: hidden; gap: 0; }
body.hp-logostyv-5 .hp-hero-mini__head { display: flex; align-items: center; justify-content: center; padding: 1rem 1rem 0.85rem; background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 14%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 4%, var(--hp-card)) 100%); border-bottom: 1px solid color-mix(in oklab, var(--hp-primary) 18%, var(--hp-border)); margin: 0; min-height: 4.4rem; }
body.hp-logostyv-5 .hp-hero-mini__icon,
body.hp-logostyv-5 .hp-hero-mini__mono,
body.hp-logostyv-5 .hp-hero-mini__brand,
body.hp-logostyv-5 .hp-hero-mini__cue { display: none; }
body.hp-logostyv-5 .hp-hero-mini__logo { display: block; width: 100%; height: 3.6rem; color: color-mix(in oklab, var(--hp-primary) 78%, var(--hp-text) 22%); }
body.hp-logostyv-5 .hp-hero-mini__logo svg { width: 100%; height: 100%; }
body.hp-logostyv-5 .hp-hero-mini__title { padding: 0.7rem 0.95rem 0; margin: 0; font-size: 1rem; font-weight: 700; letter-spacing: -0.005em; }
body.hp-logostyv-5 .hp-hero-mini__sub { padding: 0.25rem 0.95rem 0; font-size: 0.72rem; line-height: 1.4; }
body.hp-logostyv-5 .hp-hero-mini__cta { display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; margin: 0.6rem 0.95rem 0.9rem; padding: 0.45rem 0.75rem; background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); color: var(--hp-primary); border: 1px solid color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); border-radius: 6px; font-size: 0.74rem; font-weight: 700; }
body.hp-logostyv-5 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 26%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)) 100%); }
body.hp-logostyv-5 .hp-hero-mini--primary .hp-hero-mini__logo { color: var(--hp-primary); }
body.hp-logostyv-5 .hp-hero-mini--primary .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-logostyv-5 .hp-hero-mini:hover .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-logostyv-5 .hp-hero-mini:hover { box-shadow: 0 12px 28px -18px rgba(45,36,22,0.4); }
@media (max-width: 640px) {
  body.hp-logostyv-5 .hp-hero-mini__head { min-height: 3.6rem; padding: 0.8rem 0.7rem 0.65rem; }
  body.hp-logostyv-5 .hp-hero-mini__logo { height: 2.9rem; }
  body.hp-logostyv-5 .hp-hero-mini__title { padding: 0.55rem 0.75rem 0; font-size: 0.9rem; }
  body.hp-logostyv-5 .hp-hero-mini__sub { padding: 0.2rem 0.75rem 0; font-size: 0.66rem; }
  body.hp-logostyv-5 .hp-hero-mini__cta { margin: 0.5rem 0.75rem 0.75rem; }
}
/* ============================================================
   END PHASE 057
   ============================================================ */

/* ============================================================
   PHASE 059 — HOMEPAGE HERO MINI-CARDS
   PRODUCT-PHOTO HERO TILES (SITE-PALETTE ADAPTED)
   Owner review only. Activated by GET ?prodphotov=1..5 which
   adds body.hp-prodphotov-<n>. Baseline (no param) unchanged.
   Independent from 054/055/056/057 preview systems.

   NOTE: cues use the shop's OWN product photos (standard
   ecommerce practice) as the visual base per direction, paired
   with brand-name text wordmarks in the shop's own sans-serif as
   category labels. Product photos come from /components/com_
   jshopping/files/img_products/ and are referenced by URL —
   nothing is downloaded or copied. Palette adapted via CSS
   filter (sepia + saturate + hue-rotate + contrast) so photos
   sit in Hidplanet warm-brown palette rather than staying full-
   original colors. See brand_usage_safety_notes.md.
   ============================================================ */

/* --- BASELINE (permanent) additions ---
   Product photo span is hidden by default; variants show it. */
.hp-hero-mini__prodphoto { display: none; }
.hp-hero-mini__prodphoto img { display: block; width: 100%; height: 100%; object-fit: contain; }

/* Shared photo tint filter across all variants — pulls the photos
   into a warm-brown site palette so they DO NOT sit as full-color
   originals against the Hidplanet card body. */
.hp-hero-mini__prodphoto img {
  filter: grayscale(100%) sepia(35%) saturate(85%) brightness(0.94) contrast(1.05);
  mix-blend-mode: multiply;
}

/* ============================================================
   VARIANT 1 — CLEAN LOGO-CARD LAYOUT
   Large product photo hero (~4.6 rem tall) on warm-tint plate at
   top. Big brand wordmark overlay in bottom-left of the plate.
   Card body below stays clean. Primary card plate warmer orange.
   ============================================================ */
body.hp-prodphotov-1 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-prodphotov-1 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241c 15%, var(--hp-border)); border-radius: 10px; overflow: hidden; gap: 0; }
body.hp-prodphotov-1 .hp-hero-mini__head { position: relative; display: block; padding: 0.65rem 0.75rem; height: 5.4rem; background: color-mix(in oklab, var(--hp-primary) 7%, var(--hp-card)); border-bottom: 1px solid color-mix(in oklab, var(--hp-primary) 15%, var(--hp-border)); margin: 0; }
body.hp-prodphotov-1 .hp-hero-mini__icon,
body.hp-prodphotov-1 .hp-hero-mini__mono,
body.hp-prodphotov-1 .hp-hero-mini__brand,
body.hp-prodphotov-1 .hp-hero-mini__cue,
body.hp-prodphotov-1 .hp-hero-mini__logo { display: none; }
body.hp-prodphotov-1 .hp-hero-mini__prodphoto { display: block; position: absolute; inset: 0.4rem 0.5rem 0.4rem 0.5rem; }
body.hp-prodphotov-1 .hp-hero-mini__prodphoto img { filter: grayscale(100%) sepia(38%) saturate(80%) brightness(0.93) contrast(1.08); }
body.hp-prodphotov-1 .hp-hero-mini__title { padding: 0.55rem 0.85rem 0; margin: 0; font-size: 0.95rem; font-weight: 700; letter-spacing: -0.005em; color: #2b241c; }
body.hp-prodphotov-1 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.7rem; color: #6b5f4d; }
body.hp-prodphotov-1 .hp-hero-mini__cta { padding: 0.4rem 0.85rem 0.7rem; font-size: 0.7rem; font-weight: 600; }
body.hp-prodphotov-1 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 20%, var(--hp-card)); }
body.hp-prodphotov-1 .hp-hero-mini:hover { box-shadow: 0 8px 22px -14px rgba(45,36,22,0.35); }

/* ============================================================
   VARIANT 2 — WARM BADGE LAYOUT
   Square-ish pale warm badge tile centered in the head strip
   containing the tinted photo. Card body clean. Premium ecommerce.
   ============================================================ */
body.hp-prodphotov-2 .hp-hero-panel__grid { gap: 0.75rem; }
body.hp-prodphotov-2 .hp-hero-mini { padding: 0.85rem 0.85rem 0.75rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241c 15%, var(--hp-border)); border-radius: 10px; }
body.hp-prodphotov-2 .hp-hero-mini__head { display: flex; align-items: center; justify-content: center; margin: 0 0 0.55rem; padding: 0.7rem 0.8rem; background: color-mix(in oklab, var(--hp-primary) 8%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 10px; min-height: 4.2rem; }
body.hp-prodphotov-2 .hp-hero-mini__icon,
body.hp-prodphotov-2 .hp-hero-mini__mono,
body.hp-prodphotov-2 .hp-hero-mini__brand,
body.hp-prodphotov-2 .hp-hero-mini__cue,
body.hp-prodphotov-2 .hp-hero-mini__logo { display: none; }
body.hp-prodphotov-2 .hp-hero-mini__prodphoto { display: block; width: 100%; height: 3.4rem; }
body.hp-prodphotov-2 .hp-hero-mini__title { font-size: 0.92rem; font-weight: 700; margin-top: 0; color: #2b241c; }
body.hp-prodphotov-2 .hp-hero-mini__sub { font-size: 0.7rem; margin-top: 0.3rem; color: #6b5f4d; }
body.hp-prodphotov-2 .hp-hero-mini__cta { margin-top: 0.4rem; font-size: 0.7rem; font-weight: 600; }
body.hp-prodphotov-2 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-prodphotov-2 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 15%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }

/* ============================================================
   VARIANT 3 — HORIZONTAL COMPACT LAYOUT
   Product photo left (~40% width), title/sub/CTA right.
   Compact height, best first-screen density.
   ============================================================ */
body.hp-prodphotov-3 .hp-hero-panel__grid { gap: 0.55rem; }
body.hp-prodphotov-3 .hp-hero-mini { padding: 0.55rem 0.75rem 0.55rem 0.55rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 8px; display: grid; grid-template-columns: 40% 60%; grid-template-rows: auto auto auto; column-gap: 0.65rem; row-gap: 0.05rem; align-items: center; }
body.hp-prodphotov-3 .hp-hero-mini__head { grid-row: 1 / span 3; grid-column: 1; margin: 0; padding: 0.4rem 0.35rem; background: color-mix(in oklab, var(--hp-primary) 7%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 5px; display: flex; align-items: center; justify-content: center; min-height: 3.4rem; }
body.hp-prodphotov-3 .hp-hero-mini__icon,
body.hp-prodphotov-3 .hp-hero-mini__mono,
body.hp-prodphotov-3 .hp-hero-mini__brand,
body.hp-prodphotov-3 .hp-hero-mini__cue,
body.hp-prodphotov-3 .hp-hero-mini__logo { display: none; }
body.hp-prodphotov-3 .hp-hero-mini__prodphoto { display: block; width: 100%; height: 2.9rem; }
body.hp-prodphotov-3 .hp-hero-mini__title { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.9rem; font-weight: 700; line-height: 1.1; color: #2b241c; }
body.hp-prodphotov-3 .hp-hero-mini__sub { grid-column: 2; grid-row: 2; margin: 0; font-size: 0.66rem; line-height: 1.3; color: #6b5f4d; }
body.hp-prodphotov-3 .hp-hero-mini__cta { grid-column: 2; grid-row: 3; margin: 0; font-size: 0.68rem; font-weight: 600; }
body.hp-prodphotov-3 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 22%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }

/* ============================================================
   VARIANT 4 — DIAGNOSTIC COMPATIBILITY LAYOUT
   Dark warm strip at top with reversed-cream product photo;
   accent gradient below strip. Compatibility-tool tone.
   ============================================================ */
body.hp-prodphotov-4 .hp-hero-panel__grid { gap: 0.7rem; }
body.hp-prodphotov-4 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241c 20%, var(--hp-border)); border-radius: 10px; overflow: hidden; gap: 0; }
body.hp-prodphotov-4 .hp-hero-mini__head { position: relative; display: block; padding: 0.6rem 0.75rem; height: 5rem; background: #2b241c; margin: 0; }
body.hp-prodphotov-4 .hp-hero-mini__head::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg, transparent 0%, var(--hp-primary) 50%, transparent 100%); opacity: 0.55; }
body.hp-prodphotov-4 .hp-hero-mini__icon,
body.hp-prodphotov-4 .hp-hero-mini__mono,
body.hp-prodphotov-4 .hp-hero-mini__brand,
body.hp-prodphotov-4 .hp-hero-mini__cue,
body.hp-prodphotov-4 .hp-hero-mini__logo { display: none; }
body.hp-prodphotov-4 .hp-hero-mini__prodphoto { display: block; position: absolute; inset: 0.35rem 0.5rem 0.55rem 0.5rem; }
body.hp-prodphotov-4 .hp-hero-mini__prodphoto img { filter: grayscale(100%) sepia(20%) saturate(60%) brightness(1.35) contrast(0.9); mix-blend-mode: screen; }
body.hp-prodphotov-4 .hp-hero-mini__title { padding: 0.55rem 0.85rem 0; margin: 0; font-size: 0.9rem; font-weight: 700; color: #2b241c; }
body.hp-prodphotov-4 .hp-hero-mini__sub { padding: 0.2rem 0.85rem 0; font-size: 0.7rem; color: #6b5f4d; }
body.hp-prodphotov-4 .hp-hero-mini__cta { padding: 0.4rem 0.85rem 0.7rem; font-size: 0.7rem; font-weight: 600; }
body.hp-prodphotov-4 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 90%, #2b241c) 0%, var(--hp-primary) 100%); }
body.hp-prodphotov-4 .hp-hero-mini--primary .hp-hero-mini__prodphoto img { filter: grayscale(100%) sepia(15%) saturate(50%) brightness(1.45) contrast(0.95); }

/* ============================================================
   VARIANT 5 — MOBILE-FIRST LARGE MARKS
   Very tall cards + very large product photo on warm gradient.
   Bigger button CTA. Optimized for readability at 390 mobile.
   ============================================================ */
body.hp-prodphotov-5 .hp-hero-panel__grid { gap: 0.75rem; }
body.hp-prodphotov-5 .hp-hero-mini { padding: 0; background: var(--hp-card); border: 1px solid color-mix(in oklab, var(--hp-primary) 18%, var(--hp-border)); border-radius: 12px; overflow: hidden; gap: 0; }
body.hp-prodphotov-5 .hp-hero-mini__head { position: relative; display: flex; align-items: center; justify-content: center; padding: 0.85rem 0.9rem; background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 14%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 4%, var(--hp-card)) 100%); border-bottom: 1px solid color-mix(in oklab, var(--hp-primary) 18%, var(--hp-border)); margin: 0; min-height: 6.6rem; }
body.hp-prodphotov-5 .hp-hero-mini__icon,
body.hp-prodphotov-5 .hp-hero-mini__mono,
body.hp-prodphotov-5 .hp-hero-mini__brand,
body.hp-prodphotov-5 .hp-hero-mini__cue,
body.hp-prodphotov-5 .hp-hero-mini__logo { display: none; }
body.hp-prodphotov-5 .hp-hero-mini__prodphoto { display: block; width: 100%; height: 5.4rem; }
body.hp-prodphotov-5 .hp-hero-mini__title { padding: 0.7rem 0.95rem 0; margin: 0; font-size: 1rem; font-weight: 700; letter-spacing: -0.005em; color: #2b241c; }
body.hp-prodphotov-5 .hp-hero-mini__sub { padding: 0.25rem 0.95rem 0; font-size: 0.72rem; line-height: 1.4; color: #6b5f4d; }
body.hp-prodphotov-5 .hp-hero-mini__cta { display: inline-flex; align-items: center; justify-content: center; gap: 0.3rem; margin: 0.6rem 0.95rem 0.9rem; padding: 0.5rem 0.75rem; background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); color: var(--hp-primary); border: 1px solid color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); border-radius: 6px; font-size: 0.75rem; font-weight: 700; }
body.hp-prodphotov-5 .hp-hero-mini--primary .hp-hero-mini__head { background: linear-gradient(180deg, color-mix(in oklab, var(--hp-primary) 26%, var(--hp-card)) 0%, color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)) 100%); }
body.hp-prodphotov-5 .hp-hero-mini--primary .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-prodphotov-5 .hp-hero-mini:hover .hp-hero-mini__cta { background: var(--hp-primary); color: #fff; border-color: var(--hp-primary); }
body.hp-prodphotov-5 .hp-hero-mini:hover { box-shadow: 0 12px 28px -18px rgba(45,36,22,0.4); }
@media (max-width: 640px) {
  body.hp-prodphotov-5 .hp-hero-mini__head { min-height: 5.4rem; padding: 0.7rem 0.7rem; }
  body.hp-prodphotov-5 .hp-hero-mini__prodphoto { height: 4.4rem; }
  body.hp-prodphotov-5 .hp-hero-mini__title { padding: 0.55rem 0.75rem 0; font-size: 0.94rem; }
}
/* ============================================================
   END PHASE 059
   ============================================================ */

/* ============================================================
   PHASE 060 — HOMEPAGE HERO MINI-CARDS
   TYPOGRAPHIC BRAND-CODE NAVIGATION
   Owner review only. Activated by GET ?typenavv=1..3 which
   adds body.hp-typenavv-<n>. Baseline (no param) unchanged.
   Pure text — no images, no SVG logos, no thumbnails.
   Warm Hidplanet palette only. No pure #000.
   ============================================================ */

/* --- BASELINE (permanent) additions ---
   New text spans hidden by default; variants show them. */
.hp-hero-mini__codemark,
.hp-hero-mini__chips { display: none; }

/* ============================================================
   VARIANT 1 — PREMIUM TYPOGRAPHIC CARDS
   Large brand-code text marker at top of each card, spacious
   card body below with title + sub + chip row + CTA. Primary
   card marker in warm orange.
   ============================================================ */
body.hp-typenavv-1 .hp-hero-panel__grid { gap: 0.75rem; }
body.hp-typenavv-1 .hp-hero-mini { padding: 1.1rem 1rem 0.9rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241c 12%, var(--hp-border)); border-radius: 10px; gap: 0.35rem; }
body.hp-typenavv-1 .hp-hero-mini__head { display: block; margin: 0 0 0.5rem; padding: 0; background: transparent; }
body.hp-typenavv-1 .hp-hero-mini__icon,
body.hp-typenavv-1 .hp-hero-mini__mono,
body.hp-typenavv-1 .hp-hero-mini__brand,
body.hp-typenavv-1 .hp-hero-mini__cue,
body.hp-typenavv-1 .hp-hero-mini__logo,
body.hp-typenavv-1 .hp-hero-mini__prodphoto { display: none; }
body.hp-typenavv-1 .hp-hero-mini__codemark { display: block; margin: 0; padding: 0.1rem 0; font-family: ui-sans-serif, system-ui, -apple-system, "SF Pro Display", "Segoe UI", sans-serif; font-size: 1.7rem; font-weight: 900; letter-spacing: 0.14em; color: #34291f; line-height: 1; text-transform: uppercase; }
body.hp-typenavv-1 .hp-hero-mini--primary .hp-hero-mini__codemark { color: var(--hp-primary); }
body.hp-typenavv-1 .hp-hero-mini__codemark::after { content: ""; display: block; margin-top: 0.5rem; height: 2px; width: 2.4rem; background: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); border-radius: 2px; }
body.hp-typenavv-1 .hp-hero-mini--primary .hp-hero-mini__codemark::after { background: var(--hp-primary); }
body.hp-typenavv-1 .hp-hero-mini__title { margin: 0.15rem 0 0; font-size: 0.95rem; font-weight: 700; color: #2b241c; letter-spacing: -0.005em; }
body.hp-typenavv-1 .hp-hero-mini__sub { margin: 0.25rem 0 0; font-size: 0.7rem; color: #6b5f4d; line-height: 1.4; }
body.hp-typenavv-1 .hp-hero-mini__chips { display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0.55rem 0 0; }
body.hp-typenavv-1 .hp-hero-mini__chip { display: inline-flex; align-items: center; padding: 0.18rem 0.55rem; font-family: ui-monospace, "SF Mono", "Menlo", monospace; font-size: 0.62rem; font-weight: 700; letter-spacing: 0.04em; color: #6b5f4d; background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 999px; text-transform: uppercase; }
body.hp-typenavv-1 .hp-hero-mini--primary .hp-hero-mini__chip { color: color-mix(in oklab, var(--hp-primary) 78%, #34291f); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); }
body.hp-typenavv-1 .hp-hero-mini__cta { margin-top: 0.6rem; font-size: 0.72rem; font-weight: 600; }
body.hp-typenavv-1 .hp-hero-mini:hover { box-shadow: 0 10px 22px -14px rgba(45,36,22,0.28); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); transform: translateY(-1px); }
body.hp-typenavv-1 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); background: color-mix(in oklab, var(--hp-primary) 4%, var(--hp-card)); }

/* ============================================================
   VARIANT 2 — COMPACT HORIZONTAL BRAND-CODE CARDS
   Code marker LEFT (large text in a warm-tint plate), text
   content RIGHT. Chip row below sub. Compact height.
   ============================================================ */
body.hp-typenavv-2 .hp-hero-panel__grid { gap: 0.55rem; }
body.hp-typenavv-2 .hp-hero-mini { padding: 0.6rem 0.8rem 0.6rem 0.65rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 8px; display: grid; grid-template-columns: 5.4rem 1fr; grid-template-rows: auto auto auto auto; column-gap: 0.7rem; row-gap: 0.15rem; align-items: center; }
body.hp-typenavv-2 .hp-hero-mini__head { grid-row: 1 / span 4; grid-column: 1; margin: 0; padding: 0.55rem 0.35rem; background: color-mix(in oklab, var(--hp-primary) 7%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 6px; display: flex; align-items: center; justify-content: center; min-height: 3.6rem; }
body.hp-typenavv-2 .hp-hero-mini__icon,
body.hp-typenavv-2 .hp-hero-mini__mono,
body.hp-typenavv-2 .hp-hero-mini__brand,
body.hp-typenavv-2 .hp-hero-mini__cue,
body.hp-typenavv-2 .hp-hero-mini__logo,
body.hp-typenavv-2 .hp-hero-mini__prodphoto { display: none; }
body.hp-typenavv-2 .hp-hero-mini__codemark { display: block; margin: 0; padding: 0; font-family: ui-sans-serif, system-ui, -apple-system, "SF Pro Display", "Segoe UI", sans-serif; font-size: 1.05rem; font-weight: 900; letter-spacing: 0.08em; color: #34291f; line-height: 1; text-transform: uppercase; text-align: center; }
body.hp-typenavv-2 .hp-hero-mini--primary .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 22%, var(--hp-card)); border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); }
body.hp-typenavv-2 .hp-hero-mini--primary .hp-hero-mini__codemark { color: var(--hp-primary); }
body.hp-typenavv-2 .hp-hero-mini__title { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.9rem; font-weight: 700; line-height: 1.1; color: #2b241c; }
body.hp-typenavv-2 .hp-hero-mini__sub { grid-column: 2; grid-row: 2; margin: 0; font-size: 0.65rem; line-height: 1.3; color: #6b5f4d; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
body.hp-typenavv-2 .hp-hero-mini__chips { grid-column: 2; grid-row: 3; display: flex; flex-wrap: wrap; gap: 0.25rem; margin: 0.1rem 0 0; }
body.hp-typenavv-2 .hp-hero-mini__chip { display: inline-flex; align-items: center; padding: 0.1rem 0.4rem; font-family: ui-monospace, "SF Mono", monospace; font-size: 0.56rem; font-weight: 700; letter-spacing: 0.03em; color: #6b5f4d; background: color-mix(in oklab, var(--hp-primary) 5%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 20%, var(--hp-border)); border-radius: 999px; text-transform: uppercase; }
body.hp-typenavv-2 .hp-hero-mini__cta { grid-column: 2; grid-row: 4; margin: 0.25rem 0 0; font-size: 0.68rem; font-weight: 600; }
body.hp-typenavv-2 .hp-hero-mini:hover .hp-hero-mini__head { background: color-mix(in oklab, var(--hp-primary) 14%, var(--hp-card)); }

/* ============================================================
   VARIANT 3 — DENSE FIRST-SCREEN NAVIGATION STRIP
   Very tight single-row cards. Code marker + title + chip pair
   inline. No sub-text. Right-chevron replaces CTA. Panel is the
   shortest of the 3.
   ============================================================ */
body.hp-typenavv-3 .hp-hero-panel { padding: 0.9rem 0.85rem; }
body.hp-typenavv-3 .hp-hero-panel__head { margin-bottom: 0.55rem; }
body.hp-typenavv-3 .hp-hero-panel__grid { gap: 0.4rem; }
body.hp-typenavv-3 .hp-hero-mini { padding: 0.5rem 1.65rem 0.5rem 0.7rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 6px; display: grid; grid-template-columns: 3rem 1fr; grid-template-rows: auto auto; column-gap: 0.65rem; row-gap: 0.1rem; align-items: center; position: relative; }
body.hp-typenavv-3 .hp-hero-mini__head { grid-row: 1 / span 2; grid-column: 1; margin: 0; padding: 0; background: transparent; display: flex; align-items: center; justify-content: center; }
body.hp-typenavv-3 .hp-hero-mini__icon,
body.hp-typenavv-3 .hp-hero-mini__mono,
body.hp-typenavv-3 .hp-hero-mini__brand,
body.hp-typenavv-3 .hp-hero-mini__cue,
body.hp-typenavv-3 .hp-hero-mini__logo,
body.hp-typenavv-3 .hp-hero-mini__prodphoto { display: none; }
body.hp-typenavv-3 .hp-hero-mini__codemark { display: block; margin: 0; padding: 0; font-family: ui-sans-serif, system-ui, -apple-system, "SF Pro Display", "Segoe UI", sans-serif; font-size: 0.82rem; font-weight: 900; letter-spacing: 0.06em; color: #34291f; line-height: 1; text-transform: uppercase; text-align: center; }
body.hp-typenavv-3 .hp-hero-mini--primary .hp-hero-mini__codemark { color: var(--hp-primary); }
body.hp-typenavv-3 .hp-hero-mini__title { grid-column: 2; grid-row: 1; margin: 0; font-size: 0.82rem; font-weight: 700; line-height: 1.1; color: #2b241c; }
body.hp-typenavv-3 .hp-hero-mini__sub { display: none; }
body.hp-typenavv-3 .hp-hero-mini__chips { grid-column: 2; grid-row: 2; display: flex; flex-wrap: nowrap; gap: 0.2rem; margin: 0; overflow: hidden; }
body.hp-typenavv-3 .hp-hero-mini__chip { display: inline-flex; align-items: center; padding: 0.05rem 0.35rem; font-family: ui-monospace, "SF Mono", monospace; font-size: 0.54rem; font-weight: 700; letter-spacing: 0.03em; color: #6b5f4d; background: color-mix(in oklab, var(--hp-primary) 5%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 20%, var(--hp-border)); border-radius: 3px; text-transform: uppercase; white-space: nowrap; }
body.hp-typenavv-3 .hp-hero-mini__cta { display: none; }
body.hp-typenavv-3 .hp-hero-mini::after { content: "›"; position: absolute; right: 0.7rem; top: 50%; transform: translateY(-50%); font-size: 1.1rem; line-height: 1; color: var(--hp-primary); font-weight: 700; opacity: 0.55; transition: opacity 150ms ease, transform 150ms ease; }
body.hp-typenavv-3 .hp-hero-mini:hover::after { opacity: 1; transform: translate(3px, -50%); }
body.hp-typenavv-3 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); background: color-mix(in oklab, var(--hp-primary) 5%, var(--hp-card)); }
@media (max-width: 640px) {
  body.hp-typenavv-3 .hp-hero-mini__codemark { font-size: 0.74rem; }
  body.hp-typenavv-3 .hp-hero-mini__title { font-size: 0.78rem; }
}
/* ============================================================
   END PHASE 060
   ============================================================ */

/* ============================================================
   PHASE 061 — HOMEPAGE HERO EQUAL-HEIGHT LAYOUT
   COMPACT TYPOGRAPHIC DIRECTION PANEL
   Owner review only. Activated by GET ?heroeqv=1|2. Baseline
   unchanged when no param. Pure CSS/layout — no logos, no
   images, no drawings. Warm Hidplanet palette. No pure #000.
   Both variants apply Phase 060 V1 typographic tile styling
   AND stretch the right panel to match left hero height on
   desktop (lg breakpoint).
   ============================================================ */

/* ============================================================
   SHARED — EQUAL-HEIGHT DESKTOP HERO + TYPOGRAPHIC TILES
   Applies to BOTH V1 and V2 via the common attribute selector.
   ============================================================ */
body[class*="hp-heroeqv-"] .bg-header:first-of-type > .mx-auto.grid { align-items: stretch; }
@media (min-width: 1024px) {
  body[class*="hp-heroeqv-"] .bg-header:first-of-type > .mx-auto.grid > .order-2 { display: flex; flex-direction: column; justify-content: center; gap: 0; height: 100%; }
  body[class*="hp-heroeqv-"] .bg-header:first-of-type > .mx-auto.grid > .order-1 { display: flex; flex-direction: column; height: 100%; }
  body[class*="hp-heroeqv-"] .hp-hero-panel { display: flex; flex-direction: column; height: 100%; padding: 1.25rem 1.15rem 1.2rem; }
  body[class*="hp-heroeqv-"] .hp-hero-panel__head { margin-bottom: 0.9rem; }
  body[class*="hp-heroeqv-"] .hp-hero-panel__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.6rem; flex: 1; }
}

/* --- SHARED TILE STYLE (compact typographic, 060 V1 pattern) --- */
body[class*="hp-heroeqv-"] .hp-hero-mini { padding: 0.85rem 0.9rem 0.75rem; background: var(--hp-card); border: 1px solid color-mix(in oklab, #2b241c 12%, var(--hp-border)); border-radius: 8px; gap: 0.3rem; display: flex; flex-direction: column; }
body[class*="hp-heroeqv-"] .hp-hero-mini__head { display: block; margin: 0; padding: 0; background: transparent; }
body[class*="hp-heroeqv-"] .hp-hero-mini__icon,
body[class*="hp-heroeqv-"] .hp-hero-mini__mono,
body[class*="hp-heroeqv-"] .hp-hero-mini__brand,
body[class*="hp-heroeqv-"] .hp-hero-mini__cue,
body[class*="hp-heroeqv-"] .hp-hero-mini__logo,
body[class*="hp-heroeqv-"] .hp-hero-mini__prodphoto { display: none; }
body[class*="hp-heroeqv-"] .hp-hero-mini__codemark { display: block; margin: 0; padding: 0; font-family: ui-sans-serif, system-ui, -apple-system, "SF Pro Display", "Segoe UI", sans-serif; font-size: 1.32rem; font-weight: 900; letter-spacing: 0.11em; color: #34291f; line-height: 1; text-transform: uppercase; }
body[class*="hp-heroeqv-"] .hp-hero-mini--primary .hp-hero-mini__codemark { color: var(--hp-primary); }
body[class*="hp-heroeqv-"] .hp-hero-mini__codemark::after { content: ""; display: block; margin-top: 0.4rem; height: 2px; width: 1.8rem; background: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); border-radius: 2px; }
body[class*="hp-heroeqv-"] .hp-hero-mini--primary .hp-hero-mini__codemark::after { background: var(--hp-primary); }
body[class*="hp-heroeqv-"] .hp-hero-mini__title { margin: 0.15rem 0 0; font-size: 0.86rem; font-weight: 700; color: #2b241c; letter-spacing: -0.005em; line-height: 1.15; }
body[class*="hp-heroeqv-"] .hp-hero-mini__sub { margin: 0.18rem 0 0; font-size: 0.66rem; color: #6b5f4d; line-height: 1.35; }
body[class*="hp-heroeqv-"] .hp-hero-mini__chips { display: flex; flex-wrap: wrap; gap: 0.24rem; margin: 0.4rem 0 0; }
body[class*="hp-heroeqv-"] .hp-hero-mini__chip { display: inline-flex; align-items: center; padding: 0.13rem 0.42rem; font-family: ui-monospace, "SF Mono", "Menlo", monospace; font-size: 0.58rem; font-weight: 700; letter-spacing: 0.04em; color: #6b5f4d; background: color-mix(in oklab, var(--hp-primary) 6%, var(--hp-card)); border: 1px solid color-mix(in oklab, var(--hp-primary) 22%, var(--hp-border)); border-radius: 999px; text-transform: uppercase; }
body[class*="hp-heroeqv-"] .hp-hero-mini--primary .hp-hero-mini__chip { color: color-mix(in oklab, var(--hp-primary) 75%, #34291f); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); background: color-mix(in oklab, var(--hp-primary) 10%, var(--hp-card)); }
body[class*="hp-heroeqv-"] .hp-hero-mini__cta { margin-top: auto; padding-top: 0.5rem; font-size: 0.68rem; font-weight: 600; }
body[class*="hp-heroeqv-"] .hp-hero-mini:hover { box-shadow: 0 8px 20px -14px rgba(45,36,22,0.28); border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); transform: translateY(-1px); }
body[class*="hp-heroeqv-"] .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)); background: color-mix(in oklab, var(--hp-primary) 4%, var(--hp-card)); }

/* ============================================================
   VARIANT 1 — 2×3 GRID, OBD2 IN ROW 3 COL 1
   Tiles stretch to fill panel height (row height auto-equalises
   because grid rows use 1fr fallback).
   ============================================================ */
@media (min-width: 1024px) {
  body.hp-heroeqv-1 .hp-hero-panel__grid { grid-template-rows: repeat(3, minmax(0, 1fr)); }
  body.hp-heroeqv-1 .hp-hero-mini { min-height: 6.6rem; }
}

/* ============================================================
   VARIANT 2 — 2×2 GRID + OBD2 FULL-WIDTH ROW 3
   The universal card spans both columns; makes bottom row a
   wide "workshop / universal" tile matching left hero base.
   ============================================================ */
@media (min-width: 1024px) {
  body.hp-heroeqv-2 .hp-hero-panel__grid { grid-template-rows: repeat(3, minmax(0, 1fr)); }
  body.hp-heroeqv-2 .hp-hero-mini { min-height: 6.4rem; }
  body.hp-heroeqv-2 .hp-hero-mini--univ { grid-column: 1 / -1; }
  body.hp-heroeqv-2 .hp-hero-mini--univ .hp-hero-mini__codemark { font-size: 1.5rem; letter-spacing: 0.14em; }
  body.hp-heroeqv-2 .hp-hero-mini--univ .hp-hero-mini__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
  body.hp-heroeqv-2 .hp-hero-mini--univ .hp-hero-mini__title { font-size: 0.92rem; }
  body.hp-heroeqv-2 .hp-hero-mini--univ .hp-hero-mini__chips { margin-top: 0.5rem; }
}

/* ============================================================
   VARIANT 3 (Phase 061 V3) — SYMMETRIC 2×3 GRID + SUPPLIED SVG
   TILES.  Owner-supplied compact SVG marks
   (templates/hidplanet_staging/images/dir_marks/*.svg) render as
   the entire tile art; all inner text/icon markup is hidden so
   the SVG background rectangle is the only visible surface.
   J2534 card is appended by PHP only when ?heroeqv=3.
   ============================================================ */
.hp-hero-mini__marksvg { display: none; }
body.hp-heroeqv-3 .hp-hero-mini { position: relative; padding: 0; background: transparent; border: 0; box-shadow: none; overflow: hidden; border-radius: 12px; transition: transform 150ms ease, filter 200ms ease; }
body.hp-heroeqv-3 .hp-hero-mini > .hp-hero-mini__head,
body.hp-heroeqv-3 .hp-hero-mini > .hp-hero-mini__title,
body.hp-heroeqv-3 .hp-hero-mini > .hp-hero-mini__sub,
body.hp-heroeqv-3 .hp-hero-mini > .hp-hero-mini__chips,
body.hp-heroeqv-3 .hp-hero-mini > .hp-hero-mini__cta { display: none !important; }
body.hp-heroeqv-3 .hp-hero-mini__marksvg { display: block; width: 100%; height: auto; max-height: 100%; object-fit: contain; }
body.hp-heroeqv-3 .hp-hero-mini:hover { transform: translateY(-2px); filter: drop-shadow(0 6px 14px rgba(45,36,22,0.14)); }
body.hp-heroeqv-3 .hp-hero-mini:hover .hp-hero-mini__marksvg { transform: none; }

@media (min-width: 1024px) {
  body.hp-heroeqv-3 .hp-hero-panel__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(3, minmax(0, 1fr)); gap: 0.7rem; }
  body.hp-heroeqv-3 .hp-hero-mini { min-height: 6.2rem; display: flex; align-items: center; justify-content: center; }
  body.hp-heroeqv-3 .hp-hero-mini__marksvg { width: 100%; height: 100%; }
}

/* ============================================================
   VARIANT 4 (Phase 062) — v0 AUTOMOTIVE DIAGNOSTIC ICON PACK
   Compact ecommerce card with an icon-in-warm-square-holder on
   the LEFT and title/sub/chips + right chevron on the RIGHT.
   6 cards in a symmetric 2×3 grid. Icons are the v0 pack SVGs
   at templates/hidplanet_staging/images/dir_marks_v0/. Existing
   V1 / V2 / V3 stay usable in parallel.
   ============================================================ */
.hp-hero-mini__v0wrap { display: none; }
body.hp-heroeqv-4 .hp-hero-mini > .hp-hero-mini__head,
body.hp-heroeqv-4 .hp-hero-mini > .hp-hero-mini__title,
body.hp-heroeqv-4 .hp-hero-mini > .hp-hero-mini__sub,
body.hp-heroeqv-4 .hp-hero-mini > .hp-hero-mini__chips,
body.hp-heroeqv-4 .hp-hero-mini > .hp-hero-mini__cta,
body.hp-heroeqv-4 .hp-hero-mini > .hp-hero-mini__marksvg { display: none !important; }

/* Phase 062-ALIGN — all six cards are fixed to identical height, icon holder is
   fixed-size and vertically centered, body is centered too. Long titles/subtitles
   truncate with ellipsis so multi-line content never pushes the icon out of place. */
body.hp-heroeqv-4 .hp-hero-mini { position: relative; display: flex; align-items: stretch; gap: 0.7rem; padding: 0.55rem 0.75rem; background: var(--hp-card); border: 1px solid var(--hp-border); border-radius: 14px; box-shadow: none; overflow: hidden; transition: transform 200ms ease, border-color 200ms ease, box-shadow 200ms ease; }
body.hp-heroeqv-4 .hp-hero-mini:hover { transform: translateY(-2px); border-color: color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)); box-shadow: 0 10px 30px -12px rgba(48,39,30,0.25); }
body.hp-heroeqv-4 .hp-hero-mini--primary { border-color: color-mix(in oklab, var(--hp-primary) 45%, var(--hp-border)); }

body.hp-heroeqv-4 .hp-hero-mini__v0wrap { display: flex; align-items: center; gap: 0.7rem; width: 100%; min-width: 0; height: 100%; }
body.hp-heroeqv-4 .hp-hero-mini__v0iconholder { display: inline-flex; align-items: center; justify-content: center; width: 2.9rem; height: 2.9rem; border-radius: 11px; background: #FFE8D8; border: 1px solid color-mix(in oklab, #F06B1A 25%, transparent); flex-shrink: 0; align-self: center; transition: background 200ms ease; }
body.hp-heroeqv-4 .hp-hero-mini:hover .hp-hero-mini__v0iconholder { background: color-mix(in oklab, #FFE8D8 85%, #F06B1A 15%); }
body.hp-heroeqv-4 .hp-hero-mini__v0icon { display: block; width: 1.95rem; height: 1.95rem; }

body.hp-heroeqv-4 .hp-hero-mini__v0body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 0; overflow: hidden; align-self: center; }
body.hp-heroeqv-4 .hp-hero-mini__v0title { font-size: 0.9rem; font-weight: 700; color: #2b241c; letter-spacing: -0.005em; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body.hp-heroeqv-4 .hp-hero-mini__v0sub { font-size: 0.68rem; color: #6b5f4d; line-height: 1.25; margin-top: 0.05rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.hp-heroeqv-4 .hp-hero-mini__v0chips { display: flex; flex-wrap: nowrap; gap: 0.22rem; margin-top: 0.22rem; overflow: hidden; }
body.hp-heroeqv-4 .hp-hero-mini__v0chip { display: inline-flex; align-items: center; padding: 0.04rem 0.34rem; font-size: 0.55rem; font-weight: 600; letter-spacing: 0.02em; color: #6b5f4d; background: color-mix(in oklab, #FFF9F3 92%, #F06B1A 4%); border: 1px solid var(--hp-border); border-radius: 5px; flex-shrink: 0; white-space: nowrap; }

body.hp-heroeqv-4 .hp-hero-mini__v0chevron { display: inline-flex; align-items: center; color: #8A7B68; flex-shrink: 0; align-self: center; transition: transform 200ms ease, color 200ms ease; }
body.hp-heroeqv-4 .hp-hero-mini__v0chevron svg { width: 0.95rem; height: 0.95rem; }
body.hp-heroeqv-4 .hp-hero-mini:hover .hp-hero-mini__v0chevron { color: var(--hp-primary); transform: translateX(2px); }

@media (min-width: 1024px) {
  /* Phase 062-ALIGN: compact right panel + fixed-height rows so the six tiles have
     identical heights and the panel visually matches the left hero CONTENT height. */
  body.hp-heroeqv-4 .hp-hero-panel { padding: 0.85rem 0.9rem 0.85rem; }
  body.hp-heroeqv-4 .hp-hero-panel__head { margin-bottom: 0.55rem; }
  body.hp-heroeqv-4 .hp-hero-panel__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(3, minmax(4.2rem, 1fr)); gap: 0.45rem; flex: 1 1 auto; }
  body.hp-heroeqv-4 .hp-hero-mini { min-height: 4.2rem; padding: 0.5rem 0.7rem; }
  body.hp-heroeqv-4 .hp-hero-mini__v0iconholder { width: 2.9rem; height: 2.9rem; border-radius: 11px; }
  body.hp-heroeqv-4 .hp-hero-mini__v0icon { width: 1.95rem; height: 1.95rem; }
  body.hp-heroeqv-4 .hp-hero-mini__v0title { font-size: 0.86rem; }
  /* Phase 062-ALIGN outer-grid balance: fall back to the shared Phase 061 stretch
     behaviour so both columns auto-match. RU has the tallest left content (~311 px)
     and drives the panel; LV/EN have shorter translations so the left copy sits
     vertically centred inside the stretched column while the panel stays compact. */
  body.hp-heroeqv-4 .bg-header:first-of-type > .mx-auto.grid { align-items: stretch; }
  body.hp-heroeqv-4 .bg-header:first-of-type > .mx-auto.grid > .order-2 { justify-content: center; }
}

/* ============================================================
   MOBILE / TABLET — DO NOT force equal height on stacked layout
   The .lg:grid-cols-2 already stacks < 1024px, so the equal-
   height stretch only applies inside the min-width: 1024px MQ
   above. On mobile/tablet the panel keeps natural height and
   tile grid follows its own default.
   ============================================================ */
@media (max-width: 1023px) {
  body[class*="hp-heroeqv-"] .hp-hero-panel { padding: 1.1rem 1rem; }
  body[class*="hp-heroeqv-"] .hp-hero-panel__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem; }
  body[class*="hp-heroeqv-"] .hp-hero-mini { padding: 0.75rem 0.8rem 0.7rem; }
  body[class*="hp-heroeqv-"] .hp-hero-mini__codemark { font-size: 1.15rem; letter-spacing: 0.09em; }
  body.hp-heroeqv-2 .hp-hero-mini--univ { grid-column: 1 / -1; }
  /* V3 mobile: keep 2-col SVG grid, tiles stack naturally at their own aspect */
  body.hp-heroeqv-3 .hp-hero-mini { padding: 0; }
  body.hp-heroeqv-3 .hp-hero-mini__marksvg { width: 100%; height: auto; }
  /* V4 mobile Phase 062-ALIGN: single-column stack, fixed row height so all
     6 cards still show identical icon alignment. */
  body.hp-heroeqv-4 .hp-hero-panel__grid { grid-template-columns: 1fr; grid-template-rows: repeat(6, auto); gap: 0.5rem; }
  body.hp-heroeqv-4 .hp-hero-mini { padding: 0.6rem 0.8rem; min-height: 4.6rem; height: 4.6rem; }
  body.hp-heroeqv-4 .hp-hero-mini__v0iconholder { width: 3rem; height: 3rem; border-radius: 12px; }
  body.hp-heroeqv-4 .hp-hero-mini__v0icon { width: 2rem; height: 2rem; }
  body.hp-heroeqv-4 .hp-hero-mini__v0title { font-size: 0.88rem; white-space: nowrap; }
  body.hp-heroeqv-4 .hp-hero-mini__v0sub { font-size: 0.68rem; white-space: nowrap; }
  body.hp-heroeqv-4 .hp-hero-mini__v0chip { font-size: 0.56rem; }
}
@media (max-width: 640px) {
  body[class*="hp-heroeqv-"] .hp-hero-mini__codemark { font-size: 1.05rem; }
  body[class*="hp-heroeqv-"] .hp-hero-mini__title { font-size: 0.82rem; }
  body[class*="hp-heroeqv-"] .hp-hero-mini__sub { font-size: 0.62rem; }
}

/* ============================================================
   LEFT HERO COPY — polish inside equal-height column
   Heading top-aligned, CTA + hint sit near bottom of column so
   the whole column feels intentionally filled.
   ============================================================ */
@media (min-width: 1024px) {
  body[class*="hp-heroeqv-"] .bg-header:first-of-type h1 { margin-top: 0; }
  body[class*="hp-heroeqv-"] .bg-header:first-of-type h1 + p { max-width: 34rem; }
  body[class*="hp-heroeqv-"] .bg-header:first-of-type .hp-hero-hint { max-width: 22rem; line-height: 1.5; }
  body[class*="hp-heroeqv-"] .bg-header:first-of-type .hp-cta-primary { white-space: nowrap; }
}
/* ============================================================
   END PHASE 061
   ============================================================ */

/* ============================================================
   PHASE 064 — Product-page tab-content polish
   - .hp-product-tab-panel wraps every tab body (Description / Delivery /
     Payment / Reviews / FAQ / Similar) with a warm card frame so text no
     longer floats on empty beige.
   - description gallery (.aPhocaGallery) becomes a responsive image grid
     instead of a narrow vertical column. Scoped to product tab content
     only so the main product image + top gallery are untouched.
   - Rules apply to ALL product pages (global, not BMW-only).
   ============================================================ */
.hp-product-tab-panel {
  max-width: 1180px;
  margin: 0.25rem 0 0;
  background: #FFFAF5;
  border: 1px solid var(--hp-border, #E7D8C7);
  border-radius: 20px;
  padding: 28px 32px;
  color: #3a3128;
  line-height: 1.65;
  box-shadow: 0 1px 2px rgba(45, 36, 22, 0.03);
}
@media (max-width: 640px) {
  .hp-product-tab-panel { padding: 18px 18px; border-radius: 14px; }
}

/* Typography inside the panel */
.hp-product-tab-panel h1,
.hp-product-tab-panel h2,
.hp-product-tab-panel h3,
.hp-product-tab-panel h4 { color: #2b241c; font-weight: 700; margin: 1.2em 0 0.5em; line-height: 1.25; }
.hp-product-tab-panel h2 { font-size: 1.25rem; }
.hp-product-tab-panel h3 { font-size: 1.08rem; }
.hp-product-tab-panel h4 { font-size: 0.98rem; }
.hp-product-tab-panel p  { margin: 0.55rem 0; }
.hp-product-tab-panel ul,
.hp-product-tab-panel ol,
.hp-product-tab-panel dl { margin: 0.55rem 0 0.85rem; padding-left: 1.2rem; }
.hp-product-tab-panel li { margin: 0.25rem 0; }
.hp-product-tab-panel strong { color: #2b241c; font-weight: 700; }
.hp-product-tab-panel a { color: var(--hp-primary, #F06B1A); }
.hp-product-tab-panel a:hover { text-decoration: underline; }

/* Description panel: standalone images fill up to a comfortable max width */
.hp-product-tab-panel--description > img,
.hp-product-tab-panel--description p > img {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 1rem auto;
  border-radius: 10px;
}
/* Preserve YouTube / iframe embeds full-width, no distortion */
.hp-product-tab-panel iframe {
  max-width: 100%;
  border-radius: 10px;
  border: 0;
  aspect-ratio: 16 / 9;
  width: 100%;
  height: auto;
  margin: 1rem 0;
}

/* Description GALLERY grid — .aPhocaGallery is the JoomShopping/Phoca
   gallery wrapper around consecutive <a data-fslightbox> thumbnails.
   Turning that container into a responsive grid gives the app-screenshot
   cluster a proper card-tile layout instead of a narrow vertical stack. */
.hp-product-tab-panel .aPhocaGallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin: 14px 0 20px;
}
.hp-product-tab-panel .aPhocaGallery > a {
  display: block;
  position: relative;
  overflow: hidden;
  border-radius: 10px;
  border: 1px solid var(--hp-border, #E7D8C7);
  background: #fff;
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
  aspect-ratio: 1 / 1;
  line-height: 0; /* stops phantom baseline gap under img */
}
.hp-product-tab-panel .aPhocaGallery > a:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklab, var(--hp-primary, #F06B1A) 40%, var(--hp-border, #E7D8C7));
  box-shadow: 0 8px 20px -14px rgba(45,36,22,0.28);
}
.hp-product-tab-panel .aPhocaGallery > a > img,
.hp-product-tab-panel .aPhocaGallery > a > img.image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 0;
  margin: 0;
}
.hp-product-tab-panel .aPhocaGallery > a > h3,
.hp-product-tab-panel .aPhocaGallery + h3,
.hp-product-tab-panel .aPhocaGallery h3 { display: none; } /* the gallery moduletable name is duplicated with the wrapper */

/* Same responsive grid for any direct sibling cluster of gallery module tables */
.hp-product-tab-panel .moduletable + .moduletable { margin-top: 1rem; }
.hp-product-tab-panel .moduletable h3 { margin-bottom: 0.4rem; font-size: 1.02rem; letter-spacing: -0.005em; }

@media (max-width: 900px) {
  .hp-product-tab-panel .aPhocaGallery { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
}
@media (max-width: 480px) {
  .hp-product-tab-panel .aPhocaGallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
}

/* Reviews list */
.hp-p064-reviews { padding: 0; margin: 0; list-style: none; }
.hp-p064-review {
  background: #fff;
  border: 1px solid var(--hp-border, #E7D8C7);
  border-radius: 12px;
  padding: 14px 16px;
}
.hp-p064-review__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.65rem;
  margin-bottom: 0.35rem;
  font-size: 0.85rem;
}
.hp-p064-review__author { color: #2b241c; font-weight: 700; }
.hp-p064-review__mark { color: var(--hp-primary, #F06B1A); letter-spacing: 1px; font-size: 0.9rem; }
.hp-p064-review__time { color: #8A7B68; font-variant-numeric: tabular-nums; margin-left: auto; }
.hp-p064-review__body { margin: 0; color: #3a3128; }

/* FAQ list */
.hp-p064-faq { padding: 0; margin: 0; }
.hp-p064-faq__row {
  padding: 12px 16px;
  background: #fff;
  border: 1px solid var(--hp-border, #E7D8C7);
  border-radius: 12px;
}
.hp-p064-faq__row + .hp-p064-faq__row { margin-top: 10px; }
.hp-p064-faq__q { font-weight: 700; color: #2b241c; margin: 0 0 0.35rem; font-size: 0.98rem; line-height: 1.35; }
.hp-p064-faq__a { margin: 0; color: #3a3128; padding-left: 0; }
.hp-p064-faq__a p:first-child { margin-top: 0; }
.hp-p064-faq__a p:last-child  { margin-bottom: 0; }

/* Empty state */
.hp-p064-empty {
  background: #fff;
  border: 1px dashed var(--hp-border, #E7D8C7);
  border-radius: 12px;
  padding: 22px 24px;
  text-align: center;
  color: #6b5f4d;
}
.hp-p064-empty p { margin: 0; }

/* ============================================================
   PHASE 066 — Product page final polish
   - Pill-style product tabs (replaces the bottom-border tabs).
   - Compact <details>-based FAQ accordion.
   - Global content typography scale to remove "elephant" H2/H3
     inside .hp-product-tab-panel and article content pages.
   ============================================================ */

/* --- Pill tab navigation ---------------------------------------------- */
#hp-product-tabs > div[role="tablist"] {
  border-bottom: 0 !important;
  gap: 0.4rem;
  padding: 0.35rem 0.35rem 0.6rem;
  background: color-mix(in oklab, var(--hp-card, #fff) 60%, #fdf4ea);
  border-radius: 14px;
  border: 1px solid var(--hp-border, #E7D8C7);
  overflow-x: auto;
}
.hp-p063-tab {
  border: 1px solid var(--hp-border, #E7D8C7) !important;
  border-bottom-width: 1px !important;
  border-radius: 999px !important;
  padding: 0.45rem 0.95rem !important;
  background: var(--hp-card, #fff);
  color: #6b5f4d !important;
  font-size: 0.86rem !important;
  font-weight: 600 !important;
  line-height: 1.2;
  cursor: pointer;
  transition: background 200ms ease, color 200ms ease, border-color 200ms ease, transform 150ms ease;
  outline: none;
}
.hp-p063-tab:hover {
  border-color: color-mix(in oklab, var(--hp-primary, #F06B1A) 40%, var(--hp-border, #E7D8C7)) !important;
  color: #2b241c !important;
  background: color-mix(in oklab, var(--hp-primary, #F06B1A) 5%, var(--hp-card, #fff));
}
.hp-p063-tab[aria-selected="true"] {
  background: var(--hp-primary, #F06B1A);
  color: #fff !important;
  border-color: var(--hp-primary, #F06B1A) !important;
  transform: translateY(-1px);
}
.hp-p063-tab[aria-selected="true"]:hover {
  background: var(--hp-primary, #F06B1A);
  color: #fff !important;
}
/* Kill browser default blue rectangle on click; keep a11y focus-visible */
.hp-p063-tab:focus { outline: none !important; box-shadow: none !important; }
.hp-p063-tab:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--hp-primary, #F06B1A) 65%, transparent);
  outline-offset: 3px;
}
@media (max-width: 640px) {
  #hp-product-tabs > div[role="tablist"] {
    padding: 0.3rem;
    gap: 0.3rem;
    flex-wrap: nowrap;
    scroll-snap-type: x mandatory;
  }
  .hp-p063-tab { padding: 0.4rem 0.75rem !important; font-size: 0.8rem !important; scroll-snap-align: start; }
}

/* --- Compact FAQ accordion (Phase 066) -------------------------------- */
.hp-p066-faq { margin: 0; }
.hp-p066-faq__row {
  background: #fff;
  border: 1px solid var(--hp-border, #E7D8C7);
  border-radius: 12px;
  padding: 0;
  transition: border-color 200ms ease;
}
.hp-p066-faq__row + .hp-p066-faq__row { margin-top: 8px; }
.hp-p066-faq__row[open] { border-color: color-mix(in oklab, var(--hp-primary, #F06B1A) 30%, var(--hp-border, #E7D8C7)); }
.hp-p066-faq__q {
  cursor: pointer;
  padding: 12px 44px 12px 16px;
  font-size: 0.95rem;
  font-weight: 700;
  color: #2b241c;
  list-style: none;
  position: relative;
  line-height: 1.35;
  user-select: none;
}
.hp-p066-faq__q::-webkit-details-marker { display: none; }
.hp-p066-faq__q::marker { content: ""; }
.hp-p066-faq__q::after {
  content: "+";
  position: absolute;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--hp-primary, #F06B1A);
  transition: transform 200ms ease;
}
.hp-p066-faq__row[open] .hp-p066-faq__q::after { content: "−"; }
.hp-p066-faq__a { padding: 0 16px 14px; color: #3a3128; font-size: 0.9rem; line-height: 1.5; }
.hp-p066-faq__a p:first-child { margin-top: 0; }
.hp-p066-faq__a p:last-child { margin-bottom: 0; }
.hp-p066-faq__q:focus { outline: none; }
.hp-p066-faq__q:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--hp-primary, #F06B1A) 55%, transparent);
  outline-offset: 2px;
  border-radius: 12px;
}

/* --- Global content typography scale for article / product tab bodies -- */
.hp-product-tab-panel h1,
.item-page h1 { font-size: 1.5rem; font-weight: 700; margin: 0.4em 0 0.6em; line-height: 1.25; color: #2b241c; }
.hp-product-tab-panel h2,
.item-page h2 { font-size: 1.18rem !important; font-weight: 700; margin: 1.1em 0 0.4em; line-height: 1.3; color: #2b241c; letter-spacing: -0.005em; }
.hp-product-tab-panel h3,
.item-page h3 { font-size: 1.02rem !important; font-weight: 700; margin: 0.9em 0 0.35em; line-height: 1.3; color: #2b241c; }
.hp-product-tab-panel h4,
.item-page h4 { font-size: 0.94rem !important; font-weight: 700; margin: 0.75em 0 0.3em; color: #2b241c; }
.hp-product-tab-panel p,
.item-page p { font-size: 0.95rem; line-height: 1.6; }
.hp-product-tab-panel li,
.item-page li { font-size: 0.95rem; line-height: 1.55; }
.item-page {
  max-width: 1180px;
  margin: 0 auto;
  padding: 8px 16px 24px;
}
@media (max-width: 640px) {
  .hp-product-tab-panel h2,
  .item-page h2 { font-size: 1.05rem !important; }
  .hp-product-tab-panel h3,
  .item-page h3 { font-size: 0.98rem !important; }
  .item-page { padding: 6px 12px 20px; }
}

/* --- Empty state variant styled as compact card ----------------------- */
.hp-p064-empty { padding: 18px 20px; font-size: 0.9rem; }

/* ============================================================
   PHASE 067R — Real typography fix for article / static content pages.
   Root cause of 067 miss: article body uses `.hp-article__body.prose`
   and Tailwind Typography `.prose` sets h2 ~1.5em / h3 ~1.25em, which
   overrode the earlier .hp-article__body rules. This block forces
   compact heading sizes across every article container variant.
   ============================================================ */
.hp-article__body h1,
.hp-article__body.prose h1,
.hp-article h1.hp-article__title,
.hp-content-card h1 { font-size: 1.55rem !important; font-weight: 700 !important; line-height: 1.25 !important; margin: 0.6em 0 0.4em !important; letter-spacing: -0.005em !important; }

.hp-article__body h2,
.hp-article__body.prose h2,
.hp-article h2,
.hp-content-card h2 { font-size: 1.22rem !important; font-weight: 700 !important; line-height: 1.3 !important; margin: 1.1em 0 0.4em !important; letter-spacing: -0.005em !important; color: #2b241c !important; }

.hp-article__body h3,
.hp-article__body.prose h3,
.hp-article h3,
.hp-content-card h3 { font-size: 1.08rem !important; font-weight: 700 !important; line-height: 1.35 !important; margin: 0.9em 0 0.35em !important; color: #2b241c !important; }

.hp-article__body h4,
.hp-article__body.prose h4,
.hp-article h4,
.hp-content-card h4 { font-size: 1rem !important; font-weight: 700 !important; margin: 0.75em 0 0.3em !important; color: #2b241c !important; }

.hp-article__body p,
.hp-article__body.prose p { font-size: 0.98rem !important; line-height: 1.65 !important; margin: 0.55em 0 !important; }

.hp-article__body li,
.hp-article__body.prose li { font-size: 0.98rem !important; line-height: 1.55 !important; }

.hp-article__body ul,
.hp-article__body ol,
.hp-article__body.prose ul,
.hp-article__body.prose ol { margin: 0.5em 0 0.85em !important; padding-left: 1.35rem !important; }

.hp-article__body.prose { max-width: 100% !important; }

@media (max-width: 640px) {
  .hp-article__body h1,
  .hp-article__body.prose h1 { font-size: 1.35rem !important; }
  .hp-article__body h2,
  .hp-article__body.prose h2 { font-size: 1.1rem !important; }
  .hp-article__body h3,
  .hp-article__body.prose h3 { font-size: 1.02rem !important; }
  .hp-article__body h4,
  .hp-article__body.prose h4 { font-size: 0.96rem !important; }
  .hp-article__body p,
  .hp-article__body.prose p,
  .hp-article__body li,
  .hp-article__body.prose li { font-size: 0.95rem !important; }
}
/* END PHASE 067R typography block */

/* ==========================================================================
 * HP-P072-BEGIN — Phase 072 homepage v0 visual refinement (SCOPED to body.hp-homev0-1)
 * Reversible: append ?homev0=0 to any URL to fully disable this block.
 * Sections:
 *   1) Frosted warm header on scroll
 *   2) Hero: heading polish + secondary CTA + primary CTA lift
 *   3) Diagnostic panel (V4 icon+text tiles) polish: padding, radius, no truncation
 *   4) Trust strip refinement: smaller top/bottom padding, uniform icon chip
 *   5) Capability cards (hp-diag-usecase) polish: shadow + lift on hover
 * All rules use body[class~="hp-homev0-1"] so nothing bleeds outside the toggle.
 * ========================================================================== */

body.hp-homev0-1 header.sticky {
  background-color: rgba(250, 247, 243, 0.78);
  -webkit-backdrop-filter: saturate(140%) blur(14px);
  backdrop-filter: saturate(140%) blur(14px);
  border-bottom-color: rgba(0, 0, 0, 0.06);
  transition: background-color .18s ease, box-shadow .18s ease, border-color .18s ease;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  body.hp-homev0-1 header.sticky {
    background-color: rgba(250, 247, 243, 0.96);
  }
}

/* Header: search input warmer + slightly rounded, matches v0 pill vibe */
body.hp-homev0-1 header.sticky input[type="search"] {
  border-radius: 9999px;
  background-color: rgba(255, 253, 250, 0.95);
  border-color: rgba(0, 0, 0, 0.08);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.02);
}

/* Cart button: rounded pill */
body.hp-homev0-1 .hp-cart-link {
  border-radius: 9999px;
}

/* Language selector pill */
body.hp-homev0-1 .hp-lang-toggle {
  border-radius: 9999px;
}

/* Top pill nav: keep behavior, warmer accent */
body.hp-homev0-1 nav.hp-topnav {
  background-color: rgba(250, 247, 243, 0.55);
}

/* Hero: heading constraints + tighter subhead + button lift */
body.hp-homev0-1 section.bg-header h1 {
  letter-spacing: -0.015em;
  font-weight: 800;
}
@media (min-width: 1024px) {
  body.hp-homev0-1 section.bg-header h1 {
    font-size: 3rem;  /* 48px cap — do not exceed lg:text-5xl to avoid the "elephant heading" rejection */
    line-height: 1.06;
  }
}

body.hp-homev0-1 section.bg-header p {
  font-size: 1.02rem;
  line-height: 1.6;
}

/* Primary CTA: taller, softer shadow, rounded to match v0 */
body.hp-homev0-1 .hp-cta-primary {
  height: 3rem;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  border-radius: 9999px;
  box-shadow: 0 6px 16px -8px rgba(240, 107, 26, 0.35), 0 1px 2px rgba(0, 0, 0, 0.05);
  font-weight: 600;
  font-size: 0.925rem;
  letter-spacing: 0.005em;
}
body.hp-homev0-1 .hp-cta-primary:hover {
  box-shadow: 0 10px 22px -8px rgba(240, 107, 26, 0.45), 0 1px 2px rgba(0, 0, 0, 0.06);
  transform: translateY(-1px);
}

/* Secondary CTA: outline / light, clearly lower priority than orange primary */
body.hp-homev0-1 .hp-cta-secondary {
  height: 3rem;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  border-radius: 9999px;
  background-color: rgba(255, 255, 255, 0.7);
  border-color: rgba(0, 0, 0, 0.12);
  color: #2b241c;
  font-weight: 600;
  font-size: 0.925rem;
  letter-spacing: 0.005em;
  transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}
body.hp-homev0-1 .hp-cta-secondary:hover {
  background-color: rgba(255, 255, 255, 1);
  border-color: rgba(240, 107, 26, 0.45);
  color: #f06b1a;
  transform: translateY(-1px);
}

/* Hero hint: keep as subtle helper text below the CTA row */
body.hp-homev0-1 .hp-hero-hint {
  display: block;
  margin-top: 0.35rem;
  font-size: 0.85rem;
  color: rgba(85, 74, 60, 0.85);
}

/* Diagnostic panel: warmer surface + softer border + more premium radius.
 * hp-hero-panel is the wrapper for the 6-tile grid in V4 (default). */
body.hp-homev0-1 .hp-hero-panel {
  border-radius: 1.5rem;
  background-color: rgba(255, 253, 250, 0.85);
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
  padding: 1.15rem;
}
@media (min-width: 640px) {
  body.hp-homev0-1 .hp-hero-panel { padding: 1.35rem; }
}

/* Ensure important diagnostic card titles are NEVER truncated (owner reject rule).
 * The V4 v0 layout uses .hp-hero-mini__v0title/__v0sub. */
body.hp-homev0-1 .hp-hero-mini__v0title,
body.hp-homev0-1 .hp-hero-mini__v0sub {
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  word-break: normal;
}

/* Feature card (BMW) gets a slightly warmer ring — no color change on non-featured */
body.hp-homev0-1 .hp-hero-mini--primary {
  box-shadow: 0 0 0 1px rgba(240, 107, 26, 0.28) inset;
}

/* Trust strip: warmer background + reduced vertical padding + uniform icon chip */
body.hp-homev0-1 .hp-trust-section {
  background-color: rgba(247, 242, 235, 0.6);
  border-top-color: rgba(0, 0, 0, 0.06);
  border-bottom-color: rgba(0, 0, 0, 0.06);
}
body.hp-homev0-1 .hp-trust-tile {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
body.hp-homev0-1 .hp-trust-tile__icon {
  background-color: rgba(255, 232, 216, 0.9);
  color: #b34b0f;
  padding: 0.55rem;
  border-radius: 0.75rem;
  width: 2.75rem !important;
  height: 2.75rem !important;
  box-sizing: content-box;
}

/* Capability cards (hp-diag-usecase) polish */
body.hp-homev0-1 .hp-diag-usecase {
  border-radius: 1rem;
  background-color: rgba(255, 253, 250, 0.9);
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
body.hp-homev0-1 .hp-diag-usecase:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px -12px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.04);
  border-color: rgba(240, 107, 26, 0.3);
}

/* Mobile: keep CTAs stacked but keep radii + heights */
@media (max-width: 640px) {
  body.hp-homev0-1 .hp-cta-primary,
  body.hp-homev0-1 .hp-cta-secondary {
    width: 100%;
    justify-content: center;
  }
  /* Header on mobile: solid enough to guarantee readability */
  body.hp-homev0-1 header.sticky {
    background-color: rgba(250, 247, 243, 0.95);
  }
}

/* HP-P072-END */

/* ==========================================================================
 * HP-P073-BEGIN — Phase 073 homepage v0 rework (fixes rejected 072 result)
 * Scoped under body.hp-homev0-1 (piggybacks on 072 toggle).
 *
 * Fixes:
 *   1) Secondary CTA "Все разделы каталога" wraps → force nowrap + wider min-width
 *   2) Diagnostic card titles truncated ("Универсальн...", "J2534 / PassT...")
 *      → override Phase-062 white-space:nowrap with higher specificity + !important
 *      → allow 2-line wrap by increasing tile min-height and internal padding
 *   3) Trust strip oversized ugly square icons → small circular pale peach-beige
 *      chip (2.25rem / 36px), thin line icon inside, subtle background
 *   4) Slightly tighter trust vertical padding for compact premium feel
 *
 * Everything uses higher specificity than the Phase-062 rules it competes with,
 * plus !important on truncation properties. Toggle remains reversible via
 * ?homev0=0.
 * ========================================================================== */

/* --- 073 FIX 1: Secondary CTA must fit one line ---
 * Owner reject: "Все разделы каталога" wrapped. Force one-line + auto-width. */
body.hp-homev0-1 .hp-cta-secondary {
  white-space: nowrap !important;
  min-width: max-content;
  flex: 0 0 auto;
  padding-left: 1.35rem;
  padding-right: 1.35rem;
}

/* --- 073 FIX 2: Diagnostic tile titles must NEVER truncate on desktop ---
 * Phase 062 set `white-space: nowrap; overflow: hidden; text-overflow: ellipsis`
 * on `.hp-hero-mini__v0title/__v0sub`. Override with higher specificity + !important
 * chained selector `body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini__v0*`. */
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini__v0title,
body.hp-homev0-1 .hp-hero-mini__v0title {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
  hyphens: manual !important;
  line-height: 1.15 !important;
  font-size: 0.87rem !important;
}
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini__v0sub,
body.hp-homev0-1 .hp-hero-mini__v0sub {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  word-break: normal !important;
  line-height: 1.25 !important;
  font-size: 0.66rem !important;
}
/* Tile min-height so 2-line titles don't overflow the tile box */
body.hp-homev0-1 .hp-hero-mini {
  min-height: 5rem;
}
/* Give the tile body more room; keep icon holder small + chevron narrow */
body.hp-homev0-1 .hp-hero-mini__v0iconholder {
  width: 2.25rem !important;
  height: 2.25rem !important;
  min-width: 2.25rem !important;
}
body.hp-homev0-1 .hp-hero-mini__v0iconholder img,
body.hp-homev0-1 .hp-hero-mini__v0icon {
  width: 1.4rem !important;
  height: 1.4rem !important;
}
body.hp-homev0-1 .hp-hero-mini__v0chevron {
  flex: 0 0 auto;
  width: 0.8rem !important;
}
body.hp-homev0-1 .hp-hero-mini__v0body {
  flex: 1 1 auto;
  min-width: 0;
  padding-right: 0.35rem;
}

/* --- 073 FIX 3: Trust strip small compact icon chip (no big ugly squares) ---
 * Reject rule: "small circular pale beige/orange icon background; size around
 * 40-56 px, not huge; not childish". Override 072's 2.75rem square chip. */
body.hp-homev0-1 .hp-trust-tile__icon {
  background-color: rgba(255, 232, 216, 0.55) !important;
  color: #b34b0f !important;
  padding: 0.4rem !important;
  border-radius: 9999px !important;   /* CIRCLE, not square */
  width: 2.25rem !important;          /* 36 px total */
  height: 2.25rem !important;
  box-sizing: border-box !important;
  stroke-width: 1.4 !important;
  border: 1px solid rgba(179, 75, 15, 0.08);
}
/* Slightly tighter y-padding on tile so strip is compact */
body.hp-homev0-1 .hp-trust-tile {
  padding-top: 0.85rem !important;
  padding-bottom: 0.85rem !important;
  gap: 0.75rem;
}
/* Trust section: keep warm bg, but a fraction lighter so strip reads as calm */
body.hp-homev0-1 .hp-trust-section {
  background-color: rgba(247, 242, 235, 0.45) !important;
}
/* Trust tile title/detail typography: slightly tighter to match the smaller icon */
body.hp-homev0-1 .hp-trust-tile__title {
  font-size: 0.9rem;
  font-weight: 700;
  color: #2b241c;
  letter-spacing: -0.005em;
}
body.hp-homev0-1 .hp-trust-tile__detail {
  font-size: 0.78rem;
  color: rgba(85, 74, 60, 0.9);
  line-height: 1.35;
  margin-top: 0.15rem;
}

/* --- 073 FIX 4: Mobile — keep CTA row clean, prevent secondary from clipping --- */
@media (max-width: 640px) {
  body.hp-homev0-1 .hp-cta-secondary {
    white-space: normal !important;   /* allow wrap on tight phones only */
    min-width: 0;
    justify-content: center;
  }
  body.hp-homev0-1 .hp-trust-tile__icon {
    width: 2rem !important;
    height: 2rem !important;
    padding: 0.35rem !important;
  }
}

/* HP-P073-END */

/* ==========================================================================
 * HP-P074-BEGIN — Phase 074 exact-reference match + sticky/frosted header fix
 *
 * Root cause fixed in 074:
 *   Line 241 sets `.hp-app { overflow-x: hidden }`. Per CSS spec: when one
 *   overflow axis is not `visible`, the other silently becomes `auto`.
 *   That created a nested scroll container on `.hp-app` which BROKE the
 *   `header.sticky` positioning — the sticky header slid off-screen with the
 *   body on scroll. Confirmed via puppeteer: computed style on `.hp-app` was
 *   `overflow: hidden auto`. Fix: swap `overflow-x: hidden` for
 *   `overflow-x: clip; overflow-y: visible !important` — `overflow-x: clip`
 *   blocks horizontal overflow without creating a scroll container, so
 *   `overflow-y: visible` stays and sticky works. Same fix mirrored on
 *   body / html so no ancestor kills sticky.
 *
 * Plus:
 *   - v0 diagnostic panel top-right "Все ›" link styling to match reference
 *   - Sticky-scroll shadow triggered by body.is-scrolled (JS in template.js)
 *   - Micro-polish to keep everything else 073-consistent
 * ========================================================================== */

/* --- 074 ROOT FIX: unbreak sticky by removing the auto-scroll-container --- */
body.hp-homev0-1 .hp-app,
.hp-app {
    overflow-x: clip !important;
    overflow-y: visible !important;
}
html, body {
    overflow-x: clip !important;   /* prevent horizontal overflow without breaking sticky */
    overflow-y: visible !important;
}

/* --- 074 STICKY-SCROLL SHADOW ---
 * When body.is-scrolled is applied (by template.js hpP074StickyScroll),
 * add a subtle shadow + slightly more solid header bg. */
body.hp-homev0-1 header.sticky {
    /* keep the 072 warm frost as base; transition already defined in 072 */
    box-shadow: 0 0 0 rgba(0, 0, 0, 0);
}
body.hp-homev0-1.is-scrolled header.sticky {
    background-color: rgba(250, 247, 243, 0.92) !important;
    box-shadow: 0 2px 12px -6px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(0, 0, 0, 0.04);
    border-bottom-color: rgba(0, 0, 0, 0.08);
}

/* --- 074 DIAGNOSTIC PANEL HEAD: layout with "Все ›" link on the right --- */
body.hp-homev0-1 .hp-hero-panel__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
body.hp-homev0-1 .hp-hero-panel__headleft {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* "Все ›" anchor — matches v0: small orange bold text with chevron, sm:inline-flex */
body.hp-homev0-1 .hp-hero-panel__all {
    display: none;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: #f06b1a;
    text-decoration: none;
    padding: 0.35rem 0.6rem;
    border-radius: 9999px;
    transition: background-color .15s ease, color .15s ease;
}
body.hp-homev0-1 .hp-hero-panel__all svg {
    width: 1rem;
    height: 1rem;
    flex: 0 0 auto;
}
body.hp-homev0-1 .hp-hero-panel__all:hover {
    color: #c5510f;
    background-color: rgba(240, 107, 26, 0.06);
    text-decoration: underline;
    text-underline-offset: 3px;
}
@media (min-width: 640px) {
    body.hp-homev0-1 .hp-hero-panel__all { display: inline-flex; }
}

/* HP-P074-END */

/* ==========================================================================
 * HP-P075-BEGIN — visible-frost header + hero CTA/helper layout + panel fit
 *
 * 074 was rejected because:
 *   1) Frosted effect was defined (blur 14px, alpha 0.78) but visually looked
 *      opaque against the same-color warm-beige page below. Owner: "still a
 *      normal opaque bar."
 *   2) Helper text `.hp-hero-hint` was a <span> flex-item inside the CTA row →
 *      rendered as a THIRD narrow column beside the two buttons.
 *   3) Panel felt cramped / borderline cropped near the right edge.
 *
 * Fixes (all scoped under body.hp-homev0-1, piggybacking on 072 toggle):
 *   A) Lower base header alpha 0.78 → 0.62, boost blur 14px → 20px, and add
 *      saturate 180% so any element that scrolls under the header IS visibly
 *      frosted. Base state now has a subtle bottom hairline. Scrolled state
 *      goes to 0.82 alpha + a real drop-shadow. Fallback for browsers without
 *      backdrop-filter: solid 0.96.
 *   B) `.hp-hero-hint` is now a <p> outside the CTA flex row — restore block
 *      typography defaults so it reads as a normal caption line below CTAs.
 *      Also strip `mt-` inheritance so the two mt classes on the tag win.
 *   C) Cap hero grid inner max-width so the right diagnostic panel always
 *      has clean breathing space regardless of viewport 1024-1600. Give the
 *      panel a small right-margin safety.
 * ========================================================================== */

/* --- A) Frost visibility boost --- */
body.hp-homev0-1 header.sticky {
    background-color: rgba(250, 247, 243, 0.62) !important;
    -webkit-backdrop-filter: saturate(180%) blur(20px) !important;
    backdrop-filter: saturate(180%) blur(20px) !important;
    border-bottom: 1px solid rgba(0, 0, 0, 0.045) !important;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    body.hp-homev0-1 header.sticky {
        background-color: rgba(250, 247, 243, 0.96) !important;
    }
}
body.hp-homev0-1.is-scrolled header.sticky {
    background-color: rgba(250, 247, 243, 0.82) !important;
    box-shadow: 0 6px 20px -10px rgba(70, 45, 20, 0.18),
                0 1px 0 rgba(0, 0, 0, 0.05) !important;
    border-bottom-color: rgba(0, 0, 0, 0.07) !important;
}
/* Mobile keeps a stronger alpha so text stays clearly readable */
@media (max-width: 640px) {
    body.hp-homev0-1 header.sticky {
        background-color: rgba(250, 247, 243, 0.88) !important;
    }
    body.hp-homev0-1.is-scrolled header.sticky {
        background-color: rgba(250, 247, 243, 0.94) !important;
    }
}

/* --- B) Helper text renders as block <p> BELOW the CTA row --- */
body.hp-homev0-1 .hp-hero-cta-row {
    row-gap: 0.75rem;
}
body.hp-homev0-1 p.hp-hero-hint,
body.hp-homev0-1 .hp-hero-hint {
    display: block !important;
    max-width: 40rem;
    margin-top: 1rem !important;
    margin-bottom: 0;
    font-size: 0.875rem;
    line-height: 1.5;
    color: rgba(85, 74, 60, 0.85);
}
/* Ensure CTAs still stay side-by-side on desktop; the flex-wrap on the
 * container keeps them clean if the buttons plus gap ever exceed the col */
body.hp-homev0-1 .hp-hero-cta-row .hp-cta-primary,
body.hp-homev0-1 .hp-hero-cta-row .hp-cta-secondary {
    flex: 0 0 auto;
}

/* --- C) Diagnostic panel: keep it safely inside the right column --- */
body.hp-homev0-1 .hp-hero-panel {
    max-width: 100%;
    margin-right: 0;
}
/* At >=1024 give the right column a bit more room via a subtle padding trim */
@media (min-width: 1024px) {
    body.hp-homev0-1 .order-1.lg\:order-2 {
        padding-left: 0.25rem;
    }
    /* Make sure the section container reserves horizontal breathing space so
     * the right panel never touches the viewport edge, even at 1024px width */
    body.hp-homev0-1 section.bg-header > .mx-auto {
        padding-left: 1.25rem;
        padding-right: 1.25rem;
    }
}

/* HP-P075-END */

/* ==========================================================================
 * HP-P076-BEGIN — final tuning: visibly-frosted header + 1024-1279 panel fix
 *
 * 075 was PARTIAL because:
 *   - alpha 0.62 still visually read as "flat opaque" against same-color page;
 *   - at 1024-1199 px the 6-card 2-col grid crushed to 206 px cards.
 *
 * 076 tunes only:
 *   A) Header frost — drop alpha to 0.48 base / 0.68 scrolled, blur to 24 px,
 *      add a subtle gradient overlay so the transparency is visually obvious
 *      even against the same warm-beige page beneath.
 *   B) At 1024-1279 px, switch the panel grid to 1 column so cards get the
 *      full panel width (~440-560 px) — no more crushed titles/tags.
 *
 * Everything else from 072/073/074/075 is preserved (append-only, scoped).
 * ========================================================================== */

/* --- A) Header frost boost — visibly translucent -----------------------
 * Owner rule: "page content underneath faintly visible through the header
 * when scrolled". Reference-parity direction: alpha in the 0.5-0.7 band.
 * At 0.48 base + 0.68 scrolled, with 24 px blur + 200% saturate, the frost
 * effect is unmistakable against any content behind. Gradient overlay adds
 * a subtle top-lighter/bottom-warmer sheen so even at Y=0 (nothing behind)
 * the header still reads as glassy, not solid. */
body.hp-homev0-1 header.sticky {
    background-color: rgba(250, 247, 243, 0.48) !important;
    background-image: linear-gradient(180deg,
        rgba(255, 253, 250, 0.35) 0%,
        rgba(246, 239, 229, 0.25) 100%) !important;
    -webkit-backdrop-filter: saturate(200%) blur(24px) !important;
    backdrop-filter: saturate(200%) blur(24px) !important;
    border-bottom: 1px solid rgba(60, 45, 25, 0.08) !important;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    body.hp-homev0-1 header.sticky {
        background-color: rgba(250, 247, 243, 0.94) !important;
        background-image: none !important;
    }
}
body.hp-homev0-1.is-scrolled header.sticky {
    background-color: rgba(250, 247, 243, 0.68) !important;
    background-image: linear-gradient(180deg,
        rgba(255, 253, 250, 0.28) 0%,
        rgba(246, 239, 229, 0.20) 100%) !important;
    box-shadow: 0 8px 24px -12px rgba(70, 45, 20, 0.22),
                0 1px 0 rgba(0, 0, 0, 0.06) !important;
    border-bottom-color: rgba(60, 45, 25, 0.10) !important;
}
/* Mobile keeps higher alpha for guaranteed text readability */
@media (max-width: 640px) {
    body.hp-homev0-1 header.sticky {
        background-color: rgba(250, 247, 243, 0.86) !important;
        background-image: linear-gradient(180deg,
            rgba(255, 253, 250, 0.15) 0%,
            rgba(246, 239, 229, 0.10) 100%) !important;
    }
    body.hp-homev0-1.is-scrolled header.sticky {
        background-color: rgba(250, 247, 243, 0.93) !important;
    }
}

/* --- B) Diagnostic panel at 1024-1279 px — 1-column card grid ---------
 * At 1024 the 2-col grid squeezed cards to 206 px (icon + title + subtitle
 * + tags + chevron in 206 px is unreadable). Switching to 1-col makes each
 * card ~440-560 px, plenty of room. 1280+ keeps the 2-col grid (v0 parity). */
@media (min-width: 1024px) and (max-width: 1279px) {
    body.hp-homev0-1 .hp-hero-panel__grid {
        grid-template-columns: 1fr !important;
    }
    /* Cards get taller in 1-col; tighten card padding so 6 rows fit inside
     * the hero panel without pushing hero too tall. */
    body.hp-homev0-1 .hp-hero-mini {
        min-height: auto !important;
    }
    /* Panel header keeps its layout, but the panel gets a bit less vertical
     * padding at this range to compensate for taller card stack. */
    body.hp-homev0-1 .hp-hero-panel {
        padding: 1.15rem !important;
    }
}

/* HP-P076-END */

/* ==========================================================================
 * HP-P077-BEGIN — visible-frost fix (final priority)
 *
 * Root cause of "still looks opaque" in 076:
 *   - Scrolled state alpha was 0.68 — with body's opaque beige rgb(242,237,230)
 *     underneath, the effective opacity was ~0.80. Owner reads that as
 *     "opaque bar with slight blur", not "frosted glass".
 *   - Gradient overlay (linear-gradient with 0.35+0.25 alpha layers) added
 *     ~0.20 pseudo-opacity on top → totaling ~0.90 visual opacity.
 *
 * 077 fix:
 *   - Drop base alpha 0.48 → 0.42.
 *   - Drop scrolled alpha 0.68 → 0.32 (was DOUBLE) — scrolled state is when
 *     frost is meant to be MOST visible, not least visible.
 *   - Remove the gradient overlay (was adding pseudo-opacity).
 *   - Blur 24px → 18px (paradox: less blur = clearer see-through content
 *     shapes = MORE visible frost. 24px was smearing everything to uniform).
 *   - Saturate 200% → 165% (avoid over-processing).
 *   - Keep border-bottom + drop-shadow for clean separation.
 *   - Mobile keeps higher alpha (0.72 scrolled) for text readability on
 *     smaller viewports.
 *
 * Header content stays readable because logo, search input, nav pills,
 * lang selector, cart button all have their OWN solid bg colors (bg-card
 * / bg-primary-foreground). Only the outer header wrapper is translucent.
 * ========================================================================== */

body.hp-homev0-1 header.sticky {
    background-color: rgba(250, 247, 243, 0.42) !important;
    background-image: none !important;   /* remove 076's opacity-inflating gradient */
    -webkit-backdrop-filter: saturate(165%) blur(18px) !important;
    backdrop-filter: saturate(165%) blur(18px) !important;
    border-bottom: 1px solid rgba(60, 45, 25, 0.09) !important;
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.02) !important;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    body.hp-homev0-1 header.sticky {
        background-color: rgba(250, 247, 243, 0.94) !important;
    }
}
body.hp-homev0-1.is-scrolled header.sticky {
    background-color: rgba(250, 247, 243, 0.32) !important;  /* was 0.68 — HALVED for visible frost */
    background-image: none !important;
    box-shadow: 0 10px 28px -14px rgba(70, 45, 20, 0.28),
                0 1px 0 rgba(0, 0, 0, 0.06) !important;
    border-bottom-color: rgba(60, 45, 25, 0.14) !important;
}

/* Mobile keeps higher alpha for text readability on smaller viewports */
@media (max-width: 640px) {
    body.hp-homev0-1 header.sticky {
        background-color: rgba(250, 247, 243, 0.75) !important;
    }
    body.hp-homev0-1.is-scrolled header.sticky {
        background-color: rgba(250, 247, 243, 0.72) !important;
        box-shadow: 0 8px 20px -10px rgba(70, 45, 20, 0.22) !important;
    }
}

/* Belt-and-suspenders: ensure the .hp-app parent + body do not paint
 * a solid layer that captures ahead of the header's backdrop-filter.
 * .hp-app was already transparent per 074/076 diagnostic. Body has a
 * solid beige, which is INTENTIONAL for the rest of the page (warm canvas).
 * We do NOT change body bg — the frost captures body's beige as base plus
 * whatever content is at that Y position. With 0.32 alpha + 18 px blur,
 * content shapes (product images, headings) are clearly visible through. */

/* HP-P077-END */

/* ==========================================================================
 * HP-P078-BEGIN — category subcategory tile grid premium refinement
 *
 * Scope: pages that use .hp-subcat-hub__grid / .hp-subcat-hub__tile —
 *   /{lang}/interior, /exterior, /lighting, /keys, /service, /tpms, etc.
 * Does NOT affect: homepage, product pages, article pages, checkout, cart.
 *
 * Applied when body.hp-homev0-1 is present (default state).
 *
 * Changes:
 *   1) Section head (Подкатегории + summary "19 разделов · 272 товара")
 *   2) Rounded premium tile: 1rem radius + soft shadow + hover lift
 *   3) Warm beige image well: 3rem square, off-white bg, object-fit contain
 *   4) Category title typography: 0.925rem bold dark brown
 *   5) Count in orange: 0.75rem semibold #b34b0f
 *   6) Arrow becomes circular pale-orange button (not just an SVG)
 *   7) Hover: translateY(-2px) + arrow slides right
 *   8) Mobile 1-col with slightly smaller image well and tighter padding
 *
 * Fallback: if a category's category_image / product-image lookup is empty,
 * the template already falls back to the JShopping "noimage" placeholder.
 * We DO NOT overlay a letter placeholder — owner rejected letter tiles.
 * ========================================================================== */

/* Section head */
body.hp-homev0-1 .hp-subcat-hub__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
    padding-bottom: 0.65rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
body.hp-homev0-1 .hp-subcat-hub__title {
    font-size: 1.15rem;
    font-weight: 700;
    color: #2b241c;
    letter-spacing: -0.005em;
}
body.hp-homev0-1 .hp-subcat-hub__summary {
    font-size: 0.85rem;
    color: rgba(85, 74, 60, 0.85);
    white-space: nowrap;
}
body.hp-homev0-1 .hp-subcat-hub__summary-count {
    font-weight: 700;
    color: #b34b0f;
}
body.hp-homev0-1 .hp-subcat-hub__summary-sep {
    color: rgba(85, 74, 60, 0.5);
    padding: 0 0.15rem;
}

/* Tile — premium */
body.hp-homev0-1 .hp-subcat-hub__tile {
    border-radius: 1rem !important;
    border-color: rgba(0, 0, 0, 0.08) !important;
    background-color: #ffffff !important;
    padding: 0.85rem 1rem !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03) !important;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease !important;
    gap: 0.85rem !important;
    min-height: 5rem;
}
body.hp-homev0-1 .hp-subcat-hub__tile:hover {
    transform: translateY(-2px) !important;
    border-color: rgba(240, 107, 26, 0.35) !important;
    box-shadow: 0 8px 20px -8px rgba(60, 40, 20, 0.12),
                0 1px 2px rgba(0, 0, 0, 0.04) !important;
}

/* Image well — bigger, warm off-white, object-fit contain */
body.hp-homev0-1 .hp-subcat-hub__thumb {
    width: 3rem !important;
    height: 3rem !important;
    min-width: 3rem;
    border-radius: 0.75rem !important;
    background-color: rgba(250, 245, 236, 0.9) !important;
    border: 1px solid rgba(0, 0, 0, 0.05) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
}
body.hp-homev0-1 .hp-subcat-hub__thumb img {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    padding: 0.15rem;
}

/* Category title */
body.hp-homev0-1 .hp-subcat-hub__tile h3 {
    font-size: 0.925rem !important;
    font-weight: 700 !important;
    color: #2b241c !important;
    letter-spacing: -0.005em;
    line-height: 1.25 !important;
}

/* Count in orange */
body.hp-homev0-1 .hp-subcat-hub__count {
    font-size: 0.75rem !important;
    color: #b34b0f !important;
    font-weight: 600 !important;
    margin-top: 0.2rem !important;
}

/* Arrow — circular pale-orange button */
body.hp-homev0-1 .hp-subcat-hub__tile > svg:last-child {
    box-sizing: content-box;
    width: 0.9rem !important;
    height: 0.9rem !important;
    padding: 0.42rem;
    background-color: rgba(255, 232, 216, 0.6);
    border-radius: 9999px;
    color: #b34b0f !important;
    flex: 0 0 auto;
    transition: background-color 0.18s ease, transform 0.18s ease !important;
    border: 1px solid rgba(179, 75, 15, 0.08);
}
body.hp-homev0-1 .hp-subcat-hub__tile:hover > svg:last-child {
    background-color: rgba(240, 107, 26, 0.14);
    transform: translateX(2px) !important;
    border-color: rgba(179, 75, 15, 0.2);
}

/* Grid: slightly wider gaps for premium feel */
body.hp-homev0-1 .hp-subcat-hub__grid {
    gap: 0.65rem !important;
}
@media (min-width: 1024px) {
    body.hp-homev0-1 .hp-subcat-hub__grid {
        gap: 0.75rem !important;
    }
}

/* Mobile: 1-col already at grid-cols-1; tighten arrow + image slightly */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-subcat-hub__tile {
        padding: 0.7rem 0.85rem !important;
        min-height: 4.5rem;
    }
    body.hp-homev0-1 .hp-subcat-hub__thumb {
        width: 2.75rem !important;
        height: 2.75rem !important;
        min-width: 2.75rem;
    }
    body.hp-homev0-1 .hp-subcat-hub__head {
        margin-bottom: 0.75rem;
    }
    body.hp-homev0-1 .hp-subcat-hub__summary {
        font-size: 0.78rem;
    }
}

/* HP-P078-END */

/* ==========================================================================
 * HP-P079-BEGIN — product card stock badge + card alignment fix
 *
 * Root cause of "Нет в наличии" appearing green:
 *   `.hp-product-card__meta-row .hp-stock-badge` at line 3307 unconditionally
 *   sets `background: #e6f4ec; color: #1b6a3d; border: rgba(27,106,61,0.15)`
 *   with !important on ALL stock badges — the modifier class `--out` doesn't
 *   get its own override rule that beats that specificity.
 *
 * Fixes (CSS only, scoped under body.hp-homev0-1 for reversibility):
 *   1) Out-of-stock badge — muted terracotta on light warm-red tint with
 *      terracotta dot indicator (::before). Higher specificity + !important
 *      beats the green catch-all.
 *   2) In-stock badge kept green (matches existing designed intent).
 *   3) Product card title min-height ensures cards in a row align cleanly
 *      even when titles wrap to 1 or 2 lines.
 *   4) Sale badge kept as designed (position: absolute top-left, no layout
 *      side-effects) + pointer-events: none so it doesn't intercept clicks.
 *   5) Available/unavailable footer button state — .hp-btn--outline for
 *      "Подробнее" (unavailable) already exists but was visually indistinct
 *      due to warm bg matching card bg — added subtle warmer border-tint so
 *      it reads as "outline / secondary" versus primary orange for "В корзину".
 *
 * Zero product / stock / price data modifications.
 * ========================================================================== */

/* --- 1) Out-of-stock badge — muted terracotta ---
 * Beats the `.hp-product-card__meta-row .hp-stock-badge` catch-all by adding
 * a modifier-specific selector chain with !important. Applies to both
 * `--out` and `.not_available` per the DOM markup. */
body.hp-homev0-1 .hp-product-card .hp-stock-badge--out,
body.hp-homev0-1 .hp-product-card .hp-stock-badge.not_available,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--out,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge.not_available {
    background: #fdecea !important;                       /* light terracotta tint */
    color: #8a3a20 !important;                            /* dark warm red-brown */
    border: 1px solid rgba(140, 60, 40, 0.22) !important; /* muted terracotta border */
}
body.hp-homev0-1 .hp-stock-badge--out::before,
body.hp-homev0-1 .hp-stock-badge.not_available::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: #b6482e;                                  /* terracotta dot */
    box-shadow: 0 0 0 2px rgba(182, 72, 46, 0.18);
    display: inline-block;
    flex: 0 0 auto;
}

/* --- 2) In-stock badge (kept green — designed intent) ---
 * No override needed; existing `.hp-stock-badge--in` rules produce green already.
 * Just guarantee the dot renders on all listing surfaces. */
body.hp-homev0-1 .hp-stock-badge--in::before,
body.hp-homev0-1 .hp-stock-badge.available::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: #16a34a;
    box-shadow: 0 0 0 2px rgba(22, 163, 74, 0.18);
    display: inline-block;
    flex: 0 0 auto;
}

/* --- 3) Product card title — consistent min-height so cards align --- */
body.hp-homev0-1 .hp-product-card__title {
    min-height: 2.8em;                     /* room for 2 lines of typical Hidplanet titles */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.35;
    margin-bottom: 0.25rem;
}
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-card__title {
        min-height: 2.4em;
        line-height: 1.3;
    }
}

/* --- 4) Sale badge doesn't intercept clicks + stays put --- */
body.hp-homev0-1 .hp-product-card__sale-badge {
    pointer-events: none;
    letter-spacing: 0.01em;
    z-index: 2;
}

/* --- 5) Unavailable product "Подробнее" — clearer outline / lower priority ---
 * The existing `.hp-btn--outline` renders as white on white which reads muted.
 * Add a subtle warmer border + darker text so it visually reads as "info" not
 * "add to cart". Only in product-card footer scope. */
body.hp-homev0-1 .hp-product-card__footer .hp-btn--outline {
    background: rgba(250, 245, 236, 0.9) !important;
    color: #4a3d2c !important;
    border: 1px solid rgba(60, 45, 25, 0.18) !important;
    font-weight: 600 !important;
}
body.hp-homev0-1 .hp-product-card__footer .hp-btn--outline:hover {
    background: rgba(255, 232, 216, 0.6) !important;
    border-color: rgba(179, 75, 15, 0.30) !important;
    color: #b34b0f !important;
}

/* --- 6) Card body flex so footer sticks to bottom
 * hp-product-card__body already flex column via existing rules — this
 * belt-and-suspenders ensures footer aligns even in edge cases. */
body.hp-homev0-1 .hp-product-card__body {
    display: flex !important;
    flex-direction: column !important;
    height: 100%;
}
body.hp-homev0-1 .hp-product-card__footer {
    margin-top: auto;
}

/* HP-P079-END */

/* ==========================================================================
 * HP-P080-BEGIN — product card component structure REBUILD
 *
 * 079 fixed the out-of-stock badge color but owner reported that the card
 * layout / alignment / image area / sale card / button system were not
 * meaningfully improved. This block treats the product card as a real
 * component with 4 stable zones and applies systematic rules to each.
 *
 * ZONES:
 *   1) Image zone         — .hp-product-card__image-wrap  (top)
 *   2) Title zone         — .hp-product-card__title       (below image)
 *   3) Meta + price row   — .hp-product-card__meta-row    (below title)
 *   4) Action button      — .hp-btn inside __footer       (bottom, sticky)
 *
 * Everything is scoped under body.hp-homev0-1 so it stays reversible via
 * ?homev0=0. 079's stock-badge terracotta rules are preserved.
 * ========================================================================== */

/* --- Card container: premium warm off-white with hover lift --- */
body.hp-homev0-1 .hp-product-card {
    display: flex !important;
    flex-direction: column !important;
    height: 100% !important;
    background: #ffffff !important;
    border: 1px solid rgba(60, 45, 25, 0.09) !important;
    border-radius: 14px !important;
    overflow: hidden !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03) !important;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease !important;
    position: relative;
}
body.hp-homev0-1 .hp-product-card:hover {
    transform: translateY(-2px) !important;
    border-color: rgba(240, 107, 26, 0.28) !important;
    box-shadow: 0 8px 20px -8px rgba(60, 40, 20, 0.14), 0 1px 2px rgba(0, 0, 0, 0.04) !important;
}

/* --- 1) IMAGE ZONE: 4:3 aspect, warm off-white frame, generous padding --- */
body.hp-homev0-1 .hp-product-card__image-wrap {
    aspect-ratio: 4 / 3 !important;               /* was 1:1 (298 px) → now 4:3 (~225 px) */
    background: linear-gradient(180deg,
        rgba(252, 248, 241, 1.00) 0%,
        rgba(248, 243, 233, 0.95) 100%) !important;
    padding: 0.9rem !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
    border-bottom: 1px solid rgba(60, 45, 25, 0.04);
    position: relative;
}
body.hp-homev0-1 .hp-product-card__image {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    padding: 0 !important;
    object-fit: contain !important;
    transition: transform 0.24s ease !important;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.04));
}
body.hp-homev0-1 .hp-product-card:hover .hp-product-card__image {
    transform: scale(1.03) !important;             /* subtler than the 1.05 elsewhere */
}

/* --- 2) TITLE ZONE: stable min-height, 2-line clamp, calm typography --- */
body.hp-homev0-1 .hp-product-card__title {
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    min-height: 2.7em !important;
    max-height: 2.7em !important;
    font-size: 0.9rem !important;
    line-height: 1.35 !important;
    font-weight: 600 !important;
    color: #1a1a1a !important;
    margin: 0 0 0.55rem !important;
    letter-spacing: -0.005em !important;
}

/* --- Body: consistent inner padding + proper flex column --- */
body.hp-homev0-1 .hp-product-card__body {
    display: flex !important;
    flex-direction: column !important;
    flex: 1 1 auto !important;
    padding: 0.85rem 0.95rem 0.9rem !important;
    gap: 0 !important;
}
body.hp-homev0-1 .hp-product-card__footer {
    display: flex !important;
    flex-direction: column !important;
    margin-top: auto !important;
    padding: 0 !important;
    gap: 0.65rem !important;
    border-top: 0 !important;
}

/* --- 3) META + PRICE ROW: stock LEFT, price block RIGHT, aligned baseline --- */
body.hp-homev0-1 .hp-product-card__meta-row {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 0.5rem !important;
    padding: 0 !important;
    margin: 0 !important;
    flex-wrap: nowrap !important;
    min-height: 2.1rem;                            /* reserves space so button never shifts */
}
body.hp-homev0-1 .hp-product-card__stock {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    align-items: center !important;
}

/* Price block: right-aligned column. Old price (small strikethrough) ABOVE
 * new price (bold), so eye reads discount first. Sale + non-sale cards share
 * the same column so alignment doesn't jump — non-sale cards just skip the
 * old-price line but the block still right-aligns to the same baseline. */
body.hp-homev0-1 .hp-product-card__price-block {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
    justify-content: flex-end !important;
    line-height: 1 !important;
    margin-left: auto !important;
    flex: 0 0 auto !important;
    text-align: right !important;
    min-width: 3.5rem;
}
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price-old {
    font-size: 0.72rem !important;
    color: #9a8867 !important;
    text-decoration: line-through !important;
    line-height: 1 !important;
    margin: 0 0 3px !important;
    display: block !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em;
}
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price,
body.hp-homev0-1 .hp-product-card__footer .hp-product-card__price {
    font-size: 1.15rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    color: #1a1a1a !important;
    white-space: nowrap !important;
    margin: 0 !important;
    padding: 0 !important;
    letter-spacing: -0.005em !important;
    display: inline-block !important;
}

/* Sale-card price (new) gets a subtle orange tint to signal the discount */
body.hp-homev0-1 .hp-product-card:has(.hp-product-card__price-old) .hp-product-card__price {
    color: #b34b0f !important;
}

/* --- 4) ACTION BUTTON: full-width block, consistent height --- */
body.hp-homev0-1 .hp-product-card__footer .hp-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    height: 2.5rem !important;
    min-height: 2.5rem !important;
    padding: 0 1rem !important;
    font-size: 0.86rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.005em !important;
    border-radius: 8px !important;
    gap: 0.4rem !important;
    text-decoration: none !important;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease !important;
}
body.hp-homev0-1 .hp-product-card__footer .hp-btn--primary {
    background: #f06b1a !important;
    color: #ffffff !important;
    border: 1px solid transparent !important;
    box-shadow: 0 2px 6px -3px rgba(240, 107, 26, 0.35);
}
body.hp-homev0-1 .hp-product-card__footer .hp-btn--primary:hover {
    background: #d95a0e !important;
    box-shadow: 0 4px 10px -4px rgba(240, 107, 26, 0.5);
}
body.hp-homev0-1 .hp-product-card__footer .hp-btn--outline {
    background: rgba(250, 245, 236, 0.9) !important;
    color: #4a3d2c !important;
    border: 1px solid rgba(60, 45, 25, 0.18) !important;
}
body.hp-homev0-1 .hp-product-card__footer .hp-btn--outline:hover {
    background: rgba(255, 232, 216, 0.6) !important;
    border-color: rgba(179, 75, 15, 0.35) !important;
    color: #b34b0f !important;
}

/* --- Sale badge: top-left, warm orange chip, above image bg but below hover --- */
body.hp-homev0-1 .hp-product-card__sale-badge {
    position: absolute !important;
    top: 0.6rem !important;
    left: 0.6rem !important;
    padding: 0.2rem 0.55rem !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.03em !important;
    text-transform: uppercase !important;
    background: #f06b1a !important;
    color: #ffffff !important;
    border-radius: 9999px !important;
    box-shadow: 0 2px 6px -2px rgba(240, 107, 26, 0.35);
    z-index: 3 !important;
    pointer-events: none !important;
    line-height: 1 !important;
    white-space: nowrap !important;
}

/* --- Mobile ≤640px: image aspect ratio and typography adjustments --- */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-card__image-wrap {
        aspect-ratio: 4 / 3 !important;
        padding: 0.55rem !important;
    }
    body.hp-homev0-1 .hp-product-card__body {
        padding: 0.7rem 0.75rem 0.75rem !important;
    }
    body.hp-homev0-1 .hp-product-card__title {
        font-size: 0.82rem !important;
        min-height: 2.5em !important;
        max-height: 2.5em !important;
        line-height: 1.3 !important;
    }
    body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price,
    body.hp-homev0-1 .hp-product-card__footer .hp-product-card__price {
        font-size: 1rem !important;
    }
    body.hp-homev0-1 .hp-product-card__footer .hp-btn {
        height: 2.35rem !important;
        min-height: 2.35rem !important;
        font-size: 0.8rem !important;
    }
    body.hp-homev0-1 .hp-product-card__sale-badge {
        top: 0.4rem !important;
        left: 0.4rem !important;
        padding: 0.15rem 0.45rem !important;
        font-size: 0.62rem !important;
    }
}

/* HP-P080-END */

/* ==========================================================================
 * HP-P081-BEGIN — stock/price row edge alignment + softer premium green
 *
 * 080 refined the card structure but left one bug and one aesthetic gap:
 *
 * Bug: `.hp-product-card__meta-row` computed width was 187 px vs its
 *      sibling button's 268 px. Root cause: the meta-row is a flex-column
 *      child of the footer but had no explicit `width`, so with its own
 *      `display: flex` + children `flex: 0 1 auto` it collapsed to
 *      min-content (badge ≈ 123 + gap + price ≈ 56 = 187 px). Effect: the
 *      badge started 41 px INSIDE the button's left edge, and the price
 *      ended 40 px INSIDE the button's right edge — visually "shifted /
 *      centered inside the card" per owner reject.
 *
 * Aesthetic: available "Доступно сразу" badge was #dcf5df + #166534 —
 *      acidic bright green that doesn't fit the warm beige palette.
 *      Owner asked for a calmer, more premium green (#e8f5ec bg, #b9dfc4
 *      border, #2f7a45 text, #24a259 dot).
 *
 * Fixes (CSS only, scoped body.hp-homev0-1):
 *   1) Force `.hp-product-card__meta-row { width: 100% }` so it spans the
 *      full inner-width of the body / footer / button.
 *   2) Ensure `.hp-product-card__stock` uses `flex: 1 1 auto; justify-content:
 *      flex-start` so its badge child sits FLUSH LEFT of the row.
 *   3) Ensure `.hp-product-card__price-block` uses `flex: 0 0 auto;
 *      align-items: flex-end` so the price stays FLUSH RIGHT.
 *   4) Recolor available badge to muted premium green.
 *   5) Keep 080's terracotta out-of-stock (unchanged).
 * ========================================================================== */

/* --- 1) Meta-row spans full inner-width so children align to button edges */
body.hp-homev0-1 .hp-product-card__meta-row {
    width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 0.5rem !important;
    flex-wrap: nowrap !important;
    align-self: stretch !important;   /* belt-and-suspenders vs any flex-column parent quirks */
}

/* --- 2) Stock zone: grow to fill left, badge flush left */
body.hp-homev0-1 .hp-product-card__meta-row .hp-product-card__stock,
body.hp-homev0-1 .hp-product-card__footer   .hp-product-card__stock {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    text-align: left !important;
}
body.hp-homev0-1 .hp-product-card__stock .hp-stock-badge {
    margin: 0 !important;                /* no auto-margins that would center it */
}

/* --- 3) Price block: content-sized, flush right */
body.hp-homev0-1 .hp-product-card__price-block {
    flex: 0 0 auto !important;
    margin: 0 0 0 auto !important;       /* margin-left auto pushes right if any flex quirks */
    padding: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
    justify-content: center !important;
    text-align: right !important;
    line-height: 1 !important;
}

/* --- 4) Softer premium green for available badge -----------------------
 * Beats the existing catch-alls (line 3307 + earlier) by adding
 * body.hp-homev0-1 scope + !important. Values direct from owner spec:
 *   bg  #e8f5ec, border #b9dfc4, text #2f7a45, dot #24a259.
 * Terracotta out-of-stock from 079 is untouched. */
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge.available {
    background: #e8f5ec !important;
    color: #2f7a45 !important;
    border: 1px solid #b9dfc4 !important;
}
body.hp-homev0-1 .hp-stock-badge--in::before,
body.hp-homev0-1 .hp-stock-badge.available::before {
    background: #24a259 !important;
    box-shadow: 0 0 0 2px rgba(36, 162, 89, 0.15) !important;
}

/* --- 5) Verify sale price block still right-aligns cleanly --- */
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price-old {
    align-self: flex-end !important;
    text-align: right !important;
}
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price {
    align-self: flex-end !important;
    text-align: right !important;
}

/* --- Mobile ≤640 px: same alignment logic, just narrower row ------------- */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-card__meta-row {
        width: 100% !important;
        gap: 0.35rem !important;
    }
}

/* HP-P081-END */

/* ==========================================================================
 * HP-P081-ADDENDUM — sale-price row alignment
 *
 * Additional owner req during 081 session:
 *   Sale product cards must have CURRENT price ON SAME ROW as the stock
 *   badge; OLD (crossed-out) price must sit ABOVE, right-aligned.
 *
 * Fix: change meta-row `align-items: center → flex-end` so both stock
 *      badge and price-block anchor to the row bottom. Inside price-block
 *      (already flex-direction: column with old-on-top / new-on-bottom),
 *      the new price now aligns baseline-to-baseline with the stock badge.
 *      Old price floats above and above the row without disturbing button
 *      alignment (footer margin-top: auto keeps button pinned to card
 *      bottom regardless of meta-row height).
 *      Also give the price-block a small negative margin-top allowance
 *      so the old-price stack doesn't push the row taller than needed on
 *      non-sale cards.
 * ========================================================================== */

body.hp-homev0-1 .hp-product-card__meta-row {
    align-items: flex-end !important;         /* was center — now bottom-aligned */
    min-height: 2.1rem !important;
}

/* Price block: column with new price at bottom (matches badge row),
 * old price stacked above and slightly muted */
body.hp-homev0-1 .hp-product-card__price-block {
    flex-direction: column !important;
    align-items: flex-end !important;
    justify-content: flex-end !important;      /* pin content to bottom of block */
    line-height: 1 !important;
    row-gap: 0.15rem;
}
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price-old {
    order: 0 !important;                       /* first in column = top */
    font-size: 0.72rem !important;
    color: #9a8867 !important;
    text-decoration: line-through !important;
    text-align: right !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
}
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price {
    order: 1 !important;                       /* second in column = bottom = aligned with stock badge */
    font-size: 1.15rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    letter-spacing: -0.005em !important;
    text-align: right !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
}

/* Stock badge sits at bottom of meta-row now — matches new price baseline */
body.hp-homev0-1 .hp-product-card__stock {
    align-self: flex-end !important;
    align-items: flex-end !important;
}
body.hp-homev0-1 .hp-product-card__stock .hp-stock-badge {
    align-self: flex-end !important;
}

/* HP-P081-ADDENDUM-END */

/* ==========================================================================
 * HP-P082-BEGIN — trust strip container + softer icons + sale baseline
 *
 * 081 was PARTIAL because:
 *   1) Homepage trust strip visually reads as a FULL-BLEED band wider than
 *      the site content container. Owner wants it contained.
 *   2) Trust icons feel too rough (24 px stroke-width 2 SVG on 36 px chip).
 *   3) Sale card current price (57 €) drops LOWER than normal cards' price
 *      (200 € / 14 €). Owner's key visual test: "current sale price must be
 *      on the same baseline where 200 € would be in a normal card." Fix:
 *      take the OLD price out of layout flow via `position: absolute` so it
 *      sits above the current price WITHOUT displacing it.
 *   4) Helper text "ниже" replaced by "справа" (see language INI changes).
 *
 * All CSS scoped body.hp-homev0-1 for reversibility.
 * ========================================================================== */

/* ------------------------------------------------------------------
 * FIX 1) Trust strip — contained inside site container, no full band
 * Remove full-width section background + border; move them onto the
 * inner max-w-7xl grid so the whole strip reads as a card within the
 * same content-width as hero + capability cards. */
body.hp-homev0-1 section.hp-trust-section {
    background: transparent !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
    margin-top: 0.5rem;
}
@media (min-width: 640px) {
    body.hp-homev0-1 section.hp-trust-section {
        padding-left: 1.5rem !important;
        padding-right: 1.5rem !important;
    }
}
body.hp-homev0-1 section.hp-trust-section > .mx-auto {
    background: rgba(255, 253, 250, 0.85) !important;
    border: 1px solid rgba(60, 45, 25, 0.09) !important;
    border-radius: 14px !important;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
}

/* ------------------------------------------------------------------
 * FIX 2) Trust icons — smaller, calmer, thinner stroke, warmer chip
 * Icons stay circular pale-peach (from 073) — just refine. */
body.hp-homev0-1 .hp-trust-tile {
    padding-top: 1.05rem !important;
    padding-bottom: 1.05rem !important;
    gap: 0.85rem;
}
body.hp-homev0-1 .hp-trust-tile__icon {
    background-color: rgba(255, 232, 216, 0.75) !important;
    color: #b34b0f !important;
    padding: 0.5rem !important;
    border-radius: 9999px !important;
    width: 2.5rem !important;         /* 40 px per owner spec range */
    height: 2.5rem !important;
    box-sizing: border-box !important;
    stroke-width: 1.5 !important;     /* thinner line = calmer */
    border: 1px solid rgba(179, 75, 15, 0.10);
    flex-shrink: 0;
}
body.hp-homev0-1 .hp-trust-tile__title {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2b241c;
    letter-spacing: -0.005em;
}
body.hp-homev0-1 .hp-trust-tile__detail {
    font-size: 0.78rem;
    color: rgba(85, 74, 60, 0.9);
    line-height: 1.35;
    margin-top: 0.15rem;
}

/* Mobile trust icons a hair smaller */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-trust-tile__icon {
        width: 2.15rem !important;
        height: 2.15rem !important;
        padding: 0.4rem !important;
    }
}

/* ------------------------------------------------------------------
 * FIX 4) Sale price baseline via absolute-positioned old price
 * Meta-row goes back to align-items: center. Price block gets position:
 * relative so old price can be absolutely positioned ABOVE the current
 * price without affecting layout. Current price then sits on the same
 * baseline as green badge (matches 200 € / 14 € on non-sale cards). */
body.hp-homev0-1 .hp-product-card__meta-row {
    align-items: center !important;   /* revert 081's flex-end — center = same row for badge + current price */
}
body.hp-homev0-1 .hp-product-card__price-block {
    position: relative !important;
    flex-direction: row !important;    /* single row, only current price is in flow */
    align-items: center !important;
    justify-content: flex-end !important;
    padding-top: 0 !important;
}
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price {
    order: 1 !important;
    position: relative;
    z-index: 0;
    font-size: 1.15rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    color: #1a1a1a !important;
    letter-spacing: -0.005em !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: right !important;
    display: inline-block !important;
}
/* Sale product current price gets subtle orange tint (from 080's :has()) */
body.hp-homev0-1 .hp-product-card:has(.hp-product-card__price-old) .hp-product-card__price-block .hp-product-card__price {
    color: #b34b0f !important;
}
/* OLD price — absolutely positioned ABOVE current price, right-aligned,
 * takes NO layout space, so current-price baseline never shifts. */
body.hp-homev0-1 .hp-product-card__price-block .hp-product-card__price-old {
    position: absolute !important;
    right: 0 !important;
    bottom: 100% !important;
    margin: 0 0 2px 0 !important;
    padding: 0 !important;
    font-size: 0.72rem !important;
    line-height: 1 !important;
    color: #9a8867 !important;
    text-decoration: line-through !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em !important;
    white-space: nowrap !important;
    display: block !important;
    pointer-events: none;
    z-index: 1;
}

/* Stock badge: stay centered vertically with price (same row) */
body.hp-homev0-1 .hp-product-card__stock {
    align-self: center !important;
    align-items: center !important;
}
body.hp-homev0-1 .hp-product-card__stock .hp-stock-badge {
    align-self: center !important;
}

/* HP-P082-END */

/* ==========================================================================
 * HP-P083-BEGIN — available badge calm muted green (owner-exact hex)
 *
 * Owner: "still too acidic/neon" on 082's `#e8f5ec / #b9dfc4 / #2f7a45 / #24a259`.
 * Fix: apply owner-supplied exact hex values across EVERY badge context
 *      (listing, featured grid, home hero mini, JShopping product page id,
 *      generic .available class), overriding earlier acidic rules at
 *      lines 826-828 (#dcf5df + #166534 + #86efac) and 3317-3319 (#e6f4ec +
 *      #1b6a3d + rgba(27,106,61,0.15)).
 *
 * Owner spec (literal):
 *   background: #EAF5ED
 *   border:     #BBDDC4
 *   color:      #2F7A45
 *   dot:        #2FA35A
 *
 * Terracotta out-of-stock (079) untouched.
 * ========================================================================== */

body.hp-homev0-1 .hp-stock-badge--in,
body.hp-homev0-1 .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge.available,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge--in,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge.available,
body.hp-homev0-1 .hp-diag-hub__product-stock,
body.hp-homev0-1 #available_now {
    background: #EAF5ED !important;
    color:      #2F7A45 !important;
    border:     1px solid #BBDDC4 !important;
}

body.hp-homev0-1 .hp-stock-badge--in::before,
body.hp-homev0-1 .hp-stock-badge.available::before {
    background: #2FA35A !important;
    box-shadow: 0 0 0 2px rgba(47, 163, 90, 0.14) !important;
}

/* Belt-and-suspenders: on any generic .available (product detail block) */
body.hp-homev0-1 .available:not(.hp-stock-badge) {
    color: #2F7A45 !important;
}

/* HP-P083-END */

/* ==========================================================================
 * HP-P084-BEGIN — stronger green + short-desc structure + tabs align + gap fix
 *
 * 083 was PARTIAL: green became too pale/washed. Product page needs:
 *   - stronger confident green (not neon, not pale)
 *   - short description with heading + bullet list styling (PHP was updated
 *     to emit .__short--structured with .__short-title + .__short-list when
 *     the text has ≥3 lines; this CSS styles that structure)
 *   - tabs vertically centered inside the tab bar
 *   - reduce the 3rem gap (mt-12) between product top and tabs
 *
 * Scoped body.hp-homev0-1 for reversibility. Terracotta out-of-stock (079)
 * preserved.
 * ========================================================================== */

/* --- FIX 1) Stronger confident (but not acidic) available badge ---
 * Owner spec range: bg #DFF4E6/#E2F6E8, border #7BCF91/#8DD9A0, text
 * #1F7A3B/#227A3F, dot #18A84E/#1EAD55. Using the stronger option throughout
 * so availability is a clear commercial signal. */
body.hp-homev0-1 .hp-stock-badge--in,
body.hp-homev0-1 .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge.available,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge--in,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge.available,
body.hp-homev0-1 .hp-diag-hub__product-stock,
body.hp-homev0-1 #available_now {
    background: #E2F6E8 !important;
    color: #1F7A3B !important;
    border: 1px solid #7BCF91 !important;
    font-weight: 600 !important;
}
body.hp-homev0-1 .hp-stock-badge--in::before,
body.hp-homev0-1 .hp-stock-badge.available::before {
    background: #18A84E !important;
    box-shadow: 0 0 0 2px rgba(24, 168, 78, 0.18) !important;
}

/* --- FIX 2) Short description: heading + bullet list --------------------- */
body.hp-homev0-1 .hp-product-detail__short {
    font-size: 0.95rem;
    line-height: 1.55;
    color: #3a3226;
    margin: 0.75rem 0 0 !important;
}
body.hp-homev0-1 .hp-product-detail__short--structured {
    font-size: 0.95rem;
    color: #3a3226;
    margin: 0.75rem 0 0 !important;
}
body.hp-homev0-1 .hp-product-detail__short-title {
    font-size: 1rem;
    font-weight: 700;
    color: #2b241c;
    letter-spacing: -0.005em;
    margin: 0 0 0.45rem 0 !important;
    line-height: 1.35;
}
body.hp-homev0-1 .hp-product-detail__short-list {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
body.hp-homev0-1 .hp-product-detail__short-list li {
    position: relative;
    padding-left: 1.15rem;
    line-height: 1.5;
    color: #3a3226;
    font-size: 0.925rem;
}
body.hp-homev0-1 .hp-product-detail__short-list li::before {
    content: '';
    position: absolute;
    left: 0.15rem;
    top: 0.6em;
    width: 0.4rem;
    height: 0.4rem;
    border-radius: 9999px;
    background: #b34b0f;
}

/* --- FIX 3) Tab bar vertical center + polish --------------------------- */
body.hp-homev0-1 #hp-product-tabs > div[role="tablist"],
body.hp-homev0-1 .hp-product-tabs-wrap > div[role="tablist"] {
    align-items: center !important;
    min-height: 3rem;
    padding: 0.15rem 0;
    gap: 0.35rem !important;
}
body.hp-homev0-1 .hp-p063-tab {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 2.5rem !important;
    line-height: 1 !important;
    padding: 0 1rem !important;
    border-radius: 8px 8px 0 0 !important;
    font-weight: 600 !important;
    transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease !important;
}
body.hp-homev0-1 .hp-p063-tab[aria-selected="true"] {
    background: rgba(240, 107, 26, 0.06);
    border-bottom-color: #f06b1a !important;
    color: #1a1a1a !important;
}
body.hp-homev0-1 .hp-p063-tab[aria-selected="false"]:hover {
    background: rgba(60, 45, 25, 0.04);
    color: #2b241c !important;
}

/* --- FIX 4) Reduce huge gap between product top and tabs ---
 * PHP tabs wrapper was mt-12 (3rem); PHP was updated to mt-4 (1rem). This
 * CSS is belt-and-suspenders in case anything else pushes the gap. */
body.hp-homev0-1 #hp-product-tabs,
body.hp-homev0-1 .hp-product-tabs-wrap {
    margin-top: 1rem !important;
}
body.hp-homev0-1 .hp-product-detail,
body.hp-homev0-1 .jshop_prod_description,
body.hp-homev0-1 .productfull {
    margin-bottom: 0.5rem;
}

/* Mobile ≤640 */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-detail__short-title { font-size: 0.94rem; }
    body.hp-homev0-1 .hp-product-detail__short-list li { font-size: 0.87rem; }
    body.hp-homev0-1 .hp-p063-tab { height: 2.35rem !important; padding: 0 0.8rem !important; }
}

/* HP-P084-END */

/* ==========================================================================
 * HP-P085F-BEGIN — available badge FINAL owner-exact hex + CSS variables
 *
 * Diagnostic across 3 contexts (product detail / product listing / related
 * products in another category) confirmed all use identical class chain:
 *   .hp-stock-badge.hp-stock-badge--in.available
 * inside `.hp-product-card__stock` (listing / related) or
 * `.mt-4` wrapper (product detail top area).
 *
 * Owner NEW target (2026-07-06 23:00 message):
 *   background  #E3F2E6
 *   border      #86BE8E
 *   text        #26723A
 *   dot         #2F9E4D
 *
 * Strategy: CSS tokens on :root + narrow scoped selectors + `!important`
 * required only to beat earlier `!important` rules at lines 826/1108/3317
 * (documented in HP-P081/082 comments — legacy cascade origin).
 * ========================================================================== */

:root {
    --hp-stock-available-bg:     #E4F4DC;
    --hp-stock-available-border: #9FD08F;
    --hp-stock-available-text:   #247313;
    --hp-stock-available-dot:    transparent;
}

body.hp-homev0-1 .hp-stock-badge--in,
body.hp-homev0-1 .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge.available,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge--in,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge.available,
body.hp-homev0-1 .hp-diag-hub__product-stock,
body.hp-homev0-1 #available_now {
    background: var(--hp-stock-available-bg) !important;
    color:      var(--hp-stock-available-text) !important;
    border:     1px solid var(--hp-stock-available-border) !important;
    font-weight: 600 !important;
}

body.hp-homev0-1 .hp-stock-badge--in::before,
body.hp-homev0-1 .hp-stock-badge.available::before {
    background: var(--hp-stock-available-dot) !important;
    box-shadow: 0 0 0 2px rgba(59, 135, 68, 0.18) !important;
}

/* Belt-and-suspenders: any generic `.available` outside the main badge chain */
body.hp-homev0-1 .available:not(.hp-stock-badge):not(.hp-p063-tab) {
    color: var(--hp-stock-available-text) !important;
}

/* HP-P085F-END */


/* HP-P086: variable values updated to olive-natural green
 *   bg #EEF4E9, border #9AB890, text #2E6932, dot #3B8744
 * Reason: 085 mint (#E3F2E6/#2F9E4D) still visually "acidic" against warm-beige page.
 * Same selector structure as HP-P085F preserved. */


/* ==========================================================================
 * HP-P087-BEGIN — match LIVE hidplanet.lv reference EXACT (no dot)
 * Live probe (hidplanet.lv /) revealed available badge uses class
 *   `hp-avail-badge` with bg #E8F5E2 · border #B8E0A8 · text #2A7A14 · NO dot.
 * We keep our .hp-stock-badge--in class chain but remove the ::before dot
 * and match the pill dimensions (padding 4px 12px, font 12px, border-radius 999px).
 * Terracotta out-of-stock (079) untouched — only in-stock dot removed.
 * ========================================================================== */

body.hp-homev0-1 .hp-stock-badge--in::before,
body.hp-homev0-1 .hp-stock-badge.available::before {
    content: none !important;
    display: none !important;
    background: transparent !important;
    box-shadow: none !important;
    width: 0 !important;
    height: 0 !important;
}

body.hp-homev0-1 .hp-stock-badge--in,
body.hp-homev0-1 .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge--in,
body.hp-homev0-1 .hp-diag-hub__product-stock,
body.hp-homev0-1 #available_now {
    padding: 4px 12px !important;
    font-size: 12px !important;
    border-radius: 999px !important;
    line-height: 1.15 !important;
    /* gap: 0 !important;  removed because no dot means gap doesn't matter */
    gap: 0 !important;
}

/* Explicit: terracotta out-of-stock keeps its dot (unchanged from 079) */
body.hp-homev0-1 .hp-stock-badge--out::before,
body.hp-homev0-1 .hp-stock-badge.not_available::before {
    content: '' !important;
    display: inline-block !important;
}

/* HP-P087-END */


/* ==========================================================================
 * HP-P088-BEGIN — final tuning: font-weight 700 to match LIVE hidplanet.lv
 * Live homepage badge uses fontWeight: 700 (staging currently 600 from 087).
 * All other properties already LIVE-exact. This is the last delta.
 * ========================================================================== */
body.hp-homev0-1 .hp-stock-badge--in,
body.hp-homev0-1 .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge--in,
body.hp-homev0-1 .hp-diag-hub__product-stock,
body.hp-homev0-1 #available_now {
    font-weight: 700 !important;
}
/* HP-P088-END */


/* HP-P088-FINAL: widen selectors to beat HP-P084's meta-row rule (same
 * specificity 0,0,3,1) — appending at file end guarantees cascade priority. */
body.hp-homev0-1 .hp-stock-badge--in,
body.hp-homev0-1 .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__meta-row .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__footer .hp-stock-badge.available,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge--in,
body.hp-homev0-1 .hp-home-featured-grid .hp-stock-badge.available,
body.hp-homev0-1 .hp-product-card__stock .hp-stock-badge--in,
body.hp-homev0-1 .hp-product-card__stock .hp-stock-badge.available,
body.hp-homev0-1 .hp-diag-hub__product-stock,
body.hp-homev0-1 #available_now {
    font-weight: 700 !important;
    padding: 4px 12px !important;
    font-size: 12px !important;
    border-radius: 999px !important;
    line-height: 1.15 !important;
}


/* ==========================================================================
 * HP-P089-BEGIN — product top-info compact spacing + stronger green on beige
 *
 * Two owner-driven changes:
 *   1) Reduce vertical gaps between title / EAN / price / badge / benefits
 *      block on all product detail pages. Values chosen from probe (was
 *      title→price 77px, price→badge 26px, badge→shortdesc 26px). Target:
 *      ~40 / ~14 / ~14 px respectively so the top block feels commercial
 *      without being cramped.
 *   2) Green tokens tuned slightly stronger for the warm-beige staging
 *      background: bg #E8F5E2 → #E4F4DC, border #B8E0A8 → #9FD08F,
 *      text #2A7A14 → #247313. Same live-style pill: no dot, weight 700,
 *      padding 4px 12px, radius 999px.
 *
 * Scoped body.hp-homev0-1. Terracotta out-of-stock (079) untouched.
 * ========================================================================== */

/* Title — remove default top/bottom margins; tighten below */
body.hp-homev0-1 .hp-product-detail__title {
    margin-top: 0 !important;
    margin-bottom: 0.35rem !important;
    line-height: 1.15 !important;
}

/* EAN / brand pills — tighten mt-3 (12px → 6px) */
body.hp-homev0-1 .hp-product-detail__title + .mt-3,
body.hp-homev0-1 .hp-product-detail__title + div[class*="mt-3"] {
    margin-top: 0.4rem !important;   /* was 0.75rem */
}
body.hp-homev0-1 .hp-product-detail__compat-pill {
    padding: 0.15rem 0.6rem !important;
    font-size: 0.72rem !important;
    line-height: 1.2 !important;
}

/* Price row — pull closer to EAN/title */
body.hp-homev0-1 .hp-product-detail__price-row {
    margin-top: 0.6rem !important;   /* was ~1rem */
    margin-bottom: 0 !important;
    display: flex !important;
    align-items: baseline !important;
    gap: 0.6rem !important;
    flex-wrap: wrap !important;
}
body.hp-homev0-1 .hp-product-detail__price {
    line-height: 1.1 !important;
}

/* Badge wrapper — tighten mt-4 (16px → 8px) */
body.hp-homev0-1 .hp-product-detail__price-row + .mt-4,
body.hp-homev0-1 .hp-product-detail__price + .mt-4,
body.hp-homev0-1 div.mt-4:has(> .hp-stock-badge) {
    margin-top: 0.55rem !important;   /* was 1rem */
}

/* Short-desc / benefits block — tighten mt-3 (12px → 6px) */
body.hp-homev0-1 .hp-product-detail__short,
body.hp-homev0-1 .hp-product-detail__short--structured {
    margin-top: 0.55rem !important;   /* was 0.75rem */
    margin-bottom: 0 !important;
}
body.hp-homev0-1 .hp-product-detail__short-title {
    margin-top: 0 !important;
    margin-bottom: 0.35rem !important;
    line-height: 1.3 !important;
}
body.hp-homev0-1 .hp-product-detail__short-list {
    gap: 0.28rem !important;          /* was 0.35rem */
}
body.hp-homev0-1 .hp-product-detail__short-list li {
    line-height: 1.42 !important;
}

/* Buy row (qty + add-to-cart) — pull closer to benefits */
body.hp-homev0-1 .hp-product-detail__buy-row {
    margin-top: 0.75rem !important;
}

/* Also tighten any spacing between "attrs" (if present) and other blocks */
body.hp-homev0-1 .hp-product-detail__attrs {
    margin-top: 0.55rem !important;
}

/* Mobile ≤640 */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-detail__title { margin-bottom: 0.3rem !important; }
    body.hp-homev0-1 .hp-product-detail__price-row { margin-top: 0.5rem !important; }
    body.hp-homev0-1 .hp-product-detail__buy-row { margin-top: 0.65rem !important; }
}

/* HP-P089-END */

/* ==========================================================================
 * HP-P090-BEGIN — product page: stronger compactness, tabs vertical center,
 *                  and close large gap-before-tabs. Additive on top of
 *                  HP-P084 + HP-P089. Scoped body.hp-homev0-1.
 *
 * Owner rejects on 089:
 *   1) Top info still not compact enough.
 *   2) Tabs bar visually off (active tab sits 1px above inactive tabs).
 *   3) Large blank area between gallery/info bottom and tabs strip.
 *
 * FIX 1 — kill Tailwind mt-3 / mt-4 / mt-6 margins on info-column children
 *          and lean on tighter flex gap. Preserve readable line-heights.
 * FIX 2 — unify tab-button box model with tablist so active + inactive tabs
 *          sit on the exact same top/bottom line.
 * FIX 3 — collapse the 48px gallery→tabs gap to ~10px via margin overrides.
 * ========================================================================== */

/* ---- FIX 1 — stronger info-column compactness ---------------------- */

body.hp-homev0-1 .hp-product-detail__info {
    gap: 0.4rem !important;         /* was 0.9rem — the flex row-gap between children */
}

/* Title: pull margins to zero and let the next child sit close to it */
body.hp-homev0-1 .hp-product-detail__title {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    line-height: 1.15 !important;
}

/* EAN / brand pill wrapper (Tailwind mt-3 = 12px → 4px) */
body.hp-homev0-1 .hp-product-detail__title + .mt-3,
body.hp-homev0-1 .hp-product-detail__title + div[class*="mt-3"] {
    margin-top: 0.25rem !important;
}

/* Price row — pull very close to title/pill */
body.hp-homev0-1 .hp-product-detail__price-row {
    margin-top: 0.25rem !important;
    margin-bottom: 0 !important;
    display: flex !important;
    align-items: baseline !important;
    gap: 0.55rem !important;
    flex-wrap: wrap !important;
}
body.hp-homev0-1 .hp-product-detail__price {
    line-height: 1.1 !important;
}

/* Badge wrapper (Tailwind mt-4 = 16px → 6px) */
body.hp-homev0-1 .hp-product-detail__price-row + .mt-4,
body.hp-homev0-1 .hp-product-detail__price + .mt-4,
body.hp-homev0-1 .hp-product-detail__info > div.mt-4:has(> .hp-stock-badge),
body.hp-homev0-1 div.mt-4:has(> .hp-stock-badge) {
    margin-top: 0.35rem !important;
}

/* Short-desc / benefits block */
body.hp-homev0-1 .hp-product-detail__short,
body.hp-homev0-1 .hp-product-detail__short--structured {
    margin-top: 0.35rem !important;
    margin-bottom: 0 !important;
}
body.hp-homev0-1 .hp-product-detail__short-title {
    margin-top: 0 !important;
    margin-bottom: 0.2rem !important;
    line-height: 1.28 !important;
    font-weight: 700 !important;
}
body.hp-homev0-1 .hp-product-detail__short-list {
    gap: 0.22rem !important;
    margin: 0 !important;
    padding: 0 0 0 0.15rem !important;
}
body.hp-homev0-1 .hp-product-detail__short-list li {
    line-height: 1.38 !important;
}

/* Attribute selectors between benefits and buy-row (BMW/Delphi have these).
 * Tailwind mt-6 = 24px → 8px */
body.hp-homev0-1 .hp-product-detail__attrs.mt-6,
body.hp-homev0-1 .hp-product-detail__info > .hp-product-detail__attrs {
    margin-top: 0.5rem !important;
}
body.hp-homev0-1 .hp-product-detail__attrs .hp-attr-block {
    margin-top: 0.35rem !important;
}
body.hp-homev0-1 .hp-product-detail__free-attrs.mt-4,
body.hp-homev0-1 .hp-product-detail__info > .hp-product-detail__free-attrs {
    margin-top: 0.35rem !important;
}

/* Buy row (qty + add-to-cart) */
body.hp-homev0-1 .hp-product-detail__buy-row {
    margin-top: 0.5rem !important;
}

/* Trust list card AFTER add-to-cart (delivery + warranty pillars).
 * Tailwind mt-6 space-y-3 → tighter mt-2 and less internal padding */
body.hp-homev0-1 .hp-product-detail__info > ul.mt-6.hp-card,
body.hp-homev0-1 .hp-product-detail__info > ul.hp-card.p-4 {
    margin-top: 0.45rem !important;
    padding: 0.65rem 0.85rem !important;
    row-gap: 0.4rem !important;
}
body.hp-homev0-1 .hp-product-detail__info > ul.hp-card > li {
    margin-top: 0.35rem !important;
    margin-bottom: 0 !important;
}
body.hp-homev0-1 .hp-product-detail__info > ul.hp-card > li:first-child {
    margin-top: 0 !important;
}

/* ---- FIX 2 — tabs vertical centering (perfect baseline) ------------ */
/* Strategy: set BOTH tablist and tabs to same height (3rem) so tabs fill
 * vertically, then the active/inactive border-b line all sits at same Y.
 * Also remove the odd border-radius 8px 8px 0 0 that HP-P084 applied, which
 * combined with a 2-px active border and the tablist's own 1-px bottom
 * border, created the visible 1-px vertical drift between active + inactive
 * tabs. */
body.hp-homev0-1 #hp-product-tabs > div[role="tablist"],
body.hp-homev0-1 .hp-product-tabs-wrap > div[role="tablist"] {
    align-items: stretch !important;    /* tabs fill full height */
    min-height: 3rem !important;
    padding: 0 !important;
    gap: 0.25rem !important;
    border-bottom: 1px solid var(--hp-border) !important;
    box-sizing: border-box !important;
}
body.hp-homev0-1 .hp-p063-tab {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 3rem !important;                 /* was 2.5rem in P084 */
    min-height: 3rem !important;
    line-height: 1 !important;
    padding: 0 1.1rem !important;
    border-top: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-bottom: 2px solid transparent !important;
    border-radius: 0 !important;             /* was 8px 8px 0 0 in P084 */
    margin: 0 !important;
    margin-bottom: -1px !important;          /* overlap the tablist's 1px border-b so active orange sits precisely on baseline */
    box-sizing: border-box !important;
    font-weight: 600 !important;
    color: #7a6b58 !important;
    transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease !important;
    vertical-align: top !important;
}
body.hp-homev0-1 .hp-p063-tab[aria-selected="true"] {
    background: rgba(240, 107, 26, 0.06) !important;
    border-bottom-color: #f06b1a !important;
    color: #1a1a1a !important;
}
body.hp-homev0-1 .hp-p063-tab[aria-selected="false"]:hover {
    background: rgba(60, 45, 25, 0.04) !important;
    color: #2b241c !important;
}

/* ---- FIX 3 — close the gap between gallery/info and tabs strip ---- */
body.hp-homev0-1 .hp-product-detail {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
}
body.hp-homev0-1 #hp-product-tabs,
body.hp-homev0-1 .hp-product-tabs-wrap {
    margin-top: 0.4rem !important;      /* was 1rem in P084 (16px). Now 6.4px */
}
/* Belt-and-suspenders: also zero the Tailwind mt-4 on the wrapper itself */
body.hp-homev0-1 .hp-product-tabs-wrap.mt-4 {
    margin-top: 0.4rem !important;
}
/* And also the description tab-panel opening py-6 — cut its top padding so
 * there's no additional dead space right after tabs strip. */
body.hp-homev0-1 #hp-product-tabs [data-tab-panel] {
    padding-top: 0.9rem !important;
    padding-bottom: 1.25rem !important;
}

/* Mobile ≤640 — carry the same tighter spacing without losing readability */
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-detail__info { gap: 0.35rem !important; }
    body.hp-homev0-1 .hp-product-detail__title { line-height: 1.18 !important; }
    body.hp-homev0-1 .hp-product-detail__price-row { margin-top: 0.25rem !important; }
    body.hp-homev0-1 .hp-product-detail__buy-row { margin-top: 0.5rem !important; }
    body.hp-homev0-1 .hp-product-detail__info > ul.hp-card { padding: 0.6rem 0.8rem !important; }

    body.hp-homev0-1 #hp-product-tabs > div[role="tablist"],
    body.hp-homev0-1 .hp-product-tabs-wrap > div[role="tablist"] {
        min-height: 2.75rem !important;
    }
    body.hp-homev0-1 .hp-p063-tab {
        height: 2.75rem !important;
        min-height: 2.75rem !important;
        padding: 0 0.85rem !important;
    }
}

/* HP-P090-END */

/* ==========================================================================
 * HP-P078D-BEGIN — Hidplanet-native styling for JoomShopping required-attribute
 *                  system message and inline product-page attribute warning.
 *
 * Restyles the raw <joomla-alert>/.alert-info top bar so it stops looking
 * like a generic Bootstrap cyan technical alert. Also styles the inline
 * warning that appears next to the required attribute selector when the
 * client-side validation in template.js prevents form submit.
 *
 * NOT scoped under body.hp-homev0-1 because the alert can appear on any
 * server-message situation and the customer must see it. Applied globally
 * for the system-message container so it looks Hidplanet-native for
 * every Joomla notice.
 * ========================================================================== */

/* Kill Joomla's default heading label (Joomla 4/5 alert-heading contains
 * <span class="info"></span> + <span class="visually-hidden">info</span>).
 * Owner rule: "no raw 'info' label". Hide the entire heading block. */
#system-message-container joomla-alert .alert-heading,
#system-message-container joomla-alert h4,
#system-message-container joomla-alert strong.alert-heading,
#system-message-container .alert-heading,
#system-message-container joomla-alert .alert-heading .info,
#system-message-container joomla-alert .alert-heading .visually-hidden,
#system-message-container joomla-alert .alert-heading > span,
#system-message-container joomla-alert > h4:first-child {
    display: none !important;
}
/* Belt-and-suspenders for legacy Bootstrap alert markup */
#system-message-container .alert h4,
#system-message-container .alert strong {
    display: none !important;
}

/* --- Full container restyle: Hidplanet warm-orange notice ---------------- */
#system-message-container {
    margin: 0.75rem auto 0.5rem !important;
    max-width: min(1280px, 96vw) !important;
    padding: 0 1rem !important;
    box-sizing: border-box !important;
}
#system-message-container joomla-alert,
#system-message-container joomla-alert.notification,
#system-message-container joomla-alert[type],
#system-message-container .alert {
    display: flex !important;
    align-items: center !important;
    gap: 0.65rem !important;
    background: #FFF3E4 !important;        /* warm cream */
    border: 1px solid #F0B584 !important;  /* Hidplanet warm orange border */
    border-radius: 12px !important;
    color: #703812 !important;             /* deep brown-orange for text */
    padding: 0.75rem 1rem !important;
    font-size: 0.95rem !important;
    line-height: 1.42 !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04) !important;
    font-family: inherit !important;
    animation: none !important;   /* skip Joomla's fade to avoid opacity flash */
}

/* Prepend a warm info-dot icon as the FIRST flex child on the alert element */
#system-message-container joomla-alert::before,
#system-message-container .alert::before {
    content: '';
    display: inline-block;
    width: 20px;
    height: 20px;
    background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c66a1c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><line x1='12' y1='8' x2='12' y2='12'/><line x1='12' y1='16' x2='12.01' y2='16'/></svg>") center/contain no-repeat;
    flex: 0 0 auto;
    order: 0;
}
#system-message-container joomla-alert .alert-wrapper,
#system-message-container joomla-alert .alert-message {
    flex: 1 1 auto !important;
    order: 1 !important;
    background: transparent !important;
    border: 0 !important;
    color: inherit !important;
    padding: 0 !important;
    margin: 0 !important;
    font-size: inherit !important;
    line-height: inherit !important;
}
#system-message-container joomla-alert .alert-wrapper .alert-message {
    display: block;
}

/* Restyle the close button — force to the far right of the flex row */
#system-message-container joomla-alert button.joomla-alert--close,
#system-message-container .alert button.close,
#system-message-container button.joomla-alert--close {
    background: transparent !important;
    border: 0 !important;
    color: #8f5326 !important;
    opacity: 0.85 !important;
    font-size: 1.35rem !important;
    line-height: 1 !important;
    padding: 0 0.35rem !important;
    margin: 0 !important;
    margin-left: auto !important;
    float: none !important;
    position: static !important;
    top: auto !important; right: auto !important;
    cursor: pointer !important;
    order: 2 !important;
    flex: 0 0 auto !important;
}
#system-message-container joomla-alert button.joomla-alert--close:hover,
#system-message-container button.joomla-alert--close:hover {
    color: #6b3d1a !important;
    opacity: 1 !important;
}

/* --- Inline attribute-warning bubble on product page ------------------- */
.hp-attr-inline-warning {
    display: none;
    margin-top: 0.4rem;
    padding: 0.55rem 0.75rem;
    background: #FFF3E4;
    border: 1px solid #F0B584;
    border-radius: 10px;
    color: #703812;
    font-size: 0.88rem;
    line-height: 1.4;
    font-weight: 500;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    animation: hpAttrWarnFadeIn 0.18s ease-out;
}
.hp-attr-inline-warning.is-visible {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
}
.hp-attr-inline-warning::before {
    content: '';
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin-top: 1px;
    background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c66a1c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='10'/><line x1='12' y1='8' x2='12' y2='12'/><line x1='12' y1='16' x2='12.01' y2='16'/></svg>") center/contain no-repeat;
}
.hp-attr-block.is-missing {
    outline: 2px solid rgba(240, 107, 26, 0.35);
    outline-offset: 4px;
    border-radius: 12px;
    transition: outline-color 0.2s ease;
}

@keyframes hpAttrWarnFadeIn {
    from { opacity: 0; transform: translateY(-2px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* --- Category card CTA when product has required attrs ----------------- */
.hp-btn.hp-product-card__cta--select-config {
    background: #FFFDF9;
    color: #b34b0f;
    border: 1px solid #F0B584;
}
.hp-btn.hp-product-card__cta--select-config:hover {
    background: #FFF3E4;
    color: #7a3a12;
    border-color: #d78a51;
}

/* HP-P078D-END */

/* ==========================================================================
 * HP-P091-BEGIN — Phase 091 DESIGN branch homepage-reference match
 *
 * 090 (product page compactness/tabs/gap) was ACCEPTED, but the homepage
 * state that came with it drifted from the approved v0 / homepage-ui-refinement
 * reference. Owner asked to:
 *   1) Regroup hero helper text with the CTA (currently sits too low and
 *      glued to the trust strip).
 *   2) Rebuild the trust strip as 4 SEPARATE premium tiles/cards contained
 *      inside the same site container as hero + capability cards
 *      (082 attempted this but 090 didn't preserve the visual — strip
 *      still reads as a wider dead band because the section wrapper still
 *      renders full-bleed via `border-y border-border bg-card` and the
 *      inner `.mx-auto` uses `gap-px bg-border` which produces a joined
 *      grid, NOT separate cards).
 *   3) Small pale-peach circle icons, warm orange stroke, subtle border,
 *      consistent across all 4 items (reference-matching).
 *   4) Global bullet-list cleanup: strip leading em-dash (—), en-dash (–),
 *      or hyphen (-) plus whitespace from parsed short-description lines
 *      so items render as `• text` not `• — text`. Implemented in PHP
 *      (product_default.php) — CSS side kept minimal here.
 *
 * Regression-safety (must preserve from prior phases):
 *   - Frosted sticky header (HP-P074/075/076/077).
 *   - Product page compactness + tabs vertical center + close gap
 *     (HP-P090).
 *   - Available-stock badge live-style (HP-P087/088 — NO dot per 090 spec).
 *   - Terracotta out-of-stock (HP-P079).
 *   - No acid/mint green regressions.
 *   - Bullet-dot styling from HP-P084 preserved.
 *
 * All rules scoped `body.hp-homev0-1` for reversibility (?homev0=0).
 * Uses `!important` where needed to defeat Tailwind utility inheritance
 * on the same elements (`.border-y`, `.bg-card`, `.gap-px`).
 * ========================================================================== */

/* ------------------------------------------------------------------
 * FIX 1) Hero helper text — regroup with CTA row
 *
 * Currently `.hp-hero-hint` has `mt-4` in markup + 075's `margin-top: 1rem`
 * — visually detached but sits too low against the trust strip. Restore
 * the "helper caption directly under CTA row" grouping by reducing the
 * gap between CTA row and helper, and adding a healthy bottom margin so
 * there is a clear break BEFORE the trust strip. This matches the v0
 * reference (hero-section.tsx L97-99: `<p className="mt-4">`).
 * We also cap max-width so long localized strings don't stretch to the
 * right column edge on desktop. */
body.hp-homev0-1 p.hp-hero-hint,
body.hp-homev0-1 .hp-hero-hint {
    display: block !important;
    margin-top: 0.85rem !important;    /* tighter to CTA (was 1rem) */
    margin-bottom: 0 !important;
    max-width: 34rem;                   /* readable measure, matches v0 pretty text */
    font-size: 0.875rem;
    line-height: 1.5;
    color: rgba(85, 74, 60, 0.85);
}
/* Ensure a real gap before the trust strip regardless of Tailwind class
 * inheritance on the hero <section class="bg-header">. The trust
 * section sits BETWEEN the hero and the diag-usecases block — margin-top
 * on the trust section is set below in FIX 2. */

/* ------------------------------------------------------------------
 * FIX 2) Trust strip — 4 separate premium tiles/cards
 *
 * Current markup:
 *   <section class="hp-trust-section border-y border-border bg-card">
 *     <div class="mx-auto grid max-w-7xl grid-cols-2 gap-px bg-border md:grid-cols-4">
 *       <a class="hp-trust-tile hp-trust-tile--link" ...>
 *
 * Issues:
 *   - `border-y border-border` on the section produces a full-bleed
 *     border band that visually extends the width beyond the container.
 *   - `bg-card` on the section fills the same full-bleed band.
 *   - `.mx-auto` inner wrapper has `gap-px bg-border` — the `gap-px` +
 *     bg-border trick renders 1-px vertical seams between cards, so the
 *     tiles read as ONE joined bar, not separate cards.
 *
 * Fixes:
 *   A) Neutralize section full-bleed: no borders, no fill on <section>.
 *   B) Turn inner .mx-auto wrapper into a real gap grid so tiles render
 *      as SEPARATE cards.
 *   C) Give each `.hp-trust-tile` white/off-white bg, soft border, radius,
 *      subtle shadow — same width envelope as hero + capability cards.
 *   D) Section spacing: clear top margin (detach from hero helper),
 *      compact vertical padding (082 already reduced tile height). */

body.hp-homev0-1 section.hp-trust-section {
    /* Nuke Tailwind utilities on the <section>: */
    background: transparent !important;
    background-color: transparent !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    /* Section outer padding + top margin — creates the visual gap
     * BEFORE the trust tiles so they detach from the hero helper. */
    margin-top: 2rem !important;         /* clear gap after hero helper */
    margin-bottom: 0.5rem;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
}
@media (min-width: 640px) {
    body.hp-homev0-1 section.hp-trust-section {
        padding-left: 1.5rem !important;
        padding-right: 1.5rem !important;
    }
}
@media (min-width: 1024px) {
    body.hp-homev0-1 section.hp-trust-section {
        padding-left: 2rem !important;
        padding-right: 2rem !important;
        margin-top: 2.5rem !important;
    }
}

/* The inner .mx-auto is what carries max-w-7xl. Turn its `gap-px
 * bg-border` (join effect) into a real gap that shows each tile as a
 * separate card. */
body.hp-homev0-1 section.hp-trust-section > .mx-auto {
    background: transparent !important;
    background-color: transparent !important;
    /* Overrides `gap-px` from Tailwind: */
    gap: 0.75rem !important;
    border: 0 !important;
    border-radius: 0 !important;
    overflow: visible !important;
    box-shadow: none !important;
}
@media (min-width: 768px) {
    body.hp-homev0-1 section.hp-trust-section > .mx-auto {
        gap: 1rem !important;             /* wider gaps at md+ = tiles separate */
    }
}

/* Individual tile = white card, soft border, radius, subtle shadow */
body.hp-homev0-1 .hp-trust-tile {
    display: flex !important;
    align-items: center !important;
    gap: 0.85rem !important;
    /* Card look: */
    background: #FFFFFF !important;
    border: 1px solid rgba(60, 45, 25, 0.09) !important;
    border-radius: 14px !important;
    box-shadow: 0 1px 2px rgba(70, 45, 20, 0.04),
                0 4px 12px -8px rgba(70, 45, 20, 0.10) !important;
    /* Compact height — same rhythm as capability cards */
    padding: 0.95rem 1rem !important;
    text-decoration: none !important;
    color: inherit !important;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
body.hp-homev0-1 .hp-trust-tile--link:hover {
    border-color: rgba(179, 75, 15, 0.30) !important;
    box-shadow: 0 2px 4px rgba(70, 45, 20, 0.05),
                0 8px 18px -10px rgba(70, 45, 20, 0.18) !important;
    transform: translateY(-1px);
}

/* ------------------------------------------------------------------
 * FIX 3) Trust icon — small pale peach circle, warm orange stroke
 * Reference-matching, per owner spec. */
body.hp-homev0-1 .hp-trust-tile__icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-shrink: 0 !important;
    width: 2.35rem !important;                    /* ~37.6 px */
    height: 2.35rem !important;
    padding: 0.5rem !important;
    box-sizing: border-box !important;
    background: rgba(255, 232, 216, 0.75) !important;
    border: 1px solid rgba(179, 75, 15, 0.10) !important;
    border-radius: 9999px !important;
    color: #b34b0f !important;
    stroke-width: 1.5 !important;                 /* thinner = calmer */
    stroke: currentColor !important;
    /* Prevent icon from dominating title */
    fill: none !important;
}
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-trust-tile__icon {
        width: 2.15rem !important;
        height: 2.15rem !important;
        padding: 0.42rem !important;
    }
}

/* Text container inside tile */
body.hp-homev0-1 .hp-trust-tile > div {
    min-width: 0;
    flex: 1 1 auto;
}
body.hp-homev0-1 .hp-trust-tile__title {
    font-size: 0.9rem !important;
    font-weight: 700 !important;
    color: #2b241c !important;
    letter-spacing: -0.005em !important;
    line-height: 1.25 !important;
    margin: 0 !important;
}
body.hp-homev0-1 .hp-trust-tile__detail {
    font-size: 0.78rem !important;
    color: rgba(85, 74, 60, 0.9) !important;
    line-height: 1.35 !important;
    margin-top: 0.2rem !important;
}

/* Mobile: single column stack, no overflow */
@media (max-width: 767px) {
    body.hp-homev0-1 section.hp-trust-section > .mx-auto {
        grid-template-columns: 1fr !important;
    }
    body.hp-homev0-1 .hp-trust-tile {
        padding: 0.9rem 0.95rem !important;
    }
}
@media (min-width: 768px) and (max-width: 1023px) {
    body.hp-homev0-1 section.hp-trust-section > .mx-auto {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}

/* ------------------------------------------------------------------
 * FIX 4) Global bullet cleanup — CSS safety net
 *
 * Primary fix is in PHP (product_default.php: preg_replace before
 * htmlspecialchars). This CSS block provides a defense-in-depth
 * safeguard so that even if some other list template renders a
 * leading dash-glyph text node, the bullet's dot spacing stays clean.
 * Zero visible effect on properly-cleaned content. */
body.hp-homev0-1 .hp-product-detail__short-list li {
    /* Ensure bullet dot (from HP-P084) is spaced correctly regardless of
     * any invisible leading char (e.g. NBSP that slipped past the PHP
     * strip). No visual regression when content is clean. */
    word-break: break-word;
}

/* HP-P091-END */

/* ==========================================================================
 * HP-P092-BEGIN — Phase 092 DESIGN branch homepage mobile overflow / trust
 *                  tiles container-alignment / helper spacing fix
 *
 * Context: Phase 091 rebuilt trust tiles as 4 separate cards but LEFT the
 * trust container width MISALIGNED with the sibling containers ("hero
 * left column" and "products grid").
 *
 * Owner reported "right-side clipping on mobile/narrow viewports". Root
 * cause investigation (puppeteer probe across 390/430/768/1024/1280/1440):
 *
 *   scrollWidth == clientWidth at ALL viewports (no horizontal overflow).
 *
 * But the trust section .mx-auto container has a different left/right
 * alignment from the other sections' .mx-auto containers:
 *
 *   viewport | trust .mx-auto l/r  | products grid l/r | delta
 *   ---------+--------------------+-------------------+-------
 *   390      | 16 / 374           | 16 / 374          | 0
 *   430      | 16 / 414           | 16 / 414          | 0
 *   768      | 24 / 744           | 16 / 752          | -8 each (narrower)
 *   1024     | 32 / 992           | 20 / 1004         | -12 each (narrower)
 *   1280     | 32 / 1248          | 20 / 1260         | -12 each (narrower)
 *   1440     | 80 / 1360          | 100 / 1340        | +20 each (WIDER!)
 *
 * At 1440 the trust strip is 40 px WIDER than the products grid — visually
 * "sticking out" past the content column. At 768/1024/1280 it's 8-12 px
 * narrower — visually indented. Both feel like "misalignment" or
 * "clipping" to the owner even though scroll metrics are perfect.
 *
 * Reason: HP-P091 gave the <section.hp-trust-section> its own explicit
 * padding-left/right (1rem mobile, 1.5rem sm, 2rem lg). Combined with the
 * inner .mx-auto max-w-7xl (no px-4), the effective container envelope
 * doesn't match the sibling sections which use standard Tailwind
 * `mx-auto max-w-7xl px-4 py-12`. That `px-4` in this project's Tailwind
 * config resolves to 16 px < lg, 20 px >= lg.
 *
 * FIX: undo HP-P091 section padding + push the SAME px-4 behavior onto
 * the trust .mx-auto so trust tiles occupy the EXACT same container
 * envelope as the products grid at every breakpoint.
 *
 * Additionally: keep tiles fully responsive (mobile 1col, tablet 2col,
 * desktop 4col) and belt-and-suspenders `overflow-x: clip` on <html>/
 * <body> to defensively prevent any future rogue element causing a real
 * horizontal scroll (does NOT hide the actual fix — the fix corrects
 * alignment; the overflow-clip is only a safety net).
 *
 * Scoped `body.hp-homev0-1` for reversibility (?homev0=0).
 * ========================================================================== */

/* ------------------------------------------------------------------
 * FIX A) Trust container alignment — match products grid envelope
 *
 * Neutralize HP-P091 section-level padding. Push standard Tailwind
 * `px-4` (16 px < 1024, 20 px >= 1024) onto the inner .mx-auto so its
 * grid children (tiles) sit at exact same L/R as products grid at
 * every breakpoint. */
body.hp-homev0-1 section.hp-trust-section {
    /* Kill HP-P091 explicit paddings — they made the envelope inconsistent
     * with `mx-auto max-w-7xl px-4` siblings. Section is full-bleed
     * background container only. */
    padding-left: 0 !important;
    padding-right: 0 !important;
}

body.hp-homev0-1 section.hp-trust-section > .mx-auto {
    /* Match Tailwind's `mx-auto max-w-7xl px-4` behavior of hero/products:
     * 16 px horizontal padding at mobile/tablet, 20 px at lg+. Grid gap
     * still controlled by HP-P091 (0.75rem mobile, 1rem md+). */
    padding-left: 1rem !important;   /* 16 px — matches sibling px-4 < lg */
    padding-right: 1rem !important;
    box-sizing: border-box !important;
    /* Ensure children (tiles) can shrink below their intrinsic width */
    min-width: 0 !important;
    max-width: min(1280px, 100%) !important; /* max-w-7xl */
    width: 100% !important;
}

@media (min-width: 1024px) {
    body.hp-homev0-1 section.hp-trust-section > .mx-auto {
        padding-left: 1.25rem !important;   /* 20 px — matches sibling px-4 >= lg */
        padding-right: 1.25rem !important;
    }
}

/* ------------------------------------------------------------------
 * FIX B) Responsive grid — enforce per-brief grid columns
 * mobile <640: 1 col
 * tablet 640-1023: 2 cols
 * desktop >=1024: 4 cols
 *
 * The base markup uses `grid-cols-2 md:grid-cols-4`. HP-P091 had rules
 * that forced 1-col at <=767. Rewrite here to match brief exactly (640
 * breakpoint instead of 767). */
body.hp-homev0-1 section.hp-trust-section > .mx-auto {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 0.75rem !important;
}
@media (min-width: 640px) and (max-width: 1023.98px) {
    body.hp-homev0-1 section.hp-trust-section > .mx-auto {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 0.85rem !important;
    }
}
@media (min-width: 1024px) {
    body.hp-homev0-1 section.hp-trust-section > .mx-auto {
        grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
        gap: 1rem !important;
    }
}

/* All children (tiles) allow shrinking */
body.hp-homev0-1 section.hp-trust-section > .mx-auto > * {
    min-width: 0 !important;
    box-sizing: border-box !important;
}

/* ------------------------------------------------------------------
 * FIX C) Text overflow — protect tile detail text from horizontal
 * overflow inside a narrow tile column at tablet (640-1023) breakpoint.
 * Tile's detail line "Omniva, курьер, самовывоз — с треком" is long;
 * with a narrow 2-col tablet column it can force intrinsic min-width
 * on the tile. Wrap the words safely. */
body.hp-homev0-1 .hp-trust-tile__detail,
body.hp-homev0-1 .hp-trust-tile__title {
    overflow-wrap: anywhere !important;
    word-wrap: break-word !important;
    min-width: 0 !important;
}
body.hp-homev0-1 .hp-trust-tile > div {
    min-width: 0 !important;
    flex: 1 1 auto !important;
}

/* ------------------------------------------------------------------
 * FIX D) Hero helper spacing — ensure clear gap between hero helper
 * and trust tiles at ALL desktop viewports.
 *
 * P091 already set helper margin-top: 0.85rem (grouped with CTA). Keep.
 * Now: give trust section a consistent margin-top (detached from
 * helper) at every viewport, without leaving huge dead space. */
body.hp-homev0-1 section.hp-trust-section {
    margin-top: 1.5rem !important;
    margin-bottom: 0.5rem !important;
}
@media (min-width: 768px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 2rem !important;
    }
}
@media (min-width: 1024px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 2.5rem !important;
    }
}

/* ------------------------------------------------------------------
 * FIX E) Belt-and-suspenders: defensive overflow-x clip on root elements
 *
 * scrollWidth == clientWidth is currently clean at every tested
 * viewport, so this is NOT hiding a real problem. It is a safety net
 * so that any future rogue Tailwind utility (e.g. w-screen inside a
 * padded parent, an aspect-ratio image without object-fit) cannot
 * silently reintroduce right-edge clipping.
 *
 * We use `overflow-x: clip` (not `hidden`) — no scrollbar is created
 * and position: sticky headers keep working. Only clip at BODY/HTML
 * root (not on trust section, so we don't mask real content
 * overflow if it appears).
 *
 * Applied unconditionally (not scoped to hp-homev0-1) because it's a
 * page-safety rule. */
html {
    overflow-x: clip;
}
body {
    overflow-x: clip;
}

/* HP-P092-END */

/* ==========================================================================
 * HP-P093-BEGIN — Phase 093 DESIGN branch homepage helper spacing +
 *                  diagnostic card active-state neutralization fix
 *
 * Context: Phase 092 (PASS) fixed real horizontal overflow AND container
 * envelope misalignment on the trust strip. Owner accepts that but flagged
 * two remaining visual issues:
 *
 *   1) Hero helper text "Знаете направление? Выберите марку или
 *      универсальный раздел справа." STILL sits visually glued to the
 *      lower beige/trust area — does not read as part of the CTA group
 *      like in the approved reference.
 *
 *   2) BMW diagnostic card in the right panel renders with an orange
 *      highlighted border/glow on FRESH page load. Looks selected/active
 *      even though no interaction happened. All 6 diag cards (BMW /
 *      OP-COM / VAG / Другие марки / OBD2 / J2534) must render neutral
 *      on load. Orange border is allowed only on :hover, :focus-visible
 *      (keyboard), or :active (during click).
 *
 * Puppeteer diagnostic probe at 1440 (fresh load, no interaction) BEFORE:
 *   - helper.bottom = 725.7, trust.top = 765.7  →  gap = 40 px (too small)
 *   - helper margin-top = 13.6 px (grouped with CTA — good)
 *   - trust section margin-top computed = 40 px (desktop)
 *   - BMW card border-color = oklab(0.79 0.05 0.07) (orange), box-shadow =
 *     rgba(240,107,26,0.28) 0px 0px 0px 1px inset (orange glow)
 *   - Sibling OP-COM/VAG/others border-color = rgb(226, 217, 204) (neutral),
 *     box-shadow = none. Clear inequality.
 *   - No .active/.selected/.is-active class, no aria-current / aria-selected,
 *     document.activeElement = BODY. Not a runtime state.
 *
 * ROOT CAUSES IDENTIFIED:
 *
 *   Helper glue:
 *     - Trust margin-top: 2.5rem (~40 px) at ≥1024 is TOO TIGHT visually.
 *     - Right-side hero panel (`.hp-hero-panel`) is TALLER than the left
 *       CTA column, so at desktop widths the helper hangs "mid-air" with
 *       the trust card row starting only ~40 px below it — reads as
 *       part of the trust block, not the CTA group.
 *     - Need to bump trust margin-top to at least 3.5rem (~56 px) at
 *       desktop so there is unambiguous vertical break BEFORE trust.
 *     - Also add explicit hero-section padding-bottom so the helper is
 *       clearly grouped inside the hero column's boundary.
 *
 *   BMW active-look:
 *     - The BMW `<a>` receives `.hp-hero-mini--primary` from PHP data
 *       (`$hp_hero_directions[0].primary = true`) — hardcoded emphasis,
 *       not runtime state. Two CSS rules paint the emphasis:
 *         (a) line 6958: `body.hp-heroeqv-4 .hp-hero-mini--primary {
 *             border-color: color-mix(...primary 45%...) }` (orange border)
 *         (b) line 7527: `body.hp-homev0-1 .hp-hero-mini--primary {
 *             box-shadow: 0 0 0 1px rgba(240,107,26,0.28) inset; }` (glow)
 *     - Owner wants those emphases gone on load. Fix by RE-DECLARING both
 *       properties to neutral values on the same specificity but AFTER
 *       both prior rules in the cascade (HP-P093 is appended at end of
 *       components.css so has higher effective ordering at same
 *       specificity). Then re-apply the orange border+glow gated to
 *       `:hover, :focus-visible, :active` only — matching sibling card
 *       behavior for interaction consistency.
 *
 * PRESERVED (do not regress):
 *   - HP-P092 trust container alignment (padding, grid columns, overflow-x
 *     clip, hero helper margin-top: 0.85rem grouping).
 *   - HP-P091 bullet cleanup PHP regex.
 *   - HP-P090 product page compactness / tabs / gap.
 *   - HP-P087/088 live-style stock badge (no dot).
 *   - HP-P079 terracotta OOS.
 *   - HP-P074-077 frosted sticky header.
 *
 * Scoped `body.hp-homev0-1` for reversibility (?homev0=0).
 * ========================================================================== */

/* ------------------------------------------------------------------
 * FIX 1) Hero helper — clear detach gap before trust tiles.
 *
 * P092 sets trust `margin-top: 2.5rem !important` at ≥1024 — only ~40 px.
 * At 1440 the right hero panel extends far below the left CTA column so
 * the helper sits mid-air with trust starting 40 px later, visually
 * anchoring the helper to the trust block, not the CTA. Bump to 3.5rem
 * (~56 px) at ≥1024 so the visual break is unambiguous. Keep 091's
 * helper margin-top 0.85rem so helper stays tight to CTA (grouped).
 *
 * Also: give the hero <section> a controlled padding-bottom so the
 * helper is clearly INSIDE the hero column's boundary rather than
 * appearing to belong to trust below. */

/* Trust section — bumped desktop breathing room */
body.hp-homev0-1 section.hp-trust-section {
    margin-top: 2rem !important;    /* mobile ≤ sm */
}
@media (min-width: 640px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 2.5rem !important;
    }
}
@media (min-width: 768px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 3rem !important;
    }
}
@media (min-width: 1024px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 3.5rem !important;   /* was 2.5rem in P092 — now clearly detached */
    }
}
@media (min-width: 1280px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 3.5rem !important;
    }
}

/* Helper text — keep 091 grouping with CTA (margin-top 0.85rem) but
 * ensure NO margin-bottom sneaks in from any base rule, so the "clear
 * gap" is provided entirely by the trust section's margin-top above. */
body.hp-homev0-1 p.hp-hero-hint,
body.hp-homev0-1 .hp-hero-hint {
    margin-top: 0.75rem !important;    /* very tight to CTA — grouped */
    margin-bottom: 0 !important;
    align-self: flex-start !important;  /* don't stretch down inside any flex column */
}

/* Hero <section> outer padding-bottom — makes helper sit clearly inside
 * the hero column boundary. The hero uses `.bg-header` as its outer
 * class per HP-P074+ conventions. We add a comfortable bottom cushion
 * only at desktop so the helper is not right at the hero boundary. */
@media (min-width: 1024px) {
    body.hp-homev0-1 .bg-header:first-of-type {
        padding-bottom: 2rem;  /* additional cushion below hero content */
    }
}
@media (min-width: 1280px) {
    body.hp-homev0-1 .bg-header:first-of-type {
        padding-bottom: 2.25rem;
    }
}


/* ------------------------------------------------------------------
 * FIX 2) BMW diagnostic card — remove active-looking emphasis on load.
 *
 * Strategy:
 *   Step A — Neutralize BMW's `.hp-hero-mini--primary` in the DEFAULT
 *            state (page load) by re-declaring border-color and
 *            box-shadow to the same neutral values as sibling cards.
 *   Step B — Re-apply orange border + subtle warm glow on :hover,
 *            :focus-visible, :active — matching sibling card behavior
 *            so hover consistency is preserved.
 *
 * IMPORTANT: HP-P093 block is APPENDED at the end of components.css,
 * so within the same-specificity rules from lines 6958 (body.hp-heroeqv-4
 * .hp-hero-mini--primary) and 7527 (body.hp-homev0-1
 * .hp-hero-mini--primary), our re-declaration WINS via cascade order.
 * We also chain both body classes (`body.hp-homev0-1.hp-heroeqv-4`) to
 * bump specificity for defense-in-depth. */

/* Step A — Neutral default state for BMW (page-load). */
body.hp-homev0-1 .hp-hero-mini--primary,
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini--primary,
body.hp-heroeqv-4 .hp-hero-mini--primary {
    /* Same neutral as sibling .hp-hero-mini cards (line 6956: --hp-border) */
    border-color: var(--hp-border) !important;
    box-shadow: none !important;
    /* Preserve background: hero-mini already uses --hp-card, don't touch */
}

/* Step B — Hover / focus-visible / active states — matching sibling
 * cards' hover styling per line 6957 (border warms + subtle shadow +
 * -1px translateY). We re-apply the warm ring on the primary card only
 * during real user interaction, NOT on load. Sibling cards already have
 * this hover per base rules — this block ensures BMW behaves IDENTICAL
 * on hover as siblings. */
body.hp-homev0-1 .hp-hero-mini--primary:hover,
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini--primary:hover,
body.hp-heroeqv-4 .hp-hero-mini--primary:hover {
    border-color: color-mix(in oklab, var(--hp-primary) 40%, var(--hp-border)) !important;
    box-shadow: 0 10px 30px -12px rgba(48,39,30,0.25) !important;
}

/* :focus-visible (accessible keyboard focus) — retain visible ring */
body.hp-homev0-1 .hp-hero-mini--primary:focus-visible,
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini--primary:focus-visible,
body.hp-heroeqv-4 .hp-hero-mini--primary:focus-visible {
    border-color: color-mix(in oklab, var(--hp-primary) 50%, var(--hp-border)) !important;
    box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary) 20%, transparent) !important;
    outline: none !important;
}

/* :active (during click / tap) — subtle pressed emphasis */
body.hp-homev0-1 .hp-hero-mini--primary:active,
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini--primary:active,
body.hp-heroeqv-4 .hp-hero-mini--primary:active {
    border-color: color-mix(in oklab, var(--hp-primary) 55%, var(--hp-border)) !important;
    box-shadow: 0 0 0 1px rgba(240, 107, 26, 0.28) inset !important;
}

/* Neutralize retained (non-visible) focus outline — some UAs keep :focus
 * after a click without leaving :focus-visible active. This prevents a
 * lingering orange ring if the user clicked and navigated back. */
body.hp-homev0-1 .hp-hero-mini:focus:not(:focus-visible),
body.hp-homev0-1.hp-heroeqv-4 .hp-hero-mini:focus:not(:focus-visible),
body.hp-heroeqv-4 .hp-hero-mini:focus:not(:focus-visible) {
    outline: none !important;
    box-shadow: none !important;
    border-color: var(--hp-border) !important;
}

/* HP-P093-END */

/* ==== HP-P083 begin ==== */

/* ================================================================
   Phase 083 — brand selector rework on /other-marques.
   Overrides existing .hp-other-filter styles from Phase 039 where
   needed and adds tiered status panel + CTA buttons + reset button.
   Scope: /other-marques category page only; injected by template.js.
   ================================================================ */
.hp-other-filter--p083 { margin: 1.25rem auto 1.5rem; max-width: 68rem; padding: 0 1rem; }
.hp-other-filter--p083 .hp-other-filter__inner {
	background: var(--hp-card, #ffffff);
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.85rem;
	padding: 1rem 1.25rem;
	display: flex;
	flex-direction: column;
	gap: 0.7rem;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.hp-other-filter--p083 .hp-other-filter__row {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}
.hp-other-filter--p083 .hp-other-filter__label {
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--hp-text-muted, #64748b);
	text-transform: uppercase;
	letter-spacing: 0.05em;
}
.hp-other-filter--p083 .hp-other-filter__control {
	display: flex;
	gap: 0.5rem;
	align-items: stretch;
	flex-wrap: wrap;
}
.hp-other-filter--p083 .hp-other-filter__select {
	flex: 1 1 20rem;
	min-width: 12rem;
	padding: 0.65rem 0.9rem;
	border: 1px solid var(--hp-border, #e5e7eb);
	border-radius: 0.5rem;
	background: var(--hp-card, #ffffff);
	color: var(--hp-text, #0f172a);
	font-size: 0.95rem;
	font-weight: 500;
	cursor: pointer;
}
.hp-other-filter--p083 .hp-other-filter__select:focus {
	outline: none;
	border-color: var(--hp-primary, #ea580c);
	box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #ea580c) 18%, transparent);
}
.hp-other-filter--p083 .hp-other-filter__reset {
	padding: 0.55rem 0.9rem;
	border-radius: 0.5rem;
	border: 1px solid var(--hp-border, #e5e7eb);
	background: transparent;
	color: var(--hp-text-muted, #475569);
	font-size: 0.85rem;
	font-weight: 600;
	cursor: pointer;
}
.hp-other-filter--p083 .hp-other-filter__reset:hover {
	border-color: var(--hp-primary, #ea580c);
	color: var(--hp-primary, #ea580c);
}

/* Status panel — tiered colour. */
.hp-other-filter--p083 .hp-other-filter__status {
	border-radius: 0.6rem;
	padding: 0.8rem 0.95rem;
	display: flex;
	flex-direction: column;
	gap: 0.55rem;
	border: 1px solid transparent;
}
.hp-other-filter--p083 .hp-other-filter__status-text {
	margin: 0;
	font-size: 0.92rem;
	line-height: 1.45;
	color: var(--hp-text, #0f172a);
}
.hp-other-filter--p083 .hp-other-filter__status-actions {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}
.hp-other-filter--p083 .hp-other-filter__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	padding: 0.5rem 0.85rem;
	border-radius: 0.45rem;
	font-size: 0.87rem;
	font-weight: 600;
	text-decoration: none;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.hp-other-filter--p083 .hp-other-filter__cta--primary {
	background: var(--hp-primary, #ea580c);
	color: #ffffff;
	border: 1px solid var(--hp-primary, #ea580c);
}
.hp-other-filter--p083 .hp-other-filter__cta--primary:hover {
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 88%, #000);
	color: #ffffff;
	text-decoration: none;
}
.hp-other-filter--p083 .hp-other-filter__cta--secondary {
	background: transparent;
	color: var(--hp-primary, #ea580c);
	border: 1px solid color-mix(in oklab, var(--hp-primary, #ea580c) 40%, transparent);
}
.hp-other-filter--p083 .hp-other-filter__cta--secondary:hover {
	background: color-mix(in oklab, var(--hp-primary, #ea580c) 8%, transparent);
	color: var(--hp-primary, #ea580c);
	text-decoration: none;
}

/* Tier accents. */
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="direct_found"] {
	background: #E2F6E8;
	border-color: #7BCF91;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="direct_found"] .hp-other-filter__status-text {
	color: #1F7A3B;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="cross_direct"] {
	background: #FFF3E4;
	border-color: #F0B584;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="cross_direct"] .hp-other-filter__status-text {
	color: #703812;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="fallback_only"] {
	background: #EAF2FB;
	border-color: #A9C4E4;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="fallback_only"] .hp-other-filter__status-text {
	color: #1E3A5F;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="no_result"] {
	background: #F1F5F9;
	border-color: #CBD5E1;
}
.hp-other-filter--p083 .hp-other-filter__status[data-hp83-tier="no_result"] .hp-other-filter__status-text {
	color: #334155;
}

.hp-other-filter--p083 .hp-other-filter__caution {
	font-size: 0.78rem;
	color: var(--hp-text-muted, #64748b);
	margin: 0;
	line-height: 1.45;
}

@media (max-width: 640px) {
	.hp-other-filter--p083 .hp-other-filter__control { flex-direction: column; }
	.hp-other-filter--p083 .hp-other-filter__select { min-width: 0; }
	.hp-other-filter--p083 .hp-other-filter__reset { width: 100%; }
	.hp-other-filter--p083 .hp-other-filter__cta { width: 100%; justify-content: center; }
}

/* Card tier highlights. Non-invasive: just a small left accent for direct
   matches when a brand is chosen so the buyer sees which cards are the
   direct fit. */
.hp-product-card[data-hp83-tier="direct"] {
	box-shadow: inset 3px 0 0 0 var(--hp-primary, #ea580c);
}
/* ==== HP-P083 end ==== */

/* ==========================================================================
 * HP-P094-BEGIN — Phase 094 DESIGN branch: right-size helper→trust gap
 * (093 overshot to 92 px @1440; owner reports "large empty beige hole"),
 * and restore visible desktop Home icon (previously only lg:hidden mobile
 * version existed). Scoped body.hp-homev0-1 for reversibility (?homev0=0).
 *
 * Preserves ALL prior wins:
 *   - P093 BMW active-state neutralization on fresh load.
 *   - P092 no horizontal overflow, trust envelope alignment, responsive grid.
 *   - P091 bullet dash cleanup, trust items as cards, small ref-like icons,
 *     helper align-self: flex-start, helper margin-top grouping with CTA.
 *   - P090 product page compactness, tabs vertical center, gap-before-tabs.
 *   - P087/088 live-style stock badge (no dot).
 *   - P079 terracotta OOS.
 *   - P074-077 frosted sticky header.
 *
 * Reference measurement: v0/homepage-ui-refinement's HeroSection uses
 * pb-10 (40 px) → lg:pb-14 (56 px), with TrustStrip carrying NO extra
 * top margin (full-bleed strip immediately below hero). So target gap
 * ~40-56 px at desktop 1440.
 *
 * P093 progression was 2 / 2.5 / 3 / 3.5 / 3.5 rem = 32/40/48/56/56 px.
 * P094 progression tightened to 1.25 / 1.5 / 1.75 / 2 / 2.25 rem =
 * 20/24/28/32/36 px trust margin-top + preserve hero pb 1rem/1.25rem
 * override so combined gap lands ~40-60 px at 1440.
 *
 * Home icon: keep the .hp-home-mobile lg:hidden pill; add a NEW
 * .hp-home-desktop-icon rendered inline-flex on desktop only,
 * anchored to Uri::root(), aria-labelled, keyboard accessible.
 * ========================================================================== */

/* ------------------------------------------------------------------
 * FIX 1) Trust top margin — reduce 093's overshoot.
 *
 * Rules must WIN over 093's earlier same-scope rules (which are
 * !important). We are appended after 093, same selector, same
 * specificity, same !important — so cascade-order wins.
 * ------------------------------------------------------------------ */

body.hp-homev0-1 section.hp-trust-section {
    margin-top: 1.25rem !important;   /* mobile — was 2rem (32 px → 20 px) */
}
@media (min-width: 640px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 1.5rem !important;   /* sm — was 2.5rem */
    }
}
@media (min-width: 768px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 1.75rem !important;   /* md — was 3rem */
    }
}
@media (min-width: 1024px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 2rem !important;   /* lg — was 3.5rem */
    }
}
@media (min-width: 1280px) {
    body.hp-homev0-1 section.hp-trust-section {
        margin-top: 2.25rem !important;   /* xl — was 3.5rem */
    }
}

/* Hero bg-header padding-bottom — reduce 093's cushion to ~1rem/1.25rem
 * to avoid stacking on top of the trust margin-top. */
@media (min-width: 1024px) {
    body.hp-homev0-1 .bg-header:first-of-type {
        padding-bottom: 1rem;
    }
}
@media (min-width: 1280px) {
    body.hp-homev0-1 .bg-header:first-of-type {
        padding-bottom: 1.25rem;
    }
}

/* Preserve 093/091 helper grouping — restate defensively (no change,
 * belt-and-suspenders against later cascades). */
body.hp-homev0-1 p.hp-hero-hint,
body.hp-homev0-1 .hp-hero-hint {
    margin-top: 0.75rem !important;
    margin-bottom: 0 !important;
    align-self: flex-start !important;
}

/* ------------------------------------------------------------------
 * FIX 2) Desktop Home icon — visible on lg+.
 *
 * Renders as a small circular icon-only button in the same header
 * top-row cluster where the mobile .hp-home-mobile lives, but shown
 * only at lg+ (mobile version still fires at lg:hidden). Positioned
 * BEFORE the logo link. Warm-orange stroke on hover to match brand.
 * ------------------------------------------------------------------ */

/* Base — hidden by default (mobile), visible at lg+. Icon-only
 * accessible button styled like the header's other action pills. */
a.hp-home-desktop-icon,
a.hp-home-desktop-icon:link,
a.hp-home-desktop-icon:visited {
    display: none;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 9999px;
    border: 1px solid var(--hp-border, rgba(60,45,25,0.12));
    background: var(--hp-card, #ffffff);
    color: var(--hp-text, #2b241c);
    text-decoration: none;
    transition: border-color .18s ease, color .18s ease, background .18s ease, box-shadow .18s ease;
    flex: 0 0 auto;
    box-sizing: border-box;
}

@media (min-width: 1024px) {
    a.hp-home-desktop-icon,
    a.hp-home-desktop-icon:link,
    a.hp-home-desktop-icon:visited {
        display: inline-flex;
    }
}

a.hp-home-desktop-icon:hover {
    border-color: color-mix(in oklab, var(--hp-primary, #ea580c) 45%, var(--hp-border));
    color: var(--hp-primary, #ea580c);
    background: color-mix(in oklab, var(--hp-primary, #ea580c) 5%, #ffffff);
    box-shadow: 0 4px 14px -8px rgba(48,39,30,0.22);
}

a.hp-home-desktop-icon:focus-visible {
    border-color: color-mix(in oklab, var(--hp-primary, #ea580c) 55%, var(--hp-border));
    box-shadow: 0 0 0 3px color-mix(in oklab, var(--hp-primary, #ea580c) 22%, transparent);
    outline: none;
}

a.hp-home-desktop-icon svg {
    width: 1.15rem;
    height: 1.15rem;
    color: currentColor;
    stroke: currentColor;
    fill: none;
    flex-shrink: 0;
    display: block;
}

/* Soft variant on homepage — the current page marker so the icon reads
 * as "already here" rather than an unused button. Subtle muted state. */
a.hp-home-desktop-icon.hp-home-desktop-icon--soft,
a.hp-home-desktop-icon.hp-home-desktop-icon--soft:link,
a.hp-home-desktop-icon.hp-home-desktop-icon--soft:visited {
    border-color: color-mix(in oklab, var(--hp-primary, #ea580c) 20%, var(--hp-border));
    color: color-mix(in oklab, var(--hp-primary, #ea580c) 80%, var(--hp-text));
    background: color-mix(in oklab, var(--hp-primary, #ea580c) 6%, #ffffff);
    cursor: default;
}
a.hp-home-desktop-icon.hp-home-desktop-icon--soft:hover {
    /* On home, hover just refreshes; don't over-emphasize. */
    box-shadow: none;
    background: color-mix(in oklab, var(--hp-primary, #ea580c) 8%, #ffffff);
}

/* HP-P094-END */

/* ============================================================
 * HP-P095-BEGIN
 * Phase 095 — DESIGN branch
 *
 *   A. Kill the staircase on /{lang}/other-marques ("Другие марки"):
 *      - selector panel `.hp-other-filter--p083` was `max-width: 68rem;
 *        margin: … auto` — narrower than main `.max-w-7xl` container,
 *        producing a 3-step horizontal staircase (h1/grid @ 96px,
 *        intro @ 119px, selector @ 176px @ 1440).
 *      - Fix: widen selector to fill the outer container, kill its own
 *        max-width and horizontal margin, so its left/right edges align
 *        with h1 and the product grid. Keep the warm-white card look.
 *
 *   B. Global section heading font-scale reduction:
 *      Homepage/category section H2 titles rendered with .text-2xl
 *      (= var(--hp-fs-2xl) = 32px) had no responsive scale and felt
 *      "elephant-sized" next to the calm new design.
 *      Fix: shrink to clamp(1.5rem, 1.1rem + 0.9vw, 1.85rem)
 *      (24 → ~29.6 px @ 1440, ~24 px @ 390).
 *      Split rules by tag (h2.text-2xl) so category H1 (which uses
 *      h1.text-2xl and is already independently forced to 24 px via
 *      .hp-category-page override) is NOT double-shrunk, and hero H1
 *      (h1.text-3xl.sm:text-4xl.lg:text-5xl) is untouched.
 *
 *   Scope: appended at end of file so it wins cascade at same
 *   specificity. Scoped to body.hp-homev0-1 where possible.
 *
 *   Preserves 094 (home icon + helper→trust gap), 093 (BMW neutral +
 *   helper align-self), 092 (envelope + responsive grid), 091 (bullet
 *   dash regex), 090 (product-page compactness), 087/088 (live-style
 *   stock badge), 079 (terracotta OOS), 074-077 (frosted header).
 *
 *   0 PHP / 0 JS / 0 DB / 0 checkout / 0 brand filter logic.
 * ============================================================ */

/* -----------------------------------------------------------
 * A. /other-marques selector alignment
 *
 * BEFORE @ 1440 (measured by puppeteer probe):
 *   main .max-w-7xl : left  80, right 1360, width 1280
 *   h1              : left  96, right 1344    (mainCol + px-4)
 *   .hp-cat-intro   : left 119, right  908    (offset +23 px, its own margin)
 *   selector panel  : left 176, right 1264, width 1088 (max-w 68rem centered)
 *   product grid    : left  96, right 1344    (aligns with h1)
 * → three horizontal starts (96, 119, 176) = classic staircase.
 *
 * AFTER: selector fills full inner width (left ~96, right ~1344), same
 * left edge as h1 and product-card row, warm-white card look preserved.
 * ----------------------------------------------------------- */

/* Kill the 68rem/auto centering that produced the offset. The selector
 * is injected as a sibling of h1 inside the same .max-w-7xl parent, so
 * relaxing max-width + margin lets it stretch to fill the same envelope. */
.jshop.hp-category-page .hp-other-filter,
.jshop.hp-category-page .hp-other-filter--p083,
body.hp-homev0-1 .hp-other-filter,
body.hp-homev0-1 .hp-other-filter--p083 {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    /* keep vertical rhythm ~= prior phase, but tighten toward calmer feel */
    margin-top: 1rem !important;
    margin-bottom: 1.25rem !important;
    /* remove the wrapper's own 0 1rem horizontal padding — its inner
     * card already provides breathing room. Alignment is inherited
     * from parent .max-w-7xl px-4. */
    padding-left: 0 !important;
    padding-right: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    box-sizing: border-box;
}

/* Premium warm-white card look — matches 092 hero/capability envelope. */
body.hp-homev0-1 .hp-other-filter--p083 .hp-other-filter__inner,
.jshop.hp-category-page .hp-other-filter .hp-other-filter__inner {
    background: rgba(255, 253, 250, 0.92) !important;
    border: 1px solid rgba(60, 45, 25, 0.09) !important;
    border-radius: 14px !important;
    padding: 1.1rem 1.25rem !important;
    box-shadow: 0 1px 2px rgba(60, 45, 25, 0.04),
                0 4px 14px -10px rgba(60, 45, 25, 0.10) !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 0.7rem !important;
    box-sizing: border-box !important;
    width: 100% !important;
}

/* Dropdown fills its row cleanly. */
body.hp-homev0-1 .hp-other-filter--p083 .hp-other-filter__control,
.jshop.hp-category-page .hp-other-filter .hp-other-filter__control {
    width: 100% !important;
    display: flex !important;
    gap: 0.5rem !important;
    flex-wrap: wrap !important;
    align-items: stretch !important;
}
body.hp-homev0-1 .hp-other-filter--p083 .hp-other-filter__select,
.jshop.hp-category-page .hp-other-filter .hp-other-filter__select {
    flex: 1 1 100% !important;
    min-width: 0 !important;
    width: 100% !important;
}
/* Reset button sits next to the select on wide screens */
@media (min-width: 640px) {
    body.hp-homev0-1 .hp-other-filter--p083 .hp-other-filter__select,
    .jshop.hp-category-page .hp-other-filter .hp-other-filter__select {
        flex: 1 1 auto !important;
    }
    body.hp-homev0-1 .hp-other-filter--p083 .hp-other-filter__reset,
    .jshop.hp-category-page .hp-other-filter .hp-other-filter__reset {
        flex: 0 0 auto !important;
    }
}

/* Bring intro block into the same left edge as h1 + grid (was offset by
 * a mysterious +23 px @ 1440). Explicit reset defends against inherited
 * Tailwind indents. */
.jshop.hp-category-page .hp-cat-intro,
body.hp-homev0-1 .hp-cat-intro {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}


/* -----------------------------------------------------------
 * B. Section heading font-scale
 *
 * BEFORE:
 *   Homepage H2 .text-2xl ("Что можно делать", "Рекомендуемые товары",
 *   "Выберите раздел", "Полезные материалы") : 32 px at ALL viewports
 *   (Tailwind text-2xl → var(--hp-fs-2xl) = 32px, no responsive scale).
 *
 * AFTER:
 *   clamp(1.5rem, 1.1rem + 0.9vw, 1.85rem) ≈ 24 px @ 390, ~29.6 px @ 1440.
 *   Tag-specific selectors so category H1 (already forced to 24/26.4 by
 *   .hp-category-page override at line 2859) and hero H1
 *   (h1.text-3xl.sm:text-4xl.lg:text-5xl) are NOT touched.
 * ----------------------------------------------------------- */

/* Homepage + generic section H2 titles. Target `h2.text-2xl` (tag+class)
 * so the shared `.text-2xl` utility on H1s is not affected. */
body.hp-homev0-1 h2.text-2xl.font-bold,
body.hp-homev0-1 h2.text-2xl {
    font-size: clamp(1.5rem, 1.1rem + 0.9vw, 1.85rem) !important;   /* 24 → ~29.6 */
    line-height: 1.2 !important;
    letter-spacing: -0.015em !important;
}

/* Product page "Похожие товары / Рекомендуемые товары" section titles
 * IF they render outside tabs (defensive; on stage today they're tabs,
 * but the CSS is future-proof for a future flat layout). Skip
 * .hp-product-detail__title (H1) which is deliberately at 27.2 px. */
body.hp-homev0-1 .hp-product-tab-panel h2.text-2xl,
body.hp-homev0-1 .hp-product-related h2,
body.hp-homev0-1 .hp-product-recommended h2 {
    font-size: clamp(1.4rem, 1.05rem + 0.7vw, 1.7rem) !important;   /* 22.4 → 27.2 */
    line-height: 1.2 !important;
    letter-spacing: -0.01em !important;
}

/* Category page "Другие товары раздела" is already at 18 px (.text-lg) —
 * gently affirm to defend against Tailwind cascade drift. */
body.hp-homev0-1 .hp-category-other-heading h2.text-lg {
    font-size: clamp(1.05rem, 0.95rem + 0.35vw, 1.25rem) !important;   /* 16.8 → 20 */
    line-height: 1.25 !important;
    letter-spacing: -0.01em !important;
    font-weight: 600 !important;
}

/* Diagnostic CTA card + hub titles — already sane 1.35/1.1 rem via
 * earlier phases; defensive belt-and-suspenders inside HP-P095 so they
 * stay within the reduced scale. */
body.hp-homev0-1 .hp-diag-cta-card__title {
    font-size: clamp(1.05rem, 0.95rem + 0.35vw, 1.25rem) !important;
    line-height: 1.25 !important;
    font-weight: 600 !important;
}

/* NOTE: hero H1 (h1.text-3xl.sm:text-4xl.lg:text-5xl), product H1
 * (.hp-product-detail__title) and category H1 (h1 inside .hp-category-page)
 * are NOT touched by any rule above — this is guaranteed by tag+class
 * scoping (h2.text-2xl vs. h1.text-2xl/text-3xl) and NO `h1, h2` blanket
 * rules exist in HP-P095. Verified via post-probe. */

/* Mobile clean scale — the clamp() already handles mobile down to 24 px.
 * Extra guardrail: at very narrow screens, drop line-height slightly for
 * dense stacking. */
@media (max-width: 430px) {
    body.hp-homev0-1 h2.text-2xl.font-bold,
    body.hp-homev0-1 h2.text-2xl {
        font-size: 1.5rem !important;   /* 24 px */
        line-height: 1.2 !important;
    }
}

/* HP-P095-END */

/* ============================================================
 * HP-P096 — Category intro callout padding polish (2026-07-07)
 *
 * PROBLEM (owner report):
 * On category / landing pages (e.g. /ru/other-marques, /ru/bmw,
 * /ru/tpms, /ru/service, /ru/interior, /ru/exterior, /ru/lighting,
 * /ru/keys, /ru/diagnostics, /ru/vag) the intro callout has its
 * text "glued" to the left orange vertical accent line. Feels
 * unpolished.
 *
 * ROOT CAUSE:
 * Phase 095 HP-P095 block (lines ~10796-10802 above) reset
 * `.hp-cat-intro` padding-left / padding-right to 0 !important
 * in order to pull the callout's LEFT EDGE onto the same 96 px
 * column as h1 and the product grid (kill the +23 px staircase).
 *
 * That fix was correct for the outer box left edge — the
 * callout's rect.left = 96 px now aligns with h1.left = 96 px
 * and grid.left = 96 px (verified via puppeteer probe pre-P096).
 *
 * But padding-left: 0 also removed the internal breathing room
 * from the 3-px orange border-left (var(--hp-primary)) to the
 * first text glyph. Measured gap 1440 = 0 px on all 10 category
 * intro pages sampled — text sits directly against the orange
 * accent line. Owner target: 24-32 px desktop, 18-24 px mobile.
 *
 * FIX:
 * Restore INNER padding (the LEFT text inset) without shifting
 * the outer box back to the pre-P095 staircase position. Because
 * `border-left: 3px` is drawn inside the border-box, the visible
 * gap from the orange line's RIGHT edge to the first glyph equals
 * the callout's `padding-left`. So we set:
 *
 *   desktop     : padding-left  1.75rem  = 28 px  (target 24-32)
 *   mobile <=430: padding-left  1.25rem  = 20 px  (target 18-24)
 *
 * Top / bottom padding is preserved at ~0.85rem (14 px) so the
 * callout stays compact — do NOT let it get tall. Right padding
 * is set to a symmetric 1.25rem so long lines don't run into the
 * right edge, but the callout keeps its max-width envelope so
 * overall row-width is unchanged.
 *
 * Outer box LEFT EDGE (rect.left) stays at 96 px (matching h1 &
 * grid) because we DO NOT touch margin-left. Phase 095's
 * alignment guarantee is preserved.
 *
 * The orange accent line is NOT modified (width 3 px, color
 * var(--hp-primary) untouched).
 *
 * SCOPE: mirror HP-P095 scope so the specificity matches and
 * this rule wins the cascade (later + equal specificity =
 * wins). We scope on `body.hp-homev0-1 .hp-cat-intro` AND
 * `.jshop.hp-category-page .hp-cat-intro` (both scopes used by
 * P095's zeroing rule).
 * ============================================================ */

.jshop.hp-category-page .hp-cat-intro,
body.hp-homev0-1 .hp-cat-intro {
    /* Desktop / default: 28 px inner text inset from orange line */
    padding-left: 1.75rem !important;
    padding-right: 1.25rem !important;
    /* Keep compact vertically — do NOT balloon the callout */
    padding-top: 0.85rem !important;
    padding-bottom: 0.85rem !important;
}

/* Tablet / small desktop: still ~24 px comfortable */
@media (max-width: 1023px) {
    .jshop.hp-category-page .hp-cat-intro,
    body.hp-homev0-1 .hp-cat-intro {
        padding-left: 1.5rem !important;   /* 24 px */
        padding-right: 1.25rem !important;
    }
}

/* Mobile: 20 px — still noticeably away from orange line but tighter */
@media (max-width: 430px) {
    .jshop.hp-category-page .hp-cat-intro,
    body.hp-homev0-1 .hp-cat-intro {
        padding-left: 1.25rem !important;  /* 20 px */
        padding-right: 1rem !important;
        padding-top: 0.75rem !important;
        padding-bottom: 0.75rem !important;
    }
}

/* HP-P096-END */

/* ============================================================
 * HP-P097-BEGIN — Phase 097 DESIGN branch — real section
 * heading scale fix (further reduction).
 *
 * DIAGNOSTIC finding (before-probe @ 2026-07-07 22:35 UTC via
 * puppeteer at 1440 desktop / 390 mobile):
 *
 *   Section H2s on homepage — "Что можно делать диагностикой",
 *   "Рекомендуемые товары", "Выберите раздел", "Полезные материалы"
 *   — all rendered as:
 *     <h2 class="text-2xl font-bold tracking-tight text-foreground">
 *   Computed font-size = 29.6 px @ 1440 (P095's clamp result:
 *   clamp(1.5rem, 1.1rem + 0.9vw, 1.85rem) → 29.6 px).
 *   Mobile 390 = 24 px.
 *
 *   Ancestor chain: `section#hp-diag-usecases.max-w-7xl` (A),
 *   `div.max-w-7xl > section.bg-header` (B),
 *   `section#hp-home-categories.max-w-7xl` (B2),
 *   `section#hp-home-info.max-w-7xl` (B3).
 *
 *   Category H1 on /ru/bmw etc: h1.text-2xl.font-bold... = 24 px (untouched)
 *   Hero H1 on homepage: h1.text-3xl.sm:text-4xl.lg:text-5xl = 48 px (untouched)
 *   Product H1: h1.hp-product-detail__title = 27.2 px (untouched)
 *
 * Root cause of owner's "still oversized" report:
 *   P095 landed correctly (29.6 px is the real winning value)
 *   but 29.6 px still reads as "elephant" next to calm sections
 *   and against the 48 px hero H1. Owner expects a stronger
 *   step-down for section headings.
 *
 * P097 FIX:
 *   Reduce section H2 clamp to clamp(1.375rem, 1.2rem + 0.35vw, 1.625rem)
 *   = 22 → ~26 px @ 1440 (down from 29.6). At 390 the clamp lower
 *   bound (22 px) applies. Line-height tightened to 1.2, letter-spacing
 *   -0.015em preserved. margin-bottom kept 0 (no existing rule to shrink).
 *
 *   Specificity strengthened via double-selector ancestor scope
 *   (main.hp-main body.hp-homev0-1 h2.text-2xl.font-bold) AND
 *   defensive raw scope so cascade wins beyond P095 without needing
 *   `!important` to escalate further than P095 already used.
 *
 *   Product-page related-heading rule (P095 defensive) shrunk to same
 *   step (was 22.4 → 27.2, now 20 → 24) — only if the pattern renders
 *   flat (defensive, no such heading present today).
 *
 * SAFETY GUARANTEES (post-probe required):
 *   - hero H1 h1.text-3xl.sm:text-4xl.lg:text-5xl  → UNCHANGED @48 px (1440)
 *   - product H1 h1.hp-product-detail__title       → UNCHANGED @27.2 px
 *   - category H1 h1.text-2xl.sm:text-3xl          → UNCHANGED @24 px
 *   - product card titles                          → UNCHANGED
 *   - nav labels                                    → UNCHANGED
 *
 * PRESERVES all prior phases:
 *   096 intro callout padding, 095 selector envelope + h2 shrink baseline,
 *   094 home icon + helper-trust gap, 093 BMW neutral, 092 responsive grid,
 *   091 bullet dash regex, 090 product-page compactness, 087/088 stock
 *   badge, 079 terracotta OOS, 074-077 frosted header.
 *
 *   0 PHP / 0 JS / 0 INI / 0 DB / 0 checkout / 0 cart / 0 payment /
 *   0 EveryPay / 0 Omniva / 0 Stripe / 0 PayPal / 0 product data /
 *   0 category data / 0 brand-filter / 0 live-site.
 * ============================================================ */

/* Section H2 (homepage v0-1) — real winning rule, appended after P095
 * so cascade wins at same specificity, then boosted by ancestor scope
 * so it also wins vs. any future utility injection. */
body.hp-homev0-1 h2.text-2xl,
body.hp-homev0-1 h2.text-2xl.font-bold,
body.hp-homev0-1 section h2.text-2xl,
body.hp-homev0-1 section.mx-auto h2.text-2xl.font-bold,
main.hp-main body.hp-homev0-1 h2.text-2xl,
html body.hp-homev0-1 h2.text-2xl.font-bold {
    font-size: clamp(1.375rem, 1.2rem + 0.35vw, 1.625rem) !important;
    /* 22 px @390 → ~26 px @1440 */
    line-height: 1.2 !important;
    letter-spacing: -0.015em !important;
    font-weight: 700 !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* Section-heading wrapper .mb-6 gives ~24 px gap-below-heading via
 * Tailwind — leave that (base rule). Do not add explicit margin here. */

/* Product page defensive: any future flat "Related products" heading
 * gets same shrunk step-down. Skip .hp-product-detail__title (H1 27.2 px). */
body.hp-homev0-1 .hp-product-tab-panel h2.text-2xl,
body.hp-homev0-1 .hp-product-related h2.text-2xl,
body.hp-homev0-1 .hp-product-recommended h2.text-2xl,
.jshop.hp-category-page .hp-product-related h2.text-2xl,
.jshop.hp-category-page .hp-product-recommended h2.text-2xl {
    font-size: clamp(1.25rem, 1.1rem + 0.3vw, 1.5rem) !important;
    /* 20 → 24 */
    line-height: 1.2 !important;
    letter-spacing: -0.01em !important;
    font-weight: 700 !important;
}

/* Category page — subsection heading ("Другие товары раздела", when
 * present) — affirm at ~18 px sane scale. Defensive, no visible
 * regression risk. */
body.hp-homev0-1 .hp-category-other-heading h2,
.jshop.hp-category-page .hp-category-other-heading h2 {
    font-size: clamp(1rem, 0.9rem + 0.3vw, 1.2rem) !important;
    /* 16 → 19.2 */
    line-height: 1.25 !important;
    letter-spacing: -0.01em !important;
    font-weight: 600 !important;
}

/* Explicit safety guards — codify that these H1s are OUT-OF-SCOPE.
 * Comment-only; no CSS emitted (would be a no-op anyway) — but leaves
 * a clear paper trail for the next phase to grep. */
/* SAFETY: h1.text-3xl.sm:text-4xl.lg:text-5xl  (hero)          = 48 px, no HP-P097 rule */
/* SAFETY: h1.hp-product-detail__title           (product page) = 27.2 px, no HP-P097 rule */
/* SAFETY: h1.text-2xl.sm:text-3xl              (category page) = 24 px, no HP-P097 rule */

/* Mobile guardrail — clamp lower bound is 22 px but at exactly 430 px
 * viewport we double-lock to 22 px in case future container resize logic
 * shifts the clamp mid-viewport. Matches P095 pattern. */
@media (max-width: 430px) {
    body.hp-homev0-1 h2.text-2xl,
    body.hp-homev0-1 h2.text-2xl.font-bold,
    main.hp-main body.hp-homev0-1 h2.text-2xl {
        font-size: 1.375rem !important;   /* 22 px */
        line-height: 1.2 !important;
    }
}

/* HP-P097-END */
/* =====================================================================
 * HP-P098-BEGIN — Phase 098 DESIGN branch: night visual QA polish.
 * Date: 2026-07-07 23:50
 *
 * Owner brief: overnight visual QA + safe polish pass. Two mandatory
 * QA loops. Do not undo any prior fix.
 *
 * Baseline audit findings (57 screenshots × 6 viewports):
 *   - Hero H1, section H2, product H1, category H1 all preserved
 *     (byte-for-byte identical to 095/097 spec).
 *   - Stock badge live-style green (087/088) preserved.
 *   - BMW diag card neutral on fresh load (093) preserved.
 *   - Trust envelope alignment (092), intro callout 28px (096),
 *     selector 96/96/96 (095), home icon (094), product page
 *     compactness + 6px gap-before-tabs (090), bullet dots (091)
 *     — all preserved.
 *
 * Real safe issues found (Loop 1 fixes below):
 *
 *   (1) Product card @ m390: `.hp-stock-badge` "Доступно сразу" is
 *       127 px wide on a 175 px card. `.hp-product-card__price` 40 px.
 *       `.hp-product-card__meta-row` is `flex row, space-between,
 *       nowrap` (P088 rule) — badge and price overlap by ~18 px on
 *       tightest viewport. Visually reads as "Доступно сразу35 €"
 *       with the price glyph on top of badge trailing text.
 *
 *   (2) Product card @ m390 & m430: CTA "Выбрать комплектацию"
 *       (Russian localised label for required-attribute products
 *       per Phase 078D) is 20 chars — overflows the 2.15 rem tall
 *       button on 175 px card. The btn already has
 *       `overflow: hidden; text-overflow: ellipsis` (P088) but
 *       ellipsis on a 1-line btn just clips letters. Real fix:
 *       allow wrap to 2 lines on very-narrow viewports so the
 *       full label reads, and tighten line-height.
 *
 *   (3) Product card @ m390: `.hp-product-card__title` clamped at
 *       `min/max-height: 2.55em` (P088) which cuts titles like
 *       "BMW ENET кабель для диагностики" into "BMW ENET кабель
 *       д… диагностики," — clearly readable loss. Bump title clamp
 *       to 3 lines on very-narrow so the customer sees the full
 *       useful noun before ellipsis.
 *
 * Scope: `.hp-product-card` and its sub-elements only (not the
 * homepage `.hp-home-featured-grid` variant which is already
 * differently-sized). Media query `@media (max-width: 480px)` to
 * cover both 390 and 430 without touching t768+.
 *
 * NO prior-phase rule is undone. No H1/H2/H3 sizing touched. No
 * checkout, cart, price value, product data, or PHP touched.
 * ===================================================================== */

/* Fix (1) — badge shrinkable so it never eats the price zone.
 * The badge is `.hp-stock-badge` with `white-space: nowrap`
 * (base rule) — that's fine for legibility. What broke: on the
 * narrowest viewport `justify-content: space-between` cannot fit
 * both children so they visually collide.
 *
 * Solution: on <=480 shrink the badge font by 1 pt and allow
 * the badge itself to `flex-shrink: 1` with `min-width: 0` +
 * `overflow: hidden; text-overflow: ellipsis` so if the text
 * still cannot fit it gracefully truncates rather than overlapping
 * the price. On >=481 nothing changes.
 */
@media (max-width: 480px) {
    .hp-product-card__meta-row {
        /* Belt: give a positive gap so browsers respect it as
         * min-separation between siblings even when the badge is
         * shrinking. */
        gap: 0.5rem !important;
        column-gap: 0.5rem !important;
        min-width: 0 !important;
    }
    .hp-product-card__meta-row .hp-stock-badge,
    .hp-product-card__footer .hp-stock-badge,
    .hp-product-card .hp-stock-badge--in,
    .hp-product-card .hp-stock-badge--out {
        /* Slightly smaller so short badge text still fits without
         * squeezing the price glyph. */
        font-size: 0.60rem !important;
        line-height: 1 !important;
        padding: 0.22rem 0.4rem !important;
        /* Allow the badge to give up width when necessary. */
        flex: 0 1 auto !important;
        min-width: 0 !important;
        max-width: 100% !important;
        /* Graceful truncation if the localised string is very long
         * on this very-narrow viewport. */
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
        letter-spacing: -0.005em !important;
    }
    /* Price stays fixed size, does not shrink, sits on the right. */
    .hp-product-card__meta-row .hp-product-card__price,
    .hp-product-card__price-block .hp-product-card__price,
    .hp-product-card__footer .hp-product-card__price {
        flex: 0 0 auto !important;
        white-space: nowrap !important;
    }
}

/* Fix (2) — CTA button wraps to 2 lines on very-narrow viewports.
 * The base button (`hp-btn`) is `height: 2.15rem; white-space: nowrap;
 * overflow: hidden; text-overflow: ellipsis;` at <=640 (P088).
 *
 * On <=480 change to: `white-space: normal; line-height: 1.1;
 * height: auto; min-height: 2.15rem; padding: 0.3rem 0.6rem;
 * font-size: 0.75rem` — allow up to 2 lines of button label so the
 * full localised text remains readable.
 *
 * NOTE: only inside `.hp-product-card` — do NOT touch buttons
 * elsewhere on the site (checkout / cart / product-detail).
 */
@media (max-width: 480px) {
    .hp-product-card .hp-product-card__footer .hp-btn,
    .hp-product-card .hp-product-card__footer .hp-btn--primary,
    .hp-product-card .hp-product-card__footer .hp-btn--outline,
    .hp-product-card .hp-product-card__footer .hp-btn--sm,
    .hp-product-card .hp-product-card__footer .hp-btn--block,
    .hp-product-card .hp-product-card__cta {
        /* Allow wrap up to 2 lines so long localised labels don't
         * get letter-clipped ("Выбрать комплектаци…"). */
        white-space: normal !important;
        overflow: visible !important;
        text-overflow: clip !important;
        line-height: 1.1 !important;
        height: auto !important;
        min-height: 2.15rem !important;
        padding: 0.35rem 0.5rem !important;
        font-size: 0.72rem !important;
        letter-spacing: -0.005em !important;
        text-align: center !important;
        word-break: normal !important;
        hyphens: none !important;
        /* Max height still capped (2 lines * 1.1 * 0.72rem ≈ 1.58rem
         * of text) so cards remain visually consistent. */
        max-height: 3.4rem !important;
    }
}

/* Fix (3) — allow 3-line titles on very-narrow.
 * Base P088 rule clamps title to `min/max-height: 2.55em` (2 lines).
 * On <=480 with 175 px card, 2 lines is too tight for Cyrillic
 * product names (avg word length 8-11 chars). Bump clamp to
 * 3 lines while keeping line-height 1.28.
 *
 * Line-clamp done via display: -webkit-box + line-clamp: 3 is safe;
 * fall back to fixed max-height so non-webkit still respects it.
 */
@media (max-width: 480px) {
    .hp-product-card .hp-product-card__title {
        min-height: 3.85em !important;   /* 3 lines * 1.28 = 3.84em */
        max-height: 3.85em !important;
        line-height: 1.28 !important;
        display: -webkit-box !important;
        -webkit-line-clamp: 3 !important;
        -webkit-box-orient: vertical !important;
        overflow: hidden !important;
    }
}

/* Safety confirmation belt-and-suspenders: P098 does NOT touch H1s,
 * H2s, `.hp-cat-intro` padding, `.hp-other-filter` alignment, header
 * home icon, `.hp-hero-mini--primary` neutral state, `.hp-trust-tile`
 * envelope, `.hp-product-detail` compactness, `.hp-p063-tab` alignment,
 * `.hp-stock-badge--in` colours in general (only mobile ≤480 font-size
 * inside product cards), or any base badge / stock rule.
 *
 * Rollback: `?homev0=0` does NOT disable this block (it is scoped to
 * `.hp-product-card` only, not `body.hp-homev0-1`). To rollback, restore
 * the sidecar backup on server.
 */
/* HP-P098-END */

/* =====================================================================
 * HP-P099-BEGIN — Phase 099 DESIGN branch: mobile product card
 * stock-badge NO-TRUNCATION fix (undo P098 ellipsis + stack meta row).
 * Date: 2026-07-08 10:22
 *
 * Owner rejected P098 as PARTIAL because although P098 solved the
 * "Доступно сразу35 €" glued-string overlap, it did so via
 * `flex-shrink: 1 + max-width: 100% + overflow: hidden + text-overflow:
 *  ellipsis` on `.hp-stock-badge`, which now truncates the badge to
 * "Доступно с..." on 390/430 (and similarly for LV "Pieejams uzr..." /
 * DE "Sofort ver...").  Owner: full text must be visible AND no overlap.
 *
 * Diagnosis (Puppeteer probe @ 390):
 *   - Card structure:
 *       .hp-product-card__body
 *         .hp-product-card__footer   (fd:column, fw:wrap, w=149px)
 *           .hp-product-card__meta-row  (fd:row, jc:space-between,
 *                                        fw:nowrap, gap:5.6px, w=149px)
 *             .hp-product-card__stock    (contains .hp-stock-badge)
 *             .hp-product-card__price-block (contains .hp-product-card__price)
 *   - Natural badge widths: RU 123 · LV 118 · DE 124 · EN 78 px
 *   - Price width ≈ 40-60 px depending on digits
 *   - Row available width = 149 px  →  RU/LV/DE never fit in one row
 *     alongside price without ellipsis.
 *   - EN (Available) already fits, no truncation needed.
 *
 * Layout approach — STACK on narrow mobile (<=480 px):
 *   Change `.hp-product-card__meta-row` from `flex-direction: row`
 *   to `flex-direction: column`.  Badge sits on line 1 with full
 *   text.  Price sits on line 2, aligned to the right edge so the
 *   card retains the "price is bottom-right" visual anchor.  Because
 *   badge and price now occupy separate rows, overlap is
 *   structurally impossible regardless of localised string length.
 *
 *   Simultaneously undo P098's badge ellipsis rules so the badge
 *   renders full text with `white-space: nowrap; overflow: visible;
 *   text-overflow: clip; max-width: none; flex-shrink: 0`.
 *
 * Desktop (>=481 px) untouched — the P088 row layout stays as is.
 * P098 CTA button multi-line wrap fix preserved (this block does
 * NOT touch `.hp-product-card__cta` / `.hp-btn`).
 *
 * Scope: `.hp-product-card` only. Not `.hp-home-featured-grid` (which
 * has its own layout). Not `.hp-diag-hub__product-*`. Not the
 * product-detail-page stock badge (P088 live-style green preserved).
 *
 * 0 PHP / 0 JS / 0 INI / 0 DB / 0 product data / 0 checkout /
 * 0 live-site.  1 CSS file touched.
 * ===================================================================== */

/* Step A — stack the meta row on narrow mobile. */
@media (max-width: 480px) {
    body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row,
    .hp-product-card .hp-product-card__meta-row {
        display: flex !important;
        flex-direction: column !important;
        flex-wrap: nowrap !important;
        align-items: stretch !important;
        justify-content: flex-start !important;
        gap: 0.35rem !important;
        row-gap: 0.35rem !important;
        column-gap: 0 !important;
        width: 100% !important;
        min-width: 0 !important;
    }
    /* Stock row (line 1) - left aligned with full badge text. */
    body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__stock,
    .hp-product-card .hp-product-card__meta-row .hp-product-card__stock {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        justify-content: flex-start !important;
        display: flex !important;
    }
    /* Price row (line 2) - right aligned so bottom-right price anchor
     * is preserved visually. */
    body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__price-block,
    .hp-product-card .hp-product-card__meta-row .hp-product-card__price-block {
        width: 100% !important;
        display: flex !important;
        justify-content: flex-end !important;
        align-items: baseline !important;
    }
}

/* Step B — undo P098 ellipsis on the badge so full text renders.
 * Redundant with the parent-row full width but belt-and-suspenders:
 * even inside a wider container the badge must never truncate. */
@media (max-width: 480px) {
    body.hp-homev0-1 .hp-product-card .hp-stock-badge,
    body.hp-homev0-1 .hp-product-card .hp-stock-badge--in,
    body.hp-homev0-1 .hp-product-card .hp-stock-badge--out,
    .hp-product-card .hp-product-card__meta-row .hp-stock-badge,
    .hp-product-card .hp-product-card__footer .hp-stock-badge,
    .hp-product-card .hp-stock-badge--in,
    .hp-product-card .hp-stock-badge--out {
        max-width: none !important;
        min-width: 0 !important;
        overflow: visible !important;
        text-overflow: clip !important;
        white-space: nowrap !important;
        flex-shrink: 0 !important;
        flex-grow: 0 !important;
        /* Reset P098's slight font-size shrink — full readable size. */
        font-size: 0.68rem !important;
        line-height: 1 !important;
        padding: 0.22rem 0.5rem !important;
        letter-spacing: 0 !important;
        /* Fit content only, do NOT stretch to 100% of parent. */
        width: auto !important;
        align-self: flex-start !important;
    }
    /* Price stays fixed-size, right-aligned on its own row. */
    body.hp-homev0-1 .hp-product-card .hp-product-card__price,
    .hp-product-card .hp-product-card__price {
        flex: 0 0 auto !important;
        white-space: nowrap !important;
    }
}

/* Step C — desktop (>=481) safety.  Do nothing here (base rules
 * apply), but explicitly confirm P098's badge/CTA fixes should
 * only fire below 480; at 481+ the badge already fits inline.
 *
 * PRESERVATION:
 *   - P098 CTA wrap-to-2-lines rule is untouched (different selector
 *     scope `.hp-product-card__cta` / `.hp-btn` in the footer).
 *   - P088 stock-badge live-style green (bg #E4F4DC, color #247313)
 *     preserved by NOT overriding background / color / border here.
 *   - Product-detail-page badge (outside `.hp-product-card`)
 *     completely untouched.
 *   - P079 terracotta OOS `.hp-stock-badge--out` colours untouched
 *     (we only change layout properties on that selector, not colour).
 *
 * Rollback: comment out this HP-P099 block; P098 rules take over
 * (badge truncates to ellipsis but does not overlap price).
 * ===================================================================== */
/* HP-P099-END */

/* Phase 034 — defensive mobile overflow guards.
 * Owner reported the page could be shaken horizontally on iPhone Safari.
 * These rules prevent any accidental viewport overflow without changing
 * layout on well-behaved elements.
 */
html, body { max-width: 100vw; overflow-x: hidden; }
img, svg, video, iframe { max-width: 100%; height: auto; }
.hp-payment-tile__desc,
.hp-payment-tile__title { max-width: 100%; overflow-wrap: anywhere; }
.hp-payment-tile__icon svg { max-width: 100%; height: auto; }
/* Phase 034 — link/button variant of stock badge inherits the same anchor */
a.hp-stock-badge--link { text-decoration: none; }
a.hp-stock-badge--link:hover,
a.hp-stock-badge--link:focus { text-decoration: underline; }

/* ============================================================================
 * Phase 035 — Overnight checkout stabilization
 * (a) Sticky checkout progress stepper — visible across all 4 steps.
 * (b) Payment tiles: force vertical single-column list (never 2x2 grid).
 * (c) Payment tiles: minimum readable width even when parent step is hidden
 *     during initial SPA render.
 * (d) Confirm button: guaranteed visibility + full-width tap target on mobile.
 * (e) Pickup delivery method: hide any "cost on review" filler note.
 * ============================================================================ */
body.hp-checkout-page .hp-checkout-progress {
    position: sticky;
    top: 0;
    z-index: 90;
    background: var(--hp-card, #fff);
    /* Slight top padding on mobile so the stepper sits below any safe-area
     * top notch without touching the browser chrome */
    padding-top: env(safe-area-inset-top, 0);
}
/* Ensure stepper is visible on step 4 review even when other blocks are hidden */
body.hp-checkout-page[data-hp-checkout-step="4"] .hp-checkout-progress,
body.hp-checkout-page .hp-checkout-progress { display: flex !important; visibility: visible !important; }

/* Payment tiles — always full-width vertical list */
#paymentform .hp-payment-tiles {
    display: flex !important;
    flex-direction: column !important;
    gap: 0.75rem !important;
    width: 100% !important;
    max-width: 100% !important;
}
#paymentform .hp-payment-tile {
    display: flex !important;
    flex-direction: row !important;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    min-width: 0;
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--hp-border, #e2d9cc);
    border-radius: 0.5rem;
    background: var(--hp-card, #fff);
    cursor: pointer;
}
#paymentform .hp-payment-tile--selected {
    border-color: var(--hp-primary, #e87020);
    background: color-mix(in oklab, var(--hp-primary, #e87020) 6%, #fff);
}
#paymentform .hp-payment-tile__body {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}
#paymentform .hp-payment-tile__title { font-weight: 600; }
#paymentform .hp-payment-tile__desc { font-size: 0.85rem; color: var(--hp-muted-text, #7a6a52); overflow-wrap: anywhere; }
#paymentform .hp-payment-tile__icon { flex: 0 0 44px; display: inline-flex; align-items: center; justify-content: center; }
#paymentform .hp-payment-tile__icon svg { max-width: 44px; max-height: 28px; }

/* Confirm button on step 4 — always visible/full-width tap target */
#reviewform button[type=submit].hp-btn--primary {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    min-height: 44px;
    padding: 0.75rem 1.5rem;
    width: 100%;
    justify-content: center;
    align-items: center;
    gap: 0.5rem;
    background: var(--hp-primary, #e87020);
    color: #fff;
    border: 0;
    border-radius: 0.5rem;
    font-weight: 600;
    cursor: pointer;
}
#reviewform .hp-checkout-step-nav {
    display: flex !important;
    flex-wrap: wrap;
    gap: 0.5rem;
    width: 100%;
}
@media (max-width: 480px) {
    #reviewform .hp-checkout-step-nav .hp-btn--outline { flex: 1 1 40%; }
    #reviewform .hp-checkout-step-nav .hp-btn--primary { flex: 1 1 100%; margin-top: 0.5rem; }
}

/* Hide "cost on review" fallback note for pickup shipping method */
.hp-shipping-tile__hint--wait-review,
[data-hp-cost-on-review] { display: none !important; }

/* Phase 035 — cart layout: consistent 2-column desktop / 1-column mobile */
@media (min-width: 900px) {
  .hp-cart-page-grid {
    display: grid !important;
    grid-template-columns: 1fr 360px;
    gap: 1.5rem;
    align-items: start;
  }
  .hp-cart-page-grid > .hp-cart-summary { position: sticky; top: 5rem; }
}


/* ============================================================================
 * Phase 036 — Emergency real-mobile fixes
 * (a) Stepper: unstick + always visible at top of checkout content, cannot
 *     overlap the sticky page header (z-50).
 * (b) Larger tap targets to prevent accidental stepper "back to delivery" taps.
 * (c) Payment tile — force min-height so tiles always have visible size even
 *     when parent step is in transition state.
 * (d) Back button: proper sizing on mobile.
 * ============================================================================ */
body.hp-checkout-page .hp-checkout-progress {
    position: relative !important;
    top: auto !important;
    z-index: 1 !important;
    margin: 0 auto 1.25rem;
    max-width: 100%;
    padding: 0.5rem 0.75rem;
    background: var(--hp-card, #fff);
    border: 1px solid var(--hp-border, #e2d9cc);
    border-radius: 0.5rem;
    display: flex !important;
    visibility: visible !important;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
body.hp-checkout-page .hp-checkout-progress::-webkit-scrollbar { display: none; }

@media (max-width: 640px) {
    body.hp-checkout-page .hp-checkout-progress { padding: 0.5rem 0.5rem; gap: 0.15rem; }
    body.hp-checkout-page .hp-checkout-progress__step { padding: 0.5rem 0.35rem; font-size: 0.72rem; gap: 0.3rem; min-width: 0; flex: 0 1 auto; }
    body.hp-checkout-page .hp-checkout-progress__num { width: 1.5rem; height: 1.5rem; font-size: 0.72rem; flex: 0 0 1.5rem; }
    body.hp-checkout-page .hp-checkout-progress__label { display: inline; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 4.5rem; }
    body.hp-checkout-page .hp-checkout-progress__step--active .hp-checkout-progress__label { max-width: 6rem; }
}

/* Payment tile forced size — never 0-width even during transitions */
#paymentform .hp-payment-tile {
    min-height: 60px !important;
    min-width: 0;
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
}
#paymentform .hp-payment-tiles { display: flex; flex-direction: column; gap: 0.75rem; width: 100%; }

/* Back button: proper size not thin line */
.hp-checkout-step-nav .hp-btn--outline,
#reviewform .hp-btn--outline {
    min-height: 44px;
    padding: 0.6rem 1.1rem;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border: 1px solid var(--hp-border, #e2d9cc);
    background: var(--hp-card, #fff);
    color: var(--hp-text, #2d2416);
    border-radius: 0.5rem;
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
}
.hp-checkout-step-nav .hp-btn--outline:hover,
#reviewform .hp-btn--outline:hover { background: color-mix(in oklab, var(--hp-primary, #e87020) 6%, #fff); }

/* Ensure no horizontal overflow on the checkout container */
body.hp-checkout-page main,
body.hp-checkout-page .hp-checkout-container,
body.hp-checkout-page #hp-checkout-review,
body.hp-checkout-page #hp-checkout-payment,
body.hp-checkout-page #hp-checkout-customer,
body.hp-checkout-page #hp-checkout-shipping {
    max-width: 100%;
    overflow-x: hidden;
}



/* ========== HP-P105-TRUST START — homepage trust tile icon fix (scope: hp-trust-tile__icon only) ==========
 * Task 105 Part 2: fix homepage trust tile icons (owner rejected "В наличии" glyph as pacifier-like).
 * Scope: homepage 4-tile row `.hp-trust-tile__icon` inside `body.hp-homev0-1`.
 * Design decision: the previous CSS at ~line 9873 sizes the SVG itself as the peach circle
 * (2.35rem, padding 0.5rem, border-radius 9999px). We KEEP that. We only:
 *   - Ensure `overflow: visible` so new package/truck strokes near viewBox edges cannot clip.
 *   - Keep stroke-width 1.7 (delivered inline on each new svg element too).
 *   - Explicit color for zero-blue guarantee.
 * We do NOT override width/height/padding — those come from the base rule and must not
 * change (avoids making svg fill the anchor tile).
 * Non-invasive: no layout/text/positioning changes to trust card.
 * ========================================================================================================= */
body.hp-homev0-1 svg.hp-trust-tile__icon[data-hp-p105] {
    overflow: visible !important;
    stroke-width: 1.7 !important;
    color: #b34b0f !important;
    stroke: currentColor !important;
    fill: none !important;
}
/* ========== HP-P105-TRUST END ========== */

/* =============================================================================
   Phase 039 — HP-P039 checkout UX fix (2026-07-09 12:00)
   -----------------------------------------------------------------------------
   Re-applies P038 checkout patches that P104 dropped, adds real payment
   logos + stepper non-sticky-safe layout + confirm button size + form grid
   stretch by delivery mode.
   Server backup: css/components.css.bak_p039_20260709_1200
   ============================================================================ */

/* --- STEPPER STABILITY (owner report Part 5) ------------------------------- */
/* Not sticky (Helix main.hp-main has overflow-y:auto which kills sticky).
   Instead: standard flow block with big top padding on checkout main content
   so header/menu never covers the stepper on any viewport. */
body.hp-checkout-page .hp-checkout-progress {
    position: relative !important;
    top: auto !important;
    z-index: 45 !important;
    margin: 0 0 1.25rem 0 !important;
    padding: 0.6rem 0.9rem !important;
    background: #fff !important;
    border: 1px solid #e2d9cc !important;
    border-radius: 0.6rem !important;
    display: flex !important;
    visibility: visible !important;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04) !important;
    scroll-margin-top: 140px;
}
/* Push whole checkout content down so the header/menu row never covers the stepper. */
body.hp-checkout-page main.hp-main,
body.hp-checkout-page #sp-main-body,
body.hp-checkout-page .hp-app main {
    padding-top: 1.5rem !important;
}
@media (max-width: 900px) {
    body.hp-checkout-page main.hp-main,
    body.hp-checkout-page #sp-main-body,
    body.hp-checkout-page .hp-app main {
        padding-top: 1rem !important;
    }
}

/* --- CUSTOMER FORM GRID ALIGNMENT (owner report Part 6) -------------------- */
/* All --any fields stretch to full row when courier fields hidden. Uses
   the existing template.js-managed body[data-hp-delivery-mode] attribute. */
@media (min-width: 640px) {
    body.hp-checkout-page:not([data-hp-delivery-mode='courier']):not([data-hp-delivery-mode='courier-eu']) .hp-cust-fld--any {
        grid-column: 1 / -1 !important;
    }
}
/* Phone row: prefix compact, local flex-auto. */
body.hp-checkout-page .hp-phone-row {
    display: flex !important;
    gap: 0.5rem !important;
    width: 100% !important;
    align-items: stretch;
}
body.hp-checkout-page .hp-phone-row #hp_phone_prefix,
body.hp-checkout-page .hp-phone-row .hp-phone-prefix {
    flex: 0 0 130px !important;
    max-width: 130px !important;
    width: 130px !important;
}
body.hp-checkout-page .hp-phone-row #hp_phone_local {
    flex: 1 1 auto !important;
    width: 100% !important;
}
/* Force all inputs/selects to 100% within their grid cell. */
body.hp-checkout-page #hp-checkout-customer input[type="text"],
body.hp-checkout-page #hp-checkout-customer input[type="email"],
body.hp-checkout-page #hp-checkout-customer input[type="tel"],
body.hp-checkout-page #hp-checkout-customer select {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

/* --- PAYMENT TILE REAL LOGOS (owner report Part 4) ------------------------ */
.hp-payment-tile__brand {
    display: flex !important;
    align-items: center;
    gap: 6px;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}
.hp-payment-tile__brand-item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 28px;
    padding: 0;
    background: transparent;
    border: none;
    line-height: 1;
}
.hp-payment-tile__brand-item img {
    height: 28px !important;
    width: auto !important;
    max-width: 60px;
    display: block;
    border-radius: 4px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.hp-payment-tile__brand-item--paypal img {
    height: 30px !important;
    max-width: 90px;
}

/* --- CONFIRMATION CONFIRM BUTTON (owner report Part 2) --------------------- */
@media (min-width: 900px) {
    body.hp-checkout-page #reviewform .hp-checkout-step-nav {
        justify-content: flex-end !important;
    }
    body.hp-checkout-page #reviewform .hp-btn.hp-btn--primary {
        max-width: 20rem !important;
        width: auto !important;
        min-width: 12rem !important;
        padding-left: 1.5rem !important;
        padding-right: 1.5rem !important;
        display: inline-flex !important;
    }
    body.hp-checkout-page #reviewform .hp-btn.hp-btn--outline {
        max-width: 12rem !important;
        width: auto !important;
    }
}

/* --- SAFE OVERFLOW: html-level clip only, not body ------------------------- */
html { overflow-x: hidden !important; }
body.hp-checkout-page { overflow-x: visible !important; }

/* END HP-P039 */

/* =============================================================================
   Phase 040 — HP-P040 clean logo layer (2026-07-09 12:30)
   Restrict the brand strip img sizing to the new hp-payment-tile__brand-img
   class from payments.php. The Phase 039 chip-image class remains for
   backward compat but was superseded — owner rejected the fake SVGs, so we
   now render only real assets.
   ============================================================================ */
.hp-payment-tile__brand {
    display: flex !important;
    align-items: center;
    gap: 10px;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}
.hp-payment-tile__brand-img {
    height: 24px !important;
    width: auto !important;
    max-width: 120px;
    display: block;
    object-fit: contain;
    background: transparent;
}
.hp-payment-tile__brand-img--paypal {
    height: 22px !important;
    max-width: 88px;
}
/* Neutralize the Phase 039 chip styling if any element still carries it. */
.hp-payment-tile__brand-item {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}
/* END HP-P040 */

/* =============================================================================
   Phase 044 — HP-P044 visual UX polish (2026-07-09)
   VISUAL ONLY. Zero payment/logic changes.
   ============================================================================ */

/* --- P044-A Success page trust tiles: separated card grid ---------------- */
.hp-p044-trust-band {
    background: transparent !important;
    border: 0 !important;
    padding: 1.5rem 0 !important;
    margin-top: 2rem;
}
.hp-p044-trust-grid {
    display: grid !important;
    grid-template-columns: repeat(4, 1fr) !important;
    gap: 16px !important;
    background: transparent !important;
    padding: 0 1rem !important;
}
@media (max-width: 900px) {
    .hp-p044-trust-grid { grid-template-columns: repeat(2, 1fr) !important; gap: 12px !important; }
}
@media (max-width: 480px) {
    .hp-p044-trust-grid { grid-template-columns: 1fr !important; gap: 10px !important; }
}
.hp-p044-trust-band .hp-trust-tile {
    background: #fff !important;
    border: 1px solid #e2d9cc !important;
    border-radius: 12px !important;
    padding: 18px 20px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    align-items: flex-start !important;
    box-shadow: 0 1px 2px rgba(0,0,0,0.04) !important;
    min-height: 96px;
    box-sizing: border-box;
}
.hp-p044-trust-band .hp-trust-tile__icon {
    width: 28px !important; height: 28px !important;
    color: var(--hp-primary, #e87020) !important;
    flex: 0 0 28px;
}
.hp-p044-trust-band .hp-trust-tile__title {
    font-size: 0.88rem !important;
    font-weight: 600 !important;
    color: #2d2416 !important;
    line-height: 1.35 !important;
    margin: 0 !important;
}

/* --- P044-B Cart page 2-column layout stabilizer --------------------------
   Target JSH cart via .jshop_cart wrapper. Owner report: stair-step. */
body.jshop-cart-view #sp-main-body,
body.hp-cart-page #sp-main-body {
    padding-top: 1rem;
}
@media (min-width: 900px) {
    body.jshop-cart-view .jshop_cart,
    body.hp-cart-page .jshop_cart {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) 360px !important;
        gap: 24px !important;
        align-items: start !important;
    }
}
/* Ensure cart list items don't offset by inherited margins */
body.jshop-cart-view .jshop_cart > * { min-width: 0; }

/* --- P044-C Stepper rounded pill design ---------------------------------- */
/* Preserve HP-P039 stability rules, add rounded aesthetics. */
body.hp-checkout-page .hp-checkout-progress {
    border-radius: 999px !important;
    padding: 6px 10px !important;
    background: #fff !important;
    border: 1px solid #e2d9cc !important;
    gap: 6px !important;
}
body.hp-checkout-page .hp-checkout-progress__step {
    border-radius: 999px !important;
    padding: 8px 14px !important;
    transition: background 160ms ease, color 160ms ease;
}
body.hp-checkout-page .hp-checkout-progress__step--active {
    background: color-mix(in oklab, var(--hp-primary, #e87020) 18%, #fff) !important;
    color: var(--hp-text, #2d2416) !important;
}
body.hp-checkout-page .hp-checkout-progress__step--active .hp-checkout-progress__num {
    background: var(--hp-primary, #e87020) !important;
    color: #fff !important;
    border-color: var(--hp-primary, #e87020) !important;
}
body.hp-checkout-page .hp-checkout-progress__step--done .hp-checkout-progress__num {
    background: color-mix(in oklab, var(--hp-primary, #e87020) 30%, #fff) !important;
    color: #fff !important;
}
body.hp-checkout-page .hp-checkout-progress__step:not(:disabled):hover {
    background: color-mix(in oklab, var(--hp-primary, #e87020) 8%, #fff) !important;
}
@media (max-width: 900px) {
    body.hp-checkout-page .hp-checkout-progress {
        border-radius: 22px !important;
        padding: 4px 6px !important;
    }
    body.hp-checkout-page .hp-checkout-progress__step { padding: 6px 8px !important; }
}

/* --- P044-D Vertical spacing + Omniva dropdown ---------------------------- */
body.hp-checkout-page main.hp-main,
body.hp-checkout-page #sp-main-body {
    padding-top: 1rem !important;
}
body.hp-checkout-page .hp-checkout-progress {
    margin-top: 0.75rem !important;
    margin-bottom: 1rem !important;
}
/* Omniva locker dropdown scrollable */
body.hp-checkout-page .hp-omniva-picker__select,
body.hp-checkout-page select[name="hp_omniva_locker"] {
    max-height: 48px;
}
body.hp-checkout-page .hp-omniva-picker__select option {
    padding: 6px 8px;
}
/* Ensure native dropdown positioning doesn't get cut off - use position:relative wrapper */
body.hp-checkout-page .hp-omniva-picker { position: relative; }

/* --- P044-E Step 1 Back button — guarantee navigation to cart ------------- */
/* Even if template.js data-hp-step-back handler runs, the <a> href navigation
   should always resolve. This CSS just ensures visual affordance. */
body.hp-checkout-page .hp-checkout-shippings .hp-checkout-step-nav > a[data-hp-step-back] {
    text-decoration: none;
}

/* --- P044-F Customer data form grid (reinforcement of HP-P039) ------------ */
@media (min-width: 640px) {
    body.hp-checkout-page:not([data-hp-delivery-mode='courier']):not([data-hp-delivery-mode='courier-eu']) .hp-cust-fld--any {
        grid-column: 1 / -1 !important;
    }
}
body.hp-checkout-page #hp-checkout-customer input[type="text"],
body.hp-checkout-page #hp-checkout-customer input[type="email"],
body.hp-checkout-page #hp-checkout-customer input[type="tel"],
body.hp-checkout-page #hp-checkout-customer select {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
}

/* --- P044-G Confirmation confirm button size (reinforcement) -------------- */
@media (min-width: 900px) {
    body.hp-checkout-page #reviewform .hp-checkout-step-nav {
        justify-content: flex-end !important;
    }
    body.hp-checkout-page #reviewform .hp-btn.hp-btn--primary {
        max-width: 20rem !important;
        width: auto !important;
        min-width: 12rem !important;
        padding: 0.6rem 1.5rem !important;
    }
    body.hp-checkout-page #reviewform .hp-btn.hp-btn--outline {
        max-width: 12rem !important;
        width: auto !important;
    }
}

/* --- P044-H Payment tile brand strip: clean (no fake) -------------------- */
/* Owner rejected fake logos. Ensure only real /images/paypal.svg is shown. */
.hp-payment-tile__brand {
    display: flex !important;
    align-items: center;
    gap: 10px;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}
.hp-payment-tile__brand-img {
    height: 24px !important;
    width: auto !important;
    max-width: 120px;
    display: block;
    object-fit: contain;
}
.hp-payment-tile__brand-img--paypal {
    height: 22px !important;
    max-width: 92px;
}
/* Hide any legacy text chip classes so text placeholders never render. */
.hp-payment-tile__brand-item {
    display: none !important;
}

/* END HP-P044 */

/* ==========================================================================
 * HP-P109-BEGIN — product tab strip real container geometry + horizontal
 *                 thumbnail rail.
 *
 * (1) Tabs alignment.
 *     Owner reject of P108's `62rem` cap: the tab strip must share edges
 *     with the actual product-content container — the `.hp-product-detail`
 *     block above (gallery + info) which flows to the full inner width of
 *     the outer `.mx-auto.max-w-7xl.px-4` wrapper (≈1248 px at ≥1280 vp).
 *     P109 undoes both arbitrary 62rem caps so tab strip AND description
 *     panel align with `.hp-product-detail` above.
 *
 * (2) Thumbnail rail.
 *     `.hp-product-detail__thumbs` was a 4-column grid → 18-image Carly
 *     wrapped into 5 rows, ~370 px vertical. Convert to a single horizontal
 *     rail with `overflow-x: auto`, `scroll-snap-type: x mandatory`, fixed
 *     item basis, and CSS-only smooth momentum. Arrows (prev/next) are
 *     positioned absolutely and injected/toggled by the tiny scoped JS
 *     `HP-P109-thumbs-rail` block appended to the existing product-tabs
 *     script at the end of `product_default.php`. Arrows hide themselves
 *     when there's nothing to scroll and disable at the scroll edges.
 *     Existing `onclick="jshop.showImage(...)"` on each thumb button is
 *     untouched — main-image swap + Phoca lightbox continue to work.
 * ========================================================================== */

/* --- (1) tabs / description panel — align with real .hp-product-detail box */
body.hp-homev0-1 .hp-product-tabs-wrap {
    max-width: none;
    box-sizing: border-box;
}
body.hp-homev0-1 [data-tab-panel="description"] > div {
    max-width: none;
}

/* --- (2) horizontal thumbnail rail --- */

/* Prevent grid/flex ancestors from stretching to fit the rail's intrinsic width.
 * Without `min-width: 0` on the grid child (`.hp-product-detail__gallery` is a
 * child of the 2-column grid `.hp-product-detail`), the browser uses the flex
 * children's intrinsic size as the track's min-width and the whole gallery
 * column blows out to ~1800 px. `min-width: 0` on the grid child + on the
 * rail itself lets `overflow-x: auto` do its job. */
body.hp-homev0-1 .hp-product-detail__gallery { min-width: 0; }

body.hp-homev0-1 .hp-product-detail__thumbs {
    /* override the base 4-col grid at :59 without touching that historical rule */
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: var(--hp-space-3);
    overflow-x: auto;
    overflow-y: hidden;
    scroll-behavior: smooth;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
    padding: 0 2px 4px 2px;   /* small breathing room so the active border isn't clipped */
    margin-top: var(--hp-space-3);
    grid-template-columns: none;
    min-width: 0;
    max-width: 100%;
    width: 100%;
    box-sizing: border-box;
}
/* every thumbnail item: fixed square, doesn't shrink */
body.hp-homev0-1 .hp-product-detail__thumb {
    flex: 0 0 88px;
    width: 88px;
    height: 88px;
    scroll-snap-align: start;
    aspect-ratio: 1 / 1;
}
@media (max-width: 640px) {
    body.hp-homev0-1 .hp-product-detail__thumb { flex-basis: 76px; width: 76px; height: 76px; }
}
/* stronger visual for the active thumbnail */
body.hp-homev0-1 .hp-product-detail__thumb--active {
    outline: 2px solid var(--hp-primary);
    outline-offset: -2px;
    border-color: var(--hp-primary);
}
/* stable image inside the fixed frame */
body.hp-homev0-1 .hp-product-detail__thumb img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 0.5rem;
    display: block;
    margin: 0 auto;
}

/* rail wrapper the P109 JS wraps the thumbs into — provides relative positioning
 * for absolute arrow buttons. */
body.hp-homev0-1 .hp-product-detail__thumbs-rail {
    position: relative;
}
/* prev/next arrows: injected by scoped JS */
body.hp-homev0-1 .hp-product-detail__thumbs-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 28px;
    height: 44px;
    padding: 0;
    border: 1px solid var(--hp-border);
    border-radius: 6px;
    background: rgba(255,255,255,0.94);
    color: #4a3e2f;
    display: none;                 /* JS toggles to flex when overflow present */
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 3;
    transition: opacity 0.15s ease, background-color 0.15s ease;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
body.hp-homev0-1 .hp-product-detail__thumbs-arrow[data-hp-p109-visible="1"] { display: flex; }
body.hp-homev0-1 .hp-product-detail__thumbs-arrow[disabled] { opacity: 0.35; cursor: default; }
body.hp-homev0-1 .hp-product-detail__thumbs-arrow:hover:not([disabled]) { background: #fff; color: #1a1a1a; }
body.hp-homev0-1 .hp-product-detail__thumbs-arrow:focus-visible { outline: 2px solid var(--hp-primary); outline-offset: 2px; }
body.hp-homev0-1 .hp-product-detail__thumbs-arrow--prev { left: -4px; }
body.hp-homev0-1 .hp-product-detail__thumbs-arrow--next { right: -4px; }
body.hp-homev0-1 .hp-product-detail__thumbs-arrow svg { width: 14px; height: 14px; pointer-events: none; }
/* on touch widths hide the arrows — swipe is sufficient */
@media (hover: none) and (pointer: coarse) {
    body.hp-homev0-1 .hp-product-detail__thumbs-arrow { display: none !important; }
}

/* HP-P109-END */


/* --- Phase 114: footer seller line typography — must match regular footer text (added 2026-07-12) --- */
.hp-body footer .hp-footer-seller-line,
footer .hp-footer-seller-line {
  font-size: 0.875rem !important;
  line-height: 1.25rem !important;
  font-weight: 400 !important;
  color: var(--hp-text-secondary) !important;
  margin: 0 !important;
}

/* --- Phase 116: Diagnostic funnel tiles + article CTA buttons (added 2026-07-12) --- */

/* Tile becomes a flex column so the CTA can be pinned to the bottom, keeping
   card heights uniform even with different body-text lengths. */
.hp-body .hp-diag-usecase {
  display: flex !important;
  flex-direction: column;
  height: 100%;
}
.hp-body .hp-diag-usecase__body { flex: 1 1 auto; }

/* Title stays a heading; only the inner link is clickable. Kill inherited underline. */
.hp-body .hp-diag-usecase__title { margin: 0 0 0.35rem; }
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link,
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link:visited,
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link:hover,
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link:focus,
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link:focus-visible,
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link:active {
  color: inherit;
  text-decoration: none !important;
}
.hp-body .hp-diag-usecase__title .hp-diag-usecase__title-link:hover { color: var(--hp-primary); }

/* Per-tile CTA sits at the bottom, full width of the card. */
.hp-body .hp-diag-usecase__cta {
  margin-top: 0.85rem;
  width: 100%;
  min-height: 44px;
}

/* Article-page single CTA container: centered, real breathing room. */
.hp-body .hp-article-cta.hp-article-cta--single {
  margin: 2rem auto 0 auto;
  padding-top: 1.5rem;
  border-top: 1px solid var(--hp-border);
  text-align: center;
}
.hp-body .hp-article-cta.hp-article-cta--single h3,
.hp-body .hp-article-cta.hp-article-cta--single ul { display: none !important; }
.hp-body .hp-article-cta.hp-article-cta--single .hp-btn {
  min-width: 260px;
  max-width: 100%;
  padding-inline: var(--hp-space-7);
}
@media (max-width: 480px) {
  .hp-body .hp-article-cta.hp-article-cta--single .hp-btn { width: 100%; min-width: 0; }
}

/* Rock-solid button reset — ALL states get white bold text with no underline,
   pointer cursor, real 48px touch target on mobile. */
.hp-body .hp-btn.hp-btn--primary,
.hp-body .hp-btn.hp-btn--primary:visited,
.hp-body .hp-btn.hp-btn--primary:hover,
.hp-body .hp-btn.hp-btn--primary:focus,
.hp-body .hp-btn.hp-btn--primary:focus-visible,
.hp-body .hp-btn.hp-btn--primary:active,
.hp-body a.hp-btn.hp-btn--primary,
.hp-body a.hp-btn.hp-btn--primary:visited,
.hp-body a.hp-btn.hp-btn--primary:hover,
.hp-body a.hp-btn.hp-btn--primary:focus,
.hp-body a.hp-btn.hp-btn--primary:focus-visible,
.hp-body a.hp-btn.hp-btn--primary:active {
  text-decoration: none !important;
  color: var(--hp-primary-foreground, #ffffff) !important;
  font-weight: 600 !important;
  cursor: pointer;
  min-height: 44px;
}
.hp-body .hp-btn.hp-btn--primary:focus-visible {
  outline: 2px solid var(--hp-primary, #e87020);
  outline-offset: 2px;
}
.hp-body .hp-btn.hp-btn--primary:active { transform: translateY(1px); }
.hp-body .hp-btn__arrow { display: inline-block; margin-left: 0.35rem; font-weight: 400; }
.hp-body .hp-btn__label { display: inline-block; }

/* On mobile the article CTA should reach full width for easy tapping. */
@media (max-width: 480px) {
  .hp-body .hp-diag-usecase__cta,
  .hp-body .hp-article-cta.hp-article-cta--single .hp-btn { min-height: 48px; }
}

/* Disable the old whole-card hover accent — we now have a proper CTA button */
.hp-body .hp-diag-usecase:hover .hp-diag-usecase__title-link { color: var(--hp-primary); }

/* --- Phase 116 patch: fix underline (body may not carry hp-body class) --- */
.hp-btn.hp-btn--primary,
.hp-btn.hp-btn--primary:visited,
.hp-btn.hp-btn--primary:hover,
.hp-btn.hp-btn--primary:focus,
.hp-btn.hp-btn--primary:focus-visible,
.hp-btn.hp-btn--primary:active,
a.hp-btn.hp-btn--primary,
a.hp-btn.hp-btn--primary:visited,
a.hp-btn.hp-btn--primary:hover,
a.hp-btn.hp-btn--primary:focus,
a.hp-btn.hp-btn--primary:focus-visible,
a.hp-btn.hp-btn--primary:active,
.hp-article__body a.hp-btn.hp-btn--primary,
.hp-article__body a.hp-btn.hp-btn--primary:hover,
.hp-article__body a.hp-btn.hp-btn--primary:focus,
.hp-article__body a.hp-btn.hp-btn--primary:visited,
.hp-article__body a.hp-btn.hp-btn--primary:active {
  text-decoration: none !important;
  color: #ffffff !important;
  font-weight: 600 !important;
  cursor: pointer;
}
.hp-article__body a.hp-btn.hp-btn--primary:hover {
  background: var(--hp-primary-hover, #d95f18) !important;
  color: #ffffff !important;
}
a.hp-btn.hp-btn--primary:focus-visible {
  outline: 2px solid var(--hp-primary, #e87020);
  outline-offset: 2px;
}

/* =====================================================================
 * HP-122 CART SUMMARY EQUAL HEIGHT + HP-121 FOOTER TYPOGRAPHY (2026-07-13)
 *
 * Two independent concerns:
 *
 *   [A] CART (HP-122, supersedes HP-121 [A]): right summary card MUST
 *       equal-height the left product list for 1 / 2 / 3 / 5 items on
 *       desktop. ZIP 121 solved the 1-item case with a "left column as
 *       canvas" trick and INTENTIONALLY left the summary short for 2+
 *       items via `align-items: start` — owner rejected that reasoning.
 *       HP-122 uses grid-template-areas:
 *           "products summary"
 *           "actions  ."
 *       Row 1 stretches (align-items:stretch) so the summary card fills
 *       the full height of the products column; the actions row (Update /
 *       Continue / Clear) sits on grid row 2 and does NOT inflate the
 *       summary. Summary internal layout uses margin-top:auto on the CTA
 *       block so subtotal + checkout button snap to the bottom of the
 *       stretched card. cart.php was restructured so the actions row is
 *       a sibling of the products+summary — see cart.php HP-122 comment.
 *       No fixed heights, no negative margins, no JS, no hidden spacers.
 *
 *   [B] FOOTER: One consistent typography across every footer text node.
 *       The template's footer uses Tailwind utility classes
 *       (text-sm / text-xs / text-muted-foreground / text-muted-text)
 *       giving column links 14px but copyright + service line 12px, while
 *       the legal line .hp-footer-seller-line was pushed to 14px by the
 *       Phase-114 append — making it visibly LARGER than the copyright
 *       and service line around it. Owner: legal line MUST NOT be larger
 *       than the surrounding footer text; copyright and service line MUST
 *       match; and column headings may only differ in weight (not size).
 *       Standard: 14px / 1.5 / 400 / rgb(107 91 66) across every footer
 *       text node except headings (which stay 14px but weight 600). The
 *       global rules below use footer as the scope so they apply to every
 *       page that includes the site footer (home / categories / product /
 *       cart / contacts / info / all langs).
 * ===================================================================== */

/* ---------- [A] HP-122 CART SUMMARY EQUAL HEIGHT (2026-07-13) ---------- */

/* Base: grid children must never overflow (long product names, mobile). */
.hp-cart-wrap .hp-cart-grid { min-width: 0; }
.hp-cart-wrap .hp-cart-grid > * { min-width: 0; }

/* Desktop (>=1024px): grid-template-areas layout.
 *   Row 1: products (left, stretchable) | summary (right, stretchable)
 *   Row 2: actions  (left, natural)     | .       (empty)
 *
 * The Tailwind utility `lg:grid-cols-[1fr_360px]` gives us the columns;
 * grid-template-rows uses `auto auto` so row 1 grows with content and
 * row 2 hugs its buttons. align-items:stretch on the grid makes the
 * summary card in row 1 fill the full height of the products cell.
 *
 * Selectors ONLY inside .hp-cart-wrap .hp-cart-grid so they cannot leak
 * to any other page's .grid. */
@media (min-width: 1024px) {
  .hp-cart-wrap .hp-cart-grid {
    display: grid;
    grid-template-columns: 1fr 360px;
    grid-template-rows: auto auto;
    grid-template-areas:
      "products summary"
      "actions  ."
      "descr    .";
    align-items: stretch;
    row-gap: 1rem;
  }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-products { grid-area: products; }
  .hp-cart-wrap .hp-cart-grid > aside              { grid-area: summary; }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-actions   { grid-area: actions; }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-descr     { grid-area: descr; }

  /* aside on desktop must NOT be sticky in HP-122 — sticky and equal-
   * height are mutually exclusive when summary >= viewport. Priority
   * order (per brief §STICKY): height equality wins over sticky. */
  .hp-cart-wrap .hp-cart-grid > aside {
    position: static;
    align-self: stretch;
    height: 100%;
    display: flex;
    flex-direction: column;
  }

  /* Summary card fills the aside cell top-to-bottom. Internal flex
   * column lets the "total + checkout" group snap to the bottom via
   * margin-top:auto — no filler text, no hidden spacers. */
  .hp-cart-wrap .hp-cart-grid > aside > .hp-cart-summary {
    height: 100%;
    min-height: 100%;
    display: flex;
    flex-direction: column;
  }
  .hp-cart-wrap .hp-cart-grid > aside > .hp-cart-summary > .hp-cart-summary__total,
  .hp-cart-wrap .hp-cart-grid > aside > .hp-cart-summary > .hp-btn--primary {
    /* first of the bottom group gets the auto margin */
  }
  .hp-cart-wrap .hp-cart-grid > aside > .hp-cart-summary > .hp-cart-summary__total {
    margin-top: auto;
  }

  /* Products column: stretches to fill row 1 height. Uses flex-column
   * so a single product card can grow to match the summary's height
   * (multi-item cases already reach parity naturally). Tailwind
   * .space-y-4 margin-top-based gap becomes noop under flex, so we
   * add row-gap manually. */
  .hp-cart-wrap .hp-cart-grid > .hp-cart-products {
    align-self: stretch;
    display: flex;
    flex-direction: column;
    row-gap: 1rem;
  }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-products > .hp-cart-line {
    margin: 0;                 /* neutralise .space-y-4 residual margin */
    flex: 1 1 auto;            /* 1-item: card grows to fill cell height */
  }
  /* Multi-item: only the LAST card grows so mid-column padding stays
   * natural — prevents oversized top card + tiny bottom card. */
  .hp-cart-wrap .hp-cart-grid > .hp-cart-products:has(.hp-cart-line + .hp-cart-line) > .hp-cart-line {
    flex: 0 0 auto;
  }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-products:has(.hp-cart-line + .hp-cart-line) > .hp-cart-line:last-of-type {
    flex: 1 1 auto;
  }

  /* Actions row sits below on grid row 2 with a small top offset so it
   * visually separates from the flush products/summary row above. */
  .hp-cart-wrap .hp-cart-grid > .hp-cart-actions {
    padding-top: 0.25rem;
  }
}

/* Mobile / tablet (<1024px): single column, product order:
 *   products → actions → summary → (cart descr, if any)
 * Grid-template-areas keeps this deterministic regardless of DOM order. */
@media (max-width: 1023px) {
  .hp-cart-wrap .hp-cart-grid {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-areas:
      "products"
      "actions"
      "summary"
      "descr";
    row-gap: 1rem;
  }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-products { grid-area: products; }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-actions  { grid-area: actions; }
  .hp-cart-wrap .hp-cart-grid > aside             { grid-area: summary; }
  .hp-cart-wrap .hp-cart-grid > .hp-cart-descr    { grid-area: descr; }

  .hp-cart-wrap .hp-cart-grid > aside {
    position: static;
    width: 100%;
  }
  .hp-cart-wrap .hp-cart-summary,
  .hp-cart-wrap .hp-cart-line { max-width: 100%; }
  .hp-cart-wrap .hp-cart-line__title { word-break: break-word; overflow-wrap: anywhere; }
}

/* Never allow horizontal scroll from cart on any viewport */
.hp-cart-wrap { max-width: 100%; overflow-x: clip; }


/* ---------- [B] GLOBAL FOOTER TYPOGRAPHY ---------- */

/* Overrides ZIP 115's Phase-114 rule (which set legal line to 14px but
 * left copyright & service line at their 12px Tailwind default) —
 * making legal line visibly LARGER than surrounding text. Root cause:
 * the .hp-footer-seller-line sits inside a Tailwind `text-xs` (12px)
 * wrapper, but the earlier append forced it to 0.875rem (14px) with
 * !important, which won on specificity.
 *
 * New standard: unify EVERY footer text node to a single 14px / 1.5 /
 * 400 / rgb(107 91 66) — including copyright and service line (bumped
 * from 12px to 14px). Column headings stay 14px but keep weight 600.
 * Applied globally via `footer` scope so every page/lang inherits. */

/* Reset base for every footer text descendant. Uses `footer` (element
 * selector) — matches the single <footer> tag rendered by the template
 * on every page. Weight 400 by default; headings + labels re-declare
 * their weight below. */
footer p,
footer li,
footer a,
footer span,
footer h4,
footer .hp-footer-seller-line,
footer .text-xs,
footer .text-sm,
footer .text-muted-foreground,
footer .text-muted-text {
  font-family: inherit;
  font-size: 14px;
  line-height: 1.5;
  font-weight: 400;
  color: rgb(107 91 66);
}

/* Column headings: same 14px but slightly heavier (600) to keep the
 * visual hierarchy the owner already has. Foreground darker for the
 * title feel. */
footer h4 {
  font-weight: 600 !important;
  color: rgb(45 36 22) !important;
}

/* Legal strip: exactly the same size as everything else — no bump.
 * `!important` used only because prior Phase-114 rule also used it
 * with equal or higher specificity — this must win regardless. */
footer .hp-footer-seller-line {
  font-size: 14px !important;
  line-height: 1.5 !important;
  font-weight: 400 !important;
  color: rgb(107 91 66) !important;
  margin: 0 !important;
}

/* Copyright + service bottom strip — both live inside a wrapper that
 * Tailwind set to text-xs (12px). Force them to the unified 14px too. */
footer .border-t .text-xs,
footer .border-t .text-xs p {
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: rgb(107 91 66) !important;
}

/* Logo lockup in footer (HIDPLANET.LV wordmark) — leave alone, brand
 * type is intentional and lives in .hp-logo-text-- rules above. */

/* END HP-122 CART EQUAL HEIGHT + HP-121 FOOTER 20260713 */


/* =====================================================================
 * HP-123 MOBILE PRODUCT CARDS ALIGNMENT (2026-07-13)
 *
 * Goal: guarantee — as a hardened invariant at the end of the cascade —
 * that every `.hp-product-card` in the same grid row is visually
 * identical in height and vertical rhythm regardless of image size,
 * title length, badge presence, price length, or CTA label length.
 *
 * Scope: `.hp-product-card` only. Never touches cart, checkout, footer,
 * header, product-detail, section hubs, or subcat hubs.
 *
 * Why append instead of edit-in-place: the current cascade has grown
 * organically across ~12 phases (P021 → P099) and the existing rules
 * already deliver 0 px alignment delta on live categories as of
 * ZIP 122 baseline. This block reasserts the invariants as the last
 * source-order rules so:
 *   - future phases cannot silently regress alignment,
 *   - a single grep-able block documents the working contract,
 *   - HP-121 (footer) and HP-122 (cart) blocks stay byte-identical.
 *
 * Root cause of the historical "misalignment" fear: variable content
 * (title lines, badge presence, wrap of long CTA labels) creates
 * different natural card heights. The invariants below prevent that
 * by reserving fixed vertical rhythm slots for title / badge / price /
 * button, letting the grid parent's `align-items: stretch` (default)
 * do the row-equal-height work — no JS, no fixed card height, no
 * spacer divs, no negative margins.
 *
 * Layout contract this block enforces:
 *   [grid parent]  display: grid + align-items: stretch (implicit)
 *   .hp-product-card                display:flex + flex-direction:column
 *      .hp-product-card__image-wrap aspect-ratio:1/1
 *      .hp-product-card__body       flex:1 (fills remaining space)
 *         .hp-product-card__title   min/max-height clamped (2 lines >=481, 3 lines <=480)
 *         .hp-product-card__footer  margin-top:auto (pinned bottom)
 *            .hp-product-card__meta-row  reserved-height slot
 *               .hp-product-card__stock  fixed line
 *               .hp-product-card__price  fixed line
 *            .hp-btn                  min-height:44px, wraps to 2 lines if long
 *
 * Preserves earlier phases:
 *   - P088 photo well white bg + rgba border-bottom
 *   - P098 CTA wrap-to-2-lines <=480
 *   - P098 title 3-line clamp <=480
 *   - P099 meta-row stacked (badge on line 1, price on line 2) <=480
 *   - HP-121 footer typography (untouched)
 *   - HP-122 cart summary equal-height (untouched)
 * ===================================================================== */

/* ---------- [1] Grid parent — 2 cols on mobile 360..640, gap safety ---------- */
/* Base grid rule (already at file line ~200) uses auto-fill minmax(150px,1fr)
 * <=480, minmax(240px,1fr) at >=481. We keep that but add safety: at 320
 * viewport the intrinsic minmax(150px,1fr) with 8px gap gives 2 cols only
 * if inner width >= 308 px. On very narrow phones (320 px, inner ~288 px)
 * this falls back to 1 col — which the brief explicitly allows. This
 * block does not touch the grid template. */
.hp-product-grid,
#comjshop_list_product,
.hp-category-products .grid {
  /* Belt-and-suspenders: never allow horizontal overflow from the grid */
  min-width: 0 !important;
  max-width: 100% !important;
}
.hp-product-grid > *,
#comjshop_list_product > *,
.hp-category-products .grid > * {
  min-width: 0 !important;  /* prevents grid items from expanding on long words */
}

/* ---------- [2] Card wrapper — flex column, stretch to row height ---------- */
.hp-product-card {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;       /* stretches to row height (grid default align:stretch) */
  min-height: 0 !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  overflow: hidden !important;   /* keeps rounded-corner clip clean */
}

/* ---------- [3] Image well — fixed aspect-ratio, contain, no crop ---------- */
.hp-product-card__image-wrap,
a.hp-product-card__image-wrap {
  aspect-ratio: 1 / 1 !important;
  flex: 0 0 auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: relative !important;
  box-sizing: border-box !important;
}
.hp-product-card__image {
  max-width: 100% !important;
  max-height: 100% !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
}

/* ---------- [4] Body — grows to fill vertical space, flex column ---------- */
.hp-product-card__body {
  display: flex !important;
  flex: 1 1 auto !important;
  flex-direction: column !important;
  min-width: 0 !important;
  min-height: 0 !important;
}

/* ---------- [5] Title — 2-line clamp on desktop / tablet, 3-line on <=480 ---------- */
/* Height reservation ensures cards with a 1-line title use the same space
 * as cards with a 2-line title in the same row — no jump. */
.hp-product-card__title {
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  word-break: normal !important;
  overflow-wrap: anywhere !important;
  hyphens: none !important;
  min-height: 2.56em !important;  /* 2 * 1.28 line-height */
  max-height: 2.56em !important;
}
@media (max-width: 480px) {
  .hp-product-card .hp-product-card__title {
    -webkit-line-clamp: 3 !important;
    min-height: 3.84em !important;  /* 3 * 1.28 line-height */
    max-height: 3.84em !important;
  }
}

/* ---------- [6] Footer — pinned to bottom via margin-top:auto ---------- */
.hp-product-card__footer {
  margin-top: auto !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0.55rem !important;
  padding: 0.55rem 0 0 !important;
  border-top: 0 !important;
}

/* ---------- [7] Meta row — reserved-height slot for badge + price ---------- */
/* On >=481 the meta-row is a horizontal band (badge left, price right).
 * On <=480 P099 already stacks it (badge line 1, price line 2). Both
 * variants reserve enough vertical space so the CTA below sits at the
 * same y coordinate on every card in the row. */
.hp-product-card__meta-row {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 0.5rem !important;
  min-width: 0 !important;
  min-height: 1.8rem !important;   /* reserves badge slot even if absent */
}
/* Guarantee the meta-row exists even if the stock badge markup is
 * missing (defensive — the current template always renders a badge,
 * but templates evolve). */
.hp-product-card__footer:not(:has(.hp-product-card__meta-row))::before {
  content: "";
  display: block;
  min-height: 1.8rem;
}

/* ---------- [8] Stock badge — no truncation, uniform line height ---------- */
.hp-product-card .hp-stock-badge {
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none !important;
  line-height: 1 !important;
  display: inline-flex !important;
  align-items: center !important;
}

/* ---------- [9] Price — uniform size/weight, right-aligned, no wrap ---------- */
.hp-product-card__price-block {
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-end !important;
  margin-left: auto !important;
  flex: 0 0 auto !important;
  min-width: 0 !important;
}
.hp-product-card__price {
  white-space: nowrap !important;
  line-height: 1 !important;
}

/* ---------- [10] CTA button — full-width, min 44 px touch, wrap up to 2 lines ---------- */
/* Base button (desktop / tablet): single-line with nowrap. On mobile
 * (<=480) the button wraps to 2 lines so long localised labels don't
 * clip — P098 already establishes this and we reassert here so nothing
 * downstream can regress it. */
.hp-product-card__footer .hp-btn,
.hp-product-card__footer .hp-btn--primary,
.hp-product-card__footer .hp-btn--outline,
.hp-product-card__footer .hp-btn--sm,
.hp-product-card__footer .hp-btn--block {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 100% !important;
  min-height: 44px !important;    /* WCAG touch target on every viewport */
  padding: 0 1rem !important;
  border-radius: 8px !important;
  font-weight: 600 !important;
  line-height: 1.1 !important;
  text-align: center !important;
  text-decoration: none !important;
  cursor: pointer !important;
  box-sizing: border-box !important;
  /* Desktop / tablet: nowrap + ellipsis fallback for extremely long strings */
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  /* Height cap so 1-line button = 2-line wrapped button in the same row.
   * With min-height 44px + max-height 3.4rem (~54 px) the difference is
   * <=10 px and grid stretch equalises the whole card. */
  height: auto !important;
  max-height: 3.4rem !important;
}
/* Mobile <=480: allow wrap to 2 lines so full localised label reads */
@media (max-width: 480px) {
  .hp-product-card .hp-product-card__footer .hp-btn,
  .hp-product-card .hp-product-card__footer .hp-btn--primary,
  .hp-product-card .hp-product-card__footer .hp-btn--outline,
  .hp-product-card .hp-product-card__footer .hp-btn--sm,
  .hp-product-card .hp-product-card__footer .hp-btn--block {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    padding: 0.35rem 0.55rem !important;
    letter-spacing: -0.005em !important;
    /* height auto + min-height 44px + max-height 3.4rem preserves visual
     * parity between short "Grozā" and long "Izvēlēties komplektāciju"
     * — both cards remain the same total height because the grid parent
     * stretches to the tallest card and every card fills 100% via
     * .hp-product-card { height: 100% }. */
  }
}

/* ---------- [11] Ensure clickable, hover / focus / active states ---------- */
.hp-product-card__footer .hp-btn:hover,
.hp-product-card__footer .hp-btn--primary:hover {
  filter: brightness(0.96);
}
.hp-product-card__footer .hp-btn:active,
.hp-product-card__footer .hp-btn--primary:active {
  transform: translateY(1px);
}
.hp-product-card__footer .hp-btn:focus-visible,
.hp-product-card__footer .hp-btn--primary:focus-visible {
  outline: 2px solid var(--hp-primary, #e87020) !important;
  outline-offset: 2px !important;
}

/* END HP-123 MOBILE PRODUCT CARDS 20260713 */

/* =====================================================================
 * HP-125 REAL FIX — MOBILE PRODUCT CARD CTA + COMPACT TILE SCALE-UP
 * Timestamp: 2026-07-13 (ZIP 125 — supersedes invisible ZIP 123 attempts)
 *
 * ROOT CAUSE of ZIP 123 invisibility (proven from live CDP inspection):
 *   The prior HP-123 block used selectors like `.hp-product-card .hp-btn`
 *   (specificity 0,2,0) but the LIVE cascade already contains
 *   `body.hp-homev0-1 .hp-product-card__footer .hp-btn { height:2.35rem
 *   !important; min-height:2.35rem !important }` at higher specificity
 *   (0,4,0). CSS !important does NOT break the specificity tie — the
 *   higher-specificity !important always wins. Result: HP-123 declared
 *   min-height:44px but computed height stayed at 37.59px on real live.
 *   Root cause of tile "smallness": `body.hp-homev0-1 .hp-hero-mini__v0
 *   iconholder { width:2.25rem !important }` etc. Same fix pattern —
 *   match the body-class scope and go one step deeper in the chain.
 *
 * FIX STRATEGY:
 *   Chain a chained body-class selector plus `.hp-hero-mini` /
 *   `.hp-product-card` for specificity (0,3,1) or (0,3,2), then !important.
 *   This decisively beats every prior rule.
 *
 *   Confirmed body class on hidplanet.lv/*:
 *     body.font-sans.antialiased.bg-background.text-foreground
 *          .hp-stage-cookie-off.hp-heroeqv-4.hp-homev0-1
 *   We use `body.hp-homev0-1` + `body.hp-heroeqv-4.hp-homev0-1` chains.
 *
 *   Preserves earlier phases:
 *     - HP-121 footer typography (untouched)
 *     - HP-122 cart summary equal-height (untouched)
 *     - HP-123 grid/card/title/badge/price rules (kept; only CTA fixed)
 * ===================================================================== */

/* ---------- [P125-A] Product-card CTA button — finger-friendly on mobile ----------
 * Beats: body.hp-homev0-1 .hp-product-card__footer .hp-btn {height:2.35rem!important}
 * Specificity of winner: (0,4,0). We use (0,4,1) via body.hp-homev0-1.hp-heroeqv-4
 * chained selector so we outrank without needing to touch the losing rule. */

body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary,
body.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn,
body.hp-homev0-1 .hp-product-card .hp-product-card__footer button.hp-btn,
body.hp-homev0-1 .hp-product-card .hp-product-card__footer .addtocart,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card__footer .hp-btn,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card__footer .hp-btn--primary {
  /* Height rules — the winning legacy rule sets height:2.35rem !important which
   * clamps the button. We must set height:auto + min-height so wrapping works. */
  height: auto !important;
  min-height: 44px !important;
  line-height: 1.15 !important;
  padding: 0.5rem 0.8rem !important;
  font-size: 0.85rem !important;
  font-weight: 600 !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 100% !important;
  gap: 0.4rem !important;
  text-align: center !important;
  border-radius: 8px !important;
  box-sizing: border-box !important;
}

/* Desktop: cap the visual height slightly so 44 doesn't look enormous at 1440.
 * min-height stays 44 for touch, natural height ~44 when label single line. */
@media (min-width: 641px) {
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card__footer .hp-btn {
    min-height: 44px !important;
    font-size: 0.85rem !important;
    padding: 0.5rem 0.9rem !important;
  }
}
@media (max-width: 480px) {
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card__footer .hp-btn {
    min-height: 44px !important;
    font-size: 0.82rem !important;
    padding: 0.55rem 0.6rem !important;
    letter-spacing: -0.005em !important;
  }
}

/* ---------- [P125-B] Compact hero-mini v0 — scale-up WITHIN same outer tile ----------
 *
 * Currently visible v0 layout is the one active under body.hp-homev0-1.hp-heroeqv-4.
 * Outer tile: 269.8 x 90.4 px (desktop). MUST NOT CHANGE. Owner brief:
 *   "INCREASE the internal scale (image, title, count, arrow, click area)
 *    WITHOUT changing the outer card size."
 *
 * Constraints we do not touch:
 *   - .hp-hero-mini padding, gap, min-height, height (outer geometry)
 *   - .hp-hero-mini--primary background
 *   - Grid/parent layout
 *
 * Icon holder: 36 -> 56 px (fills nearly all tile height, minus ~8px padding).
 * Icon svg:    22.4 -> 40 px.
 * Title:       0.87rem -> 1.0625rem (~+22%) — keeps 1-2 lines even with LT/DE.
 * Sub-count:   0.66rem -> 0.82rem (~+24%).
 * Arrow chevron: bare 12.8x15.2 SVG -> 34x34 circular button + arrow 18x18.
 *
 * Winner selectors chained: `body.hp-homev0-1 .hp-hero-mini__v0*` (0,3,0) —
 * we use `body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0*`
 * (0,4,1) so no !important war needed. */

body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0wrap {
  gap: 0.7rem !important;
  align-items: center !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
}

/* Icon holder — grow to occupy most of tile height (tile is ~90 px tall, padding 8+8 = 16, so up to ~74 px). */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
  width: 3.5rem !important;     /* 56 px */
  height: 3.5rem !important;    /* 56 px */
  min-width: 3.5rem !important;
  border-radius: 14px !important;
  padding: 6px !important;
  background: #FFE8D8 !important;
  border: 1px solid color-mix(in oklab, #F06B1A 22%, transparent) !important;
  flex: 0 0 auto !important;
  align-self: center !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0iconholder {
  background: color-mix(in oklab, #FFE8D8 82%, #F06B1A 18%) !important;
}
/* Icon svg inside the holder */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
  width: 2.5rem !important;    /* 40 px */
  height: 2.5rem !important;
  display: block !important;
  object-fit: contain !important;
}

/* Body text zone — takes the middle of the tile */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0body {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 0.08rem !important;
  overflow: hidden !important;
  padding-right: 0.15rem !important;
}

/* Title (brand name) — bigger, still 1 line desktop, up to 2 lines mobile */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0title,
body.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0title {
  font-size: 1.0625rem !important;   /* 17px — was 13.9px, +22% */
  font-weight: 700 !important;
  color: #2b241c !important;
  letter-spacing: -0.01em !important;
  line-height: 1.15 !important;
  margin: 0 !important;
  padding: 0 !important;
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  word-break: normal !important;
}

/* Sub-line (count / description) — bigger + brand-orange for the count keyword */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0sub,
body.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0sub {
  font-size: 0.82rem !important;      /* 13.1px — was 10.6px, +24% */
  color: #6b5f4d !important;
  line-height: 1.25 !important;
  margin-top: 0.08rem !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 1 !important;
  -webkit-box-orient: vertical !important;
}

/* Chip pills below sub-line — proportional bump */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
  gap: 0.28rem !important;
  margin-top: 0.28rem !important;
  overflow: hidden !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
  font-size: 0.66rem !important;
  padding: 0.08rem 0.42rem !important;
  border-radius: 6px !important;
}

/* Circular arrow button on the right — round, filled, larger tap target */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 2.125rem !important;   /* 34px round circle */
  height: 2.125rem !important;
  min-width: 2.125rem !important;
  border-radius: 9999px !important;
  background: #FFE8D8 !important;
  color: #b34b0f !important;
  flex: 0 0 auto !important;
  align-self: center !important;
  transition: background 200ms ease, color 200ms ease, transform 200ms ease !important;
  border: 1px solid color-mix(in oklab, #F06B1A 18%, transparent) !important;
  box-shadow: 0 1px 2px -1px rgba(179, 75, 15, 0.15);
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron svg {
  width: 1.125rem !important;   /* 18px arrow */
  height: 1.125rem !important;
  stroke-width: 2.25 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0chevron {
  background: #F06B1A !important;
  color: #ffffff !important;
  transform: translateX(3px) !important;
  border-color: transparent !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:focus-visible .hp-hero-mini__v0chevron {
  outline: 2px solid #F06B1A !important;
  outline-offset: 2px !important;
}

/* Mobile — outer tile is narrower so proportions get slightly tighter, keep readability */
@media (max-width: 640px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    width: 3rem !important;      /* 48px */
    height: 3rem !important;
    min-width: 3rem !important;
    border-radius: 12px !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 2.1rem !important;
    height: 2.1rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0title {
    font-size: 1rem !important;
    -webkit-line-clamp: 2 !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0sub {
    font-size: 0.78rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron {
    width: 2rem !important;
    height: 2rem !important;
    min-width: 2rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron svg {
    width: 1rem !important;
    height: 1rem !important;
  }
}

@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    width: 2.75rem !important;   /* 44px */
    height: 2.75rem !important;
    min-width: 2.75rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 1.9rem !important;
    height: 1.9rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0title {
    font-size: 0.95rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0sub {
    font-size: 0.75rem !important;
  }
}

/* Increase click area of the tile anchor (already the whole tile is a link).
 * No change to outer geometry — just ensure tap-in-tile always triggers navigation. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini {
  cursor: pointer !important;
  -webkit-tap-highlight-color: rgba(240, 107, 26, 0.15) !important;
}

/* END HP-125 REAL FIX 20260713 */


/* =====================================================================
 * HP-126 CATEGORY TILES + PRODUCT CTA — CONSOLIDATED CLEAN FIX (2026-07-13)
 *
 * Supersedes:
 *   - HP-123 [10] product-card CTA rules — max-height 3.4rem allowed 2-line
 *     wrapping to expand the button to ~49.25 px on mobile while 1-line
 *     buttons stayed at 44 px. Variance 5.25 px → FAIL.
 *   - HP-125 [P125-A] product-card CTA rules — same problem, min-height 44
 *     + height:auto lets 2-line labels stretch. Kept the intent but pin
 *     the height instead of letting content push it.
 *   - HP-125 [P125-B] .hp-hero-mini scale-up — WRONG TARGET for the
 *     "compact subcategory tile on /ru/diagnostics". .hp-hero-mini lives
 *     on the HOMEPAGE, not on /ru/diagnostics. The tiles owner reported
 *     small on /ru/diagnostics are `.hp-subcat-hub__tile--compact`.
 *     HP-125 [P125-B] is HARMLESS on /ru/diagnostics (selector doesn't
 *     match) so we leave it in place — it still scales up the homepage
 *     hero-mini tiles which is desired. But we ALSO add the correct
 *     scale-up here targeting the real component.
 *
 * Preserves:
 *   - HP-121 footer typography (untouched)
 *   - HP-122 cart summary equal-height (untouched)
 *   - HP-123 [1..9,11] product-card layout invariants (untouched — only
 *     the CTA [10] rules are superseded by this block via specificity)
 *   - HP-125 [P125-B] homepage .hp-hero-mini scale-up (untouched)
 *
 * Specificity strategy:
 *   - Winning legacy CTA rule is (0,4,0) — we use
 *     `body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn`
 *     = (0,5,1) so we outrank without an !important war.
 *   - For .hp-subcat-hub__tile--compact we use
 *     `body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile--compact ...`
 *     = (0,3,X) which beats the last-source-order Phase 32 rules
 *     (0,1,X or 0,2,X) at higher specificity — no !important needed for
 *     most declarations. Where prior !important rules exist we match
 *     with !important on our higher-specificity selectors.
 *
 * Root-cause of ZIP 125 mismatch documented in
 *   HP-126 zip → 01_ROOT_CAUSE_125_MISMATCH.md
 * ===================================================================== */

/* ---------- [HP-126 A] Compact subcategory tile scale-up ---------------- */
/* Outer tile 303 x 92 px (desktop) / 358 x 82 px (mobile 390) — MUST NOT
 * CHANGE. We scale up ONLY internal composition: thumb 60→80, image
 * 46→~70, title 14.8→~17, count 12→~14, arrow 29.8→~40. */

/* Tile: preserve original outer geometry (min-height 92 desktop / 82 mobile,
 * padding 13.6/16 desktop) — ONLY internal composition scales up. */
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact {
  gap: 0.75rem !important;
  padding: 0.85rem 1rem !important;      /* 13.6px 16px — same as before HP-126 */
  align-items: center !important;
  min-height: 92px !important;
  max-height: 92px !important;
  overflow: hidden !important;
}

/* Thumbnail wrapper — bigger left visual (64x64 fits inside 92 - 27.2 padding = 64.8) */
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .hp-subcat-hub__thumb {
  width: 64px !important;
  height: 64px !important;
  min-width: 64px !important;
  flex: 0 0 64px !important;
  padding: 2px !important;
  border-radius: 12px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
}
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .hp-subcat-hub__thumb img {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  padding: 0 !important;
  object-fit: contain !important;
  display: block !important;
}

/* Title — bigger, still 2-line clamp for long DE / LT / ET names */
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact h3,
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .min-w-0 h3 {
  font-size: 1.0625rem !important;  /* 17px — was 14.8px, +15% */
  font-weight: 700 !important;
  line-height: 1.18 !important;
  color: #1a1a1a !important;
  letter-spacing: -0.005em !important;
  margin: 0 !important;
  padding: 0 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  word-break: normal !important;
  overflow-wrap: anywhere !important;
}

/* Count — bigger, brand-orange, tighter gap from title */
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .hp-subcat-hub__count,
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact p.hp-subcat-hub__count {
  font-size: 0.875rem !important;   /* 14px — was 12px, +17% */
  font-weight: 600 !important;
  color: #b34b0f !important;
  line-height: 1.25 !important;
  margin: 3px 0 0 !important;
  letter-spacing: 0.01em !important;
}

/* Body zone — vertical center in tile height */
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .min-w-0 {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
}

/* Arrow — bigger circular pale-orange button, brighter glyph
 * Total outer diameter ~ 40 px (fits within 64 px thumb-defined tile height) */
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact > svg:last-child,
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact svg.size-4 {
  box-sizing: content-box !important;
  width: 1.15rem !important;      /* 18.4 px icon — was 14.4 px, +28% */
  height: 1.15rem !important;
  padding: 0.55rem !important;     /* 8.8 * 2 = 17.6 → outer ~ 36 px + border 2 = 38 */
  background-color: rgba(255, 232, 216, 0.85) !important;
  border-radius: 9999px !important;
  color: #b34b0f !important;
  border: 1px solid rgba(179, 75, 15, 0.14) !important;
  flex: 0 0 auto !important;
  align-self: center !important;
  transition: background-color 0.18s ease, transform 0.18s ease, color 0.18s ease, border-color 0.18s ease !important;
  stroke-width: 2.25 !important;
}
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact:hover > svg:last-child,
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact:hover svg.size-4 {
  background-color: #F06B1A !important;
  color: #ffffff !important;
  border-color: transparent !important;
  transform: translateX(2px) !important;
}
body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact:focus-visible > svg:last-child {
  outline: 2px solid #F06B1A !important;
  outline-offset: 2px !important;
}

/* Mobile ≤ 640: outer tile 358x82. Preserve tile height at 82. */
@media (max-width: 640px) {
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact {
    gap: 0.65rem !important;
    padding: 0.7rem 0.85rem !important;   /* 11.2px 13.6px — same as before */
    min-height: 82px !important;
    max-height: 82px !important;
  }
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .hp-subcat-hub__thumb {
    width: 60px !important;
    height: 60px !important;
    min-width: 60px !important;
    flex: 0 0 60px !important;
    padding: 2px !important;
  }
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact h3,
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .min-w-0 h3 {
    font-size: 1rem !important;    /* 16 px */
    line-height: 1.15 !important;
  }
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .hp-subcat-hub__count {
    font-size: 0.8125rem !important; /* 13 px */
  }
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact > svg:last-child,
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact svg.size-4 {
    width: 1rem !important;
    height: 1rem !important;
    padding: 0.5rem !important;
  }
}

/* Very narrow phones ≤ 360 */
@media (max-width: 360px) {
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact .hp-subcat-hub__thumb {
    width: 54px !important;
    height: 54px !important;
    min-width: 54px !important;
    flex: 0 0 54px !important;
  }
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact h3 {
    font-size: 0.95rem !important;
  }
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact {
    padding: 0.6rem 0.7rem !important;
  }
}

/* ---------- [HP-126 B] Product-card CTA uniform height (pinned) --------- */
/* Owner: max Δ 1 px across ALL cards. Prior HP-125 used height:auto +
 * min-height:44 which let 2-line labels balloon to 49.25 px on mobile.
 * Fix: pin `height` to a fixed value that comfortably fits 2-line text
 * at 0.8 rem font, and center-align content vertically. */

body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--primary,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--outline,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer a.hp-btn,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer button.hp-btn,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .addtocart {
  /* Pinned equalizer — both height and min-height set to same value so
   * 1-line "В корзину" and 2-line "Izvēlēties komplektāciju" render at
   * identical box height on the same viewport. */
  height: 48px !important;
  min-height: 48px !important;
  max-height: 48px !important;
  padding: 0 0.85rem !important;
  font-size: 0.85rem !important;
  font-weight: 600 !important;
  line-height: 1.1 !important;
  letter-spacing: -0.005em !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 100% !important;
  gap: 0.4rem !important;
  text-align: center !important;
  text-decoration: none !important;
  border-radius: 8px !important;
  box-sizing: border-box !important;
  cursor: pointer !important;
  /* Allow wrap up to 2 lines — the pinned 48 px + 1.1 line-height
   * accommodates 2 lines at 0.85rem (14 px * 1.1 * 2 = 30.8 → inside 48). */
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  hyphens: none !important;
}

/* Mobile ≤ 640 — shrink font slightly, keep same 48 px pinned height */
@media (max-width: 640px) {
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--primary,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--outline,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer a.hp-btn,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer button.hp-btn {
    height: 48px !important;
    min-height: 48px !important;
    max-height: 48px !important;
    font-size: 0.8rem !important;
    padding: 0 0.55rem !important;
    line-height: 1.1 !important;
    /* 2 lines * 12.8 * 1.1 = 28.16 → fits inside 48 with room to spare */
  }
}

/* Very narrow ≤ 360 — tighter padding but same 48 px pinned */
@media (max-width: 360px) {
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--primary,
  body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--outline {
    font-size: 0.78rem !important;
    padding: 0 0.45rem !important;
    letter-spacing: -0.01em !important;
  }
}

/* Preserve hover / focus / active states */
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn:hover,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--primary:hover {
  filter: brightness(0.96) !important;
}
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn:active,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--primary:active {
  transform: translateY(1px) !important;
}
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn:focus-visible,
body.hp-homev0-1.hp-heroeqv-4 .hp-product-card .hp-product-card__footer .hp-btn--primary:focus-visible {
  outline: 2px solid #F06B1A !important;
  outline-offset: 2px !important;
}

/* END HP-126 CATEGORY TILES + PRODUCT CTA 20260713 */

/* =====================================================================
 * HP-130 PRODUCT CARD REBUILD — CORRECT (2026-07-13)
 *
 * Supersedes:
 *   - HP-128 (rejected: badge/price overlap 62-196 px², thumbs 19-23% subject,
 *     cards heavier not lighter, 4/7 langs falsely PASSed).
 *
 * Fixes vs previous cascade (HP-123/125/126, restored via ZIP 129 rollback):
 *   [1] `.hp-product-card__footer` had `flex-direction: column` but sub-rows
 *       (`.__meta-row`, `.hp-btn`) were still overlapping vertically by 1-2px
 *       on live because `.__price` used line-height:1 while the CTA was
 *       pinned to 48 px without a reserved above-slot. HP-130 gives each
 *       child its OWN reserved min-height, separated by pure flex-gap.
 *   [2] Reasserts derived-thumbnail image contract at 500x500 white canvas
 *       via `.hp-product-card__image` object-fit:contain + full aspect-ratio
 *       image-wrap. Also serves `?v=p130_<ts>` cache-buster from template.
 *   [3] Card body targeted at ~ 300-340 px compact height on 390 mobile.
 *
 * Preserves untouched:
 *   - HP-121 footer typography
 *   - HP-122 cart summary equal-height
 *   - HP-123 [1..11] product-card layout invariants
 *   - HP-125 [P125-A] product-card CTA (superseded here for overlap only)
 *   - HP-125 [P125-B] .hp-hero-mini scale-up (homepage — untouched)
 *   - HP-126 [A] .hp-subcat-hub__tile--compact (category tiles — untouched)
 *   - HP-126 [B] product-card CTA pinned 48px (kept; HP-130 stacks it with
 *     reserved gap so overlap = 0).
 *
 * Specificity chain: body.hp-heroeqv-4.hp-homev0-1 .hp-product-card ...
 * = at minimum (0,4,1) which beats/matches HP-126 [B].
 *
 * HP-130: status-row and price-row are SEPARATE flex items;
 * no absolute positioning; no negative margins; no overlapping rects.
 * ===================================================================== */

/* ---------- [HP-130 A] Card frame — compact vertical rhythm --------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
  min-height: 0 !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
  border-radius: var(--hp-radius, 12px);
  border: 1px solid var(--hp-border, #e2d9cc);
  background: var(--hp-card, #ffffff);
}

/* ---------- [HP-130 B] Image well — 1:1, contain, no crop --------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__image-wrap,
body.hp-heroeqv-4.hp-homev0-1 a.hp-product-card__image-wrap {
  aspect-ratio: 1 / 1 !important;
  flex: 0 0 auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
  background: var(--hp-header, #f2ede6) !important;
  padding: 4px !important;
  position: relative !important;
  box-sizing: border-box !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__image {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: contain !important;
  padding: 0 !important;
  display: block !important;
}

/* ---------- [HP-130 C] Body — flex column, fills remaining ------ */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__body {
  display: flex !important;
  flex: 1 1 auto !important;
  flex-direction: column !important;
  min-width: 0 !important;
  min-height: 0 !important;
  padding: 0.65rem 0.7rem 0.7rem !important;
  gap: 0 !important;
}

/* ---------- [HP-130 D] Title — 2 lines, reserved height --------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__title {
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  min-height: 2.6em !important;
  max-height: 2.6em !important;
  margin: 0 !important;
  padding: 0 !important;
  font-size: 0.86rem !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  color: var(--hp-text, #2d2416) !important;
  word-break: normal !important;
  overflow-wrap: anywhere !important;
  hyphens: none !important;
}

/* ---------- [HP-130 E] Footer — pinned bottom, separated rows -- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer {
  margin-top: auto !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0.5rem !important;
  padding-top: 0.55rem !important;
  border-top: 0 !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
}

/* ---------- [HP-130 F] Meta row — ONE horizontal row: badge L / price R
 * Separate flex item from CTA below; guaranteed no overlap via gap. */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 0.4rem !important;
  min-width: 0 !important;
  min-height: 1.8rem !important;
  max-height: 1.8rem !important;
  padding: 0 !important;
  margin: 0 !important;
  flex: 0 0 auto !important;
  overflow: visible !important;
}

/* ---------- [HP-130 G] Stock cell (left) — content-width badge - */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__stock {
  display: inline-flex !important;
  align-items: center !important;
  flex: 0 1 auto !important;
  min-width: 0 !important;
  max-width: 62% !important;   /* leaves >=38% for price cell — prevents ES horizontal crush */
  margin: 0 !important;
  overflow: hidden !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-stock-badge {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0.35rem !important;
  padding: 0.18rem 0.42rem !important;
  border-radius: 9999px !important;
  font-size: 0.7rem !important;
  font-weight: 600 !important;
  line-height: 1.15 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
  min-height: 1.4rem !important;
  max-height: 1.6rem !important;
  box-sizing: border-box !important;
}

/* ---------- [HP-130 H] Price cell (right) — right-align, no wrap */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__price-block {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: baseline !important;
  gap: 0.35rem !important;
  margin: 0 0 0 auto !important;
  padding: 0 !important;
  flex: 0 0 auto !important;
  min-width: 0 !important;
  min-height: 1.4rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__price {
  white-space: nowrap !important;
  line-height: 1.2 !important;
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: var(--hp-text, #2d2416) !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__price-old {
  font-size: 0.72rem !important;
  color: var(--hp-text-muted, #7d6f5c) !important;
  text-decoration: line-through !important;
  white-space: nowrap !important;
  line-height: 1.2 !important;
}

/* ---------- [HP-130 I] CTA — pinned 52px full-width, own row --- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--outline,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer button.hp-btn,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .addtocart {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 52px !important;
  min-height: 52px !important;
  max-height: 52px !important;
  padding: 0 0.75rem !important;
  gap: 0.4rem !important;
  border-radius: 10px !important;
  font-size: 0.83rem !important;
  font-weight: 600 !important;
  line-height: 1.15 !important;
  letter-spacing: -0.005em !important;
  text-align: center !important;
  text-decoration: none !important;
  cursor: pointer !important;
  box-sizing: border-box !important;
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  hyphens: none !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
}
/* Ensure icon+label pair centers cleanly */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn > svg,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn > svg,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer button.hp-btn > svg {
  width: 1rem !important;
  height: 1rem !important;
  flex: 0 0 auto !important;
  display: inline-block !important;
}

/* ---------- [HP-130 J] Mobile ≤ 480 — narrower font, same 52 --- */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__body {
    padding: 0.55rem 0.6rem 0.6rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__title {
    font-size: 0.82rem !important;
    line-height: 1.28 !important;
    min-height: 2.56em !important;
    max-height: 2.56em !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__price {
    font-size: 0.9rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-stock-badge {
    font-size: 0.68rem !important;
    padding: 0.18rem 0.42rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer button.hp-btn {
    font-size: 0.78rem !important;
    padding: 0 0.5rem !important;
    height: 52px !important;
    min-height: 52px !important;
    max-height: 52px !important;
    letter-spacing: -0.01em !important;
  }
}

/* ---------- [HP-130 K] Very narrow ≤ 360 — tighter padding --- */
@media (max-width: 360px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary {
    font-size: 0.75rem !important;
    padding: 0 0.4rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__price {
    font-size: 0.85rem !important;
  }
}

/* ---------- [HP-130 L] Grid parent — 2 cols mobile, gap 10 --- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-grid,
body.hp-heroeqv-4.hp-homev0-1 #comjshop_list_product,
body.hp-heroeqv-4.hp-homev0-1 .hp-category-products .grid {
  min-width: 0 !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-grid > *,
body.hp-heroeqv-4.hp-homev0-1 #comjshop_list_product > *,
body.hp-heroeqv-4.hp-homev0-1 .hp-category-products .grid > * {
  min-width: 0 !important;
  box-sizing: border-box !important;
}

/* ---------- [HP-130 M] Sale badge overlay -------------------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__sale-badge {
  position: absolute !important;
  left: 0.5rem !important;
  top: 0.5rem !important;
  padding: 0.2rem 0.45rem !important;
  font-size: 0.65rem !important;
  font-weight: 700 !important;
  color: #ffffff !important;
  background: var(--hp-primary, #e87020) !important;
  border-radius: 9999px !important;
  line-height: 1 !important;
  z-index: 2 !important;
}

/* Preserve hover / focus / active states */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn:hover,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary:hover {
  filter: brightness(0.96) !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn:active,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary:active {
  transform: translateY(1px) !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn:focus-visible,
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary:focus-visible {
  outline: 2px solid #F06B1A !important;
  outline-offset: 2px !important;
}

/* END HP-130 PRODUCT CARD REBUILD 20260713 */

/* =====================================================================
 * HP-132 COMPACT FOOTER 20260713 — MOBILE CARD FOOTER FIX
 *
 * Owner rejected ZIP 130. On real iPhone Safari:
 *   [1] Green availability badge was INVISIBLE — root cause: HP-P099
 *       @media (max-width: 480px) at line ~11347 set
 *       `.hp-product-card__meta-row .hp-product-card__price-block
 *        { width: 100% !important }`.
 *       That expanded price-block to full row width; HP-130's stock
 *       cell (flex:0 1 auto + min-width:0 + overflow:hidden) shrank
 *       to 0 px, clipping the badge invisible.
 *   [2] CTA was ~52-80 px (spec = 46-50 px). Root cause: HP-130 [I]
 *       hard-pinned height:52px/min-height:52px/max-height:52px.
 *   [3] Meta-row was stacked column on ≤480 (HP-P099 Step A), badge
 *       and price on 2 lines instead of 1. HP-130 partly reversed
 *       this but shrank stock cell to 0.
 *
 * This block:
 *   (a) Restores meta-row as ONE horizontal row on ≤480: badge left,
 *       price right, `justify-content: space-between`, both cells
 *       intrinsic-width.
 *   (b) Fixes price-block width back to `max-content` (no width:100%).
 *   (c) Fixes stock cell to `width: auto`, `flex: 0 0 auto`,
 *       `overflow: visible` so the badge is fully rendered.
 *   (d) Retains ES-safe max-width on stock (65%) to prevent overflow
 *       of «Disponible de inmediato» on 390 px viewport.
 *   (e) Shrinks CTA to `min-height: 46px; max-height: 50px;
 *       height: 48px` on mobile with matching vertical padding.
 *
 * Specificity: `body.hp-heroeqv-4.hp-homev0-1 .hp-product-card
 *   .hp-product-card__meta-row .hp-product-card__price-block`
 * = 4 classes + 2 elements = (0,4,2) — beats HP-P099 (0,3,2)
 * and HP-130 (0,3,2). Same wrap for stock and CTA.
 *
 * Preserves:
 *   - HP-121 (footer typography) — different selectors, untouched
 *   - HP-122 (cart summary equal height) — different selectors
 *   - HP-125 (.hp-hero-mini scale) — different selectors
 *   - HP-126 (.hp-subcat-hub__tile--compact) — different selectors
 *   - HP-130 A/B/C/D (card frame / image / body / title) — untouched
 *   - HP-130 F/G/H (meta-row/stock/price base row-flex) — kept, only
 *     the width/height overrides layered on top for ≤480.
 *   - HP-130 M sale badge overlay — untouched
 *   - HP-130 derived thumbnail contract — untouched
 * ===================================================================== */

/* ---------- [HP-132 A] Meta row (≤480) — one row, badge L / price R -- */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row,
  body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row,
  .hp-product-card .hp-product-card__meta-row {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 0.4rem !important;
    row-gap: 0 !important;
    column-gap: 0.4rem !important;
    width: 100% !important;
    min-width: 0 !important;
    min-height: 1.6rem !important;
    max-height: none !important;
    padding: 0 !important;
  }
}

/* ---------- [HP-132 B] Stock cell — content-width, badge visible ------ */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__stock,
  body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__stock,
  .hp-product-card .hp-product-card__meta-row .hp-product-card__stock {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    flex: 0 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 70% !important;   /* room for ES «Disponible de inmediato» + price */
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
  /* Badge inside stock — always visible, small ellipsis fallback */
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-stock-badge,
  body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-stock-badge,
  .hp-product-card .hp-product-card__meta-row .hp-stock-badge {
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.3rem !important;
    padding: 0.08rem 0.5rem !important;
    border-radius: 9999px !important;
    font-size: 0.68rem !important;
    font-weight: 600 !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    width: auto !important;
    max-width: 100% !important;
    min-height: 1.15rem !important;
    max-height: 1.35rem !important;
    height: auto !important;
    box-sizing: border-box !important;
    align-self: center !important;
    flex: 0 1 auto !important;
  }
}

/* ---------- [HP-132 C] Price cell — right, no wrap, intrinsic width -- */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__price-block,
  body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__price-block,
  .hp-product-card .hp-product-card__meta-row .hp-product-card__price-block {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 0.35rem !important;
    width: auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 0 0 auto !important;
    padding: 0 !important;
    flex: 0 0 auto !important;
    min-height: 1.4rem !important;
    text-align: right !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__price,
  body.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__price,
  .hp-product-card .hp-product-card__meta-row .hp-product-card__price {
    white-space: nowrap !important;
    line-height: 1.2 !important;
    font-size: 0.95rem !important;
    font-weight: 700 !important;
    color: var(--hp-text, #2d2416) !important;
    margin: 0 !important;
    padding: 0 !important;
  }
}

/* ---------- [HP-132 D] CTA — compact 40-44 px on mobile (HP-133 REDUCE) -
 * HP-133 2026-07-13: owner reported HP-132's 46-50 CTA still visually
 * heavy on mobile. Reduced height triple 46/50/48 -> 40/44/42, vertical
 * padding 6px -> 4px (saves 4px total), svg 0.95rem -> 0.85rem. Width,
 * font-size 0.8rem, line-height 1.15, meta-row (badge L / price R),
 * badge visibility -- ALL UNCHANGED. Long 2-line labels (LV
 * Izvēlēties komplektāciju / DE Konfiguration wählen / LT Pasirinkti
 * komplektaciją) still fit: 2 × 14.72 lh + 8 px pad = ~37.4 px < 42 px.
 * Apple HIG touch target still respected (>= 40 px). */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--outline,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer button.hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .addtocart,
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary,
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn,
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer button.hp-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    max-width: 100% !important;
    height: 42px !important;               /* HP-133: was 48 */
    min-height: 40px !important;           /* HP-133: was 46 */
    max-height: 44px !important;           /* HP-133: was 50 */
    padding: 4px 10px !important;          /* HP-133: was 6px 10px */
    gap: 0.35rem !important;
    border-radius: 10px !important;
    font-size: 0.8rem !important;
    font-weight: 600 !important;
    line-height: 1.15 !important;
    letter-spacing: -0.01em !important;
    text-align: center !important;
    text-decoration: none !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    hyphens: none !important;
    flex: 0 0 auto !important;
    margin: 0 !important;
  }
  /* Multi-line long labels (RU «Выбрать комплектацию» / LV / DE / LT):
     line-clamp to 2 lines to guarantee 40-44 px containment. */
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn > svg,
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn > svg {
    width: 0.85rem !important;             /* HP-133: was 0.95rem */
    height: 0.85rem !important;            /* HP-133: was 0.95rem */
    flex: 0 0 auto !important;
  }
}

/* ---------- [HP-132 D2] ES-specific badge — smaller font to fit label -- */
@media (max-width: 480px) {
  html[lang^="es"] .hp-product-card .hp-product-card__meta-row .hp-product-card__stock,
  html[lang^="es"] body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__stock {
    max-width: 78% !important;   /* wider for the 22-char ES label */
  }
  html[lang^="es"] .hp-product-card .hp-product-card__meta-row .hp-stock-badge,
  html[lang^="es"] body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-stock-badge {
    font-size: 0.58rem !important;
    padding: 0.08rem 0.42rem !important;
    letter-spacing: -0.015em !important;
  }
}

/* ---------- [HP-132 E] Very narrow ≤ 360 — tighter padding ---------- */
@media (max-width: 360px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn,
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-btn--primary {
    font-size: 0.75rem !important;
    padding: 5px 8px !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-product-card__price {
    font-size: 0.88rem !important;
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__meta-row .hp-stock-badge {
    font-size: 0.63rem !important;
    padding: 0.18rem 0.42rem !important;
  }
}

/* ---------- [HP-132 F] Footer stack — tighter gap (mobile) --------- */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer,
  body.hp-homev0-1 .hp-product-card .hp-product-card__footer {
    display: flex !important;
    flex-direction: column !important;
    gap: 0.4rem !important;
    padding-top: 0.45rem !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    margin-top: auto !important;
    border-top: 0 !important;
  }
}

/* END HP-132 COMPACT FOOTER 20260713 */

/* =====================================================================
 * HP-152 ORDER SUCCESS UI — visual only, no order-flow changes.
 * ===================================================================== */
.hp152-success .hp152-success__actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 2rem;
}
.hp152-success .hp152-success__action.hp-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-width: 0 !important;
  height: 44px !important;
  min-height: 44px !important;
  padding: 0 22px !important;
  border-radius: 9px !important;
  box-sizing: border-box !important;
  font-size: 0.875rem !important;
  font-weight: 650 !important;
  line-height: 1 !important;
  white-space: nowrap;
}
.hp152-success .hp152-success__trust {
  margin-top: 1.5rem;
  padding: 1.5rem 1rem 2.25rem;
  border: 0;
  background: transparent;
}
.hp152-success .hp152-success__trust-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  gap: 14px;
  width: min(100%, 1248px);
  margin: 0 auto;
}
.hp152-success .hp152-success__trust-card {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  min-width: 0;
  min-height: 124px;
  padding: 20px;
  border: 1px solid #e5ddd3;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(45, 36, 22, .035);
  box-sizing: border-box;
}
.hp152-success .hp152-success__trust-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border: 1px solid rgba(232, 112, 32, .20);
  border-radius: 11px;
  background: rgba(232, 112, 32, .065);
  color: var(--hp-primary, #e87020);
  box-sizing: border-box;
}
.hp152-success .hp152-success__trust-icon svg {
  display: block;
  width: 29px;
  height: 29px;
}
.hp152-success .hp152-success__trust-title {
  min-width: 0;
  margin: 0;
  color: #342a1d;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.38;
  text-align: left;
  text-wrap: balance;
  hyphens: none;
  overflow-wrap: normal;
}

@media (max-width: 900px) {
  .hp152-success .hp152-success__trust-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  .hp152-success .hp152-success__hero { padding-left: 18px; padding-right: 18px; }
  .hp152-success .hp152-success__actions { gap: 10px; }
  .hp152-success .hp152-success__action.hp-btn {
    height: 44px !important;
    min-height: 44px !important;
    padding: 0 17px !important;
    font-size: 0.8125rem !important;
  }
  .hp152-success .hp152-success__trust {
    margin-top: 1rem;
    padding: 1.25rem 16px 2rem;
  }
  .hp152-success .hp152-success__trust-grid { gap: 10px; }
  .hp152-success .hp152-success__trust-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    min-height: 164px;
    padding: 16px 12px;
  }
  .hp152-success .hp152-success__trust-icon {
    width: 46px;
    height: 46px;
    border-radius: 10px;
  }
  .hp152-success .hp152-success__trust-icon svg { width: 28px; height: 28px; }
  .hp152-success .hp152-success__trust-title {
    font-size: 0.8125rem;
    line-height: 1.35;
    text-align: center;
  }
}
@media (max-width: 350px) {
  .hp152-success .hp152-success__trust-grid { grid-template-columns: 1fr; }
  .hp152-success .hp152-success__trust-card {
    display: grid;
    grid-template-columns: 46px minmax(0, 1fr);
    min-height: 108px;
    padding: 16px;
  }
  .hp152-success .hp152-success__trust-title { text-align: left; }
}
/* END HP-152 ORDER SUCCESS UI */


/* ==== STAGE 218 v2 — концепт №2: реальные фото оборудования
       (специфичность hp-heroeqv-4.hp-homev0-1 чтобы победить HP-125 REAL FIX) ==== */

/* Icon holder — прозрачный, без рамки, широкий контейнер под фото оборудования */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    width: 5.2rem !important;
    height: 4.4rem !important;
    min-width: 5.2rem !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0iconholder {
    background: transparent !important;
}
/* Icon itself — полностью заполняет холдер сохраняя aspect */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    object-position: center !important;
    transition: transform 220ms ease !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0icon,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0iconholder img {
    transform: scale(1.03) !important;
}

/* Chevron — без круглого фона, тонкая простая стрелка */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron {
    width: 1.3rem !important;
    height: 1.3rem !important;
    min-width: 1.3rem !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    color: #b4bac6 !important;
    box-shadow: none !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron svg {
    width: 1.05rem !important;
    height: 1.05rem !important;
    stroke-width: 2.2 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0chevron {
    background: transparent !important;
    color: #F06B1A !important;
    transform: translateX(3px) !important;
    border-color: transparent !important;
}

/* Tile — чуть выше чтобы вместить крупное изображение */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini {
    min-height: 7rem !important;
    padding: 0.55rem 0.85rem 0.55rem 0.55rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0wrap {
    gap: 0.85rem !important;
}

/* Mobile — сохраняем крупное изображение, tile чуть компактнее */
@media (max-width: 640px) {
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini {
        min-height: 6.4rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
        width: 5.6rem !important;
        height: 4.6rem !important;
        min-width: 5.6rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
        width: 100% !important;
        height: 100% !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron {
        width: 1.25rem !important;
        height: 1.25rem !important;
        min-width: 1.25rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron svg {
        width: 1rem !important;
        height: 1rem !important;
    }
}
@media (max-width: 480px) {
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
        width: 5rem !important;
        height: 4.1rem !important;
        min-width: 5rem !important;
    }
}
/* END STAGE 218 v2 */
/* ==== STAGE 220 — active navigation + compact product-card details CTA ==== */
/* Uses the existing Hidplanet primary color variables; ordinary nav items stay untouched. */
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__item.is-active .hp-topnav__link,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link[aria-current="page"],
nav.hp-topnav.hp-mobile-nav .hp-topnav__item.is-active .hp-topnav__link,
nav.hp-topnav.hp-mobile-nav .hp-topnav__link[aria-current="page"] {
  background: var(--hp-primary, #e87020) !important;
  border-color: var(--hp-primary, #e87020) !important;
  color: var(--hp-primary-foreground, #ffffff) !important;
  font-weight: 600;
}

nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__item.is-active .hp-topnav__link:hover,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__item.is-active .hp-topnav__link:focus-visible,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link[aria-current="page"]:hover,
nav.hp-topnav:not(.hp-mobile-nav) .hp-topnav__link[aria-current="page"]:focus-visible,
nav.hp-topnav.hp-mobile-nav .hp-topnav__item.is-active .hp-topnav__link:hover,
nav.hp-topnav.hp-mobile-nav .hp-topnav__link[aria-current="page"]:hover {
  background: var(--hp-primary-hover, #c55c0a) !important;
  border-color: var(--hp-primary-hover, #c55c0a) !important;
  color: var(--hp-primary-foreground, #ffffff) !important;
}

/* Details only: width, horizontal padding and card layout remain unchanged. */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-product-card__cta--details {
  height: 42px !important;
  min-height: 42px !important;
  max-height: 42px !important;
  padding: 0 0.75rem !important;
}

@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer .hp-product-card__cta--details {
    height: 40px !important;
    min-height: 40px !important;
    max-height: 40px !important;
    padding: 2px 0.5rem !important;
  }
}
/* END STAGE 220 */
/* STAGE 220 follow-up: anchors carry the base `.hp-btn` rule, so match it directly. */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn.hp-btn--primary.hp-product-card__cta--details {
  height: 42px !important;
  min-height: 42px !important;
  max-height: 42px !important;
  padding: 0 0.75rem !important;
}

@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn.hp-btn--primary.hp-product-card__cta--details {
    height: 40px !important;
    min-height: 40px !important;
    max-height: 40px !important;
    padding: 2px 0.5rem !important;
  }
}
/* STAGE 220: preserve the card's original desktop footprint while compacting Details. */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card:has(a.hp-product-card__cta--details) .hp-product-card__footer {
  min-height: 88px !important;
}

@media (max-width: 480px) {
  /* Existing mobile height is retained; vertical padding is reduced from 4px to 2px. */
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn.hp-btn--primary.hp-product-card__cta--details {
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    padding: 2px 0.5rem !important;
  }
}
/* STAGE 220 final: 8.8px footer top padding + 28.8px meta + 8px gap + prior 52px CTA = 97.6px. */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card:has(a.hp-product-card__cta--details) .hp-product-card__footer {
  min-height: 98px !important;
}
/* STAGE 220 exact desktop footprint reservation, measured against the LIVE pre-change card row. */
body.hp-heroeqv-4.hp-homev0-1 .hp-product-card:has(a.hp-product-card__cta--details) .hp-product-card__footer {
  min-height: 101.3125px !important;
}
/* Preserve the measured pre-change Details button top position within unchanged cards. */
@media (min-width: 481px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn.hp-btn--primary.hp-product-card__cta--details {
    transform: translateY(3.71875px);
  }
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card .hp-product-card__footer a.hp-btn.hp-btn--primary.hp-product-card__cta--details:active {
    transform: translateY(4.71875px);
  }
}
/* Mobile already used a 42px Details CTA before this change: keep its card footprint untouched. */
@media (max-width: 480px) {
  body.hp-heroeqv-4.hp-homev0-1 .hp-product-card:has(a.hp-product-card__cta--details) .hp-product-card__footer {
    min-height: 0 !important;
  }
}
/* ==== STAGE 221 — final diagnostic-tile spacing polish ==== */
/* Existing tile geometry, content order, labels and links stay unchanged. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    display: grid !important;
    place-items: center !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    display: block !important;
    width: 88% !important;
    height: 88% !important;
}
/* 0.45rem over the prior 0.85rem gives the text block another 7.2px of air. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0wrap {
    gap: 1.3rem !important;
}
/* END STAGE 221 */
/* ==== STAGE 222 — safe photo margins inside diagnostic tiles ==== */
/* The holder keeps its original dimensions. Reducing the contained asset to
   80% creates equal visible clearance on every side, including vertical
   clearance for the tall Opel/J2534 devices. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    overflow: visible !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 80% !important;
    height: 80% !important;
    object-fit: contain !important;
    object-position: center !important;
}
/* END STAGE 222 */
/* ==== STAGE 223 — complete cable assets + balanced panel inset ==== */
/* Restore the ordinary product scale after the temporary Stage 222 reduction. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 88% !important;
    height: 88% !important;
}
/* BMW/VAG v2 assets are authored with their own generous transparent margins. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="bmw"] .hp-hero-mini__v0icon,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="vag"] .hp-hero-mini__v0icon {
    width: 100% !important;
    height: 100% !important;
}
/* The parent section already has a 20px lower inset. Match it at the top. */
@media (min-width: 1024px) {
    body.hp-homev0-1 .order-1.lg\:order-2 {
        box-sizing: border-box;
        padding-top: 1.25rem;
    }
}
/* END STAGE 223 */
/* ==== STAGE 225 — unified diagnostic tile system ==== */
/* All six assets use the same padded 4:3 source canvas. The layout below
   reserves a stable, smaller image column and lets category names use two
   complete lines when needed instead of clipping them. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini {
    min-height: 7rem !important;
    padding: 0.5rem 0.75rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0wrap {
    gap: 0.7rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    width: 4.4rem !important;
    min-width: 4.4rem !important;
    height: 4rem !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    object-position: center !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0body {
    overflow: visible !important;
    gap: 0.1rem !important;
    padding-right: 0 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0title {
    font-size: 1rem !important;
    line-height: 1.1 !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    display: block !important;
    -webkit-line-clamp: unset !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0sub {
    font-size: 0.75rem !important;
    line-height: 1.2 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
    gap: 0.22rem !important;
    margin-top: 0.18rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
    font-size: 0.6rem !important;
    padding: 0.06rem 0.32rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron {
    width: 1.2rem !important;
    min-width: 1.2rem !important;
    height: 1.2rem !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
@media (max-width: 640px) {
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
        width: 4.2rem !important;
        min-width: 4.2rem !important;
        height: 3.8rem !important;
    }
}
/* END STAGE 225 */
/* ==== STAGE 226 — unclipped technology line ==== */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
    display: block !important;
    margin-top: 0.18rem !important;
    overflow: visible !important;
    white-space: nowrap !important;
    line-height: 1.15 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
    display: inline !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    border-radius: 0 !important;
    color: #766a59 !important;
    font-size: 0.55rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip + .hp-hero-mini__v0chip::before {
    content: " · ";
    color: #a19687;
    font-weight: 400;
}
/* END STAGE 226 */
/* ==== STAGE 227 — scoped corrections only ==== */
/* 1. Restore compact characteristic capsules; the reduced type and padding
   retain every chip inside the existing card width. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 0.12rem !important;
    margin-top: 0.18rem !important;
    overflow: visible !important;
    white-space: normal !important;
    line-height: normal !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.03rem 0.18rem !important;
    border: 1px solid var(--hp-border) !important;
    background: color-mix(in oklab, #FFF9F3 92%, #F06B1A 4%) !important;
    border-radius: 4px !important;
    color: #6b5f4d !important;
    font-size: 0.46rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em !important;
    white-space: nowrap !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip + .hp-hero-mini__v0chip::before {
    content: none !important;
}
/* 2. Preserve the current image areas, but scale every device to 88%.
   This creates the requested 12% safety margin without moving anything. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 88% !important;
    height: 88% !important;
}
/* END STAGE 227 */
/* =============================================================================
   STAGE 221 — NEUTRAL DECORATIVE ICON SURFACES
   -----------------------------------------------------------------------------
   Scope: colour treatment only.  No dimensions, spacing, layout, typography,
   content or routes are changed here.  Decorative icon containers use an
   opaque neutral surface; brand orange remains reserved for CTA / active UI.
   ============================================================================= */
:root {
  --hp-icon-surface: #F4F1EC;
  --hp-icon-surface-hover: #EEE9E2;
  --hp-icon-border: #DED7CE;
  --hp-icon-border-hover: #D4CBC0;
  --hp-icon-ink: #3A342D;
}

/* Informational, catalogue, delivery and checkout icon containers. */
:is(
  .hp-trust-tile__icon,
  .hp-cat-tile__icon,
  .hp-diag-card__icon,
  .hp-bmw-material-card__icon,
  .hp-hero-mini__icon,
  .hp-diag-usecase__icon,
  .hp-shipping-tile__icon,
  .hp-payment-tile__icon,
  .hp152-success .hp152-success__trust-icon,
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact > svg:last-child,
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact svg.size-4,
  body.hp-homev0-1 .group > svg.size-5.shrink-0.mt-0\.5.text-primary,
  .hp-home-mobile--soft,
  .hp-home-desktop-icon--soft
) {
  background-color: var(--hp-icon-surface) !important;
  border-color: var(--hp-icon-border) !important;
  color: var(--hp-icon-ink) !important;
  opacity: 1 !important;
}

/* Existing line SVGs already use currentColor; force a fully opaque neutral
   ink for the few legacy homepage rules that previously set orange directly. */
:is(
  .hp-trust-tile__icon,
  .hp-cat-tile__icon,
  .hp-diag-card__icon,
  .hp-bmw-material-card__icon,
  .hp-hero-mini__icon,
  .hp-diag-usecase__icon,
  .hp-shipping-tile__icon,
  .hp-payment-tile__icon,
  .hp152-success .hp152-success__trust-icon,
  body.hp-homev0-1 .group > svg.size-5.shrink-0.mt-0\.5.text-primary
) svg,
svg.hp-trust-tile__icon[data-hp-p105] {
  color: var(--hp-icon-ink) !important;
  stroke: currentColor !important;
  opacity: 1 !important;
}

/* Neutral hover treatment for non-CTA icon surfaces. */
:is(
  .hp-trust-tile--link:hover .hp-trust-tile__icon,
  .hp-cat-tile:hover .hp-cat-tile__icon,
  .hp-diag-card:hover .hp-diag-card__icon,
  .hp-bmw-material-card:hover .hp-bmw-material-card__icon,
  .hp-hero-mini:hover .hp-hero-mini__icon,
  .hp-diag-usecase:hover .hp-diag-usecase__icon,
  .hp-shipping-tile:hover .hp-shipping-tile__icon,
  .hp-payment-tile:hover .hp-payment-tile__icon,
  .hp152-success .hp152-success__trust-card:hover .hp152-success__trust-icon,
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact:hover > svg:last-child,
  body.hp-homev0-1 .hp-subcat-hub__grid .hp-subcat-hub__tile.hp-subcat-hub__tile--compact:hover svg.size-4,
  .hp-home-mobile--soft:hover,
  .hp-home-desktop-icon--soft:hover
) {
  background-color: var(--hp-icon-surface-hover) !important;
  border-color: var(--hp-icon-border-hover) !important;
  color: var(--hp-icon-ink) !important;
}

/* Product delivery and warranty are informational glyphs, not CTA controls. */
:is(#comjshop, .hp-product-detail) li > svg.size-4.mt-0\.5.text-primary.shrink-0 {
  color: var(--hp-icon-ink) !important;
  stroke: currentColor !important;
  opacity: 1 !important;
}

/* Checkout delivery, pickup, transfer and legal-notice icon surfaces.  Payment
   provider logos deliberately retain their own official artwork. */
:is(
  .hp140-card__icon,
  .hp141-card__icon,
  .hp142-icon,
  .hp139-pickup__icon,
  .hp138-tile__icon:not(.hp144-payment__provider-logo),
  .hp145-company-vat-notice,
  .hp145-consent__check
) {
  background-color: var(--hp-icon-surface) !important;
  border-color: var(--hp-icon-border) !important;
  color: var(--hp-icon-ink) !important;
  opacity: 1 !important;
}

:is(
  .hp140-card__icon,
  .hp141-card__icon,
  .hp142-icon,
  .hp139-pickup__icon,
  .hp138-tile__icon:not(.hp144-payment__provider-logo),
  .hp145-company-vat-notice,
  .hp145-consent__check
) svg {
  color: var(--hp-icon-ink) !important;
  stroke: currentColor !important;
  opacity: 1 !important;
}
/* =============================================================================
   STAGE 229 — DIAGNOSTIC TILE MEDIA POLISH
   Scope: the six image holders and their images only.  Tile dimensions,
   text, chips, spacing and chevron placement are intentionally untouched.
   ============================================================================= */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
}

body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
  object-fit: contain !important;
  object-position: center !important;
  overflow: visible !important;
  transform: scale(1.13);
  transform-origin: center;
  filter: drop-shadow(0 4px 6px rgba(46, 40, 31, 0.10));
}

/* Chevron stays in its existing column; only remove the inherited square. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chevron {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  color: #8B8378 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0chevron {
  background: transparent !important;
  background-color: transparent !important;
  color: #F36C21 !important;
}

/* ==== STAGE 228 — capsules 2-row wrap (readable font restored) =============
   Scope: right-hero-panel tiles ONLY.
   Rationale: Stage 227 crammed all chips onto one line by shrinking font to
   0.46rem, which is not readable. Allow wrap to two rows at ~0.60rem while
   preserving card width, media zone size, chevron size, title and subtitle.
   No layout/box changes elsewhere — highest specificity in file so later
   rules do not need `!important` outside this block.
   ============================================================================= */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
    display: flex !important;
    flex-wrap: wrap !important;
    column-gap: 0.24rem !important;
    row-gap: 0.14rem !important;
    margin-top: 0.20rem !important;
    overflow: visible !important;
    white-space: normal !important;
    line-height: normal !important;
    align-content: flex-start !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.05rem 0.32rem !important;
    border: 1px solid var(--hp-border) !important;
    background: color-mix(in oklab, #FFF9F3 92%, #F06B1A 4%) !important;
    border-radius: 5px !important;
    color: #6b5f4d !important;
    font-size: 0.60rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em !important;
    white-space: nowrap !important;
    max-width: 100% !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip + .hp-hero-mini__v0chip::before {
    content: none !important;
}
@media (max-width: 640px) {
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
        font-size: 0.62rem !important;
        padding: 0.06rem 0.34rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
        row-gap: 0.16rem !important;
        margin-top: 0.22rem !important;
    }
}
/* END STAGE 228 */
/* =============================================================================
   STAGE 230 — Диагностика · Финализация капсул и медиа-зон (per-card)
   Дата: 2026-07-20 EEST.
   Область: правая панель главной, тайлы `.hp-hero-mini` в
            `body.hp-heroeqv-4.hp-homev0-1`. Ничего другого не трогаем.
   Инварианты (нельзя менять): ширина правого блока, сетка 2×3, тексты,
   маршруты, соседние блоки, общий стиль, `min-height: 7rem` карточки.
   Что меняется:
     1) Медиа-зона (iconholder) — индивидуальный размер под пропорции устройства:
        BMW/VAG   — шире  (5.4rem × 4.0rem)   — горизонтальные кабели
        Opel/J2534 — выше  (3.8rem × 4.6rem)  — портретные корпуса
        Другие/Универсальная — средний (4.4rem × 4.1rem / 3.6rem × 4.0rem*)
        (*) У «Универсальной» iconholder слегка уже, чтобы 3 капсулы
            гарантированно уместились в одну строку (см. п.2).
        object-fit: contain, прозрачный фон, никаких transform:scale.
     2) Капсулы — читаемый шрифт 0.75rem = 12px:
        BMW, Opel, VAG, Универсальная — flex-wrap: nowrap (одна строка);
        Другие марки, J2534           — flex-wrap: wrap  (до двух строк).
     3) Card min-height остаётся 7rem — карточки не растут; таллы Opel/J2534
        помещаются внутри 7rem = 4.6rem media + 1rem padding + запас.
   ========================================================================== */

/* ---- Iconholder (общая база: transparent, contain, без transform) -------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    background: transparent !important;
    background-color: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    overflow: visible !important;
    align-self: center !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    object-position: center !important;
    background: transparent !important;
    transform: none !important;
    filter: drop-shadow(0 3px 6px rgba(46, 40, 31, 0.10));
}

/* Центрируем содержимое v0wrap вертикально — таллы Opel/J2534 не смещают
   текст, а образуют естественную композицию внутри 7rem-карточки. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0wrap {
    align-items: center !important;
    gap: 0.6rem !important;
}

/* ---- Per-card media sizes (desktop) ------------------------------------- */
/* BMW — шире (ENET-кабель, landscape) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="bmw"] .hp-hero-mini__v0iconholder {
    width: 5.4rem !important;
    min-width: 5.4rem !important;
    height: 4.0rem !important;
}
/* VAG — шире (OBD-кабель, landscape) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="vag"] .hp-hero-mini__v0iconholder {
    width: 5.4rem !important;
    min-width: 5.4rem !important;
    height: 4.0rem !important;
}
/* Opel — выше (OP-COM корпус, portrait) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="opel"] .hp-hero-mini__v0iconholder {
    width: 3.8rem !important;
    min-width: 3.8rem !important;
    height: 4.6rem !important;
}
/* J2534 — выше (PassThru модуль, portrait) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="j2534"] .hp-hero-mini__v0iconholder {
    width: 3.8rem !important;
    min-width: 3.8rem !important;
    height: 4.6rem !important;
}
/* Другие марки — средний (мультибренд-адаптер, near-square) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="other"] .hp-hero-mini__v0iconholder {
    width: 4.4rem !important;
    min-width: 4.4rem !important;
    height: 4.1rem !important;
}
/* Универсальная — компактнее (короткий ELM327-донгл + 3 капсулы = 1 строка) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0iconholder {
    width: 3.6rem !important;
    min-width: 3.6rem !important;
    height: 4.0rem !important;
}

/* ---- Капсулы: базовые правила (перекрывают Stage 226–228) --------------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
    display: flex !important;
    flex-wrap: nowrap !important;          /* one line by default (BMW/Opel/VAG/Univ) */
    align-items: center !important;
    align-content: center !important;
    column-gap: 0.2rem !important;
    row-gap: 0.14rem !important;
    margin-top: 0.16rem !important;
    overflow: visible !important;
    white-space: normal !important;
    line-height: 1.2 !important;
    min-width: 0 !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
    display: inline-flex !important;
    align-items: center !important;
    padding: 0.06rem 0.28rem !important;
    border: 1px solid var(--hp-border) !important;
    background: color-mix(in oklab, #FFF9F3 92%, #F06B1A 4%) !important;
    border-radius: 5px !important;
    color: #6b5f4d !important;
    font-size: 0.75rem !important;         /* 12px @ 16px root — читаемый минимум */
    font-weight: 600 !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    flex: 0 0 auto !important;
    max-width: 100% !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip + .hp-hero-mini__v0chip::before {
    content: none !important;
}

/* Другие марки и J2534 — двухрядные капсулы (естественная упаковка) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="other"] .hp-hero-mini__v0chips,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="j2534"] .hp-hero-mini__v0chips {
    flex-wrap: wrap !important;
    align-items: flex-start !important;
    align-content: flex-start !important;
}

/* Универсальная — компактный padding у капсул, чтобы 3 штуки уместились */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0chip {
    padding: 0.06rem 0.24rem !important;
    letter-spacing: -0.005em !important;
}

/* ---- Мобильная адаптация (≤640px) --------------------------------------- */
@media (max-width: 640px) {
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="bmw"] .hp-hero-mini__v0iconholder,
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="vag"] .hp-hero-mini__v0iconholder {
        width: 5.2rem !important;
        min-width: 5.2rem !important;
        height: 3.9rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="opel"] .hp-hero-mini__v0iconholder,
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="j2534"] .hp-hero-mini__v0iconholder {
        width: 3.7rem !important;
        min-width: 3.7rem !important;
        height: 4.5rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="other"] .hp-hero-mini__v0iconholder {
        width: 4.3rem !important;
        min-width: 4.3rem !important;
        height: 4.0rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0iconholder {
        width: 3.5rem !important;
        min-width: 3.5rem !important;
        height: 3.9rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
        font-size: 0.75rem !important;
        padding: 0.06rem 0.28rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0chip {
        padding: 0.06rem 0.22rem !important;
    }
}
/* END STAGE 230 */
/* =============================================================================
   STAGE 231 — Диагностика · Финальная полировка капсул и медиа-зон
   Дата: 2026-07-20 EEST.
   Область: только тайлы `.hp-hero-mini` в `body.hp-heroeqv-4.hp-homev0-1`.
   Инварианты: card height (min-height: 7rem), сетка 2×3, тексты, маршруты,
   соседние блоки, общий стиль — не меняются.
   ============================================================================= */

/* ---- Card horizontal padding: 0.5rem (свободные горизонтальные отступы) --
   Vertical padding не трогаем (0.5rem). Разрешено правилом «уменьшить лишние
   горизонтальные отступы». Card width и min-height НЕ меняются. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini {
    padding: 0.5rem 0.5rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0wrap {
    gap: 0.5rem !important;
    align-items: center !important;
}

/* ---- Media-зона: индивидуальный размер, contain, transparent bg --------- */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder {
    background: transparent !important;
    background-color: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    padding: 0 !important;
    overflow: visible !important;
    align-self: center !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    object-position: center !important;
    background: transparent !important;
    transform: none !important;
    filter: drop-shadow(0 3px 6px rgba(46, 40, 31, 0.12));
    opacity: 1 !important;
}

/* Per-card media sizes (desktop, ≥641px) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="bmw"] .hp-hero-mini__v0iconholder,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="vag"] .hp-hero-mini__v0iconholder {
    width: 5.4rem !important; min-width: 5.4rem !important; height: 4.0rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="opel"] .hp-hero-mini__v0iconholder,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="j2534"] .hp-hero-mini__v0iconholder {
    width: 4.0rem !important; min-width: 4.0rem !important; height: 4.8rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="other"] .hp-hero-mini__v0iconholder {
    width: 4.6rem !important; min-width: 4.6rem !important; height: 4.2rem !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0iconholder {
    width: 3.6rem !important; min-width: 3.6rem !important; height: 4.0rem !important;
}

/* ---- КАПСУЛЫ: нейтральная непрозрачная палитра (без розового/оранжевого) -
   Требование владельца:
     background-color: #F1EFEB;
     border: 1px solid #D7D1C8;
     color: #514A41;
     opacity: 1;
   На chip и родительских элементах — никаких rgba(F36C21), никакого
   color-mix с оранжевым, никакой полупрозрачности. */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chips {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    align-content: center !important;
    column-gap: 5px !important;
    row-gap: 4px !important;
    margin-top: 6px !important;
    padding: 0 !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
    white-space: normal !important;
    line-height: 1 !important;
    min-width: 0 !important;
    opacity: 1 !important;
    filter: none !important;
}

body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:hover .hp-hero-mini__v0chip,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:focus .hp-hero-mini__v0chip,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:focus-within .hp-hero-mini__v0chip,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini:active .hp-hero-mini__v0chip {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 5px 8px !important;
    background: #F1EFEB !important;
    background-color: #F1EFEB !important;
    background-image: none !important;
    border: 1px solid #D7D1C8 !important;
    border-radius: 7px !important;
    color: #514A41 !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    flex: 0 0 auto !important;
    min-height: 24px !important;
    max-width: 100% !important;
    box-shadow: none !important;
    text-shadow: none !important;
    opacity: 1 !important;
    filter: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    transition: none !important;
    animation: none !important;
    mix-blend-mode: normal !important;
    isolation: isolate !important;
}

/* Убираем возможные "· " разделители между капсулами (унаследовано от 226) */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip + .hp-hero-mini__v0chip::before,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip::before,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip::after {
    content: none !important;
    display: none !important;
}

/* Двухрядные капсулы разрешены для «Другие марки» и J2534 */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="other"] .hp-hero-mini__v0chips,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="j2534"] .hp-hero-mini__v0chips {
    flex-wrap: wrap !important;
    align-items: flex-start !important;
    align-content: flex-start !important;
    justify-content: flex-start !important;
}

/* Универсальная — три капсулы (ELM327, KKL, OBD2) в 1 строку требуют
   чуть более компактного padding */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0chips {
    column-gap: 4px !important;
}
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0chip {
    padding: 5px 6px !important;
    letter-spacing: -0.01em !important;
}

/* ---- Мобильная адаптация (≤640px) --------------------------------------- */
@media (max-width: 640px) {
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="bmw"] .hp-hero-mini__v0iconholder,
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="vag"] .hp-hero-mini__v0iconholder {
        width: 5.2rem !important; min-width: 5.2rem !important; height: 3.9rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="opel"] .hp-hero-mini__v0iconholder,
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="j2534"] .hp-hero-mini__v0iconholder {
        width: 3.9rem !important; min-width: 3.9rem !important; height: 4.7rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="other"] .hp-hero-mini__v0iconholder {
        width: 4.5rem !important; min-width: 4.5rem !important; height: 4.1rem !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0iconholder {
        width: 3.5rem !important; min-width: 3.5rem !important; height: 3.9rem !important;
    }
    /* На мобильной карточка шире (~319px), капсулы уместятся с базовым padding */
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0chip {
        font-size: 12px !important;
        padding: 5px 8px !important;
        min-height: 24px !important;
    }
    body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini[data-hp-mini="univ"] .hp-hero-mini__v0chip {
        padding: 5px 6px !important;
    }
}
/* END STAGE 231 */

/* ===========================================================================
   STAGE 232 — recognisable diagnostic-tile media
   Reuses the established tile media treatment for all six direction photos.
   A slightly stronger shared shadow separates the actual product photo from
   the card without changing card size, image dimensions, text or routes.
   =========================================================================== */
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0iconholder img,
body.hp-heroeqv-4.hp-homev0-1 .hp-hero-mini .hp-hero-mini__v0icon {
    filter: none !important;
}
/* END STAGE 232 */

/* HP-P237 — product tabs / reviews cleanup.
 * Keep the strip on the product content width. On desktop the five remaining
 * tabs divide that width equally; 390/430px use one scrollable row. */
body.hp-homev0-1 .hp-product-tabs-wrap {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}

body.hp-homev0-1 .hp-product-tabs-wrap > div[role="tablist"] {
    display: flex !important;
    flex-wrap: nowrap !important;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

@media (min-width: 641px) {
    body.hp-homev0-1 .hp-product-tabs-wrap > div[role="tablist"] {
        overflow-x: visible;
    }

    body.hp-homev0-1 .hp-product-tabs-wrap > div[role="tablist"] > .hp-p063-tab {
        flex: 1 1 0;
        min-width: 0;
    }
}
/* HP-P237-END */
/* --- HP254 CTA-DOC v2 (whole-card clickable <a>, span inners) --- */
/* Card as an anchor: entire block clickable, no default underline. */
a.hp-cta-doc,
a.hp-cta-doc:link,
a.hp-cta-doc:visited {
    display:block;
    text-decoration:none;
    color:#0b3e7b;
    cursor:pointer;
    transition:transform .15s,box-shadow .15s,border-color .15s;
}
a.hp-cta-doc:hover,
a.hp-cta-doc:focus,
a.hp-cta-doc:focus-visible {
    text-decoration:none; color:#0b3e7b; outline:none;
    border-color:#1f6feb;
    box-shadow:0 8px 22px -12px rgba(31,111,235,.35);
    transform:translateY(-1px);
}
a.hp-cta-doc:focus-visible { box-shadow:0 0 0 3px rgba(31,111,235,.35); }
/* Because inner elements are now <span>, force them to lay out as blocks/flex. */
.hp-cta-doc__inner { display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.hp-cta-doc__body  { display:block; flex:1 1 380px; min-width:0; }
.hp-cta-doc__eyebrow,
.hp-cta-doc__title,
.hp-cta-doc__text { display:block; }
.hp-cta-doc__title { font-size:18px; font-weight:700; line-height:1.3; margin:0 0 6px 0; color:#0b3e7b; }
.hp-cta-doc__text  { font-size:14px; line-height:1.5; margin:6px 0 0 0; color:#274670; }
.hp-cta-doc__eyebrow { font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:#1f6feb; margin:0 0 4px 0; }
/* Visual "button" span — no navigation of its own, whole card handles click. */
span.hp-cta-doc__btn {
    display:inline-flex; align-items:center; gap:8px;
    background:#1f6feb; color:#fff;
    padding:11px 20px; border-radius:8px;
    font-size:14px; font-weight:600;
    border:1px solid #1f6feb;
    white-space:nowrap;
    transition:background .15s,transform .15s,box-shadow .15s;
}
a.hp-cta-doc:hover span.hp-cta-doc__btn,
a.hp-cta-doc:focus span.hp-cta-doc__btn {
    background:#1857b4; border-color:#1857b4;
}
span.hp-cta-doc__btn svg { flex-shrink:0; }
/* Stack children spacing when there is more than one card. */
.hp-cta-doc-stack a.hp-cta-doc + a.hp-cta-doc { margin-top:14px; }
.hp-cta-doc-stack { margin: 4px 0 22px 0; }
/* Mobile refinements. */
@media (max-width:640px) {
    a.hp-cta-doc { padding:18px 16px; }
    .hp-cta-doc__inner { gap:14px; }
    .hp-cta-doc__body  { flex:1 1 100%; }
    span.hp-cta-doc__btn { width:100%; justify-content:center; padding:13px 20px; }
    .hp-cta-doc__title { font-size:17px; }
}
/* --- END HP254 CTA-DOC v2 --- */

/* --- HP254 CTA-DOC (product ↔ article) --- */
.hp-cta-doc {
    background: linear-gradient(180deg,#eaf3ff 0%,#d9ebff 100%);
    border: 1px solid #b8d3f5;
    border-left: 4px solid #1f6feb;
    border-radius: 10px;
    padding: 20px 22px;
    margin: 26px 0;
    color: #0b3e7b;
    font-family: inherit;
    box-sizing: border-box;
}
.hp-cta-doc *,.hp-cta-doc *:before,.hp-cta-doc *:after { box-sizing: inherit; }
.hp-cta-doc__inner { display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.hp-cta-doc__body  { flex:1 1 380px; min-width:0; }
.hp-cta-doc__eyebrow {
    font-size:12px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
    color:#1f6feb; margin:0 0 4px 0;
}
.hp-cta-doc__title { font-size:18px; font-weight:700; line-height:1.3; margin:0 0 6px 0; color:#0b3e7b; }
.hp-cta-doc__text  { font-size:14px; line-height:1.5; margin:0; color:#274670; }
.hp-cta-doc__btn {
    display:inline-flex; align-items:center; gap:8px;
    background:#1f6feb; color:#fff !important;
    padding:11px 20px; border-radius:8px;
    font-size:14px; font-weight:600; text-decoration:none;
    border:1px solid #1f6feb;
    transition:background .15s,transform .15s,box-shadow .15s;
    white-space:nowrap;
}
.hp-cta-doc__btn:hover, .hp-cta-doc__btn:focus {
    background:#1857b4; border-color:#1857b4; color:#fff !important;
    transform:translateY(-1px); text-decoration:none; outline:none;
}
.hp-cta-doc__btn:focus-visible { box-shadow:0 0 0 3px rgba(31,111,235,.35); }
.hp-cta-doc__btn svg { flex-shrink:0; }
@media (max-width:640px) {
    .hp-cta-doc { padding:18px 16px; margin:22px 0; }
    .hp-cta-doc__inner { gap:14px; }
    .hp-cta-doc__body  { flex:1 1 100%; }
    .hp-cta-doc__btn   { width:100%; justify-content:center; padding:13px 16px;
        white-space:normal !important; text-align:center; line-height:1.3; }
    .hp-cta-doc__title { font-size:17px; }
}
/* article-side variant */
.hp-cta-doc--reverse {
    background: linear-gradient(180deg,#fff7e6 0%,#ffedcc 100%);
    border-color:#f4c67a; border-left-color:#e08a00;
    color:#5a3b00;
}
.hp-cta-doc--reverse .hp-cta-doc__eyebrow { color:#e08a00; }
.hp-cta-doc--reverse .hp-cta-doc__title,
.hp-cta-doc--reverse .hp-cta-doc__text { color:#5a3b00; }
.hp-cta-doc--reverse .hp-cta-doc__btn {
    background:#e08a00; border-color:#e08a00;
}
.hp-cta-doc--reverse .hp-cta-doc__btn:hover,
.hp-cta-doc--reverse .hp-cta-doc__btn:focus {
    background:#b56d00; border-color:#b56d00;
}
/* --- END HP254 CTA-DOC --- */
