/* Genologix product families: Concept 6 shop and product pages.
   Ported from the approved Concept 6 prototype (artifact v21). Everything is
   scoped under .glx-pdp / .glx-shop so it cannot leak into Divi or WooCommerce. */

.glx-pdp, .glx-shop {
	--glx-ink: #14163B; --glx-body: #4A4E68; --glx-muted: #8B8FA8; --glx-line: #E6E8F0;
	--glx-bg: #F5F6FA; --glx-brand: #2B57D6; --glx-brand-dark: #151A52; --glx-accent-soft: #EAF0FF;
	--glx-save: #0E8F5C; --glx-save-soft: #E7F7EF; --glx-sale: #D6455A; --glx-sale-soft: #FDECEF;
	--glx-oos: #8F93A8; --glx-r-md: 12px; --glx-r-sm: 8px;
	font-family: 'Poppins', system-ui, -apple-system, 'Segoe UI', sans-serif;
	color: var(--glx-ink); -webkit-font-smoothing: antialiased; box-sizing: border-box;
}
.glx-pdp *, .glx-shop * { box-sizing: border-box; }
.glx-pdp img, .glx-shop img { display: block; max-width: 100%; height: auto; }
.glx-pdp button, .glx-shop button { font-family: inherit; cursor: pointer; }
.glx-pdp [hidden], .glx-shop [hidden] { display: none !important; }

/* ---------------- Product page ---------------- */
.glx-pdp { max-width: 1280px; margin: 0 auto; padding: 36px 28px 56px; }
.glx-crumb { font-size: 12px; color: var(--glx-muted); margin-bottom: 18px; }
.glx-crumb a { color: inherit; text-decoration: none; }
.glx-crumb b { color: var(--glx-ink); font-weight: 600; }
.glx-pdp-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px; align-items: flex-start; }
.glx-gallery, .glx-info { min-width: 0; }

/* Main image spans the gallery column; image 2, 3 etc. are previews below it. */
.glx-gallery { display: flex; flex-direction: column; gap: 12px; }
.glx-media-wrap { position: relative; width: 100%; }
.glx-media { position: relative; display: flex; width: 100%; aspect-ratio: 1/1; padding: 8px; background: #fff; border: 0; border-radius: 16px; align-items: center; justify-content: center; overflow: hidden; cursor: zoom-in; }
.glx-media img { max-height: 100%; max-width: 100%; object-fit: contain; }
.glx-badge-row { position: absolute; top: 12px; left: 12px; right: 12px; display: flex; justify-content: space-between; z-index: 2; pointer-events: none; }
.glx-zoom-cue { position: absolute; bottom: 12px; right: 12px; width: 34px; height: 34px; border-radius: 999px; background: #fff; box-shadow: 0 4px 14px rgba(20,22,59,.18); display: flex; align-items: center; justify-content: center; pointer-events: none; z-index: 2; }
.glx-zoom-cue svg { width: 16px; height: 16px; stroke: var(--glx-brand); }
.glx-thumbs { display: flex; flex-wrap: wrap; gap: 10px; }
.glx-thumb { width: 80px; height: 80px; border-radius: 10px; border: 1.5px solid var(--glx-line); background: #fff; padding: 6px; display: flex; align-items: center; justify-content: center; }
.glx-thumb.active { border-color: var(--glx-brand); }
.glx-thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }

.glx-badge { display: inline-block; font-size: 9.5px; font-weight: 700; letter-spacing: .03em; padding: 3px 8px; border-radius: 999px; white-space: nowrap; line-height: 1.2; }
.glx-badge-new { background: var(--glx-brand); color: #fff; }
.glx-badge-sale { background: var(--glx-sale); color: #fff; }
.glx-badge-sizes { background: var(--glx-brand-dark); color: #fff; }

/* Benefit keyword ticker: two visible, steps one keyword every 3 seconds. */
.glx-benefits { position: relative; min-height: 32px; overflow: hidden; margin: 14px auto 6px; width: 100%; max-width: 440px; container-type: inline-size; }
.glx-benefit-track { display: flex; min-height: 32px; width: 100%; will-change: transform; }
.glx-benefit { flex: 0 0 50%; min-width: 0; display: flex; align-items: center; justify-content: center; gap: 6px; text-align: center; padding: 0 6px; font-size: 11.5px; font-weight: 600; color: var(--glx-body); line-height: 1.25; letter-spacing: .03em; }
.glx-benefit .ic { font-size: 14px; flex: none; }
@container (max-width: 299px) { .glx-benefit .ic { display: none; } }

.glx-title { font-size: 32px; line-height: 1.2; margin: 0 0 4px; font-weight: 700; letter-spacing: -.01em; text-align: center; color: var(--glx-ink); padding: 0; }
.glx-stars { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 14px; color: var(--glx-muted); margin: 0 0 14px; background: none; border: none; width: 100%; padding: 0; }
.glx-stars .stars { color: #F5A623; }
.glx-stars .count { text-decoration: underline; }
.glx-price-row { display: flex; align-items: baseline; justify-content: center; gap: 8px; margin-bottom: 2px; }
.glx-price { font-size: 32px; font-weight: 800; color: var(--glx-ink); }
.glx-price-was { font-size: 17px; color: var(--glx-muted); text-decoration: line-through; }

.glx-vblocks { display: flex; gap: 10px; margin: 20px 0 4px; }
.glx-vblock { position: relative; flex: 1; min-width: 0; display: block; border: 1.5px solid var(--glx-line); border-radius: 14px; padding: 18px 8px 16px; text-align: center; background: #fff; color: var(--glx-ink); text-decoration: none; transition: border-color .15s ease, box-shadow .18s ease, transform .18s ease; }
.glx-vblock:not(.active):hover { box-shadow: 0 16px 32px -18px rgba(20,22,59,.22); transform: translateY(-2px); }
.glx-vblock.active { border-color: var(--glx-brand); box-shadow: 0 0 0 3px var(--glx-accent-soft); }
.glx-vblock.active.oos { border-color: var(--glx-oos); box-shadow: 0 0 0 3px #EEEFF4; }
.glx-vblock > span { display: block; }
.glx-vb-badge { position: absolute; top: -11px; right: 6px; background: var(--glx-sale); color: #fff; font-size: 12px; font-weight: 700; padding: 3px 9px; border-radius: 999px; }
.glx-vb-num { font-size: 24px; font-weight: 800; line-height: 1.1; }
.glx-vb-num.glx-vb-dose { font-size: 19px; }
.glx-vb-label { font-size: 10.5px; color: var(--glx-muted); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 5px; }
.glx-vb-was { font-size: 12px; color: var(--glx-muted); text-decoration: line-through; }
.glx-vb-was.empty { text-decoration: none; }
.glx-vb-price { font-size: 17px; font-weight: 700; }
.glx-vb-perday { font-size: 11.5px; color: var(--glx-muted); margin-top: 3px; }
.glx-vstatus-row { display: flex; gap: 10px; margin: 8px 0 0; }
.glx-vstatus { flex: 1; min-width: 0; text-align: center; font-size: 11.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; line-height: 1.3; min-height: 15px; }
.glx-vstatus.out { color: var(--glx-sale); }
.glx-vstatus.low { color: var(--glx-brand); }

.glx-cart { margin: 0; container-type: inline-size; }
.glx-qty-row { display: flex; justify-content: center; margin: 18px 0 10px; }
.glx-stepper { display: inline-flex; align-items: center; border: 1.5px solid var(--glx-line); border-radius: var(--glx-r-md); overflow: hidden; }
.glx-stepper button { border: none; background: transparent; width: 34px; height: 38px; font-size: 16px; color: var(--glx-body); }
.glx-stepper input { width: 40px; border: none; text-align: center; font-size: 14px; font-weight: 700; -moz-appearance: textfield; background: transparent; padding: 0; }
.glx-stepper input::-webkit-outer-spin-button, .glx-stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.glx-pdp .glx-btn-primary { display: block; width: 100%; background: var(--glx-brand-dark); color: #fff; border: none; border-radius: var(--glx-r-md); padding: 14px; font-size: min(24px, 5.4cqw); font-weight: 800; line-height: 1.3; white-space: nowrap; text-transform: none; letter-spacing: normal; }
.glx-pdp .glx-btn-primary:hover { background: #0E1240; color: #fff; }
/* The add-to-cart keeps WooCommerce's own button classes (so the side cart's
   AJAX still recognises it), which Divi styles as Title Case. Pin the concept's look. */
body .glx-pdp .glx-cart .single_add_to_cart_button.glx-btn-primary { text-transform: none !important; font-size: min(24px, 5.4cqw) !important; font-weight: 800 !important; padding: 14px !important; border: none !important; border-radius: 12px !important; line-height: 1.3 !important; letter-spacing: normal !important; background: #151A52 !important; color: #fff !important; width: 100% !important; font-family: 'Poppins', sans-serif !important; }
body .glx-pdp .glx-cart .single_add_to_cart_button.glx-btn-primary:hover { background: #0E1240 !important; padding: 14px !important; }
body .glx-pdp .glx-cart .single_add_to_cart_button.glx-btn-primary::after { display: none !important; content: none !important; }
.glx-oos { margin-top: 18px; container-type: inline-size; }
.glx-pdp .glx-btn-oos, .glx-pdp .glx-btn-oos:hover { background: var(--glx-oos); }
.glx-oos-note { font-size: 13px; color: var(--glx-body); text-align: center; margin: 10px 0 0; }
.glx-oos-note a { color: var(--glx-brand); font-weight: 600; }
.glx-trust { display: flex; justify-content: center; gap: 18px; font-size: 12.5px; color: var(--glx-body); margin: 12px 0 2px; flex-wrap: wrap; }

.glx-copy { margin: 52px auto 0; max-width: 720px; }
.glx-copy hr { border: none; border-top: 1px solid var(--glx-line); margin: 28px 0; }
.glx-copy h3 { font-size: 17px; font-weight: 700; color: var(--glx-ink); margin: 0 0 14px; padding: 0; }
.glx-copy-panel { font-size: 14px; line-height: 1.7; color: var(--glx-body); }
.glx-copy-panel p { margin: 0 0 14px; padding: 0; }
.glx-copy-panel p:last-child { margin-bottom: 0; }
.glx-copy-panel ul { margin: 0; padding-left: 20px; list-style: disc; }
.glx-copy-panel li { margin-bottom: 8px; }
.glx-copy-panel table { width: 100%; border-collapse: collapse; border: none; margin: 0; }
.glx-copy-panel td { vertical-align: top; font-size: 14px; line-height: 1.6; border: none; padding: 0 0 16px; }
.glx-copy-panel tr:last-child td { padding-bottom: 0; }
.glx-copy-panel .glx-facts td:first-child { color: var(--glx-muted); white-space: nowrap; padding-right: 24px; width: 1%; }
.glx-pil { display: inline-flex; gap: 8px; color: var(--glx-brand); font-weight: 600; text-decoration: underline; }

.glx-reviews { text-align: center; margin-top: 44px; scroll-margin-top: 20px; }
.glx-reviews-heading { font-size: 17px; font-weight: 700; margin: 0 0 6px; }
.glx-reviews-expand { max-height: 0; overflow: hidden; transition: max-height .45s ease; }
.glx-reviews-expand.open { max-height: 3000px; }
.glx-review { border-top: 1px solid var(--glx-line); padding: 16px 0; max-width: 640px; margin: 0 auto; text-align: left; }
.glx-r-head { display: flex; justify-content: space-between; font-size: 13px; font-weight: 600; margin-bottom: 4px; }
.glx-r-stars { color: #F5A623; font-size: 12px; }
.glx-review p { font-size: 13px; color: var(--glx-body); margin: 4px 0 0; line-height: 1.6; }

/* Zoom viewer: full screen, white, thumbs on the left (below on mobile). */
.glx-zoom { position: fixed; inset: 0; z-index: 2147483000; background: #fff; display: flex; flex-direction: row; }
.glx-zoom-close { position: absolute; top: 14px; right: 16px; width: 36px; height: 36px; border-radius: 999px; border: none; background: transparent; color: var(--glx-ink); font-size: 19px; z-index: 5; }
.glx-zoom-stage { position: relative; order: 2; flex: 1; min-width: 0; overflow: hidden; display: flex; align-items: center; justify-content: center; touch-action: none; cursor: zoom-in; }
.glx-zoom-stage.zoomed { cursor: grab; }
.glx-zoom-stage img { max-width: 82%; max-height: 82%; object-fit: contain; user-select: none; -webkit-user-drag: none; will-change: transform; }
.glx-zoom-caption { position: absolute; bottom: 16px; left: 50%; transform: translateX(-50%); background: var(--glx-brand-dark); color: #fff; font-size: 12.5px; font-weight: 600; padding: 8px 18px; border-radius: 999px; white-space: nowrap; pointer-events: none; }
.glx-zoom-thumbs { order: 1; display: flex; flex-direction: column; gap: 10px; padding: 16px; flex: none; overflow-y: auto; }
.glx-zoom-thumbs button { width: 56px; height: 56px; border-radius: 8px; border: 1.5px solid var(--glx-line); background: #fff; padding: 5px; }
.glx-zoom-thumbs button.active { border-color: var(--glx-brand); border-width: 2px; }

/* ---------------- Shop grid ---------------- */
.glx-shop { width: 100%; max-width: 1280px; margin-left: auto; margin-right: auto; }
.glx-grid { display: grid; grid-template-columns: repeat(var(--glx-cols, 4), minmax(0, 1fr)); gap: 20px; }
.glx-card { min-width: 0; position: relative; background: #fff; border: 1px solid var(--glx-line); border-radius: 16px; padding: 14px 14px 16px; display: flex; flex-direction: column; box-shadow: 0 1px 2px rgba(20,22,59,.05); cursor: pointer; transition: box-shadow .18s ease, transform .18s ease; }
.glx-card:hover { box-shadow: 0 16px 32px -18px rgba(20,22,59,.22); transform: translateY(-2px); }
.glx-card a { text-decoration: none; color: inherit; }
.glx-card-media { position: relative; background: #fff; border-radius: 12px; aspect-ratio: 1/1; display: flex; align-items: center; justify-content: center; overflow: hidden; margin-bottom: 12px; }
.glx-card-media img { max-height: 96%; max-width: 96%; object-fit: contain; }
.glx-card-badges { position: absolute; top: 8px; left: 8px; right: 8px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: flex-start; pointer-events: none; z-index: 2; }
.glx-card-badges > span:first-child { justify-self: start; }
.glx-card-badges > span:last-child { justify-self: end; }
/* Name 2 lines, days 1, dosage 1, price 1: a fixed box so prices align across a row. */
.glx-card-top { display: flex; flex-direction: column; height: 124px; }
.glx-card h3 { font-size: 14.5px; margin: 0 0 3px; padding: 0; font-weight: 600; text-align: center; line-height: 1.25; min-height: 36px; display: flex; align-items: flex-start; justify-content: center; color: var(--glx-ink); }
.glx-card-sub, .glx-card-dose { font-size: 11px; color: var(--glx-muted); text-align: center; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.glx-card-dose { margin-bottom: 6px; }
.glx-card-price { margin-top: auto; display: flex; align-items: baseline; justify-content: center; gap: 6px; padding-top: 6px; height: 32px; }
/* Fixed height: the small FROM label's own line box otherwise made FROM cards 2px taller than single-price cards. */
.glx-card-price > span { line-height: 1.2; }
.glx-card-from { font-size: 10.5px; color: var(--glx-muted); text-transform: uppercase; letter-spacing: .05em; }
.glx-card-amt { font-size: 17px; font-weight: 700; color: var(--glx-ink); }
.glx-card-was { font-size: 11.5px; color: var(--glx-muted); text-decoration: line-through; }
.glx-sale-note { margin-top: 7px; display: flex; flex-direction: column; align-items: center; gap: 2px; background: var(--glx-sale-soft); border-radius: var(--glx-r-sm); padding: 5px 8px; line-height: 1.3; }
.glx-sale-note .lead { font-size: 10.5px; font-weight: 700; color: var(--glx-sale); text-transform: uppercase; letter-spacing: .03em; }
.glx-sale-note .target { font-size: 11px; font-weight: 600; color: var(--glx-body); }
.glx-shop .glx-cta { margin-top: auto; display: block; text-align: center; background: var(--glx-brand); color: #fff; border: none; padding: 10px 14px; border-radius: var(--glx-r-sm); font-size: 12.5px; font-weight: 600; width: 100%; }
.glx-shop .glx-qb-btn { margin-top: 8px; background: var(--glx-brand-dark); color: #fff; border: none; padding: 10px 14px; border-radius: var(--glx-r-sm); font-size: 12px; font-weight: 700; letter-spacing: .06em; width: 100%; }
.glx-shop .glx-qb-btn:hover { background: #0E1240; }
/* QUICK BUY is a <button>, BUY NOW an <a>: pin one identical box for both, or
   the theme's link line-height makes BUY NOW taller and lifts the card's
   other buttons and price out of line with QUICK BUY neighbours. */
.glx-shop .glx-qb-btn, .glx-shop a.glx-qb-btn { display: block; box-sizing: border-box; height: 38px; line-height: 18px; padding: 10px 14px; text-align: center; color: #fff; text-decoration: none; font-family: 'Poppins', sans-serif; }
.glx-shop .glx-cta { box-sizing: border-box; height: 40px; line-height: 20px; }
.glx-shop .glx-buynow.busy { opacity: .7; pointer-events: none; }

/* Quick buy popup. */
.glx-qb-modal { position: fixed; inset: 0; z-index: 2147483000; display: flex; align-items: center; justify-content: center; padding: 20px; }
/* While quick buy or the zoom viewer is open, the floating WhatsApp button
   (.qlwapp) and side-cart bubble (.xoo-wsc-basket) sat on top of the popup's
   buttons on phones. Hide them until it closes. */
body.glx-qb-open .qlwapp, body.glx-qb-open .xoo-wsc-basket,
body.glx-zoom-open .qlwapp, body.glx-zoom-open .xoo-wsc-basket { display: none !important; }
.glx-qb-backdrop { position: absolute; inset: 0; background: rgba(20,22,59,.45); }
.glx-qb-panel { position: relative; background: #fff; border-radius: 16px; width: 100%; max-width: 540px; max-height: 85vh; overflow-y: auto; padding: 40px 22px 12px; box-shadow: 0 30px 60px -20px rgba(20,22,59,.45); }
.glx-qb-close { position: absolute; top: 6px; right: 8px; width: 34px; height: 34px; border-radius: 999px; border: none; background: transparent; font-size: 17px; color: var(--glx-ink); }
.glx-qb-row { padding: 14px 0; border-top: 1px solid var(--glx-line); }
.glx-qb-row:first-child { border-top: none; padding-top: 4px; }
.glx-qb-line1 { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 14px; font-weight: 700; }
.glx-qb-dose { color: var(--glx-brand); white-space: nowrap; }
.glx-qb-line2 { display: flex; align-items: center; gap: 8px 12px; margin-top: 8px; flex-wrap: wrap; }
.glx-qb-days { font-size: 12.5px; color: var(--glx-body); font-weight: 600; white-space: nowrap; }
.glx-qb-price { font-size: 15px; font-weight: 800; white-space: nowrap; }
.glx-qb-price s { font-size: 11.5px; color: var(--glx-muted); font-weight: 500; margin-right: 4px; }
.glx-qb-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.glx-qb-actions .glx-stepper button { width: 28px; height: 32px; font-size: 15px; }
.glx-qb-actions .glx-stepper span { width: 24px; text-align: center; font-size: 13px; font-weight: 700; }
.glx-qb-add { background: var(--glx-brand-dark); color: #fff; border: none; border-radius: var(--glx-r-sm); padding: 8px 14px; font-size: 13px; font-weight: 700; white-space: nowrap; }
.glx-qb-add.oos, .glx-qb-add:disabled { background: var(--glx-oos); cursor: default; }
/* Out of stock size in quick buy: grey, like the product page's button, but clickable. */
.glx-qb-add.glx-qb-notify { background: var(--glx-oos); cursor: pointer; }
.glx-qb-confirm.info { color: var(--glx-body); background: var(--glx-bg); font-weight: 600; }
.glx-qb-confirm a, .glx-oos-note a { color: var(--glx-brand); text-decoration: underline; }
.glx-qb-confirm { margin-top: 8px; font-size: 12px; font-weight: 700; color: var(--glx-save); background: var(--glx-save-soft); border-radius: var(--glx-r-sm); padding: 6px 10px; display: inline-block; }
.glx-qb-confirm.err { color: var(--glx-sale); background: var(--glx-sale-soft); }

/* ---------------- Mobile ---------------- */
@media (max-width: 767px) {
	.glx-pdp { padding: 20px 16px 40px; }
	.glx-pdp-grid { grid-template-columns: minmax(0, 1fr); gap: 22px; }
	.glx-media { padding: 20px; }
	.glx-thumb { width: 64px; height: 64px; }
	.glx-benefit { font-size: 10px; }
	.glx-title { font-size: 23px; }
	.glx-price { font-size: 23px; }
	.glx-price-was { font-size: 15px; }
	.glx-stars { font-size: 13px; }
	.glx-vblocks, .glx-vstatus-row { gap: 7px; }
	.glx-vblock { padding: 14px 6px 12px; }
	.glx-vb-badge { font-size: 10px; padding: 2.5px 7px; top: -10px; right: 4px; }
	.glx-vb-num, .glx-vb-num.glx-vb-dose { font-size: 15px; }
	.glx-vb-label { font-size: 9px; }
	.glx-vb-price { font-size: 12px; }
	.glx-vb-was { font-size: 10px; }
	.glx-vb-perday { font-size: 9.5px; }
	.glx-vstatus { font-size: 9.5px; min-height: 12px; }
	.glx-pdp .glx-btn-primary { font-size: min(17px, 5.4cqw); padding: 12px; }
	body .glx-pdp .glx-cart .single_add_to_cart_button.glx-btn-primary, body .glx-pdp .glx-cart .single_add_to_cart_button.glx-btn-primary:hover { font-size: min(17px, 5.4cqw) !important; padding: 12px !important; }
	.glx-trust { gap: 12px; font-size: 10px; }
	/* Supplement facts: label above its copy instead of a squashed column. */
	.glx-copy-panel .glx-facts, .glx-copy-panel .glx-facts tbody, .glx-copy-panel .glx-facts tr, .glx-copy-panel .glx-facts td { display: block; width: auto; }
	/* td:first-child carries width:1% on desktop and outranks a plain td rule, which
	   squeezed each label to one letter per line on phones. */
	.glx-copy-panel .glx-facts td:first-child, .glx-copy-panel .glx-facts td:last-child { display: block; width: auto !important; white-space: normal !important; }
	.glx-copy-panel .glx-facts td:first-child { padding: 0 0 2px; font-weight: 600; }
	.glx-zoom { flex-direction: column; }
	.glx-zoom-stage { order: 1; }
	.glx-zoom-thumbs { order: 2; flex-direction: row; overflow-x: auto; padding: 10px; }

	.glx-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
	.glx-card-top { height: 76px; }
	.glx-card-sub, .glx-card-dose { display: none; }
	.glx-sale-note { padding: 4px 6px; }
	.glx-sale-note .lead { font-size: 9.5px; }
	.glx-sale-note .target { font-size: 10px; }
	/* Centred on the screen, clear of the WhatsApp/cart icons at the bottom (Warren 10/04 #14). */
	.glx-qb-modal { align-items: center; padding: 16px; }
	.glx-qb-panel { border-radius: 18px; max-width: none; max-height: 85vh; overflow-y: auto; padding: 38px 16px 10px; }
}
@media (min-width: 768px) and (max-width: 1100px) {
	.glx-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------------- Shop heading (Concept 6) ---------------- */
.glx-shop-headwrap { padding: 36px 0 0; }
.glx-shop-head { display: flex; align-items: baseline; justify-content: space-between; margin: 0 0 22px; flex-wrap: wrap; gap: 10px; }
.glx-shop .glx-shop-head h1 { font-family: 'Poppins', sans-serif; font-size: 26px; line-height: 1.25; margin: 0; padding: 0; font-weight: 700; letter-spacing: -.01em; color: var(--glx-ink); }
.glx-shop-count { font-size: 13px; color: var(--glx-muted); }
.glx-shop .glx-grid { margin-top: 22px; }
@media (max-width: 767px) {
	.glx-shop-headwrap { padding-top: 20px; }
	.glx-shop .glx-shop-head h1 { font-size: 22px; }
}

/* Warren's spec: name = 2 lines. A longer name (e.g. "BodyMag (Magnesium Combo)"
   on a phone) is clipped to two lines so it cannot push the price down. */
.glx-card h3 a { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------------- Pouch page heading + search (old shop page style) ---------------- */
.glx-shop-hero { text-align: center; padding: 56px 0 8px; }
.glx-shop .glx-shop-hero h1, .glx-shop-hero h1 { font-family: 'Poppins', sans-serif; font-size: 72px; line-height: 1.1; font-weight: 600; color: #161548; margin: 0; padding: 0; letter-spacing: -.01em; }
.glx-shop-hero-sub { font-size: 24px; line-height: 1.5; color: #161548; margin: 12px 0 0; }
.glx-search { display: flex; align-items: center; gap: 12px; max-width: 590px; margin: 56px auto 0; background: #fff; border-radius: 10px; box-shadow: 1px 1px 3px #C9E3F1; padding: 0 18px; height: 50px; cursor: text; }
.glx-search-ic svg { width: 18px; height: 18px; stroke: var(--glx-brand); display: block; }
.glx-search input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font-family: 'Poppins', sans-serif; font-size: 16px; color: var(--glx-ink); padding: 0; height: 48px; -webkit-appearance: none; }
.glx-search input::placeholder { color: #8B8FA8; }
.glx-search-empty { margin: 14px 0 0; font-size: 14px; color: var(--glx-body); }
.glx-search-empty a { color: var(--glx-brand); font-weight: 600; text-decoration: underline; }
.glx-shop-head--hero { margin: 40px 0 0; align-items: center; }
.glx-shop-head--hero .glx-crumb { margin: 0; }
.glx-card[hidden] { display: none !important; }
@media (max-width: 767px) {
	.glx-shop-hero { padding-top: 28px; }
	.glx-shop .glx-shop-hero h1, .glx-shop-hero h1 { font-size: 44px; }
	.glx-shop-hero-sub { font-size: 17px; }
	.glx-search { margin-top: 28px; }
	.glx-shop-head--hero { margin-top: 24px; }
}

/* Shared reviews note + verified tag. */
.glx-reviews-note { font-size: 12.5px; color: var(--glx-muted); font-style: italic; margin: 0 auto 6px; max-width: 640px; }
.glx-r-verified { font-size: 10.5px; font-weight: 600; color: var(--glx-save); background: var(--glx-save-soft); border-radius: 999px; padding: 1px 7px; margin-left: 6px; }

.glx-stars-note { font-size: 11.5px; color: var(--glx-muted); text-align: center; margin: -10px 0 14px; }

/* Cards inside an ordinary Divi row (e.g. the home page Best Sellers): Divi
   narrows rows to 80% on phones, which left ~115px cards and wrapped buttons. */
@media (max-width: 767px) {
	.et_pb_row:has(.glx-shop .glx-grid) { min-width: calc(100% - 40px); max-width: none !important; }
	.glx-shop .glx-cta, .glx-shop .glx-qb-btn, .glx-shop a.glx-qb-btn { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-left: 6px; padding-right: 6px; }
}

/* Hero search spacing (a div, not a label: the site's divi-custom.css forces
   margin-left:0 !important on every label, which left-aligned it). */
.glx-shop-hero .glx-search { margin-top: 40px; width: 100%; box-sizing: border-box; }
.glx-shop-hero .glx-shop-hero-sub { padding-bottom: 0; }
@media (max-width: 767px) {
	.glx-shop-hero .glx-search { margin-top: 24px; }
}

/* ---------------- Warren 10/04 #15: bigger product-page text ----------------
   About 40% larger. The size-block lines are capped by the block's own width
   (container query units) and never wrap, so a three-size product on a phone
   gets as large as fits and a two-size product gets the full increase. */
.glx-vblock { container-type: inline-size; padding-left: 4px; padding-right: 4px; }
.glx-vblock > span { white-space: nowrap; overflow: hidden; text-overflow: clip; }
.glx-vb-num { font-size: min(32px, 22cqw); }
.glx-vb-num.glx-vb-dose { font-size: min(26px, 17cqw); }
.glx-vb-label { font-size: min(14.5px, 11cqw); }
.glx-vb-price { font-size: min(23px, 16cqw); }
.glx-vb-was { font-size: min(16px, 14cqw); }
.glx-vb-perday { font-size: min(15.5px, 10.2cqw); }
.glx-vstatus { font-size: 14px; min-height: 18px; }
.glx-vb-badge { font-size: 13px; }
.glx-title { font-size: 42px; }
.glx-price { font-size: 42px; }
.glx-price-was { font-size: 22px; }
.glx-stars { font-size: 16px; }
.glx-benefits, .glx-benefit-track { min-height: 40px; }
.glx-benefit { font-size: 15px; }
.glx-trust { font-size: 16px; gap: 22px; }
@media (max-width: 767px) {
	.glx-vblock { padding: 14px 3px 12px; }
	.glx-vb-num, .glx-vb-num.glx-vb-dose { font-size: min(21px, 19cqw); }
	.glx-vb-label { font-size: min(12.5px, 11cqw); }
	.glx-vb-price { font-size: min(17px, 16cqw); }
	.glx-vb-was { font-size: min(14px, 14cqw); }
	.glx-vb-perday { font-size: min(13px, 10.2cqw); }
	.glx-vstatus { font-size: 12.5px; min-height: 16px; }
	.glx-vb-badge { font-size: 11.5px; }
	.glx-title { font-size: 31px; }
	.glx-price { font-size: 31px; }
	.glx-price-was { font-size: 19px; }
	.glx-stars { font-size: 15px; }
	.glx-benefit { font-size: 13.5px; }
	.glx-trust { font-size: 13.5px; gap: 14px; }
}

/* ---------------- Warren 10/04 #16: even spacing around the copy dividers ----------------
   Divi's own list/table spacing (.entry-content ul padding-bottom etc.) added extra
   space under the Benefits list, so the gap above a divider was bigger than below it. */
.glx-copy section { margin: 0; padding: 0; }
.glx-copy hr { margin: 30px 0 !important; height: 0; }
.glx-copy-panel ul { padding: 0 0 0 20px !important; margin: 0 !important; }
.glx-copy-panel li:last-child { margin-bottom: 0 !important; }
.glx-copy-panel table { margin: 0 !important; }
.glx-copy-panel > :last-child { margin-bottom: 0 !important; padding-bottom: 0 !important; }
.glx-copy h3 { margin: 0 0 14px !important; padding: 0 !important; }

/* No reviews row: keep the larger title from touching the price. */
.glx-title + .glx-price-row { margin-top: 12px; }

/* Quantity limits: a disabled stepper button and the store's own refusal message. */
.glx-stepper button:disabled { opacity: .35; cursor: not-allowed; }
.glx-atc-msg { margin: 10px 0 0; font-size: 14px; color: var(--glx-sale); text-align: center; }

/* ---------------- Wishlist (YITH) on the product page ----------------
   Concept 6's secondary button: white, light border, navy bold lowercase text,
   full width under the delivery/vegan line. */
.glx-wl-wrap { margin-top: 12px; container-type: inline-size; }
.glx-wl .yith-wcwl-add-to-wishlist { margin: 0 !important; }
.glx-wl .yith-wcwl-add-to-wishlist .yith-wcwl-add-button,
.glx-wl .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistaddedbrowse,
.glx-wl .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistexistsbrowse { display: block; width: 100%; }
.glx-wl .yith-wcwl-add-to-wishlist a {
	display: flex !important; align-items: center; justify-content: center; gap: 10px; width: 100%; box-sizing: border-box;
	background: #fff !important; border: 1.5px solid var(--glx-line) !important; border-radius: 12px !important;
	padding: 12px !important; margin: 0 !important; color: var(--glx-ink) !important; text-decoration: none !important;
	font-family: 'Poppins', sans-serif !important; font-weight: 800 !important; font-size: min(24px, 5.4cqw) !important; line-height: 1.3 !important;
	text-transform: lowercase; letter-spacing: normal; box-shadow: none !important; transition: border-color .15s ease;
}
.glx-wl .yith-wcwl-add-to-wishlist a:hover { border-color: var(--glx-brand) !important; color: var(--glx-ink) !important; }
.glx-wl .yith-wcwl-add-to-wishlist a .yith-wcwl-icon-svg,
.glx-wl .yith-wcwl-add-to-wishlist a svg { width: 1.05em !important; height: 1.05em !important; color: var(--glx-brand); stroke: currentColor; margin: 0 !important; flex: none; }
.glx-wl .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistaddedbrowse a svg,
.glx-wl .yith-wcwl-add-to-wishlist .yith-wcwl-wishlistexistsbrowse a svg,
.glx-wl .yith-wcwl-add-to-wishlist a.delete_item svg { color: var(--glx-sale); fill: currentColor; }
.glx-wl .yith-wcwl-add-to-wishlist .feedback { display: none !important; }
.glx-wl .yith-wcwl-add-to-wishlist .ajax-loading { display: none !important; }
@media (max-width: 767px) {
	.glx-wl .yith-wcwl-add-to-wishlist a { font-size: min(17px, 5.4cqw) !important; padding: 10px !important; }
}

/* Shop search: text centred in the box with the magnifier on the left; on phones
   the placeholder shrinks to fit (typed text stays 16px so iPhones don't zoom). */
.glx-shop-hero .glx-search { position: relative; justify-content: center; padding: 0 46px; }
.glx-shop-hero .glx-search .glx-search-ic { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); }
.glx-shop-hero .glx-search input { text-align: center; }
@media (max-width: 767px) {
	.glx-shop-hero .glx-search { padding: 0 38px; }
	.glx-shop-hero .glx-search .glx-search-ic { left: 14px; }
	.glx-shop-hero .glx-search input::placeholder { font-size: min(16px, 3.75vw); }
}

