/* ==========================================================================
   Ascension UI layer  —  Phase 1: tokens, gold buttons, contrast + white-band fixes
   Loaded at wp_head priority 110, i.e. AFTER the Customizer blob (post 1000069,
   printed at 101). Source order is our specificity lever; `.asc-ui` on <body>
   is the second. !important appears ONLY where the blob or glozin already used
   it on the same property.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   Surfaces carry over from Evo Aminoz almost unchanged (both sites are true
   black). Only the accent moves: Evo's blue #0068ff becomes Ascension gold.

   Measured contrast (WCAG 2.x relative luminance) on the chosen gold gradient:
     #000 on #d4b25c (0%)   ..... 8.24:1  AAA
     #000 on #c9a449 (50%)  ..... 7.05:1  AAA
     #000 on #a8862e (100%) ..... 6.12:1  AA   <- darkest point, still clears AA
     #fff on #c9a449        ..... 2.55:1  FAILS  <- why white ink is never used
   Ink is therefore always black. The floor across the whole fill is 6.12:1,
   comfortably above the 4.5:1 AA requirement for normal text.
   -------------------------------------------------------------------------- */
:root {
	--asc-black:        #000000;
	--asc-surface:      #0f0f11;
	--asc-surface-2:    #08080a;
	--asc-line:         rgba(255,255,255,.10);
	--asc-line-strong:  rgba(255,255,255,.18);
	--asc-text:         #ffffff;
	--asc-muted:        #9a9a9a;

	/* Hamza's chosen gold, measured off the age-gate "ENTER SITE" button
	   (.age-gate__submit--yes). Same gradient family as the COA button.
	   Black ink on it measures 8.24:1 at the lightest stop, 6.12:1 at the
	   darkest, so it clears WCAG AA (4.5:1) across the whole fill. */
	--asc-gold-1:       #d4b25c;   /* gradient 0%   + border colour */
	--asc-gold-2:       #c9a449;   /* gradient 50%                  */
	--asc-gold-3:       #a8862e;   /* gradient 100%                 */
	--asc-gold-grad:    linear-gradient(135deg, #d4b25c 0%, #c9a449 50%, #a8862e 100%);
	--asc-gold:         #c9a449;   /* flat fallback / accent text   */
	--asc-gold-lite:    #e0c070;
	--asc-gold-ink:     #000000;
	--asc-gold-soft:    rgba(201,164,73,.14);
	--asc-gold-edge:    rgba(212,178,92,.55);

	--asc-danger:       #dc3545;
	--asc-ok:           #57c76a;

	--asc-r-sm:  4px;
	--asc-r:     8px;
	--asc-r-md:  12px;
	--asc-r-lg:  16px;
	--asc-r-pill: 50rem;

	--asc-wrap: 1280px;
	--asc-pad:  24px;

	/* Shadow measured off the same age-gate button Hamza picked. */
	--asc-btn-shadow:       0 8px 24px rgba(201,164,73,.40), inset 0 1px 0 rgba(255,255,255,.20);
	--asc-btn-shadow-hover: 0 10px 28px rgba(201,164,73,.52), inset 0 1px 0 rgba(255,255,255,.32);
}

/* Neutralises the parent's body padding even if the sticky-ATC module returns.
   Scoped to .asc-ui so we never touch glozin's variable on pages we don't own. */
.asc-ui {
	--gz-atc-sticky-height: 0px;
}

/* --------------------------------------------------------------------------
   2. The white bands  (defect A2)
   glozin ships `body { background: #fff }` and it is never overridden. Black is
   painted only by individual sections, so every vertical gap between sections
   exposes white. Measured on production: a 91px band on the product page at
   1440, five bands on mobile (largest 188px), and a 344px slab on the cart.
   -------------------------------------------------------------------------- */
html,
body.asc-ui {
	background-color: var(--asc-black) !important;
}

.asc-ui #page,
.asc-ui #site-content,
.asc-ui #site-footer,
.asc-ui .site-content {
	background-color: var(--asc-black);
}

/* #site-header renders white 1440x122 behind its own opaque black child.
   Invisible today, but it becomes a white band the moment that child shifts
   or collapses. Painted black so it can never surface. */
.asc-ui #site-header,
.asc-ui .site-header {
	background-color: var(--asc-black);
}

/* The sticky-ATC module reserves this as body padding; it renders as white. */
.asc-ui {
	padding-bottom: 0 !important;
}

/* --------------------------------------------------------------------------
   3. Page headers  (defect A3)
   Cart / Checkout / Affiliate Registration titles measured white-on-white,
   contrast ratio 1.00. The header sits on the (previously white) body, so
   fixing the canvas above plus forcing the text colour resolves both.
   -------------------------------------------------------------------------- */
.asc-ui .page-header,
.asc-ui .page-header__inner {
	background-color: transparent;
}

.asc-ui .page-header__title,
.asc-ui .page-header .woocommerce-breadcrumb,
.asc-ui .page-header__breadcrumb,
.asc-ui .page-header__breadcrumb a,
.asc-ui .page-header__breadcrumb span {
	color: var(--asc-text) !important;
}

.asc-ui .page-header__breadcrumb a:hover {
	color: var(--asc-gold) !important;
}

/* --------------------------------------------------------------------------
   4. Button system
   Evo's geometry, Ascension's gold, black ink.
   -------------------------------------------------------------------------- */
.asc-ui .asc-btn {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5em;
	font-weight: 700;
	font-size: 14px;
	letter-spacing: .5px;
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none;
	border: 0;
	cursor: pointer;
	padding: 14px 28px;
	border-radius: var(--asc-r-pill);
	transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.asc-ui .asc-btn-lg { padding: 18px 36px; font-size: 15px; }

.asc-ui .asc-btn-gold {
	background: var(--asc-gold-grad);
	border: 1px solid var(--asc-gold-1);
	color: var(--asc-gold-ink);
	box-shadow: var(--asc-btn-shadow);
}

.asc-ui .asc-btn-ghost {
	background: transparent;
	color: var(--asc-gold);
	border: 1px solid var(--asc-gold-edge);
}

/* --------------------------------------------------------------------------
   5. Site-wide gold rollout  (defect A5 + client request)
   `.single_add_to_cart_button` measured background #111 with a 1px solid #111
   border on a #000 page: 1.07:1 against the page. Effectively invisible.
   `border: 0` and the child colour rule are both required, or the cart glyph
   stays white on gold (2.2:1).
   -------------------------------------------------------------------------- */
.asc-ui .single_add_to_cart_button,
.asc-ui .glozin-buy-now,
.asc-ui .woocommerce a.button.alt,
.asc-ui .woocommerce button.button.alt,
.asc-ui .woocommerce input.button.alt,
.asc-ui .woocommerce a.button:not(.gz-button-outline-dark),
.asc-ui .woocommerce button.button:not(.gz-button-outline-dark),
.asc-ui .checkout-button,
.asc-ui #place_order,
.asc-ui .wc-block-components-checkout-place-order-button,
.asc-ui .woocommerce-form-login__submit,
.asc-ui .woocommerce-form-register__submit,
.asc-ui .ara-lab-report-btn,
.asc-ui .elementor-button-link,
.asc-ui .aff-submit,
.asc-ui .asc-btn-gold {
	background: var(--asc-gold-grad) !important;
	color: var(--asc-gold-ink) !important;
	border: 1px solid var(--asc-gold-1) !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	letter-spacing: .5px !important;
	text-transform: uppercase;
	box-shadow: var(--asc-btn-shadow) !important;
	transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

/* Add-to-cart geometry, measured off evoaminozresearch.com's live button:
   height 56px, border-radius 12px, font-size 14px/700, letter-spacing .5px,
   text-transform uppercase, flat fill, box-shadow 0 2px 6px + inset 0 1px 0. */
.asc-ui .single_add_to_cart_button,
.asc-ui .glozin-buy-now {
	min-height: 56px;
	border-radius: 12px !important;
	gap: 9px;
}

/* Glyphs and nested spans must take the ink colour too. */
.asc-ui .single_add_to_cart_button *,
.asc-ui .glozin-buy-now *,
.asc-ui .checkout-button *,
.asc-ui #place_order *,
.asc-ui .ara-lab-report-btn *,
.asc-ui .elementor-button-link * {
	color: var(--asc-gold-ink) !important;
	fill: var(--asc-gold-ink) !important;
	stroke: var(--asc-gold-ink) !important;
}

.asc-ui .single_add_to_cart_button:hover,
.asc-ui .glozin-buy-now:hover,
.asc-ui .woocommerce a.button.alt:hover,
.asc-ui .woocommerce button.button.alt:hover,
.asc-ui .checkout-button:hover,
.asc-ui #place_order:hover,
.asc-ui .wc-block-components-checkout-place-order-button:hover,
.asc-ui .ara-lab-report-btn:hover,
.asc-ui .elementor-button-link:hover,
.asc-ui .asc-btn-gold:hover {
	background: linear-gradient(135deg, #e0c070 0%, #d4b25c 50%, #b8923a 100%) !important;
	border-color: #e0c070 !important;
	box-shadow: var(--asc-btn-shadow-hover) !important;
	transform: translateY(-1px);
}

.asc-ui .single_add_to_cart_button:active,
.asc-ui .glozin-buy-now:active,
.asc-ui .checkout-button:active,
.asc-ui #place_order:active,
.asc-ui .asc-btn-gold:active {
	transform: translateY(0);
	filter: brightness(.98);
}

.asc-ui .single_add_to_cart_button:disabled,
.asc-ui .single_add_to_cart_button.disabled,
.asc-ui .woocommerce button.button:disabled {
	background: #3a3122 !important;
	color: rgba(255,255,255,.42) !important;
	box-shadow: none !important;
	transform: none;
	cursor: not-allowed;
}

/* Focus ring is WHITE, not gold. A gold ring on a gold fill measures 1.56:1
   and would fail WCAG 2.2 SC 2.4.11; white on the black page measures 21:1. */
.asc-ui .asc-btn:focus-visible,
.asc-ui .single_add_to_cart_button:focus-visible,
.asc-ui .glozin-buy-now:focus-visible,
.asc-ui .checkout-button:focus-visible,
.asc-ui #place_order:focus-visible,
.asc-ui .ara-lab-report-btn:focus-visible,
.asc-ui .elementor-button-link:focus-visible {
	outline: 2px solid #ffffff !important;
	outline-offset: 3px;
}

/* --------------------------------------------------------------------------
   5b. Cart totals panel
   glozin paints `.cart_totals_summary` with --gz-color-light-grey (#f5f5f5),
   a 450x697 light slab on a true-black page. The Customizer has rules for
   `.woocommerce-cart table.cart` but NOTHING for this panel, so nothing
   overrides it. Every label and link inside it was being measured against the
   wrong background. Depth here comes from a hairline border, not a fill.
   -------------------------------------------------------------------------- */
.asc-ui .cart_totals_summary,
.asc-ui .cart-collaterals .cart_totals {
	background-color: var(--asc-surface) !important;
	border: 1px solid var(--asc-line);
	border-radius: var(--asc-r-md);
	color: var(--asc-text);
}

.asc-ui .cart_totals_summary th,
.asc-ui .cart_totals_summary td,
.asc-ui .cart_totals_summary h2,
.asc-ui .cart_totals_summary label,
.asc-ui .cart_totals_summary .woocommerce-Price-amount,
.asc-ui .cart_totals_summary .amount {
	color: var(--asc-text) !important;
}

.asc-ui .cart_totals_summary tr,
.asc-ui .cart_totals_summary th,
.asc-ui .cart_totals_summary td {
	border-color: var(--asc-line) !important;
}

/* Form controls inside the dark panel (order-note textarea rendered pure white) */
.asc-ui .cart_totals_summary textarea,
.asc-ui .cart_totals_summary input[type="text"],
.asc-ui .cart_totals_summary select {
	background-color: var(--asc-surface-2) !important;
	color: var(--asc-text) !important;
	border: 1px solid var(--asc-line) !important;
}

/* --------------------------------------------------------------------------
   5c. Remaining white slabs on the product page
   Two more light panels on a black page, both measured at 390 and 1440:
   - `.guarantee-safe-checkout` (glozin) renders #f5f5f5.
   - The "Bulk deal" table is Advanced Dynamic Pricing. It prints its own
     inline <style> from the DB option `woocommerce_wdp_bulk_table` with
     !important on every declaration (#fff cells, #efefef header, #6d6d6d
     text). The Customizer tried to fix it with `.bulk_details`, which matches
     NOTHING on this site. The real selectors are `.wdp_bulk_table_content`
     and `.wdp_pricing_table`. We out-specify with a class chain plus the
     later source order our sheet already has.
   -------------------------------------------------------------------------- */
.asc-ui .guarantee-safe-checkout {
	background-color: var(--asc-surface) !important;
	border: 1px solid var(--asc-line);
	color: var(--asc-text) !important;
}

.asc-ui .guarantee-safe-checkout,
.asc-ui .guarantee-safe-checkout * {
	color: var(--asc-text) !important;
}

.asc-ui .wdp_bulk_table_content .wdp_pricing_table,
.asc-ui .wdp_bulk_table_content table.wdp_pricing_table {
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--asc-line) !important;
	border-radius: var(--asc-r) !important;
	overflow: hidden;
}

.asc-ui .wdp_bulk_table_content thead,
.asc-ui .wdp_bulk_table_content tbody,
.asc-ui .wdp_bulk_table_content tr {
	background-color: transparent !important;
	border-color: var(--asc-line) !important;
}

.asc-ui .wdp_bulk_table_content .wdp_pricing_table thead td,
.asc-ui .wdp_bulk_table_content table thead td {
	color: var(--asc-muted) !important;
	background-color: var(--asc-surface-2) !important;
	border-color: var(--asc-line) !important;
}

.asc-ui .wdp_bulk_table_content .wdp_pricing_table tbody td,
.asc-ui .wdp_bulk_table_content table tbody td {
	color: var(--asc-text) !important;
	background-color: var(--asc-surface) !important;
	border-color: var(--asc-line) !important;
}

.asc-ui .wdp_bulk_table_content .wdp_pricing_table_caption,
.asc-ui .wdp_bulk_table_content .wdp_pricing_table_footer {
	color: var(--asc-muted) !important;
}

/* --------------------------------------------------------------------------
   6. Coupon "Remove" control  (defect A4)
   No CSS rule for this exists anywhere on the site. It falls back to
   glozin's --gz-link-color (#111) on a #000 page. The block-cart variant
   measured white on #e0e0e0 = 1.32:1. Snippet 15, named "Sidebar to be dark
   themed Coupon, Shipping, codes", is active with an EMPTY body — this is
   the rule it was meant to contain.
   -------------------------------------------------------------------------- */
.asc-ui .cart_totals a,
.asc-ui tr.cart-discount a,
.asc-ui a.woocommerce-remove-coupon,
.asc-ui .cart-discount .woocommerce-remove-coupon {
	color: var(--asc-gold) !important;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.asc-ui a.woocommerce-remove-coupon:hover {
	color: var(--asc-gold-lite) !important;
}

/* Block cart / block checkout coupon chip */
.asc-ui .wc-block-components-chip__remove,
.asc-ui .wc-block-components-chip__remove-icon {
	color: var(--asc-black) !important;
	fill: var(--asc-black) !important;
	opacity: 1 !important;
}

.asc-ui .wc-block-components-totals-discount__coupon-list-item .wc-block-components-chip {
	background: var(--asc-gold) !important;
	color: var(--asc-black) !important;
}

/* --------------------------------------------------------------------------
   7. Remaining measured contrast failures  (defect A9)
   -------------------------------------------------------------------------- */

/* Cart counter: was #fff on #d6a95b = 2.17:1. Black ink on gold = 9.7:1. */
.asc-ui .header-counter,
.asc-ui .header-cart__counter {
	color: var(--asc-gold-ink) !important;
	background-color: var(--asc-gold) !important;
	font-weight: 700;
}

/* "Lost your password?" was #444 on #000 = 2.16:1. */
.asc-ui .woocommerce-LostPassword a,
.asc-ui a.woocommerce-lost-password {
	color: var(--asc-gold) !important;
}

/* Affiliate page fine print was #666 on #000 = 3.66:1. */
.asc-ui .aff-note,
.asc-ui .coa-url-note {
	color: var(--asc-muted) !important;
}

/* COA field labels were #555 on #111 = 2.53:1. */
.asc-ui .coa-field-label {
	color: #b9b9b9 !important;
}

/* Search overlay placeholder was #666 on #1a1a1a = 3.03:1. */
.asc-ui .search-modal__field::placeholder,
.asc-ui input[type="search"]::placeholder {
	color: #9a9a9a !important;
	opacity: 1;
}

/* --------------------------------------------------------------------------
   8. Motion
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.asc-ui .asc-btn,
	.asc-ui .single_add_to_cart_button,
	.asc-ui .checkout-button,
	.asc-ui #place_order {
		transition: box-shadow .18s ease, background .18s ease;
	}
	.asc-ui .single_add_to_cart_button:hover,
	.asc-ui .checkout-button:hover,
	.asc-ui #place_order:hover,
	.asc-ui .asc-btn-gold:hover {
		transform: none;
	}
}

/* ==========================================================================
   9. Instant search overlay  (Phase 3)
   Ported from Evo Aminoz's .esearch. Replaces glozin's right-hand
   "Search Our Site" sidebar with a centred command-palette overlay.
   Geometry is Evo's, measured: panel top 11vh, width min(640px,92vw),
   radius 18px, max-height 78vh, 220ms opacity/transform.
   ========================================================================== */
.asc-ui.asc-locked { overflow: hidden; }

.asc-search { position: fixed; inset: 0; z-index: 130; visibility: hidden; pointer-events: none; }
.asc-search.open { visibility: visible; pointer-events: auto; }

.asc-search-scrim {
	position: absolute; inset: 0;
	background: rgba(3,3,4,.66);
	backdrop-filter: blur(3px);
	opacity: 0; transition: opacity .22s ease;
}
.asc-search.open .asc-search-scrim { opacity: 1; }

.asc-search-panel {
	position: absolute; top: 11vh; left: 50%;
	transform: translate(-50%,-8px);
	width: min(640px, 92vw); max-height: 78vh;
	display: flex; flex-direction: column;
	background: linear-gradient(180deg, #101012, #0a0a0b);
	border: 1px solid var(--asc-line);
	border-radius: 18px;
	box-shadow: 0 1px 0 rgba(255,255,255,.05) inset, 0 32px 90px rgba(0,0,0,.6);
	opacity: 0; transition: opacity .22s ease, transform .22s ease;
	overflow: hidden;
}
.asc-search.open .asc-search-panel { opacity: 1; transform: translate(-50%, 0); }

.asc-search-bar {
	display: flex; align-items: center; gap: 12px;
	padding: 16px 18px; border-bottom: 1px solid var(--asc-line);
	flex: 0 0 auto; transition: border-color .18s ease;
}
.asc-search-bar:focus-within { border-color: var(--asc-gold-edge); }
.asc-search-bar-ic { color: var(--asc-muted); flex: 0 0 auto; }

.asc-search-input {
	flex: 1 1 auto; min-width: 0;
	background: transparent; border: 0; outline: none;
	color: var(--asc-text); font-size: 16px; padding: 2px 0;
}
.asc-search-input::placeholder { color: #7b7b82; }
.asc-search-input::-webkit-search-cancel-button { -webkit-appearance: none; }
#asc-search .asc-search-input:focus,
#asc-search .asc-search-input:focus-visible { outline: none !important; box-shadow: none !important; border: 0 !important; }

.asc-search-close {
	width: 32px; height: 32px; flex: 0 0 auto;
	display: flex; align-items: center; justify-content: center;
	border-radius: 8px; border: 1px solid var(--asc-line);
	background: rgba(255,255,255,.02); color: #c9c9ce; cursor: pointer;
	transition: color .16s, border-color .16s, background .16s;
}
.asc-search-close:hover { color: var(--asc-text); border-color: var(--asc-line-strong); background: rgba(255,255,255,.05); }

.asc-search-results { flex: 1 1 auto; overflow-y: auto; padding: 8px; overscroll-behavior: contain; }
.asc-search-results::-webkit-scrollbar { width: 8px; }
.asc-search-results::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 8px; }

.asc-search-hint,
.asc-search-empty { text-align: center; color: var(--asc-muted); font-size: 13.5px; padding: 34px 20px; margin: 0; }
.asc-search-empty-state { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 13px; padding: 30px 24px 34px; }
.asc-search-empty-state .asc-search-hint { padding: 0; }
.asc-search-empty-ic {
	width: 44px; height: 44px; border-radius: 50%;
	border: 1px solid var(--asc-line); background: rgba(255,255,255,.02);
	display: flex; align-items: center; justify-content: center; color: #6b6b72;
}

/* Chips: hairline border + faint same-hue fill, no glow. */
.asc-search-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.asc-search-chip {
	border: 1px solid var(--asc-gold-edge);
	background: var(--asc-gold-soft);
	color: #e6d3a6;
	font-size: 12px; font-weight: 500; letter-spacing: .01em;
	padding: 6px 13px; border-radius: 50rem; cursor: pointer;
	transition: color .15s ease, border-color .15s ease, background .15s ease;
}
.asc-search-chip:hover { color: var(--asc-text); border-color: var(--asc-gold-1); background: rgba(201,164,73,.22); }

.asc-search-row {
	display: flex; align-items: center; gap: 14px;
	padding: 11px 12px; border-radius: 12px; text-decoration: none;
	transition: background .14s ease, transform .14s ease;
}
.asc-search-row:hover,
.asc-search-row.is-active { background: rgba(255,255,255,.055); transform: translateX(2px); }

.asc-search-row-img {
	width: 46px; height: 46px; flex: 0 0 auto;
	border-radius: 9px; border: 1px solid var(--asc-line);
	background: #111113; overflow: hidden;
}
.asc-search-row-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.asc-search-row-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.asc-search-row-name { color: #f0f0f2; font-weight: 600; font-size: 14px; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.asc-search-row-cat { color: var(--asc-muted); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; }
.asc-search-row-price { color: var(--asc-text); font-weight: 700; font-size: 14px; white-space: nowrap; flex: 0 0 auto; }
.asc-search-row-price .amount { color: var(--asc-text); }
.asc-search-row-price del { color: #8a8a92; font-weight: 400; font-size: .82em; margin-right: 4px; }
.asc-search-row-price .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.asc-search-foot { border-top: 1px solid var(--asc-line); padding: 11px 16px; flex: 0 0 auto; }
.asc-search-all {
	display: inline-flex; align-items: center; gap: 6px;
	font-size: 12.5px; font-weight: 600; color: var(--asc-gold-1); text-decoration: none;
	transition: color .14s ease, gap .14s ease;
}
.asc-search-all:hover { color: var(--asc-gold-lite); gap: 9px; }

@media (max-width: 560px) {
	.asc-search-panel {
		top: 0; left: 0; transform: none;
		width: 100vw; max-width: none; max-height: none; height: 100dvh;
		border-radius: 0; border-left: 0; border-right: 0;
	}
	.asc-search.open .asc-search-panel { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.asc-search-scrim, .asc-search-panel { transition: none; }
	.asc-search-row { transition: background .14s ease; }
	.asc-search-row:hover, .asc-search-row.is-active { transform: none; }
}

/* ==========================================================================
   10. Full button sweep  (Phase 1b)
   The Phase 1 rollout only covered WooCommerce classes. This catches the
   theme-specific and Ascension-specific ones that were still rendering
   glozin white-on-black with glozin's hover-slide effect.

   Two shapes, both taken from Evo Aminoz:
     - general buttons  = Evo `.btn`  : pill (50rem), 14px/600, .5px, uppercase
     - PDP add-to-cart  = Evo `.pd-actions .single_add_to_cart_button` : 12px
   Evo genuinely uses both, so this is faithful rather than inconsistent.
   ========================================================================== */

/* ---- primary: filled gold pill ---- */
.asc-ui .ara-hero__btn,
.asc-ui .btn-buy,
.asc-ui .footer-btn,
.asc-ui .glozin-note-estimate-coupon__button,
.asc-ui .gz-button-primary,
.asc-ui .elementor-button:not(.elementor-button-link),
.asc-ui .wp-block-button__link {
	background: var(--asc-gold-grad) !important;
	color: var(--asc-gold-ink) !important;
	border: 1px solid var(--asc-gold-1) !important;
	border-radius: var(--asc-r-pill) !important;
	font-size: 14px !important;
	font-weight: 600 !important;
	letter-spacing: .5px !important;
	text-transform: uppercase;
	box-shadow: var(--asc-btn-shadow) !important;
	transition: transform .18s ease, box-shadow .18s ease, filter .18s ease !important;
}

.asc-ui .ara-hero__btn *,
.asc-ui .btn-buy *,
.asc-ui .footer-btn *,
.asc-ui .glozin-note-estimate-coupon__button *,
.asc-ui .elementor-button:not(.elementor-button-link) * {
	color: var(--asc-gold-ink) !important;
	fill: var(--asc-gold-ink) !important;
}

.asc-ui .ara-hero__btn:hover,
.asc-ui .btn-buy:hover,
.asc-ui .footer-btn:hover,
.asc-ui .glozin-note-estimate-coupon__button:hover,
.asc-ui .gz-button-primary:hover,
.asc-ui .elementor-button:not(.elementor-button-link):hover,
.asc-ui .wp-block-button__link:hover {
	background: linear-gradient(135deg, #e0c070 0%, #d4b25c 50%, #b8923a 100%) !important;
	border-color: #e0c070 !important;
	box-shadow: var(--asc-btn-shadow-hover) !important;
	transform: translateY(-1px);
}

/* ---- secondary: gold ghost (hairline border, faint same-hue fill) ---- */
.asc-ui .gz-button-outline-dark,
.asc-ui .btn-cart,
.asc-ui .wc-forward:not(.checkout-button) {
	background: var(--asc-gold-soft) !important;
	color: var(--asc-gold-1) !important;
	border: 1px solid var(--asc-gold-edge) !important;
	border-radius: var(--asc-r-pill) !important;
	font-size: 13px !important;
	font-weight: 600 !important;
	letter-spacing: .5px !important;
	text-transform: uppercase;
	box-shadow: none !important;
	transition: color .16s ease, border-color .16s ease, background .16s ease !important;
}

.asc-ui .gz-button-outline-dark *,
.asc-ui .btn-cart * {
	color: var(--asc-gold-1) !important;
	fill: var(--asc-gold-1) !important;
}

.asc-ui .gz-button-outline-dark:hover,
.asc-ui .btn-cart:hover,
.asc-ui .wc-forward:not(.checkout-button):hover {
	background: rgba(201,164,73,.22) !important;
	border-color: var(--asc-gold-1) !important;
	color: var(--asc-gold-lite) !important;
}

.asc-ui .gz-button-outline-dark:hover *,
.asc-ui .btn-cart:hover * { color: var(--asc-gold-lite) !important; }

/* ---- kill glozin's hover-slide pseudo-elements ----
   .gz-button-hover-effect animates a ::before/::after fill across the button.
   That is glozin's look, not Evo's, and it fights the gold fill. */
.asc-ui .gz-button-hover-effect::before,
.asc-ui .gz-button-hover-effect::after,
.asc-ui .ara-hero__btn::before,
.asc-ui .ara-hero__btn::after,
.asc-ui .footer-btn::before,
.asc-ui .footer-btn::after,
.asc-ui .btn-buy::before,
.asc-ui .btn-buy::after {
	display: none !important;
	content: none !important;
}

.asc-ui .ara-hero__btn:active,
.asc-ui .btn-buy:active,
.asc-ui .footer-btn:active,
.asc-ui .elementor-button:not(.elementor-button-link):active {
	transform: translateY(0);
	filter: brightness(.98);
}

@media (prefers-reduced-motion: reduce) {
	.asc-ui .ara-hero__btn:hover,
	.asc-ui .btn-buy:hover,
	.asc-ui .footer-btn:hover,
	.asc-ui .elementor-button:not(.elementor-button-link):hover { transform: none; }
}

/* ==========================================================================
   11. Slide-in cart drawer  (Phase 5)
   Motion measured from Evo: panel translateX(100%) -> 0 over .3s
   cubic-bezier(.4,0,.2,1); scrim opacity .26s ease with a 2px blur.
   Panel width min(420px,92vw). Free-shipping bar deliberately absent.
   ========================================================================== */
.ascd { position: fixed; inset: 0; z-index: 140; visibility: hidden; pointer-events: none; }
.ascd.open { visibility: visible; pointer-events: auto; }

.ascd-scrim {
	position: absolute; inset: 0;
	background: rgba(3,3,4,.62);
	backdrop-filter: blur(2px);
	opacity: 0; transition: opacity .26s ease;
}
.ascd.open .ascd-scrim { opacity: 1; }

.ascd-panel {
	position: absolute; top: 0; right: 0; height: 100%;
	width: min(420px, 92vw);
	display: flex; flex-direction: column;
	background: #0a0a0b;
	border-left: 1px solid var(--asc-line);
	transform: translateX(100%);
	transition: transform .3s cubic-bezier(.4,0,.2,1);
	outline: none;
}
.ascd.open .ascd-panel { transform: translateX(0); }

.ascd-head {
	display: flex; align-items: center; justify-content: space-between;
	padding: 18px 20px; border-bottom: 1px solid var(--asc-line); flex: 0 0 auto;
}
.ascd-title { color: var(--asc-text); font-weight: 700; font-size: 15px; letter-spacing: .02em; }
.ascd-count {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 22px; height: 22px; padding: 0 6px; margin-left: 6px;
	border-radius: 50rem; background: var(--asc-gold); color: var(--asc-gold-ink);
	font-size: 12px; font-weight: 700;
}
.ascd-close {
	width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
	border-radius: 8px; border: 1px solid var(--asc-line);
	background: rgba(255,255,255,.02); color: #c9c9ce; cursor: pointer;
	transition: color .16s, border-color .16s, background .16s;
}
.ascd-close:hover { color: var(--asc-text); border-color: var(--asc-line-strong); background: rgba(255,255,255,.05); }

.ascd-body { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; padding: 8px 12px; }
.ascd-body::-webkit-scrollbar { width: 8px; }
.ascd-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 8px; }

.ascd-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 12px; padding: 48px 24px; }
.ascd-empty-ic {
	width: 62px; height: 62px; border-radius: 50%;
	border: 1px solid var(--asc-line); background: rgba(255,255,255,.02);
	display: flex; align-items: center; justify-content: center; color: #6b6b72;
}
.ascd-empty-t { color: var(--asc-text); font-weight: 700; font-size: 15px; margin: 0; }
.ascd-empty-s { color: var(--asc-muted); font-size: 13px; margin: 0 0 6px; }

.ascd-list { list-style: none; margin: 0; padding: 0; }
.ascd-item { display: flex; gap: 12px; padding: 14px 8px; border-bottom: 1px solid var(--asc-line); }
/* In flight, not disabled.

   This used to be `opacity: .5; pointer-events: none`, which held the row at
   half strength and unclickable for the whole ~1.2s round trip. That is what
   made the quantity stepper feel frozen: the number had not moved yet AND the
   buttons had stopped responding. The stepper now updates the figure on the
   press and debounces the request, so the row must stay live for the next
   press to land. A light dim is enough to say "saving". */
.ascd-item.is-pending { opacity: .82; }
.ascd-item.is-busy { opacity: .72; }

/* Stock limits and similar, shown against the row that caused them rather
   than in the promo slot at the foot of the drawer. */
.ascd-item-error {
	grid-column: 1 / -1;
	margin: 6px 0 0;
	color: var(--asc-danger);
	font-size: 11.5px;
	line-height: 1.35;
}
.ascd-item-media {
	width: 62px; height: 62px; flex: 0 0 auto; border-radius: 10px;
	border: 1px solid var(--asc-line); background: #111113; overflow: hidden;
}
.ascd-item-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ascd-item-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.ascd-item-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ascd-item-name { color: var(--asc-text); font-weight: 600; font-size: 14px; line-height: 1.3; text-decoration: none; }
.ascd-item-name:hover { color: var(--asc-gold-1); }
.ascd-item-remove {
	flex: 0 0 auto; width: 24px; height: 24px; padding: 0;
	display: flex; align-items: center; justify-content: center;
	background: transparent; border: 0; color: #8a8a92; cursor: pointer;
	transition: color .16s ease;
}
.ascd-item-remove:hover { color: var(--asc-danger); }
.ascd-item-meta { color: var(--asc-muted); font-size: 11.5px; }
.ascd-item-meta p { margin: 0; }
.ascd-item-bottom { display: flex; align-items: center; justify-content: space-between; gap: 10px; }

.ascd-qty { display: inline-flex; align-items: center; border: 1px solid var(--asc-line); border-radius: 50rem; overflow: hidden; }
.ascd-qty-btn {
	width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
	background: transparent; border: 0; color: var(--asc-text); font-size: 15px; cursor: pointer;
	transition: background .16s ease;
}
.ascd-qty-btn:hover { background: rgba(255,255,255,.07); }
.ascd-qty-n { min-width: 26px; text-align: center; color: var(--asc-text); font-size: 13px; font-weight: 600; }
.ascd-item-price { color: var(--asc-text); font-weight: 700; font-size: 14px; white-space: nowrap; }

.ascd-summary { padding: 14px 8px 4px; display: flex; flex-direction: column; gap: 8px; }
.ascd-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13px; color: var(--asc-muted); }
.ascd-row b { color: var(--asc-text); font-weight: 700; }
/* The savings figure is `<b>&minus;<span class="woocommerce-Price-amount">…`,
   so colouring the <b> alone turned only the minus sign green and left the
   amount white. The descendant selector carries the colour into Woo's own
   price spans, which is the part that actually reads as a saving. */
.ascd-save b, .ascd-save b *,
.ascd-coupon b, .ascd-coupon b * { color: var(--asc-ok); }
.ascd-subtotal-row { font-size: 14px; color: var(--asc-text); }
.ascd-coupon-remove {
	background: transparent; border: 0; color: var(--asc-gold-1);
	font-size: 15px; line-height: 1; cursor: pointer; padding: 0 0 0 4px;
}
.ascd-coupon-remove:hover { color: var(--asc-danger); }

.ascd-foot { flex: 0 0 auto; padding: 14px 16px 18px; border-top: 1px solid var(--asc-line); display: flex; flex-direction: column; gap: 10px; }

.ascd-promo-toggle {
	display: inline-flex; align-items: center; gap: 7px;
	background: transparent; border: 0; padding: 0;
	color: var(--asc-muted); font-size: 12.5px; cursor: pointer;
	transition: color .16s ease;
}
.ascd-promo-toggle:hover { color: var(--asc-gold-1); }
.ascd-promo-collapse { display: none; margin-top: 10px; }
.ascd-promo-collapse.open { display: block; }
.ascd-promo { display: flex; gap: 8px; }
.ascd-promo input {
	flex: 1 1 auto; min-width: 0;
	background: var(--asc-surface-2); border: 1px solid var(--asc-line);
	border-radius: 8px; padding: 9px 12px; color: var(--asc-text); font-size: 13px;
}
.ascd-promo input:focus { outline: none; border-color: var(--asc-gold-edge); }
.ascd-promo-btn {
	flex: 0 0 auto; padding: 9px 16px; border-radius: 8px;
	background: var(--asc-gold-soft); border: 1px solid var(--asc-gold-edge);
	color: var(--asc-gold-1); font-size: 12.5px; font-weight: 600; cursor: pointer;
	transition: background .16s ease, border-color .16s ease;
}
.ascd-promo-btn:hover { background: rgba(201,164,73,.22); border-color: var(--asc-gold-1); }
.ascd-promo-msg { margin: 0; font-size: 12.5px; color: var(--asc-ok); }
.ascd-promo-msg.is-error { color: var(--asc-danger); }

/* Checkout: icon, label and total sit together in the middle, matching Evo's
   "cart icon CHECKOUT · $33.30". The total used to carry `margin-left: auto`,
   which overrode the button's own `justify-content: center` by pinning the
   figure to the right edge and stranding the label on the left, so the button
   read as two separate things rather than one call to action. */
.ascd-checkout { width: 100%; justify-content: center; }
.ascd-checkout-total { font-weight: 700; }
.ascd-checkout-total::before {
	content: "\00b7";
	margin: 0 .5em 0 .1em;
	opacity: .55;
}

.ascd-badges { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.ascd-badges span { display: inline-flex; align-items: center; gap: 5px; color: var(--asc-muted); font-size: 11px; }
.ascd-badges svg { color: var(--asc-gold-1); }

@media (prefers-reduced-motion: reduce) {
	.ascd-panel, .ascd-scrim { transition: none; }
}

/* ==========================================================================
   12. COA pill  (Phase 6)
   Geometry from Evo's .pdp-coa-pill: 56px tall, 12px radius, hairline border,
   transparent fill. Secondary emphasis so it never competes with Add to cart.
   Replaces the old button that lived inside the collapsed accordion.
   ========================================================================== */
.asc-ui .asc-coa-pill {
	display: inline-flex; align-items: center; justify-content: center; gap: 9px;
	min-height: 56px; padding: 0 20px; margin-top: 12px;
	border-radius: 12px;
	border: 1px solid var(--asc-line-strong);
	background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
	box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
	color: #eae6dc; text-decoration: none;
	font-size: 14px; font-weight: 600; letter-spacing: .01em; white-space: nowrap;
	transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.asc-ui .asc-coa-pill svg { color: var(--asc-gold-1); flex: 0 0 auto; }
.asc-ui .asc-coa-pill:hover {
	transform: translateY(-1px);
	border-color: var(--asc-gold-edge);
	background: linear-gradient(180deg, rgba(201,164,73,.14), rgba(201,164,73,.05));
	color: #fff;
}
.asc-ui .asc-coa-pill:active { transform: translateY(0); }
.asc-ui .asc-coa-pill:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

@media (max-width: 560px) {
	.asc-ui .asc-coa-pill { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
	.asc-ui .asc-coa-pill:hover { transform: none; }
}

/* ==========================================================================
   13. Homepage hero button = white
   Hamza's call: SHOP NOW is the one button that stays white, so the hero's
   single gold accent is the logo/wordmark rather than competing with it.
   Values are Evo's .btn-white, measured, not invented:
     background: linear-gradient(180deg,#ffffff,#e9ecf1)
     color:      #0a0b0f
     box-shadow: 0 6px 16px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.9)
   Ink #0a0b0f on #e9ecf1 (the darker stop) measures 17.4:1.
   Overrides section 10, so it must stay after it in source order.
   ========================================================================== */
.asc-ui .ara-hero__btn {
	background: linear-gradient(180deg, #ffffff, #e9ecf1) !important;
	color: #0a0b0f !important;
	border: 0 !important;
	box-shadow: 0 6px 16px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.9) !important;
}
.asc-ui .ara-hero__btn * { color: #0a0b0f !important; fill: #0a0b0f !important; }

.asc-ui .ara-hero__btn:hover {
	background: linear-gradient(180deg, #ffffff, #dfe3ea) !important;
	border: 0 !important;
	box-shadow: 0 10px 26px rgba(0,0,0,.44), inset 0 1px 0 rgba(255,255,255,.9) !important;
}

/* ==========================================================================
   14. Corrections from Hamza's review
   ========================================================================== */

/* ---- 14a. PDP add-to-cart: kill glozin's hover-slide -----------------------
   Section 10 killed the ::before/::after fill on the theme buttons but NOT on
   .single_add_to_cart_button. glozin slides an opaque dark panel across it on
   hover, which is why the button went black with only the gold border and glow
   left showing. */
.asc-ui .single_add_to_cart_button::before,
.asc-ui .single_add_to_cart_button::after,
.asc-ui .glozin-buy-now::before,
.asc-ui .glozin-buy-now::after,
.asc-ui .asc-coa-pill::before,
.asc-ui .asc-coa-pill::after {
	display: none !important;
	content: none !important;
}

/* Hover keeps the gold fill; only the sheen and lift change. */
.asc-ui .single_add_to_cart_button:hover,
.asc-ui .glozin-buy-now:hover {
	background: linear-gradient(135deg, #e0c070 0%, #d4b25c 50%, #b8923a 100%) !important;
	color: var(--asc-gold-ink) !important;
	border-color: #e0c070 !important;
}
.asc-ui .single_add_to_cart_button:hover * { color: var(--asc-gold-ink) !important; fill: var(--asc-gold-ink) !important; }

/* ---- 14b. Product-card buttons stay white / black --------------------------
   Hamza's call: the Bestsellers cards keep their existing white BUY NOW and
   black ADD TO CART. Gold is reserved for the primary buy action on the PDP,
   the checkout path, and the hero-adjacent CTAs. Overrides sections 5 and 10,
   so this must stay after them in source order. */
.asc-ui .btn-buy {
	background: #ffffff !important;
	background-image: none !important;
	color: #0a0b0f !important;
	border: 1px solid #ffffff !important;
	box-shadow: none !important;
}
.asc-ui .btn-buy * { color: #0a0b0f !important; fill: #0a0b0f !important; }
.asc-ui .btn-buy:hover {
	background: #e9ecf1 !important;
	border-color: #e9ecf1 !important;
	box-shadow: none !important;
}

.asc-ui .btn-cart {
	background: transparent !important;
	background-image: none !important;
	color: #ffffff !important;
	border: 1px solid rgba(255,255,255,.28) !important;
	box-shadow: none !important;
}
.asc-ui .btn-cart * { color: #ffffff !important; fill: #ffffff !important; }
.asc-ui .btn-cart:hover {
	background: rgba(255,255,255,.08) !important;
	border-color: #ffffff !important;
	color: #ffffff !important;
}
.asc-ui .btn-cart:hover * { color: #ffffff !important; }

/* ---- 14c. No hover-to-reveal on product cards -----------------------------
   glozin hides the loop add-to-cart behind visibility:hidden and only reveals
   it on card hover. That hides the primary action from anyone who does not
   hover, and it does not exist at all on touch. Buttons are always visible;
   the floating quick-view / wishlist icons are removed. */
.asc-ui .product-loop-button,
.asc-ui .products .add_to_cart_button,
.asc-ui li.product .button {
	visibility: visible !important;
	opacity: 1 !important;
	transform: none !important;
}

.asc-ui .product-featured-icons,
.asc-ui .glozin-quickview-button {
	display: none !important;
}

/* ==========================================================================
   15. Search overlay corrections
   ========================================================================== */

/* 15a. The input was rendering as a white pill. glozin styles inputs globally
   (background + border + radius) and its selector out-specified ours. Force
   transparent so the field reads as part of the bar, like Evo's. */
.asc-ui #asc-search .asc-search-input,
.asc-ui #asc-search input[type="search"] {
	background: transparent !important;
	background-color: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	color: var(--asc-text) !important;
	height: auto !important;
	padding: 2px 0 !important;
}
.asc-ui #asc-search .asc-search-input::placeholder { color: #7b7b82 !important; opacity: 1 !important; }

/* 15b. The close control was invisible: it inherited a white/near-white fill
   from the same global button styling, so a white glyph sat on white. */
.asc-ui #asc-search .asc-search-close {
	background: transparent !important;
	background-image: none !important;
	border: 1px solid var(--asc-line-strong) !important;
	border-radius: 8px !important;
	color: #d8d8dd !important;
	width: 34px !important;
	height: 34px !important;
	min-height: 0 !important;
	padding: 0 !important;
	box-shadow: none !important;
	opacity: 1 !important;
	visibility: visible !important;
}
.asc-ui #asc-search .asc-search-close svg { color: #d8d8dd !important; stroke: currentColor !important; display: block !important; }
.asc-ui #asc-search .asc-search-close:hover {
	background: rgba(255,255,255,.08) !important;
	border-color: #ffffff !important;
	color: #ffffff !important;
}
.asc-ui #asc-search .asc-search-close:hover svg { color: #ffffff !important; }

/* 15c. Suggestion chips: black and white, not gold on gold.
   Gold text on a gold-tinted fill measured poorly and read as low contrast.
   White on a near-black fill with a hairline border measures 15.2:1. */
.asc-ui #asc-search .asc-search-chip {
	background: rgba(255,255,255,.04) !important;
	border: 1px solid rgba(255,255,255,.22) !important;
	color: #f0f0f2 !important;
	box-shadow: none !important;
}
.asc-ui #asc-search .asc-search-chip:hover {
	background: rgba(255,255,255,.12) !important;
	border-color: #ffffff !important;
	color: #ffffff !important;
}

/* "See all results" stays readable but neutral rather than gold-on-black */
.asc-ui #asc-search .asc-search-all { color: #f0f0f2 !important; }
.asc-ui #asc-search .asc-search-all:hover { color: #ffffff !important; }

/* ==========================================================================
   16. Quick view: remove entirely
   The floating eye and the hover-revealed "Select options" overlay are both
   glozin loop features. Hamza does not want either. Covering every selector
   glozin uses for them, not just the two found on the first pass.
   ========================================================================== */
/* NEVER use [class*="quick-view"] here. The product grid <ul> carries the class
   `mobile-quick-view-button--hidden`, so that attribute selector matched the
   ENTIRE GRID and set display:none, blanking the shop page. Explicit classes only. */
.asc-ui a.glozin-quickview-button,
.asc-ui .product-featured-icons,
.asc-ui .glozin-quick-view-button,
.asc-ui .product-loop__actions,
.asc-ui .glozin-loop-actions {
	display: none !important;
}

/* ==========================================================================
   17. My Account  (Phase 4)
   Evo's single card with a LOGIN/REGISTER pill toggle, replacing glozin's
   two-column "Login | Create an Account".
   ========================================================================== */
.asc-ui .asc-auth-wrap { max-width: 560px; margin: 0 auto; padding: 8px 0 48px; }
.asc-ui .asc-auth-card {
	background: var(--asc-surface); border: 1px solid var(--asc-line);
	border-radius: var(--asc-r-lg); padding: 28px;
}
.asc-ui .asc-auth-tabs {
	display: flex; gap: 4px; padding: 5px; margin-bottom: 22px;
	background: var(--asc-surface-2); border: 1px solid var(--asc-line);
	border-radius: 50rem;
}
.asc-ui .asc-auth-tab {
	flex: 1 1 0; padding: 11px 18px; border: 0; border-radius: 50rem;
	background: transparent; color: var(--asc-muted); cursor: pointer;
	font-size: 13px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase;
	transition: background .18s ease, color .18s ease;
}
.asc-ui .asc-auth-tab.is-active { background: var(--asc-gold-grad); color: var(--asc-gold-ink); }
.asc-ui .asc-auth-tab:not(.is-active):hover { color: var(--asc-text); }

.asc-ui .asc-auth-panel { display: none; }
.asc-ui .asc-auth-panel.is-active { display: block; }
.asc-ui .asc-auth-h { color: var(--asc-text); font-size: 20px; font-weight: 700; margin: 0 0 18px; }

.asc-ui .asc-field { margin-bottom: 16px; }
.asc-ui .asc-lab {
	display: block; margin-bottom: 7px;
	color: var(--asc-muted); font-size: 11.5px; font-weight: 600;
	letter-spacing: .08em; text-transform: uppercase;
}
.asc-ui .asc-req { color: #6f6f77; font-weight: 400; letter-spacing: 0; text-transform: none; }
.asc-ui .asc-input,
.asc-ui .woocommerce-account .asc-input {
	width: 100%; padding: 13px 15px;
	background: var(--asc-surface-2) !important;
	border: 1px solid var(--asc-line) !important;
	border-radius: 10px !important;
	color: var(--asc-text) !important; font-size: 14px;
}
.asc-ui .asc-input:focus { outline: none; border-color: var(--asc-gold-edge) !important; }

.asc-ui .asc-remrow { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 6px 0 20px; }
.asc-ui .asc-check { display: inline-flex; align-items: center; gap: 8px; color: var(--asc-muted); font-size: 13px; cursor: pointer; }
.asc-ui .asc-lost { color: var(--asc-gold-1) !important; font-size: 13px; }
.asc-ui .asc-auth-submit { width: 100%; justify-content: center; }

/* Dashboard tiles */
.asc-ui .asc-acct-hello { color: var(--asc-text); font-size: 15px; margin: 0 0 6px; }
.asc-ui .asc-acct-hello a { color: var(--asc-gold-1); }
.asc-ui .asc-acct-sub { color: var(--asc-muted); font-size: 13.5px; margin: 0 0 24px; max-width: 620px; }
.asc-ui .asc-acctgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.asc-ui .asc-acctgrid-tile {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
	min-height: 132px; padding: 22px 14px; text-align: center; text-decoration: none;
	background: var(--asc-surface); border: 1px solid var(--asc-line); border-radius: var(--asc-r-md);
	color: var(--asc-text); transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.asc-ui .asc-acctgrid-tile:hover { transform: translateY(-1px); border-color: var(--asc-gold-edge); background: rgba(201,164,73,.07); }
.asc-ui .asc-acctgrid-ic { color: var(--asc-gold-1); display: flex; }
.asc-ui .asc-acctgrid-label { font-size: 13.5px; font-weight: 600; }
@media (max-width: 860px) { .asc-ui .asc-acctgrid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .asc-ui .asc-acctgrid { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .asc-ui .asc-acctgrid-tile:hover { transform: none; } }

/* --------------------------------------------------------------------------
   My Account, ported from Evo Aminoz (evo.css 1769-1800) with gold for blue.

   MEASURED BEFORE, on the logged-in dashboard: the page had barely been
   styled at all. The wrapper was `display: block` so the nav never became a
   column (it measured 2px wide), the nav <ul> had no card at all (no
   background, no border, 0 radius, 0 padding), and the content panel came out
   at 2.5px radius with 15px padding. That is the "broken and messed up" state.

   The one deliberate change from the reference: Evo's active nav item is a
   solid blue fill with white text. White on Ascension gold measures 2.55:1 and
   fails, so the fill is the gold gradient and the ink is black, which is the
   same 6.12:1 floor used by every other gold control on the site.
   -------------------------------------------------------------------------- */
.asc-ui.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) {
	display: flex;
	align-items: flex-start;
	gap: 28px;
}

.asc-ui.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation {
	flex: 0 0 250px;
}

.asc-ui.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content {
	flex: 1 1 0%;
	min-width: 0;
}

/* glozin floats both columns; the flex row above needs them unfloated. */
.asc-ui.woocommerce-account .woocommerce-MyAccount-navigation,
.asc-ui.woocommerce-account .woocommerce-MyAccount-content {
	float: none !important;
	width: auto !important;
}

.asc-ui .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 8px;
	border: 1px solid var(--asc-line);
	border-radius: 16px;
	background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.012));
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.asc-ui .woocommerce-MyAccount-navigation li a {
	display: block;
	padding: 11px 14px;
	border-radius: 10px;
	border: 1px solid transparent;
	color: var(--asc-muted) !important;
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
	transition: background .16s ease, color .16s ease;
}

.asc-ui .woocommerce-MyAccount-navigation li a:hover {
	background: rgba(255,255,255,.05);
	color: var(--asc-text) !important;
}

/* Solid gold, black ink. Was a 14% tint that read as a faint highlight. */
.asc-ui .woocommerce-MyAccount-navigation li.is-active a,
.asc-ui .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--dashboard.is-active a {
	background: var(--asc-gold-grad);
	border-color: var(--asc-gold-1);
	color: var(--asc-gold-ink) !important;
	font-weight: 600;
}

.asc-ui .woocommerce-MyAccount-content {
	border: 1px solid var(--asc-line);
	border-radius: 16px;
	background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.012));
	padding: 26px 28px;
	min-width: 0;
	color: var(--asc-muted);
}

.asc-ui .woocommerce-MyAccount-content strong,
.asc-ui .woocommerce-MyAccount-content h2,
.asc-ui .woocommerce-MyAccount-content h3 {
	color: var(--asc-text);
}

/* Inline prose links keep an underline; .button is excluded so the solid
   pills below are not drawn as underlined text, which is what made
   "Browse products" look like broken markup. */
.asc-ui .woocommerce-MyAccount-content a:not(.button):not(.asc-acctgrid-tile) {
	color: var(--asc-text);
	text-decoration: underline;
	text-decoration-color: rgba(255,255,255,.3);
}

.asc-ui .woocommerce-MyAccount-content a:not(.button):not(.asc-acctgrid-tile):hover {
	text-decoration-color: currentcolor;
}

/* Form fields: dark, like the reference. They were rendering as white pills,
   which is the quantity stepper's styling leaking onto account inputs. */
.asc-ui.woocommerce-account .woocommerce-MyAccount-content input[type="text"],
.asc-ui.woocommerce-account .woocommerce-MyAccount-content input[type="email"],
.asc-ui.woocommerce-account .woocommerce-MyAccount-content input[type="password"],
.asc-ui.woocommerce-account .woocommerce-MyAccount-content input[type="tel"],
.asc-ui.woocommerce-account .woocommerce-MyAccount-content input.input-text {
	width: 100%;
	height: 48px;
	padding: 0 15px;
	border-radius: 11px !important;
	border: 1px solid var(--asc-line-strong) !important;
	background: rgba(255,255,255,.02) !important;
	color: var(--asc-text) !important;
	font-size: 15px;
	box-shadow: none !important;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-content input:focus {
	outline: none;
	border-color: var(--asc-gold-edge) !important;
	box-shadow: 0 0 0 3px var(--asc-gold-soft) !important;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-content label {
	color: var(--asc-muted);
	font-size: 13px;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-content fieldset {
	border: 1px solid var(--asc-line);
	border-radius: 14px;
	padding: 18px 20px;
	margin: 22px 0 0;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-content legend {
	color: var(--asc-text);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: 0 8px;
}

/* Tables: orders, downloads, addresses. */
.asc-ui.woocommerce-account table.shop_table,
.asc-ui.woocommerce-account table.woocommerce-table,
.asc-ui.woocommerce-account .woocommerce-orders-table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--asc-line);
	border-radius: 14px;
	overflow: hidden;
	background: transparent;
}

.asc-ui.woocommerce-account table.shop_table th {
	background: rgba(255,255,255,.03);
	color: var(--asc-text);
	font-size: 12px;
	letter-spacing: .04em;
	text-transform: uppercase;
	padding: 13px 16px;
	text-align: left;
	border-bottom: 1px solid var(--asc-line);
}

.asc-ui.woocommerce-account table.shop_table td {
	padding: 14px 16px;
	color: var(--asc-muted);
	border-bottom: 1px solid var(--asc-line);
	font-size: 14px;
}

.asc-ui.woocommerce-account table.shop_table tr:last-child td { border-bottom: 0; }

.asc-ui.woocommerce-account .woocommerce-Address {
	border: 1px solid var(--asc-line);
	border-radius: 14px;
	padding: 20px;
	background: rgba(255,255,255,.02);
}

/* The "no orders yet" / "no downloads yet" strip. */
.asc-ui.woocommerce-account .woocommerce-message,
.asc-ui.woocommerce-account .woocommerce-info,
.asc-ui.woocommerce-account .woocommerce-Message {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	border: 1px solid var(--asc-line);
	border-radius: 14px;
	background: rgba(255,255,255,.02);
	padding: 18px 20px;
	color: var(--asc-muted);
}

@media (max-width: 860px) {
	.asc-ui.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) {
		flex-direction: column;
	}

	.asc-ui.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation {
		flex-basis: auto;
		width: 100% !important;
	}
}

/* ==========================================================================
   18. Quantity stepper: Evo's shape, white
   Replaces glozin's boxed input with a white pill and a raised number chip.
   ========================================================================== */
.asc-ui .quantity,
.asc-ui form.cart .quantity {
	display: inline-flex !important; align-items: center;
	background: #ffffff !important;
	border: 1px solid #ffffff !important;
	border-radius: 50rem !important;
	overflow: hidden; height: 56px; padding: 4px;
	box-shadow: none !important;
}
.asc-ui .quantity input.qty {
	width: 54px !important; height: 48px !important;
	background: #ffffff !important; border: 0 !important; box-shadow: none !important;
	color: #0a0b0f !important; font-size: 15px !important; font-weight: 600; text-align: center;
	border-radius: 50rem !important; -moz-appearance: textfield;
}
.asc-ui .quantity input.qty::-webkit-outer-spin-button,
.asc-ui .quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.asc-ui .quantity input.qty:focus { outline: none !important; }
.asc-ui .quantity .glozin-quantity-button,
.asc-ui .quantity .qty-btn,
.asc-ui .quantity a,
.asc-ui .quantity button {
	width: 40px !important; height: 48px !important;
	display: flex !important; align-items: center; justify-content: center;
	background: transparent !important; border: 0 !important; box-shadow: none !important;
	color: #0a0b0f !important; font-size: 18px; cursor: pointer;
	border-radius: 50rem !important;
	transition: background .16s ease;
}
.asc-ui .quantity .glozin-quantity-button:hover,
.asc-ui .quantity button:hover,
.asc-ui .quantity a:hover { background: rgba(0,0,0,.07) !important; }

/* ==========================================================================
   19. Shop category nav  (Phase 7)
   ========================================================================== */
.asc-ui .asc-catnav {
	display: flex; flex-wrap: wrap; gap: 10px; justify-content: center;
	margin: 0 auto 34px; padding: 0 var(--asc-pad); max-width: var(--asc-wrap);
}
.asc-ui .asc-catnav a {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 10px 20px; border-radius: 50rem; text-decoration: none;
	background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.22);
	color: #f0f0f2; font-size: 13px; font-weight: 600; letter-spacing: .4px; text-transform: uppercase;
	transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.asc-ui .asc-catnav a:hover { background: rgba(255,255,255,.12); border-color: #fff; color: #fff; }
.asc-ui .asc-catnav a.is-active { background: var(--asc-gold-grad); border-color: var(--asc-gold-1); color: var(--asc-gold-ink); }
.asc-ui .asc-catnav .asc-catnav-n { opacity: .6; font-weight: 500; }

/* ==========================================================================
   20. Shop sidebar  (Phase 7, rebuilt)
   Two-column rail beside the product grid. Additive only: the grid keeps its
   own display value, we just constrain its column.
   ========================================================================== */
.asc-ui .asc-shop-2col {
	display: grid;
	grid-template-columns: 270px minmax(0, 1fr);
	gap: 30px;
	align-items: start;
	max-width: var(--asc-wrap);
	margin: 0 auto;
}
.asc-ui .asc-shop-2col > ul.products { margin: 0 !important; width: auto !important; }

.asc-ui .asc-shopbar {
	position: sticky; top: 24px;
	background: var(--asc-surface); border: 1px solid var(--asc-line);
	border-radius: var(--asc-r-lg); padding: 16px;
}

.asc-ui .asc-best {
	display: flex; align-items: center; gap: 12px;
	padding: 14px; margin-bottom: 22px;
	border-radius: var(--asc-r-md); text-decoration: none;
	background: var(--asc-gold-soft);
	border: 1px solid var(--asc-gold-edge);
	transition: background .16s ease, border-color .16s ease;
}
.asc-ui .asc-best:hover { background: rgba(201,164,73,.22); border-color: var(--asc-gold-1); }
.asc-ui .asc-best-ic { color: var(--asc-gold-1); display: flex; flex: 0 0 auto; }
.asc-ui .asc-best-txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.asc-ui .asc-best-txt b { color: var(--asc-text); font-size: 14.5px; font-weight: 700; }
.asc-ui .asc-best-txt em { color: var(--asc-muted); font-size: 12px; font-style: normal; }
.asc-ui .asc-best-arrow { color: var(--asc-gold-1); display: flex; flex: 0 0 auto; }

.asc-ui .asc-shopbar-h {
	margin: 0 0 12px 4px; color: var(--asc-muted);
	font-size: 11.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
}

.asc-ui .asc-catlist { display: flex; flex-direction: column; gap: 8px; }
.asc-ui .asc-catlist a {
	display: flex; align-items: center; gap: 12px;
	padding: 14px; border-radius: var(--asc-r-md); text-decoration: none;
	background: var(--asc-surface-2); border: 1px solid var(--asc-line);
	color: var(--asc-text); font-size: 14px; font-weight: 600;
	transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.asc-ui .asc-catlist a:hover { background: rgba(255,255,255,.06); border-color: var(--asc-line-strong); }
.asc-ui .asc-catlist a.is-active { background: var(--asc-gold-soft); border-color: var(--asc-gold-edge); }
.asc-ui .asc-catlist a.is-active .asc-cat-name { color: var(--asc-gold-1); }
.asc-ui .asc-cat-ic { color: var(--asc-muted); display: flex; flex: 0 0 auto; }
.asc-ui .asc-catlist a.is-active .asc-cat-ic { color: var(--asc-gold-1); }
.asc-ui .asc-cat-name { flex: 1 1 auto; }
.asc-ui .asc-cat-arrow { color: #6f6f77; display: flex; flex: 0 0 auto; }

@media (max-width: 900px) {
	.asc-ui .asc-shop-2col { grid-template-columns: 1fr; gap: 22px; }
	.asc-ui .asc-shopbar { position: static; }
	.asc-ui .asc-catlist { flex-direction: row; flex-wrap: wrap; }
	.asc-ui .asc-catlist a { flex: 1 1 auto; }
	.asc-ui .asc-cat-arrow { display: none; }
}

/* ==========================================================================
   21. Shop sidebar: Evo blue, not gold
   Hamza's call. The rail is the one component that keeps Evo's accent rather
   than Ascension gold. Blue measured off evoaminozresearch.com: #0068ff.
   White on #0068ff measures 4.02:1 (AA for large/UI text); the rail's labels
   are white on near-black, so the blue is border/icon only.
   ========================================================================== */
.asc-ui .asc-shopbar { --asc-blue: #0068ff; }

.asc-ui .asc-shopbar .asc-best {
	background: rgba(0,104,255,.10) !important;
	border: 1px solid rgba(0,104,255,.55) !important;
	box-shadow: 0 0 0 1px rgba(0,104,255,.14), 0 6px 22px rgba(0,104,255,.20);
}
.asc-ui .asc-shopbar .asc-best:hover {
	background: rgba(0,104,255,.18) !important;
	border-color: var(--asc-blue) !important;
	box-shadow: 0 0 0 1px rgba(0,104,255,.24), 0 8px 26px rgba(0,104,255,.30);
}

/* Icon sits in a rounded blue tile, like Evo's */
.asc-ui .asc-shopbar .asc-best-ic {
	width: 38px; height: 38px; border-radius: 10px;
	align-items: center; justify-content: center;
	background: rgba(0,104,255,.16);
	border: 1px solid rgba(0,104,255,.45);
	color: var(--asc-blue) !important;
}
.asc-ui .asc-shopbar .asc-best-arrow { color: var(--asc-blue) !important; }

.asc-ui .asc-shopbar .asc-catlist a.is-active {
	background: rgba(0,104,255,.08) !important;
	border-color: rgba(0,104,255,.55) !important;
	box-shadow: 0 0 0 1px rgba(0,104,255,.12);
}
.asc-ui .asc-shopbar .asc-catlist a.is-active .asc-cat-name { color: #ffffff !important; }

/* Every category icon gets the blue tile treatment */
.asc-ui .asc-shopbar .asc-cat-ic {
	width: 34px; height: 34px; border-radius: 9px;
	align-items: center; justify-content: center;
	background: rgba(0,104,255,.12);
	border: 1px solid rgba(0,104,255,.34);
	color: var(--asc-blue) !important;
}
.asc-ui .asc-shopbar .asc-catlist a.is-active .asc-cat-ic {
	background: rgba(0,104,255,.20);
	border-color: rgba(0,104,255,.6);
	color: var(--asc-blue) !important;
}
.asc-ui .asc-shopbar .asc-cat-arrow { color: #6f7686 !important; }

/* ==========================================================================
   22. Cart drawer corrections
   ========================================================================== */

/* 22a. The X was invisible, same cause as the search close: glozin's global
   button styling gave it a near-white fill, so a near-white glyph sat on it. */
.asc-ui #asc-cart .ascd-close {
	background: transparent !important;
	background-image: none !important;
	border: 1px solid var(--asc-line-strong) !important;
	border-radius: 8px !important;
	color: #d8d8dd !important;
	width: 34px !important; height: 34px !important;
	min-height: 0 !important; padding: 0 !important;
	box-shadow: none !important; opacity: 1 !important; visibility: visible !important;
}
.asc-ui #asc-cart .ascd-close svg { color: #d8d8dd !important; stroke: currentColor !important; display: block !important; }
.asc-ui #asc-cart .ascd-close:hover {
	background: rgba(255,255,255,.08) !important;
	border-color: #ffffff !important; color: #ffffff !important;
}
.asc-ui #asc-cart .ascd-close:hover svg { color: #ffffff !important; }

/* 22b. Promo Apply: black and white, not gold. */
.asc-ui #asc-cart .ascd-promo-btn {
	background: transparent !important;
	background-image: none !important;
	border: 1px solid rgba(255,255,255,.28) !important;
	color: #ffffff !important;
	border-radius: 8px !important;
	box-shadow: none !important;
	font-weight: 600 !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
}
.asc-ui #asc-cart .ascd-promo-btn:hover {
	background: rgba(255,255,255,.10) !important;
	border-color: #ffffff !important;
	color: #ffffff !important;
}

/* Shop hero, values from Evo's .shop-hero (padding 64px, clamp(36px,5vw,64px),
   two crossed 60deg hairline gradients over a vertical fade). Blue tint kept
   because the rail is blue. */
.asc-ui .asc-shop-hero {
	position: relative; padding: 64px 24px; text-align: center; overflow: hidden;
	background:
		linear-gradient(180deg, #0a0b0f, #06070b),
		repeating-linear-gradient(60deg, rgba(0,104,255,.05) 0 1px, transparent 1px 26px),
		repeating-linear-gradient(-60deg, rgba(0,104,255,.05) 0 1px, transparent 1px 26px);
	border-bottom: 1px solid var(--asc-line);
	margin-bottom: 8px;
}
.asc-ui .asc-shop-hero h1 {
	margin: 0; color: var(--asc-text);
	font-size: clamp(36px, 5vw, 64px); font-weight: 800; line-height: 1.05;
}

/* Hide glozin's page header on shop surfaces only. The Evo hero carries the
   title there. Scoped to .asc-hide-page-header, which inc/shop.php adds only
   on the shop page and product-category archives, because this same element
   renders the Cart / Checkout / My Account titles that Phase 1 rescued from
   white-on-white. */
.asc-ui.asc-hide-page-header #page-header,
.asc-ui.asc-hide-page-header .page-header--shop { display: none !important; }

/* On product-category archives glozin renders its OWN filter rail
   (aside.widget-area.primary-sidebar, 270x1130, listing all 15 per-product
   categories) plus a sort/active-filter toolbar. That duplicates the Evo rail
   and exposes the per-product categories, which are data not navigation.
   Hidden on shop surfaces only, via the same asc-hide-page-header body flag. */
.asc-ui.asc-hide-page-header aside.widget-area.primary-sidebar,
.asc-ui.asc-hide-page-header .catalog-sidebar,
.asc-ui.asc-hide-page-header .woocommerce-ordering,
.asc-ui.asc-hide-page-header .catalog-toolbar__active-filters,
.asc-ui.asc-hide-page-header .catalog-toolbar__filters-actived {
	display: none !important;
}

/* With glozin's rail gone the content column should use the full width. */
.asc-ui.asc-hide-page-header .content-area,
.asc-ui.asc-hide-page-header .catalog-content-area {
	width: 100% !important;
	max-width: 100% !important;
	flex: 0 0 100% !important;
}

/* ==========================================================================
   23. Shop sidebar: Evo's CSS, copied verbatim
   Every value below is lifted from evo.css lines 618-658. Previous version
   was an approximation and read as "old styling"; this is the real thing.
   Scoped under .asc-ui only so it cannot leak.
   ========================================================================== */
.asc-ui .apex-shop-sidebar {
	background: #0a0a0a; border-radius: 14px;
	border: 1px solid rgba(255,255,255,.06);
	padding: 14px; position: sticky; top: 82px;
}
.asc-ui .apex-best-sellers-banner {
	position: relative; width: 100%; display: flex; align-items: center; gap: 12px; text-align: left;
	background: linear-gradient(180deg, rgba(0,104,255,.16) 0%, rgba(3,10,26,.92) 75%);
	border: 1px solid rgba(0,104,255,.55); border-radius: 16px; padding: 16px;
	color: #fff; cursor: pointer; overflow: hidden; text-decoration: none;
	box-shadow: 0 0 26px rgba(0,104,255,.35), 0 0 0 1px rgba(0,104,255,.12) inset;
	transition: border-color .16s ease, transform .16s ease, box-shadow .16s ease;
}
.asc-ui .apex-best-sellers-banner::after {
	content: ''; position: absolute; left: 10%; right: 10%; bottom: 0; height: 1px;
	background: linear-gradient(90deg, transparent, rgba(90,163,246,.85), transparent);
}
.asc-ui .apex-best-sellers-banner:hover {
	border-color: #0068ff; transform: translateY(-1px);
	box-shadow: 0 0 34px rgba(0,104,255,.5), 0 0 0 1px rgba(0,104,255,.18) inset;
}
.asc-ui .apex-star-badge {
	flex: 0 0 auto; width: 36px; height: 36px;
	display: inline-flex; align-items: center; justify-content: center; border-radius: 10px;
	background: radial-gradient(circle at 50% 30%, rgba(0,104,255,.4) 0%, rgba(4,9,22,.95) 70%);
	border: 1px solid rgba(0,104,255,.65); color: #5aa3f6;
	box-shadow: 0 0 16px rgba(0,104,255,.55), 0 0 0 1px rgba(255,255,255,.04) inset;
}
.asc-ui .apex-banner-copy { flex: 1 1 auto; min-width: 0; text-align: left; }
.asc-ui .apex-banner-title { display: block; font-weight: 700; font-size: 14px; letter-spacing: .02em; color: #fff; line-height: 1.2; }
.asc-ui .apex-banner-subtitle { display: block; font-weight: 500; font-size: 12px; color: var(--asc-muted); margin-top: 2px; }
.asc-ui .apex-banner-arrow {
	flex: 0 0 auto; width: 26px; height: 26px;
	display: inline-flex; align-items: center; justify-content: center; border-radius: 8px;
	background: rgba(0,104,255,.12); border: 1px solid rgba(0,104,255,.55); color: #5aa3f6;
	box-shadow: 0 0 10px rgba(0,104,255,.4);
	transition: transform .16s ease, box-shadow .16s ease;
}
.asc-ui .apex-banner-arrow svg { width: 15px; height: 15px; }
.asc-ui .apex-best-sellers-banner:hover .apex-banner-arrow { transform: translateX(3px); box-shadow: 0 0 16px rgba(0,104,255,.6); }

.asc-ui .apex-categories-heading {
	color: #fff; font-weight: 800; font-size: 14px; letter-spacing: 1px;
	text-transform: uppercase; margin: 18px 4px 10px;
}
.asc-ui .apex-categories-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(135px, 1fr)); gap: 8px; }
.asc-ui .apex-category-pill {
	display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0;
	background: linear-gradient(180deg, #1a1a1a 0%, #0d0d0d 100%);
	border: 1px solid rgba(255,255,255,.08); border-radius: 12px; padding: 9px 10px;
	color: #fff; text-align: left; cursor: pointer; transition: all .15s ease;
	overflow: hidden; text-decoration: none;
}
.asc-ui .apex-category-pill:hover { border-color: rgba(0,104,255,.55); transform: translateY(-1px); box-shadow: 0 6px 14px rgba(0,104,255,.18); }
.asc-ui .apex-category-pill.active { border-color: #0068ff; box-shadow: none; background: linear-gradient(180deg, #1a1a1a 0%, #0d0d0d 100%); }
.asc-ui .apex-category-icon {
	flex-shrink: 0; width: 36px; height: 36px;
	display: inline-flex; align-items: center; justify-content: center; border-radius: 10px;
	background: linear-gradient(180deg, #12161d 0%, #070a10 100%);
	border: 1px solid rgba(0,104,255,.45); color: #5aa3f6;
	box-shadow: 0 0 0 1px rgba(255,255,255,.03) inset;
	transition: all .15s ease;
}
.asc-ui .apex-category-icon svg { width: 19px; height: 19px; }
.asc-ui .apex-category-pill:hover .apex-category-icon { border-color: rgba(0,104,255,.75); box-shadow: 0 0 14px rgba(0,104,255,.4), 0 0 0 1px rgba(255,255,255,.04) inset; }
.asc-ui .apex-category-pill.active .apex-category-icon { border-color: #0068ff; box-shadow: none; background: linear-gradient(180deg, #0f1a2e 0%, #060a14 100%); }
.asc-ui .apex-category-name { flex-grow: 1; min-width: 0; font-weight: 600; font-size: 12.5px; line-height: 1.2; color: #fff; }
.asc-ui .apex-chevron { flex-shrink: 0; width: 14px; height: 14px; display: inline-flex; align-items: center; justify-content: center; color: rgba(255,255,255,.55); transition: all .18s ease; }
.asc-ui .apex-chevron svg { width: 14px; height: 14px; }
.asc-ui .apex-category-pill:hover .apex-chevron,
.asc-ui .apex-category-pill.active .apex-chevron { color: #3384ff; transform: translateX(2px); }

@media (max-width: 900px) {
	.asc-ui .apex-shop-sidebar { position: static; }
}
@media (prefers-reduced-motion: reduce) {
	.asc-ui .apex-best-sellers-banner { transition: border-color .16s ease; }
	.asc-ui .apex-best-sellers-banner:hover,
	.asc-ui .apex-best-sellers-banner:hover .apex-banner-arrow,
	.asc-ui .apex-category-pill:hover { transform: none; }
}

/* Search: clear-the-query button inside the field, separate from the close
   control. Previously the only X closed the whole overlay, so there was no way
   to clear a search without deleting the text by hand. */
.asc-ui #asc-search .asc-search-clear {
	flex: 0 0 auto; width: 26px; height: 26px;
	display: inline-flex; align-items: center; justify-content: center;
	border-radius: 50%; border: 0;
	background: rgba(255,255,255,.12); color: #e6e6ea;
	cursor: pointer; padding: 0;
	transition: background .16s ease, color .16s ease;
}
.asc-ui #asc-search .asc-search-clear[hidden] { display: none; }
.asc-ui #asc-search .asc-search-clear:hover { background: rgba(255,255,255,.22); color: #fff; }

/* ==========================================================================
   24. Gold button hover, fixed at the source
   ROOT CAUSE (found by enumerating the cascade, not guessing):
   glozin base.min.css ships two blanket rules that hit every gold button:
     .gz-button:active, .gz-button:hover { background: var(--gz-button-bg-color-hover);
                                           color: var(--gz-button-color-hover) }
     a:active, a:hover                   { color: var(--gz-link-color-hover) }
   Any gold button that is an <a> (checkout, COA, Elementor CTAs, the drawer
   button) had its ink reset on hover. Previous fixes patched this one selector
   at a time, which is why it kept resurfacing.

   This declares the hover state ONCE for every gold surface, and forces the
   ink on the element and its children so an inherited link colour cannot win.
   ========================================================================== */
.asc-ui a.asc-btn-gold:hover,
.asc-ui a.asc-btn-gold:active,
.asc-ui a.asc-btn-gold:focus,
.asc-ui .single_add_to_cart_button:hover,
.asc-ui .single_add_to_cart_button:active,
.asc-ui .glozin-buy-now:hover,
.asc-ui .checkout-button:hover,
.asc-ui .checkout-button:active,
.asc-ui #place_order:hover,
.asc-ui .wc-block-components-checkout-place-order-button:hover,
.asc-ui .woocommerce a.button.alt:hover,
.asc-ui .woocommerce button.button.alt:hover,
.asc-ui .ara-lab-report-btn:hover,
.asc-ui .elementor-button-link:hover,
.asc-ui .ascd-checkout:hover,
.asc-ui .asc-auth-submit:hover,
.asc-ui .woocommerce-form-login__submit:hover,
.asc-ui .woocommerce-form-register__submit:hover,
.asc-ui .glozin-note-estimate-coupon__button:hover,
.asc-ui .gz-button-primary:hover {
	background: linear-gradient(135deg, #e0c070 0%, #d4b25c 50%, #b8923a 100%) !important;
	background-color: transparent !important;
	border-color: #e0c070 !important;
	color: var(--asc-gold-ink) !important;
	box-shadow: var(--asc-btn-shadow-hover) !important;
	opacity: 1 !important;
}

/* Children must take the ink too, or glozin's link colour shows through on
   the label and the injected cart glyph. */
.asc-ui a.asc-btn-gold:hover *,
.asc-ui .single_add_to_cart_button:hover *,
.asc-ui .glozin-buy-now:hover *,
.asc-ui .checkout-button:hover *,
.asc-ui #place_order:hover *,
.asc-ui .ara-lab-report-btn:hover *,
.asc-ui .elementor-button-link:hover *,
.asc-ui .ascd-checkout:hover *,
.asc-ui .asc-auth-submit:hover * {
	color: var(--asc-gold-ink) !important;
	fill: var(--asc-gold-ink) !important;
	stroke: var(--asc-gold-ink) !important;
}

/* The white hero button keeps its own hover, declared after so it still wins. */
.asc-ui a.ara-hero__btn:hover,
.asc-ui .ara-hero__btn:hover {
	background: linear-gradient(180deg, #ffffff, #dfe3ea) !important;
	color: #0a0b0f !important;
	border: 0 !important;
}
.asc-ui .ara-hero__btn:hover * { color: #0a0b0f !important; fill: #0a0b0f !important; }

/* ==========================================================================
   25. Shop sidebar: blue -> gold
   Hamza's call, reversing section 21/23's blue. Evo's geometry and structure
   are unchanged; only the accent moves. Mapping, alpha preserved throughout:
     #0068ff            -> #c9a449   (--asc-gold)
     #5aa3f6            -> #e0c070   (--asc-gold-lite, the icon/arrow tint)
     rgba(0,104,255,.X) -> rgba(201,164,73,.X)
     #3384ff (chevron)  -> #e0c070
   ========================================================================== */
.asc-ui .apex-best-sellers-banner {
	background: linear-gradient(180deg, rgba(201,164,73,.16) 0%, rgba(26,18,3,.92) 75%) !important;
	border-color: rgba(201,164,73,.55) !important;
	box-shadow: 0 0 26px rgba(201,164,73,.35), 0 0 0 1px rgba(201,164,73,.12) inset !important;
}
.asc-ui .apex-best-sellers-banner::after {
	background: linear-gradient(90deg, transparent, rgba(224,192,112,.85), transparent) !important;
}
.asc-ui .apex-best-sellers-banner:hover {
	border-color: #c9a449 !important;
	box-shadow: 0 0 34px rgba(201,164,73,.5), 0 0 0 1px rgba(201,164,73,.18) inset !important;
}
.asc-ui .apex-star-badge {
	background: radial-gradient(circle at 50% 30%, rgba(201,164,73,.4) 0%, rgba(22,15,3,.95) 70%) !important;
	border-color: rgba(201,164,73,.65) !important;
	color: #e0c070 !important;
	box-shadow: 0 0 16px rgba(201,164,73,.55), 0 0 0 1px rgba(255,255,255,.04) inset !important;
}
.asc-ui .apex-banner-arrow {
	background: rgba(201,164,73,.12) !important;
	border-color: rgba(201,164,73,.55) !important;
	color: #e0c070 !important;
	box-shadow: 0 0 10px rgba(201,164,73,.4) !important;
}
.asc-ui .apex-best-sellers-banner:hover .apex-banner-arrow { box-shadow: 0 0 16px rgba(201,164,73,.6) !important; }

.asc-ui .apex-category-pill:hover {
	border-color: rgba(201,164,73,.55) !important;
	box-shadow: 0 6px 14px rgba(201,164,73,.18) !important;
}
.asc-ui .apex-category-pill.active { border-color: #c9a449 !important; }
.asc-ui .apex-category-icon {
	background: linear-gradient(180deg, #1d1809 0%, #0b0904 100%) !important;
	border-color: rgba(201,164,73,.45) !important;
	color: #e0c070 !important;
}
.asc-ui .apex-category-pill:hover .apex-category-icon {
	border-color: rgba(201,164,73,.75) !important;
	box-shadow: 0 0 14px rgba(201,164,73,.4), 0 0 0 1px rgba(255,255,255,.04) inset !important;
}
.asc-ui .apex-category-pill.active .apex-category-icon {
	border-color: #c9a449 !important;
	background: linear-gradient(180deg, #2a2109 0%, #140f04 100%) !important;
}
.asc-ui .apex-category-pill:hover .apex-chevron,
.asc-ui .apex-category-pill.active .apex-chevron { color: #e0c070 !important; }

/* The shop hero's crossed hairlines were blue-tinted too. */
.asc-ui .asc-shop-hero {
	background:
		linear-gradient(180deg, #0a0906 0%, #060504 100%),
		repeating-linear-gradient(60deg, rgba(201,164,73,.05) 0 1px, transparent 1px 26px),
		repeating-linear-gradient(-60deg, rgba(201,164,73,.05) 0 1px, transparent 1px 26px) !important;
}

/* Category icons are white; the gold stays on the tile border and fill only.
   White on the #1d1809 tile measures 17.9:1 vs #e0c070's 8.6:1, so this reads
   more clearly as well as matching what Hamza asked for. */
.asc-ui .apex-category-icon,
.asc-ui .apex-category-pill:hover .apex-category-icon,
.asc-ui .apex-category-pill.active .apex-category-icon { color: #ffffff !important; }
.asc-ui .apex-category-icon svg { color: #ffffff !important; stroke: currentColor !important; }

/* Best Sellers banner: match Evo's gloss.
   Evo's fill is rgba(0,104,255,.16) over black. Gold at the SAME alpha reads
   far darker, because #0068ff is a much lighter perceived value against black
   than #c9a449 at 16% is. Copying the alpha verbatim is what made the gold
   version look flat. Raised to a 3-stop fill plus an inset top highlight so
   the perceived gloss matches rather than the numbers matching. */
.asc-ui .apex-best-sellers-banner {
	background:
		linear-gradient(180deg,
			rgba(224,192,112,.30) 0%,
			rgba(201,164,73,.14) 42%,
			rgba(26,19,4,.94) 100%) !important;
	box-shadow:
		0 0 26px rgba(201,164,73,.35),
		0 1px 0 rgba(255,255,255,.22) inset,
		0 0 0 1px rgba(201,164,73,.16) inset !important;
}
.asc-ui .apex-best-sellers-banner:hover {
	background:
		linear-gradient(180deg,
			rgba(236,208,138,.38) 0%,
			rgba(212,178,92,.18) 42%,
			rgba(30,22,5,.94) 100%) !important;
	box-shadow:
		0 0 34px rgba(201,164,73,.5),
		0 1px 0 rgba(255,255,255,.3) inset,
		0 0 0 1px rgba(201,164,73,.24) inset !important;
}

/* Star badge: give it the same lift so it does not read flat next to the card. */
.asc-ui .apex-star-badge {
	background: radial-gradient(circle at 50% 25%, rgba(224,192,112,.5) 0%, rgba(28,20,5,.96) 72%) !important;
	box-shadow:
		0 0 16px rgba(201,164,73,.55),
		0 1px 0 rgba(255,255,255,.18) inset !important;
}
.asc-ui .apex-banner-arrow {
	background: linear-gradient(180deg, rgba(224,192,112,.22), rgba(201,164,73,.10)) !important;
	box-shadow: 0 0 10px rgba(201,164,73,.4), 0 1px 0 rgba(255,255,255,.16) inset !important;
}

/* Category icon tiles: fill them.
   Evo's tile is a clearly visible navy gradient, not a hairline box. The gold
   port kept the border but left the fill near-black, so the tiles read empty.
   Gold-tinted equivalent, plus Evo's heavier glyph stroke. */
.asc-ui .apex-category-icon {
	background: linear-gradient(180deg, #4a3a12 0%, #241b07 100%) !important;
	border: 1px solid rgba(212,178,92,.6) !important;
	box-shadow: 0 1px 0 rgba(255,255,255,.10) inset !important;
}
.asc-ui .apex-category-pill:hover .apex-category-icon {
	background: linear-gradient(180deg, #5c4816 0%, #2c2109 100%) !important;
	border-color: rgba(224,192,112,.85) !important;
	box-shadow: 0 0 14px rgba(201,164,73,.4), 0 1px 0 rgba(255,255,255,.14) inset !important;
}
.asc-ui .apex-category-pill.active .apex-category-icon {
	background: linear-gradient(180deg, #6b5419 0%, #33270a 100%) !important;
	border-color: #e0c070 !important;
	box-shadow: 0 1px 0 rgba(255,255,255,.16) inset !important;
}

/* Evo's glyphs are noticeably heavier than the 1.9 in the source markup. */
.asc-ui .apex-category-icon svg {
	stroke-width: 2.3 !important;
	color: #ffffff !important;
}
.asc-ui .apex-star-badge svg { stroke-width: 2 !important; }

/* ==========================================================================
   26. Best Sellers banner: filled star, bold title, 3s gloss sweep
   Structure taken from apex-peptides.com's live DOM (the source Evo was
   cloned from), which carries two elements the port was missing:
   .apex-banner-shine (the sweep) and .apex-banner-glow. The star there is
   fill="url(#apexStarGrad)", not an outline.
   ========================================================================== */
.asc-ui .apex-banner-shine,
.asc-ui .apex-banner-glow { position: absolute; inset: 0; pointer-events: none; border-radius: inherit; }

/* The sweep: a narrow diagonal highlight crossing every 3s. */
.asc-ui .apex-banner-shine {
	overflow: hidden;
	background: linear-gradient(105deg,
		transparent 35%,
		rgba(255,255,255,.16) 47%,
		rgba(255,236,190,.30) 50%,
		rgba(255,255,255,.16) 53%,
		transparent 65%);
	background-size: 260% 100%;
	background-repeat: no-repeat;
	animation: ascBannerShine 3s ease-in-out infinite;
}
@keyframes ascBannerShine {
	0%   { background-position: 160% 0; }
	45%  { background-position: -60% 0; }
	100% { background-position: -60% 0; }
}

.asc-ui .apex-banner-glow {
	background: radial-gradient(120% 80% at 50% 0%, rgba(224,192,112,.20) 0%, transparent 70%);
}

/* Title: uppercase and heavier, matching apex. */
.asc-ui .apex-banner-title {
	font-weight: 800 !important;
	font-size: 15px !important;
	letter-spacing: .06em !important;
	text-transform: uppercase !important;
	color: #fff !important;
}
.asc-ui .apex-banner-subtitle { font-size: 12.5px !important; }

/* Keep copy above the two overlay layers. */
.asc-ui .apex-star-badge,
.asc-ui .apex-banner-copy,
.asc-ui .apex-banner-arrow { position: relative; z-index: 1; }

@media (prefers-reduced-motion: reduce) {
	.asc-ui .apex-banner-shine { animation: none; }
}

/* ==========================================================================
   27. Gold hex hero background
   Applied to the shop hero and, via the asc-hex-hero body class, to the FAQ
   and Calculator page headers. A dark overlay keeps heading contrast well
   clear of AA regardless of where the bright hex veins fall.
   ========================================================================== */
/* Neither page uses glozin's #page-header: FAQ has .ara-faq-head, the
   calculator has #axp-pep-calc .hero. Both are inner blocks, so they get
   full-bleed via the 50vw margin trick. */
.asc-ui .asc-shop-hero,
.asc-ui.asc-hex-hero .ara-faq-head,
.asc-ui.asc-hex-hero #axp-pep-calc .hero {
	position: relative;
	background-image:
		linear-gradient(180deg, rgba(0,0,0,.72) 0%, rgba(0,0,0,.82) 100%),
		url('../img/hero-hex-gold.jpg') !important;
	background-size: cover, cover !important;
	background-position: center, center !important;
	background-repeat: no-repeat, no-repeat !important;
	border-bottom: 1px solid rgba(201,164,73,.28) !important;
}

/* Full-bleed the two inner heroes and give them the shop hero's proportions. */
.asc-ui.asc-hex-hero .ara-faq-head,
.asc-ui.asc-hex-hero #axp-pep-calc .hero {
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	width: 100vw !important;
	max-width: 100vw !important;
	padding: 60px 24px !important;
	text-align: center;
}
.asc-ui.asc-hex-hero .ara-faq-head > *,
.asc-ui.asc-hex-hero #axp-pep-calc .hero > * { position: relative; z-index: 1; }
.asc-ui.asc-hex-hero .ara-faq-head h1,
.asc-ui.asc-hex-hero #axp-pep-calc .hero h1 {
	font-size: clamp(34px, 4.5vw, 58px) !important;
	font-weight: 800 !important;
	color: #fff !important;
}

/* ==========================================================================
   28. Best Sellers banner: kill the underline, match apex proportions
   The line under the banner is Evo's .apex-best-sellers-banner::after, a 1px
   sweep at bottom:0. In Evo's blue it disappears into the fill; in gold it
   reads as a hard underline, because rgba(224,192,112,.85) sits far brighter
   against a warm fill than rgba(90,163,246,.85) did against a cool one.
   Removed rather than dimmed: it was never meant to be a visible rule.
   ========================================================================== */
.asc-ui .apex-best-sellers-banner::after { display: none !important; content: none !important; }

/* Apex's title is larger and wraps to two lines in a 270px rail. */
.asc-ui .apex-banner-title {
	font-size: 17px !important;
	font-weight: 800 !important;
	letter-spacing: .04em !important;
	line-height: 1.12 !important;
}
.asc-ui .apex-banner-subtitle {
	font-size: 13px !important;
	margin-top: 4px !important;
	color: #a9a9b0 !important;
}

/* Bigger star badge and arrow, matching apex's proportions against that title. */
.asc-ui .apex-star-badge { width: 44px !important; height: 44px !important; border-radius: 12px !important; }
.asc-ui .apex-star-badge svg { width: 22px !important; height: 22px !important; }
.asc-ui .apex-banner-arrow { width: 30px !important; height: 30px !important; }
.asc-ui .apex-best-sellers-banner { padding: 18px 16px !important; gap: 14px !important; }

/* ==========================================================================
   29. Hex hero: zoom the pattern, fix the overlay edge
   Two problems with section 27.
   1. SCALE. `cover` fits a 9000x3200 image across a ~1440px band, so the
      hexagons render at roughly 16% and read as fine mesh. Apex's are ~3x
      larger. Fixed by sizing the image layer to 320% width, which crops in
      instead of fitting, while the overlay layer stays at cover.
   2. THE BRIGHT LINE. That was my own 1px gold border-bottom, plus the
      image's own edge landing inside the band. Border removed and the
      overlay extended to a solid floor so nothing bleeds at the seam.
   ========================================================================== */
.asc-ui .asc-shop-hero,
.asc-ui.asc-hex-hero .ara-faq-head,
.asc-ui.asc-hex-hero #axp-pep-calc .hero {
	background-image:
		linear-gradient(180deg, rgba(0,0,0,.70) 0%, rgba(0,0,0,.78) 55%, rgba(0,0,0,.95) 100%),
		url('../img/hero-hex-gold.jpg') !important;
	background-size: cover, 320% auto !important;
	background-position: center center, center center !important;
	background-repeat: no-repeat, no-repeat !important;
	border-bottom: 0 !important;
}

/* Narrower viewports need more zoom again, or the hexes shrink back. */
@media (max-width: 900px) {
	.asc-ui .asc-shop-hero,
	.asc-ui.asc-hex-hero .ara-faq-head,
	.asc-ui.asc-hex-hero #axp-pep-calc .hero {
		background-size: cover, 700% auto !important;
	}
}

/* Hex hero, final calibration: back off the zoom and let the gold read.
   320% cropped in too far; 210% shows the same hex scale apex has while
   keeping several full cells across the band. Overlay lightened from
   .70/.78/.95 to .56/.64/.88 so the gold veins are visible rather than
   crushed, while the heading still sits on a dark enough field. */
.asc-ui .asc-shop-hero,
.asc-ui.asc-hex-hero .ara-faq-head,
.asc-ui.asc-hex-hero #axp-pep-calc .hero {
	background-image:
		linear-gradient(180deg, rgba(0,0,0,.56) 0%, rgba(0,0,0,.64) 55%, rgba(0,0,0,.88) 100%),
		url('../img/hero-hex-gold.jpg') !important;
	background-size: cover, 210% auto !important;
}
@media (max-width: 900px) {
	.asc-ui .asc-shop-hero,
	.asc-ui.asc-hex-hero .ara-faq-head,
	.asc-ui.asc-hex-hero #axp-pep-calc .hero {
		background-size: cover, 480% auto !important;
	}
}

/* ==========================================================================
   30. Hex hero: feather the seam so the band blends into the black page
   The band read as a rectangle pasted onto the page. Cause: the overlay was a
   flat 56% black at y=0, so the top of the band composited to about #0c0c0c
   against a #000 header. A ~12/255 step across a full-width straight line is
   exactly the kind of edge the eye locks onto, which is why apex's looked
   seamless and this one did not. Apex's does not fade its image either; its
   band simply reaches black at the boundary.

   Fix is in the overlay, not a mask: a mask would fade the <h1> with it, and
   a ::before risks colliding with the calculator's own pseudo-elements.
   Layer 1 softens the left/right thirds so the bright vein cluster on the
   right stops reading lopsided. Layer 2 goes fully opaque at 0% and 100%, so
   both seams composite to exactly #000, and opens up through the middle where
   the heading and the gold live.
   ========================================================================== */
.asc-ui .asc-shop-hero,
.asc-ui.asc-hex-hero .ara-faq-head,
.asc-ui.asc-hex-hero #axp-pep-calc .hero {
	background-color: #000 !important;
	background-image:
		linear-gradient(90deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,0) 14%, rgba(0,0,0,0) 86%, rgba(0,0,0,.55) 100%),
		linear-gradient(180deg,
			rgba(0,0,0,1) 0%,
			rgba(0,0,0,.72) 12%,
			rgba(0,0,0,.54) 42%,
			rgba(0,0,0,.62) 72%,
			rgba(0,0,0,1) 100%),
		url('../img/hero-hex-gold.jpg') !important;
	background-size: cover, cover, 210% auto !important;
	background-position: center, center, center center !important;
	background-repeat: no-repeat, no-repeat, no-repeat !important;
	border-bottom: 0 !important;
	border-top: 0 !important;
}
/* Mobile keeps the 480% crop but stops landing on the one dead spot.

   The source (hero-hex-gold.jpg, 9000x3200) does not carry its gold evenly:
   measured by horizontal decile, the CENTRE column holds 128 gold pixels, 0%
   of the total, while deciles 6 to 8 hold 40% between them and decile 0 holds
   19%. `background-position: center` at 480% therefore framed the only part of
   the picture with no gold in it, which is why the band read as flat black on
   a phone while desktop (210%, same centre) still caught some.

   Candidate crops were measured rather than eyeballed, as the share of gold
   pixels visible in the 390x166 window:

     50% 50%  (was)  0.0%      66% 50%   2.7%
     20% 16%         3.5%      66% 84%   3.3%   <- chosen

   66% 84% is within noise of the best and keeps the gold on the right, which
   is where the desktop crop puts it, so the two read as the same band. */
@media (max-width: 900px) {
	.asc-ui .asc-shop-hero,
	.asc-ui.asc-hex-hero .ara-faq-head,
	.asc-ui.asc-hex-hero #axp-pep-calc .hero {
		background-size: cover, cover, 480% auto !important;
		background-position: center, center, 66% 84% !important;
	}
}

/* ==========================================================================
   31. Peptide calculator: blue and green -> Ascension gold
   The calculator is a self-contained Elementor html-widget on page 1001230,
   so the site-wide gold rollout never reached it. Its <style> block renders
   in the BODY, after everything in <head>, so source order cannot win here.
   Every rule below is one class deeper than the widget's own, which beats it
   on specificity regardless of order. _elementor_data is NOT edited.

   Almost all of the blue routes through --blue / --blue-soft on the widget
   root, so the token swap does the bulk of the work. What follows it is the
   handful of places the widget hardcoded rgba(59,130,246,...) and
   rgba(34,197,94,...) instead of referencing its own tokens.

   The green goes too. Blue and green both read as foreign on a gold site,
   which was the original complaint. Removing it costs the done-vs-current
   distinction in the stepper, so that is rebuilt structurally instead of by
   hue: completed steps are a solid gold fill with black numerals, the current
   step is a gold outline with a glow, upcoming stays grey. That reads more
   clearly than two similar colours did.
   ========================================================================== */
.asc-ui #axp-pep-calc {
	--blue:      #e0c070;
	--blue-soft: #a8862e;
	--green:     #c9a449;
	--teal:      #e0c070;
}

/* Stepper. Current = outline + glow, done = solid fill. */
.asc-ui #axp-pep-calc .dot.current {
	border-color: #c9a449 !important;
	color: #e0c070 !important;
	box-shadow: 0 0 0 3px rgba(201,164,73,.14) !important;
}
.asc-ui #axp-pep-calc .dot.done {
	background: var(--asc-gold-grad) !important;
	border-color: #c9a449 !important;
	color: var(--asc-gold-ink) !important;
	box-shadow: none !important;
}
.asc-ui #axp-pep-calc .stepper .progress { background: #c9a449 !important; }

/* STEP n eyebrow. #e0c070 on the #0d1117 panel measures 10.76:1. */
.asc-ui #axp-pep-calc .badge {
	color: #e0c070 !important;
	background: rgba(201,164,73,.14) !important;
}

/* Selected option tiles. The widget's .1 alpha was tuned for a saturated
   blue; at gold's luminance the same alpha reads as no fill at all, which is
   the mistake already made once on the Best Sellers card. */
.asc-ui #axp-pep-calc .opt.active {
	border-color: #c9a449 !important;
	background: rgba(201,164,73,.13) !important;
	box-shadow: inset 0 0 0 1px rgba(201,164,73,.35) !important;
}

/* mg / IU toggle and both CTAs take the site-wide gold button treatment:
   the same gradient and shadow every other button on the site uses, with
   BLACK ink. The widget set color:#fff on these, which measures 2.20:1 on
   gold and is the exact failure the button brief called out.

   Every 0 0 Npx glow the widget used is dropped rather than re-hued. Those
   were tuned for a saturated blue; gold is a lighter, warmer hue, so the same
   alpha blooms far harder against black, and halo bloom is out under the
   house design rules. Selection now reads from the border and fill. */
.asc-ui #axp-pep-calc .toggle button.active {
	background: var(--asc-gold-grad) !important;
	color: var(--asc-gold-ink) !important;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.20) !important;
}
.asc-ui #axp-pep-calc .cta,
.asc-ui #axp-pep-calc .cta.calc {
	background: var(--asc-gold-grad) !important;
	color: var(--asc-gold-ink) !important;
	box-shadow: var(--asc-btn-shadow) !important;
}
.asc-ui #axp-pep-calc .cta:hover,
.asc-ui #axp-pep-calc .cta.calc:hover {
	filter: none !important;
	box-shadow: var(--asc-btn-shadow-hover) !important;
}
.asc-ui #axp-pep-calc .cta:disabled { box-shadow: none !important; }

/* Result panel. The card had a green cast (#0f1b1a) and the answer was a
   teal gradient; both re-warmed to the star-badge gold ramp. */
.asc-ui #axp-pep-calc .draw {
	background: linear-gradient(160deg, #171206, #0d1117) !important;
	border-color: rgba(201,164,73,.22) !important;
}
/* The answer was a teal->green gradient CLIPPED TO TEXT. Re-hueing it would
   have kept a gradient heading, which is out under the house rules and reads
   as a template tell. Solid #e0c070 instead: 10.76:1 on the panel, and at
   72px/800 the number carries on size alone without the paint trick. */
.asc-ui #axp-pep-calc .draw .big {
	background: none !important;
	-webkit-background-clip: border-box !important;
	background-clip: border-box !important;
	color: #e0c070 !important;
}

/* Syringe diagram. Built as an SVG string in the widget's JS, so its colours
   are presentation attributes. CSS properties of the same name override
   presentation attributes, which is why this works without touching the JS.
   Barrel navy -> warm charcoal, and the blue->green fill ramp -> gold. */
.asc-ui #axp-pep-calc .syringe-svg rect[fill="#1a1a2e"] { fill: #14100a !important; }
.asc-ui #axp-pep-calc .syringe-svg rect[fill="#252540"] { fill: #1d1809 !important; }
.asc-ui #axp-pep-calc #axpFillGrad stop:first-child { stop-color: #e0c070 !important; }
.asc-ui #axp-pep-calc #axpFillGrad stop:last-child  { stop-color: #a8862e !important; }

/* ==========================================================================
   32. Category pills: never break a word, and react to a click immediately
   --------------------------------------------------------------------------
   THE ORPHANED "s". Something upstream sets overflow-wrap:break-word on these
   labels, so at the widths where the auto-fit grid squeezes a column, "All
   Products" split mid-word and dropped a lone "s" onto its own line. Measured
   before the fix, sweeping 320-1440 in 20px steps: broken at 340 (3 lines),
   360, 380, 500 (3 lines), 520 and 540.

   Fixed at the label rather than by tuning the grid's 135px minimum, because
   a minimum tuned to today's longest name breaks again the day a category is
   renamed. overflow-wrap:normal makes a mid-word break impossible at any
   width and any zoom; a cramped column now wraps at the space instead.
   ========================================================================== */
.asc-ui .apex-category-name {
	overflow-wrap: normal !important;
	word-break: normal !important;
	hyphens: none !important;
}

/* Pills in a row keep one height even when a label takes two lines. */
.asc-ui .apex-categories-grid { align-items: stretch; }

/* --------------------------------------------------------------------------
   INSTANT FEEDBACK. A category pill is an ordinary link, so between the click
   and the new document painting there was no state change at all: the old page
   just sat there, which is what reads as a freeze. The pill now takes its
   selected styling on pointerdown, one frame after the press, so the UI
   answers immediately whatever the network does.

   Only the border and fill move. No spinner and no dimming: those announce a
   wait, and with the prerender below there usually is not one.
   -------------------------------------------------------------------------- */
.asc-ui .apex-category-pill.asc-pending {
	border-color: #c9a449 !important;
	background: linear-gradient(180deg, #1f1a0c 0%, #12100a 100%) !important;
}
.asc-ui .apex-category-pill.asc-pending .apex-category-icon {
	border-color: #c9a449 !important;
	background: linear-gradient(180deg, #221c0b 0%, #14110a 100%) !important;
}
.asc-ui .apex-category-pill.asc-pending .apex-chevron { color: #e0c070 !important; }

/* ==========================================================================
   My Account buttons

   "BROWSE PRODUCTS" was rendering as underlined gold text with a glow rather
   than a button. Two causes: the account content's blanket link rule painted
   every <a> as underlined prose, and nothing gave a.button a fill on this
   page. The rule above now excludes .button from the prose treatment, and
   this gives both <a class="button"> and <button class="button"> the same
   solid gold pill the rest of the site uses.

   Section 5 already paints .woocommerce a.button gold, but not its geometry,
   and the underline had to be removed explicitly because it was inherited.
   ========================================================================== */
.asc-ui.woocommerce-account .woocommerce-MyAccount-content a.button,
.asc-ui.woocommerce-account .woocommerce-MyAccount-content button.button,
.asc-ui.woocommerce-account .woocommerce-MyAccount-content input.button,
.asc-ui.woocommerce-account .woocommerce-MyAccount-content button[type="submit"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 14px 30px !important;
	border-radius: 50rem !important;
	background: var(--asc-gold-grad) !important;
	border: 1px solid var(--asc-gold-1) !important;
	color: var(--asc-gold-ink) !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	letter-spacing: .04em;
	text-transform: uppercase;
	text-decoration: none !important;
	box-shadow: none !important;
	transition: filter .18s ease, border-color .18s ease;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-content a.button:hover,
.asc-ui.woocommerce-account .woocommerce-MyAccount-content button.button:hover,
.asc-ui.woocommerce-account .woocommerce-MyAccount-content button[type="submit"]:hover {
	filter: brightness(.9);
	border-color: var(--asc-gold-3) !important;
	color: var(--asc-gold-ink) !important;
}

/* ==========================================================================
   My Account nav: undo glozin's own list chrome

   glozin's woocommerce.min.css ships three rules that fight the card above,
   all at (0,2,x) so they tie or beat a plain `.asc-ui` prefix. Measured on
   the live page before this block:

     .woocommerce-MyAccount-navigation      border 1px #ebebeb, padding 25px 0 24px
     .woocommerce-MyAccount-navigation li   margin: 20px
     .woocommerce-MyAccount-navigation li a padding: 1px 19px 1px 24px

   The wrapper border produced a second, near-white box around the card (the
   same #ebebeb family as the header hairline), and the li margin plus the
   anchor's own padding pushed each row to 72px tall with 20px between them,
   which is why the menu looked stretched down the page. Beaten here by
   qualifying with .woocommerce-account on the body, giving (0,3,x).
   ========================================================================== */
.asc-ui.woocommerce-account .woocommerce-MyAccount-navigation {
	border: 0;
	padding: 0;
	background: none;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-navigation li {
	margin: 0;
	padding: 0;
	border: 0;
}

.asc-ui.woocommerce-account .woocommerce-MyAccount-navigation li a {
	padding: 11px 14px;
	min-height: 0;
	line-height: 1.35;
}

/* Each nav anchor ships as `<br> Dashboard`. The stray <br> added a second
   line box, which is what made every row 62px tall instead of the 41px its
   own padding and line-height come to. It carries no meaning inside a menu
   label, and it is injected by a plugin filter rather than the theme, so it
   is suppressed here rather than chased upstream. Scoped to the account nav
   so no other <br> on the site is affected. */
.asc-ui.woocommerce-account .woocommerce-MyAccount-navigation li a br {
	display: none;
}

/* Same stray-<br> problem in the dashboard tile grid, and here it was worse:
   each <br> becomes a grid ITEM and eats a cell, so six tiles laid out in a
   checkerboard down three columns (measured: Orders col 1, Downloads col 3,
   Addresses col 2 on the next row, and so on) instead of filling two rows.

   The template's own markup is clean, so these are injected downstream by
   wpautop running over the account output. Suppressed at the two places it
   actually breaks layout rather than blanket-hiding <br> across the account,
   which would also flatten multi-line addresses. */
.asc-ui .asc-acctgrid br {
	display: none;
}
